Modbus Befehl schreibt zwei Adressen

Hallo zusammen,

ich arbeite in der letzten Zeit an dder optimalen Kommunikation zwischen meiner Beckhoff SPS und dem Symcon-Server via Modbus. Das ganze dann in Verbindung mit IPS-View für eine Visualisierung.

Leider habe ich nur Wissen über die Kommunikation die ich mir selber erlesen habe.

Ich habe ein Problem mit dem schreiben von mb_Output_Registers.

Und zwar habe ich festgestellt, wenn ich eine Adresse, z.B. mb_Output_Registers[4] (WORD16Bit-Adresse:32772) auf Wert 2 schreibe, ändert sich der Wert mb_Output_Registers[3] (INT32Bit-Adresse:32771) auf 131072.
Dabei spielt es auch keine Rolle ob es ein Int32,Int64,Word, oder Real ist.

Das ganze passiert immer mit der Adresse zuvor. Nur verstehe ich nicht warum.
Derzeit kann ich um dieses Problem zu umgehen nur jede zweite Register-Adresse nutzten.

Vielleicht könnt ihr mir dabei helfen.

Vielen Dank im Vorraus.

Ich noch mal,

ich habe jetzt weitere Versuche gemacht und folgendes heraus gefunden.

Ich habe mb_output_registers[72] , mb_output_registers[73] und mb_output_registers[74] als test benutzt.

Ich habe mir Button in IPS-View angelegt und neben mein Twincat gelegt.

Als erstes setze ich die 72 auf Wert 2.
In Symcon und Twincat wechselt der Wert auf 2.
In IPS-View wird 2 angezeigt.

Jetzt setzet ich die 73 auf 2.
Im Symcon wechselt die 72 auf 131074, die 73 auf 2.
Im Twincat bleibt 72 auf zwei und 73 wechselt auf 2.
Im IPS-View wechselt die 72 auf 23 (max-wert der anzeige), die 73 auf 2.

Jetzt setzet ich die 74 auf 2.
Im Symcon wechselt die 72 auf 131074, die 73 auf 131074, die 74 auf 2.
Im Twincat bleibt 72 auf zwei, 73 auf zwei und 73 wechselt auf 2.
Im IPS-View bleibt die 72 auf 23 (max-wert der anzeige), wechselt die 73 auf 23 (max-wert der anzeige), die 74 auf 2.

Mache ich das ganze jetzt rückwärts, und setze die Werte wieder auf 0 geht das ganze auch Rückwärts.

Wenn ich aber anstatt erst die 74 wieder auf 0 zu setzen, die 73 auf 0 setze setzt dies automatisch die 74 auf 0, sowohl im Symcon als auch im Twincat und ips-view.

Also scheint es mir als wenn es ein verarbeitungsfehler im Symcon ist , da mein Twincat ja nicht betroffen ist.

Grundsätzlich ist es ja nicht so schlimm wenn in der Konsole nicht der originale Wert gezeigt wird, aber diese Fehlanzeige betrifft auch den View. Zu dem ist es natürlich ganz schlecht wenn mit dem 0 schreiben einer Adresse auch die vorher gehende Adresse auf 0 geschrieben wird…

Alles sehr verwirrend.

Ich hoffe das mir hier jemand helfen kann.

Was hast du denn in der Instanz konfiguriert? Hast du dort auch korrekt Word ausgewählt?

Wenn du in IP-Symcon z.B. Integer wählst, dann schreibt IP-Symcon immer mehrere Register.

paresy

Danke für die Antwort ,
es ist tatsächlich so. Ich habe die Modbus-Instanzen als Integer geschrieben.

Ich habe sie auf WORD umgeschrieben und jetzt wird auch nur noch die eigentliche Instanz geschrieben.

Ich hätte aber auch schon eher drauf kommen können. Die Register in der Steuerung sind ja auch als WORD deklariert.