Modbus TCP Register auslesen?

Geisterkarle

Level-2
Beiträge
126
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

habe zum ersten Mal eine WAGO SPS vor mir und auch zum ersten Mal eine Modbusschnittstelle. Und ich kapiere nicht genau, wie ich da jetzt was auslese...
Ich habe ein
FBConnect : ModbusFB.ClientTCP;
angelegt und kann damit auch eine Verbindung aufbauen. (behauptet zumindest der Baustein) Aber wie kann ich nun was auslesen?
Habe in der Doku des Teilnehmers, dass ich - in diesem Falle - im Register 2000 die benötigten Daten finde. Klingt also simpel, einfach Register abfragen.
Oder brauch ich da was mit ModusTCP/IP-Commands? Weil da steht was von "Function-Code 03 -> Read Multiple Registers". Sagt mir noch nichts.

Dachte, kann da "ModbusFB.ClientRequestReadRegisters" machen, aber kann das nicht anlegen, da meint CodeSys das wäre ein Abstract und kann nicht instanziert werden ... ok, was heisst das für mich Dummerchen? Und wie könnte ich alternativ so nen Command aufrufen?

Es gibt bei Codesys nen Beispielprojekt
Aber komme damit nicht klar. Da werden irgendwelche Pointer auf Pointer of Arrays und sowas gelegt, das verwirrt mich nur noch mehr.

Ich muss keine Werte schreiben, sondern im Prinzip nur ein Wort auslesen und da stehen Bitweise die Sachen drin, was ich brauche. Kann das so komplex sein?

Hat mir wer Tipps, wonach ich schauen muss? Würde mich freuen!

grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Geisterkarle,

da du offenbar noch nicht ganz fit mit Modbus bist ist der Konfigurator für dich vielleicht die einfachere Lösung.

Da du nicht genauer nennst welchen Controller du nimmst und welche Programmierumgebung gehe ich mal von einem Codesys 3.5 fähigen Controller aus.

Von WAGO gibt es da ein ganz gutes Video, welches die Nutzung des Konfigurators gut erklärt. Da könntest du dir alles zusammenklicken was du brauchst, vielleicht hilft dir das erstmal weiter:
Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.

Mit der Codesys Modbus-Bibliothek kenne ich mich zwar nicht aus, allerdings bietet WAGO da auch die WagoAppPlcModbus, die eigentlich recht einfach ist. Im Bibliotheksverwalter findet man dazu sogar direkt ein Beispiel, was man einfach kopieren kann.
 
Ich habe einen Wago PFC200 Controller und ja, Codesys 3.5. Funktioniert auch soweit.

Und ok, wusste nicht, dass ich den Modbus auch von der Konfig machen kann! Warum kämpfe ich mit der Programmierung? :p Da ich nur Werte auslesen muss, reicht mir ein simples EA-Abbild.
Jetzt muss es nur noch tun... hab das identisch des Videos angelegt, aber alle "Eingänge" sind 0/false. Aber überall "läuft" und keine Fehlermeldungen oder Errorlesungen.
Hab mir mal zum testen ModbusTool runtergeladen. Damit kann ich was auslesen und sehe Werte. Benutze da auch den gleichen Function-Code, wie im SlaveKanal im Codesys. Aber da ist nichts!
Wonach könnte ich da noch schauen?
 

Anhänge

  • mod1.PNG
    mod1.PNG
    18,6 KB · Aufrufe: 10
  • mod2.PNG
    mod2.PNG
    11,9 KB · Aufrufe: 10
  • mod3.PNG
    mod3.PNG
    28,8 KB · Aufrufe: 10
Ah ok, Addendum:
habe herausgefunden, Codesys ist HEX, mein Tool Dezimal... und warumauchimmer lügt mich meine Anleitung des Teilnehmers an! Wenn da Register 2000 steht, muss ich 1999 abfragen für den korrekten Wert! Hatte das "Pech" immer auf einen Wert nebendran zu schauen, der 0 ist!
"Es gibt nur zwei Arten von Programmierern:
1. die ihre Arrays mit 1 anfangen
1. die ihre Arrays mit 0 anfangen"
oder wie?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
warumauchimmer lügt mich meine Anleitung des Teilnehmers an! Wenn da Register 2000 steht, muss ich 1999 abfragen für den korrekten Wert! Hatte das "Pech" immer auf einen Wert nebendran zu schauen, der 0 ist!
"Es gibt nur zwei Arten von Programmierern:
1. die ihre Arrays mit 1 anfangen
1. die ihre Arrays mit 0 anfangen"
oder wie?
Ja genau deshalb. Das ist bei Modbus normal, dass man das ausprobieren muss, ob das Kommunikationsprogramm und die Geräte-Dokumentation die Registernummern gleich zählen. Kriegt man aber sehr schnell beim Programmtest raus, den man ja bei seiner Programmierung macht... Außerdem ist manchmal auch noch zusätzlich erforderlich, 30000 oder 40000 zu der Registernummer zu addieren oder subtrahieren.
 
Zurück
Oben