Modbus Wago Controller Koppler - Werte einlesen und schreiben

Thomasheins11

Level-1
Beiträge
98
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

nachdem ich die Modbus Bibliothek geladen habe und nun bereits das einlesen der PT100 über Modbus funktioniert, habe ich nun das Problem, dass ich keine Werte in den Koppler schreiben kann.

Über awReceifeBuffer erhalte ich die aktuellen Werte vom Koppler.

Mit awTransmitBuffer schreibt man doch Werte in den Koppler rein oder? Am Koppler habe ich einen DO hängen. Wie steuer ich die Ausgänge an?



Edit:
Benötige ich einen Modbus Baustein für Analoge Werte (FC23) und einen für Digitalwerte zum schreiben (FC5 oder FC15) ?
 
Zuletzt bearbeitet:
Hi Thomas

Welche Modbus Teilnehmer hast du denn genau? Welche Controller / Koppler? Von wo nach wo schreibst / liest du?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wago 750-881 und einen passenden Koppler (kann gerade nicht sagen, wie der genau heißt).

Lesen klappt.
Schreiben nur einen DO (Adress:0,quantity:1,awtransmitbuffer[0]:1) Wie kann ich den Ausgang 2-8 ansteuern? awtransmitbuffer[1] funktioniert nicht :(
 
was passiert bei quantity: >1 ?
generell stellt sich mir die frage, warum überhaupt per modbus und nicht z.b. über ethernet?
 
hab den Threat irgendwie verschlafen… mittlerweile geht alles über Modbus TCP. Im Anhang noch mal eine Frage bezüglich des schreibens der Koppler Ausgänge. Kann man die auch andersbeschreiben oder muss ich das so wie der Anhang zeigt machen? Wenn ich dann viele Ausgänge schalte, wird es recht komplex, da ich ja immer nur eine "Zahl" verschicken kann.

Gibt es denn noch andere Möglichkeiten, eine Verbindung über Ethernet zwischen Wago Controller und Koppler aufzunehmen? Kenne nur Modbus TCP.
 

Anhänge

  • beispiel.jpg
    beispiel.jpg
    129,1 KB · Aufrufe: 39
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich gehe davon dass dein Controller Modbus-Client ist, und der Koppler Server. Wenn Du in den Server ein Holding Regsiter beschreiben willst, sendest du üblicherweise eine 16-Bit Wert (eben ein Register). Wenn Du Bitwerte schreiben möchtest (Coils) dann werden auch Bitwerte gesendet.
Du kannst ja auf die einzelnen Bits in einem Wort zugreifen mit z.b. awTransmitBuffer[6].0 (Bit0) oder awTransmitBuffer[6].1 (Bit1). Ich würde mir dann für jeden Ausgang eine boolsche Variable beschreiben, und in einem separaten Baustein das Feldbusmapping durchführen.
 
Zurück
Oben