-> Hier kostenlos registrieren
Hi,
ich krieg momentan einen Fehler nicht beseitigt und dachte mir ich poste mal hier, vielleicht hat jemand schon ein ähnliches Problem gehabt:
Mein Setup:
S7-1200 (FW 3.0.2) mit CM1241 RS422/485 (FW 1.1.0) verbunden mit Nanotec SMCI174-S-2.
Ich schreibe ein Befehl auf den Bus und die Nanotec Steuerung antwortet auch darauf.
Nun passiert aber folgendes:
Beim ersten Auslesen mit RCV_PTP bekomme ich keine Daten in mein Char Array.
Im zweiten Aufruf bekomme ich 4 Char zu viel, danach sind die Nachrichten von der Länge richtig, aber immer um 4 Char verschoben.
Die Konfiguration des CM1241 hat als Nachrichtenende 0x0D, also $R.
Empfangen sollte ich und ist auch physikalisch auf dem Bus:
0x 30 30 31 24 31 36 31 0D
Beim ersten Auslesen steht im Array:
0x 30 30 31 24 31 36 31 0D 30 30 31 24
In meinem Array liegt immer:
0x 31 36 31 0D 30 30 31 24
Ich habe mittlerweile versucht den Buffer mit RCV_RST zu löschen, aber dann fängt er mit dem Problem nur wieder von vorne an.
Ich habe das Endzeichen auf irgendeinen Wert in der Mitte der Nachricht gelegt, danach kamen ab dem neuen Endzeichen 4 Byte zuviel.
Das einzige, was funktioniert hat, ist das Abschalten der Endzeichenerkennung und das Erkennen des Nachritenendes durch Timeout.
Ich würde aber lieber aufs Endzeichen gehen aus Timing Gründen.
Hat jemand noch ne gute Idee oder muss ich einfach auf das Timeout gehen?
Danke
ich krieg momentan einen Fehler nicht beseitigt und dachte mir ich poste mal hier, vielleicht hat jemand schon ein ähnliches Problem gehabt:
Mein Setup:
S7-1200 (FW 3.0.2) mit CM1241 RS422/485 (FW 1.1.0) verbunden mit Nanotec SMCI174-S-2.
Ich schreibe ein Befehl auf den Bus und die Nanotec Steuerung antwortet auch darauf.
Nun passiert aber folgendes:
Beim ersten Auslesen mit RCV_PTP bekomme ich keine Daten in mein Char Array.
Im zweiten Aufruf bekomme ich 4 Char zu viel, danach sind die Nachrichten von der Länge richtig, aber immer um 4 Char verschoben.
Die Konfiguration des CM1241 hat als Nachrichtenende 0x0D, also $R.
Empfangen sollte ich und ist auch physikalisch auf dem Bus:
0x 30 30 31 24 31 36 31 0D
Beim ersten Auslesen steht im Array:
0x 30 30 31 24 31 36 31 0D 30 30 31 24
In meinem Array liegt immer:
0x 31 36 31 0D 30 30 31 24
Ich habe mittlerweile versucht den Buffer mit RCV_RST zu löschen, aber dann fängt er mit dem Problem nur wieder von vorne an.
Ich habe das Endzeichen auf irgendeinen Wert in der Mitte der Nachricht gelegt, danach kamen ab dem neuen Endzeichen 4 Byte zuviel.
Das einzige, was funktioniert hat, ist das Abschalten der Endzeichenerkennung und das Erkennen des Nachritenendes durch Timeout.
Ich würde aber lieber aufs Endzeichen gehen aus Timing Gründen.
Hat jemand noch ne gute Idee oder muss ich einfach auf das Timeout gehen?
Danke