Einige Dinge fallen mir beim erneuten Lesen der Beiträge auf.
- Beitrag #1 zeigt dein "Modbus_Comm_Load"-Einstellungen. Dort ist 9600 Baud und NoParity eingestellt. Da musst du nochmal die richtigen Einstellungen treffen auch wenn du die HW-Config schon eingestellt hast. Also in deinem Fall (19200 und 2 - Even). Auch den Parameter "MODE" im IDB des "Modbus_Comm_Load" würde ich mit 4 (Halbduplex) beschreiben.
- Den falschen DATA_PTR an "Modbus_Master" hast du ja schon behoben. Was hast du da jetzt dran? Ein Array of Word in einem Global-DB?
- Beitrag #10 zeigt eine Einstellung von 2 Stoppbits. Ist nicht üblich. Eher 1 Stoppbit, kann das aber in der Anleitung des Gerätes auch nicht erachten.
Nachdem du den "Modbus_Comm_Load" dann erfolgreich ausgeführt hast, also Signal "Done" ohne "Error" erhalten hast, könntest du wieder die ersten Versuche starten. Konntest du überhaupt schon Daten lesen? Vor dem Schreiben würde ich immer erstmal versuchen zu lesen.
Ich würde mal versuchen Modbus-Funktion 1 (Read Coils) auszuführen. Zum Beispiel MODE 0, DATA_ADDR 1, LEN 1.
Erst wenn der Befehl mal durchläuft ohne das der Modbus_Master einen Fehler ausspuckt, dann würde ich weitergucken.
Wie gesagt, wenn du einen RS485/USB-Adapter hättest, dann könntest du den Verkehr der aus der CPU kommt beobachten. Damit wären so einfach grundlegende Dinge wie "A/B vertauscht" schon mal weg. Du könntest ggf. den CPU mit einem ModbusSlave-Simulator am PC kommunizieren lassen oder von PC mit einem ModbusMaster-Programm versuchen mit deinem Gerät zu sprechen. Das macht die Fehlersuche deutlich einfacher. Vor allem wenn man dann zwei Geräte (PC und SPS) nicht mit dem Slave sprechen können, dann kann man die Suche im SPS-Code mal beiseite legen.
Ich hab mit einer 1200 und einem CB1241 mal schnell ein Beispiel zusammengeschrieben und getestet. Das funktioniert hier mit dem PC und RS485-Adapter als Modbus-Slave. Das kannst du vielleicht als Anhaltspunkt nehmen.