Hallo,

muss für ein aktuelles Projekt eine Modbus-Kommunikation projektieren. Haben eine ET200s als Steuerung (mit IM151-8 PN/DP) und eine 1SI-Karte (6ES7138-4DF11-0AB0), die Modbus-Slave sein soll. Modbus soll über RS485 und RTU laufen. Habe mir das Beispielprogramm und die Beschreibung von Siemens heruntergeladen (FB81, FB2, FB3) und versuche nun, das Programm auf mein Projekt umzuwandeln. Es sollen dabei Daten vom Modbus-Master gelesen werden, und Daten vom Modbus-Master geschrieben (beide Richtungen also). Hierzu hätte ich 2 Fragen:

1.) Wie werden die Modbus-Befehle in DB-Adressen umgewandelt? Habe hier eine Schnittstellenliste vom Prozessleitsystem bekommen, indem die Modbus-Register stehen (40001, 40002...). Es gibt ja den Conversion_DB aus dem Beispielprogramm, indem ich DB-Nummern eintragen kann. Reicht das schon aus? Habe einen Schnittstellen-DB, in dem alle Austausch-Daten stehen. Schreib ich einfach dessen Nummer rein und fertig?

2.) Im Siemens-Beispielprogramm werden 2 WORDs ausgetauscht, der Empfangs-DB (Slave_Data_1) hat einen Eintrag:
buffer array[0..7] of WORD
Muss das so aufgebaut sein? Ich habe sowohl digitale Signale (Bools) und analoge (floats bzw. reals). Muss der Empfangs-DB immer aus WORDs bestehen? Oder kann ich meine Datenstruktur einfach reinschreiben so wie im Schnittstellendokument?

Versuche auch gerade über die Software Modbus Poll (als Master) eine Kommunikation aufzubauen. Die Rx-Leuchte an der 1SI-Karte blinkt auch. Modbus-Poll meldet aber Insufficient Bytes Received, und der Siemens-Baustein gibt die Fehlermeldung 08 36H aus -> laut Doku heißt das "Der intern gebildete Wert der CRC-16-Prüfsumme stimmt nicht mit der empfangenen CRCPrüfsumme überein."
Weiß hier jemand weiter?

Vielen Dank schon einmal,
Stefan