WAGO Modbus Kommunikation

capri-fan

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

ich habe einen WAGO Controller 750-841 und einen Koppler 750-352 von dem ich Signale einlesen möchte.

Auf dem Controller läuft im Moment nur die WagoLibModbus_Sample01.pro und ich kann auch in awReceifeBuffer
erkennen wenn ich am Koppler einen Eingang auf 1 schalte.

Wie aber wird adressiert? Ich habe schon Stunden im Netz gesucht aber nicht das passende gefunden (oder ich bin zu blöd dazu).

Sind die Signale vom Koppler Merker oder was?

Gruß
c-f
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe das gleiche Problem - Kopplung einer Wago 750-881 mit einem Slave Wago 750-352.
Zum Einsatz kommt der Baustein ETHERNET_MODBUSMASTER_UDP.
Leider bin ich nicht so schlau, die Wago Anwendungshinweise zu verstehen.
Ein kleines Beispiel, wie ich mittels dieses Bausteins die beiden Eingänge meiner ersten Klemme am Slave 750-352 ansprechen kann wäre nett.
Die erste Klemme ist die 750-400 und hat 2 digitale Eingänge.
Netzwerktechnisch sind beide SPS Geräte im Netz und auch per Browser ansprechbar, Master 192.168.24.222 und Slave 192.168.24.222

Danke für Eure Hilfe!
composti
 
Sorry, war ein Schreibfehler!
Master 192.168.24.222 und Slave 192.168.24.223
Bestimmt kannst du mir mit diesen Informationen weiterhelfen :p
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So, nun habe ich mal gebastelt. An sich fehlt mir jetzt nur noch die Umsetzung der I/O des Slaves auf die Arrays ptreaddata und ptsenddata. Gibt es keine Möglichkeit, die I/O des Slaves direkt anzusprechen?
Modbusmaster.PNG
 
Sieht m.W. doch schon ziemlich gut aus... viel anders mach ich das glaub auch nicht (nur halt in ST)

Ob folgendes die Ideallösung darstellt, weiß ich nicht, aber es funktioniert (bin ja kein Profi ;) )
Wago 841 kommuniziert mit 842 über Modbus; 2 Byte werden gelesen und 2 Byte werden geschrieben, also die ersten 16 Eingänge gelesen und die ersten 16 Ausgänge geschrieben.

Code:
Master1        : ETHERNET_MODBUSMASTER_UDP;
Funktion        : BYTE     := 16#17;
ReadAddress    : WORD     := 16#0000;
ReadQuantity    : WORD    := 16#0002;
Rec_Buffer    : ARRAY[1..10] OF WORD; (*lieber zu groß, als zu klein *)
WriteAddress    : WORD    := 16#0000;
WriteQuantity    : WORD    := 16#0002;
Send_Buffer    : ARRAY[1..10] OF WORD;
Start          : BOOL;
Fehler        : WORD;
Fertig        : BOOL;
T1        : TON;
Z1        : CTU;
Code:
(* Sende Daten vorbereiten *)
Send_Buffer[1].0 := OutSlave0;
Send_Buffer[1].1 := OutSlave1;
Send_Buffer[1].2 := OutSlave2;
.......

Master1(
strIP_ADDRESS := '192.168.115.22', bFUNCTION_CODE := Funktion, wREAD_ADDRESS:=ReadAddress, wREAD_QUANTITY:=ReadQuantity,ptREAD_DATA:=ADR(Rec_Buffer[1]), 
wWRITE_ADDRESS:=WriteAddress,wWRITE_QUANTITY:=WriteQuantity,ptSEND_DATA:=ADR(Send_Buffer[1]),xSTART:=Start,xRESET:=0);

Fehler := Master1.wERROR;
Fertig := Master1.xREADY;

T1(IN:=(NOT T1.Q AND Fertig), PT:=t#1ms);
Start := T1.Q;

(* Empfangene Daten auswerten *)
InSlave0 := Rec_Buffer[1].0;
....

Nehm auch gern noch Verbesserungsvorschläge von den Profis an ;)
 
Hallo Methi,

genau der Teil hat mir gefehlt:

(* Empfangene Daten auswerten *) InSlave0 := Rec_Buffer[1].0; ....
Ich danke dir, gruß composti
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Analoge Ausgangsklemme im Slave ansprechen

Hallo,
nun stehe ich vor dem Problem, dass ich eine analoge Ausgangsklemme ansprechen will. Wie kann ich den

"Send_Buffer[1].0 := OutSlave0" auf die erste analoge Ausgangsklemme im Slave mappen?
Danke für jede Hilfe
composti
 
Hallo CAS,
vielleicht habe ich mich aufgrund der fehlenden Kenntnisse falsch ausgedrückt.
Ich habe in der Variablen "Outslave0" (Word) einen Wert von z.B. 245 stehen. Diesen Wert möchte ich an den Sendbuffer übergeben, der die erste analoge Ausgangsklemme anspricht.

Send_Buffer[1].0 := OutSlave0;
Wie muss ich den "Sendbuffer" definieren, dass die erste analoge Ausgangsklemme im Slave angesprochen wird und dort ein Wert von 0-32671 übergeben werden kann?

Das entspricht einer Ausgangsspannung von 0-10V.
Im zitierten Beispiel kann ich nur eine digitale Ausgangklemme mit dem Wert 0 oder 1 ansprechen.

Gruß
composti
 
Hallo,
das habe ich bereits wie weiter oben im Beitrag steht bereits für digitale Aus- und Eingänge auf dem Slave realisiert. Der Slave hat das Programm schon eingebaut und im Master nutze ich den Baustein ETHERNET_MODBUSMASTER_UDP erfolgreich. Wie muss die Variable für die analoge Klemme aufgebaut sein und wie heißt die erste analoge Wago Ausgangsklemme am Slave?
Damit komme ich nicht klar, dass es über eine Variable gehen muss, habe ich verstanden.

Gruß
composti
 
Zuviel Werbung?
-> Hier kostenlos registrieren

Achtung: Es funktioniert auch problemlos mit dem Funktionscode FC23, damit kann ich sowohl digitale Ein- und Ausgänge als auch die Analogklemme ansteuern.
Im Anhang ein meine Lösung für den Kommbaustein im Master.
Gruß
composti

komm.JPGkomm1.JPG
 
Zurück
Oben