-> Hier kostenlos registrieren
Hallo Zusammen,
ich denke es ist besser dafür einen eigenen Thread aufzumachen. Und zwar versuche ich mich ein wenig in C# in Verdingung mit Simatic. Ich möchte gerne bei einer
S7 1200 lediglich ein Datenwort aus einem DB oder einen Bereich auslesen, da ich mehr die Kommunikation verstehen möchte. Die Verbindung zur SPS funktioniert auch soweit, auch in Wireshark sieht das gesendete Paket soweit plausible aus. Das Problem ist das ich keine Antwort der SPS auf diesen Readrequest erhalte. Ich habe die Vermutung, das da irgendwas mit der Reihenfolge oder Syntax nicht stimmt.
Hier mal der ReadRequest
in Wireshark sieht es eigentlich soweit gut aus.
hier noch die connection
Hat eventuell jemand eine Idee was an dem Readrequest falsch sein könnte? Oder hat eventuell jemand ein funktionierendes Beispiel?
Viele Grüße
Markus
ich denke es ist besser dafür einen eigenen Thread aufzumachen. Und zwar versuche ich mich ein wenig in C# in Verdingung mit Simatic. Ich möchte gerne bei einer
S7 1200 lediglich ein Datenwort aus einem DB oder einen Bereich auslesen, da ich mehr die Kommunikation verstehen möchte. Die Verbindung zur SPS funktioniert auch soweit, auch in Wireshark sieht das gesendete Paket soweit plausible aus. Das Problem ist das ich keine Antwort der SPS auf diesen Readrequest erhalte. Ich habe die Vermutung, das da irgendwas mit der Reihenfolge oder Syntax nicht stimmt.
Hier mal der ReadRequest
C#:
byte[] readRequest = new byte[]
{
// TPKT-Header (4 Bytes)
0x03, 0x00, 0x00, 0x20, // Länge = 32 Bytes
// COTP-Header (3 Bytes)
0x02, 0xF0, 0x80,
// S7-Protokoll-Header (10 Bytes)
0x32, // Protokollkennung: 0x32
0x01, // Job Request
0x00, 0x00, // Reserved
0x00, 0x01, // PDU-Referenz
0x00, 0x0F, // Parameterlänge: 15 Bytes
0x00, 0x00, // Datenteil-Länge: 0
// Parameterblock (15 Bytes)
0x04, // Funktion: Read Variable
0x01, // Anzahl der Items: 1
0x12, // Variablenspezifikation: S7 ANY Pointer
0x0A, // Länge der Adressierungsspezifikation: 10 Bytes
0x10, // Syntax-ID: S7-Adressierung
0x04, // Transportgröße: Word (0x04)
0x00, 0x02, // Anzahl der zu lesenden Bytes: 6 (3 * 2)
0x00, 0x08, // Datenbausteinnummer: DB8
0x84, // Speicherbereich: DB (0x84)
0x00, 0x00, 0x00, // Offset in Bits: 16 (2 Byte * 8) → Beginn bei Word 1
0x00 // Bit-Offset: 0
};
in Wireshark sieht es eigentlich soweit gut aus.
Code:
S7 Communication
Header: (Job)
Protocol Id: 0x32
ROSCTR: Job (1)
Redundancy Identification (Reserved): 0x0000
Protocol Data Unit Reference: 1
Parameter length: 15
Data length: 0
Parameter: (Read Var)
Function: Read Var (0x04)
Item count: 1
Item [1]: (DB 8.DBX 0.0 WORD 2)
Variable specification: 0x12
Length of following address specification: 10
Syntax Id: S7ANY (0x10)
Transport size: WORD (4)
Length: 2
DB number: 8
Area: Data blocks (DB) (0x84)
Address: 0x000000
.... .000 0000 0000 0000 0... = Byte Address: 0
.... .... .... .... .... .000 = Bit Address: 0
hier noch die connection
Code:
ISO 8073/X.224 COTP Connection-Oriented Transport Protocol
Length: 17
PDU Type: CC Connect Confirm (0x0d)
Destination reference: 0x0001
Source reference: 0x0004
0000 .... = Class: 0
.... ..0. = Extended formats: False
.... ...0 = No explicit flow control: False
Parameter code: tpdu-size (0xc0)
Parameter length: 1
TPDU size: 512
Parameter code: src-tsap (0xc1)
Parameter length: 2
Source TSAP: 0100
Parameter code: dst-tsap (0xc2)
Parameter length: 2
Destination TSAP: 0101
Hat eventuell jemand eine Idee was an dem Readrequest falsch sein könnte? Oder hat eventuell jemand ein funktionierendes Beispiel?
Viele Grüße
Markus
Zuletzt bearbeitet: