Übersetzung von Modbus-Variablen in IEC60870

L

Luk-11

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,

ich habe in CoDeSys 2.3 ein kurzes Programm für einen Modbus-Master und auch eines für den Modbus-Slave geschrieben:
Der Modbus-Master lies drei Variablen des Modbus-Slaves aus und setzt eine. Das klappt soweit ganz gut. Im letzten Bild seht ihr einen Screenshot des Main-PRG.

Ich möchte jetzt im nächsten Schritt die ausgelesenen Daten in IEC60870 übersetzen und an meinen TCP-Client schicken (simuliert durch Winpp104).
Dazu habe ich im IEC60870-Konfigurator die Einstellungen vorgenommen, die ihr in Bildern 3 und 4 seht.
In Winpp104 habe ich die Einstellungen vorgenommen, die in Bild 1 zu sehen sind. Wenn ich jetzt die SPSen anstelle, erhalte ich in Winpp104 als Output das, was in Bild 2 zu sehen ist.
Ich kann hiermit leider nicht so viel anfangen. Die zweite Nachricht ist zwar rot, lautet aber: Zentrale verbunden mit 10.3.0.14 (und das ist die IP meines Modbus-Masters).
Ich möchte jetzt natürlich die ausgelesenen Daten auch in Winpp104 sehen. Und am liebsten würde ich auch gerne den einen Wert, den der Modbus-Master im Slave setzt, von Winpp104 aus setzen. Ist das möglich? Lässt sich der Traffic vlt besser mittels Wireshark beobachten? Das habe ich auch installiert.

screen1.jpg


screen2.jpg


screen3.jpg


screen5.jpg

screen7.jpg
 
hmm... folgendes funktioniert:

1. Die Type-ID der Objekte ist natürlich falsch: Da ich drei Gleitkomma-Zahlen auslesen möchte, verwende ich jetzt IObj13. Das Setzen der einen Variablen lasse ich erstmal aus - der Einzelbefehl scheint nur das Setzen von Booleschen Werten zu ermöglichen.

2. Im IEC60870-Konfigurator, im Feld "IEE 754" für IObj13, trage ich jetzt den Namen der Slave-Variablen ein. Statt also "W0" schreibe ich jetzt "MBCFG_ModbusSlave.xNewVar" und entferne den Haken von "Automatisch anlegen".
Mich wundert es, dass dies einen Unterschied macht, da im PLC_PRG ja "W0 := MBCFG_ModbusSlave.xNewVar" gesetzt wird.

Weiß jemand woran das liegen kann?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

zur Fernwirktechnik kann ich nichts sagen. Ein kurzes überfliegen hat mir nur gezeigt, daß es verschiedene Objekte für verschiedene Signalarten gibt (Bool, Analog, Ein/Ausgang, etc.). Die müssen natürlich passen.

W0 existiert nur lokal in PLC_PRG. Du mußt sie entweder über PLC_PRG.W0 ansprechen oder W0 in der globalen Variablenliste deklarieren..

Gruß
 
Was du im WinPP sieht, sind Test-Frames, die werden nur zum testen der Verbindung hin und her geschickt. Du musst einen Befehl (z.B. TK50) oder einen Sollwert (z.B. TK45) schicken, damit in der Wago was ankommt. Zyklisches Lesen und schreiben von Wörtern, wie es der SPSler gewöhnt ist, kennt die IEC104 nicht. Übertragen wird nur auf anforderung (von der Leitstelle aus) oder bei Änderung (von der Unterstation).
 
Zuletzt bearbeitet:
Zurück
Oben