mirror of
https://github.com/S7NetPlus/s7netplus.git
synced 2026-02-17 22:38:27 +08:00
Unsure if the PLC actually requires the specfically provided TSAP's, but these have been verified to work.
70 lines
2.7 KiB
C#
70 lines
2.7 KiB
C#
using System;
|
|
|
|
namespace S7.Net.Protocol
|
|
{
|
|
internal static class ConnectionRequest
|
|
{
|
|
public static byte[] GetCOTPConnectionRequest(CpuType cpu, Int16 rack, Int16 slot)
|
|
{
|
|
byte[] bSend1 = {
|
|
3, 0, 0, 22, //TPKT
|
|
17, //COTP Header Length
|
|
224, //Connect Request
|
|
0, 0, //Destination Reference
|
|
0, 46, //Source Reference
|
|
0, //Flags
|
|
193, //Parameter Code (src-tasp)
|
|
2, //Parameter Length
|
|
1, 0, //Source TASP
|
|
194, //Parameter Code (dst-tasp)
|
|
2, //Parameter Length
|
|
3, 0, //Destination TASP
|
|
192, //Parameter Code (tpdu-size)
|
|
1, //Parameter Length
|
|
10 //TPDU Size (2^10 = 1024)
|
|
};
|
|
|
|
switch (cpu)
|
|
{
|
|
case CpuType.S7200:
|
|
//S7200: Chr(193) & Chr(2) & Chr(16) & Chr(0) 'Eigener Tsap
|
|
bSend1[13] = 0x10;
|
|
bSend1[14] = 0x00;
|
|
//S7200: Chr(194) & Chr(2) & Chr(16) & Chr(0) 'Fremder Tsap
|
|
bSend1[17] = 0x10;
|
|
bSend1[18] = 0x00;
|
|
break;
|
|
case CpuType.Logo0BA8:
|
|
// These values are taken from NodeS7, it's not verified if these are
|
|
// exact requirements to connect to the Logo0BA8.
|
|
bSend1[13] = 0x01;
|
|
bSend1[14] = 0x00;
|
|
bSend1[17] = 0x01;
|
|
bSend1[18] = 0x02;
|
|
break;
|
|
case CpuType.S71200:
|
|
case CpuType.S7300:
|
|
case CpuType.S7400:
|
|
//S7300: Chr(193) & Chr(2) & Chr(1) & Chr(0) 'Eigener Tsap
|
|
bSend1[13] = 0x01;
|
|
bSend1[14] = 0x00;
|
|
//S7300: Chr(194) & Chr(2) & Chr(3) & Chr(2) 'Fremder Tsap
|
|
bSend1[17] = 0x03;
|
|
bSend1[18] = (byte) ((rack << 5) | (int) slot);
|
|
break;
|
|
case CpuType.S71500:
|
|
// Eigener Tsap
|
|
bSend1[13] = 0x10;
|
|
bSend1[14] = 0x02;
|
|
// Fredmer Tsap
|
|
bSend1[17] = 0x03;
|
|
bSend1[18] = (byte) ((rack << 5) | (int) slot);
|
|
break;
|
|
default:
|
|
throw new Exception("Wrong CPU Type Secified");
|
|
}
|
|
return bSend1;
|
|
}
|
|
}
|
|
}
|