Wago 750-881 per Modbus mit einer Siemens Logo8.FS4 verbinden.

blue_led

Level-2
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
ich versuche momentan verzweifelt eine Verbindung zwischen einem Wago 881 Controller und einer Modbus fähigen Logo 8 aufzubauen.
Mit dem Modbus Konfigurator habe ich schon mal paar Generische Variablen zugewiesen.
Code generiert und auch gespeichert.
Als Baustein verwende ich in meinem Programm " ETHERNET_MODBUSMASTER_TCP "
Alle Werte eingegeben:

xCONNECT :BOOL;
strIP_ADDRESS := IP Adresse ;
wPORT :WORD := 502;
bUNIT_ID :BYTE := 255; ( "0" habe ich auch schon versucht )
bFUNCTION_CODE :BYTE:= 23
wREAD_ADDRESS :WORD:=12288;
wREAD_QUANTITY :WORD:=3;
ptREAD_DATA :pOINTER TO BYTE;
wWRITE_ADDRESS :WORD:=12288;
wWRITE_QUANTITY :WORD:=1;
ptSEND_DATA :pOINTER TO BYTE;
tTIME_OUT :TIME:=t#40ms;
tCON_WATCHDOG :TIME:=t#1s;
xSEND :BOOL;
xIS_CONNECTED :BOOL;
wERROR :WORD;
bRESPONSE_UNIT_ID :BYTE := 255; ( "0" habe ich auch schon versucht )

im Programm " PLC_PRG " wird der Baustein auch aufgerufen.
" MBCFG_ModbusSlave " und " MODBUS_CONFIGURATION " werden auch aufgerufen.

Wenn ich nun " xCONNECT " auf TRUE stelle, kommt leider die Fehlermeldung unter

wERROR: 150 oder als hex 0x96: Server not available angezeigt.

Irgendwas mache ich falsch.

Programmierung mit Codesys.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast Du auf der LOGO schon den Modbus-Server (Modbus-Server-Verbindung) eingerichtet?

Wozu rufst Du den Baustein "MBCFG_ModbusSlave" auf? Ich kenne Wago nicht, doch ich glaube, den Baustein brauchst Du nicht. Du müsstest vermutlich einen Baustein aufrufen, der nach Modbus-Master oder Modbus-Client klingt.
Wo kommt der Wert in wERROR her? Von dem Modbus-Slave-Baustein?

Probiere mal das Testprogramm von Scorp (4. Beitrag im von dingo verlinkten Siemens-Forum)

Harald
 
Erst mal danke für die schnellen Antworten.
Ich beschäftige mich mit der Thematik schon seit zwei Wochen und habe auch schon sehr viel hin und her probiert.
Die Liste mit den Logo Adressen kenne ich und habe es auch mit diversen Adressen davon versucht.
Im ersten Schritt möchte ich erst mal die Kommunikation zwischen den beiden Steuerungen ausprobieren.
Heißt aus zwei Testprogrammen Variablen oder Merker ( Word und Bit weise )zwischen den beiden Steuerungen hin und her zu schicken.

Logo läuft als Client ist auch so eingestellt.
Unter Netzwerk Verbindungen kann ich im Logo Display auch sehen das Sie als Client verbunden ist.

Wago läuft als Server.
Den Baustein MBCFG_ModbusSlave rufe ich momentan aus Verzweiflung auf 😂.
Wie gesagt ich habe schon viel versucht.
 
Bei Modbus haben sich leider historisch etwas verwirrende Bezeichnungen für Client und Server etabliert.
Bei Dir:
- LOGO = Client = Master (Logo sagt der Wago welche Werte sie haben will)
- Wago = Server = Slave (Wago antwortet der Logo)

Die Wago mußt Du als Server betreiben - also als Slave konfigurieren. Den Modbus-Master-Baustein brauchst Du nicht für die Kommunikation mit der Logo.

Harald
 
Ok, danke für die Erklärung.
Bei der Sichtweise ist die Fehlermeldung auch nachvollziehbar.
Fehler 150 heißt ja keine Verbindung zum Server.
Nun brauche ich aber einen anderen Baustein um an die Werte von der Logo zu kommen.
Natürlich möchte ich aber erst das Programm auf der Logo mit der Wago starten
und im Anschluss die programmieren Ausgangswerte von der Logo an die Wago
schicken und anzeigen lassen.
Dementsprechend brauche ich vermutlich sogar zwei Bausteine.
Ein Programm sendet von Wago zu Logo.
Das andere empfängt auf der Wago von der Logo.
Ist die Logo dann einmal Client und ein mal Server?


Wenn das geklappt hat dann kann ich darauf meine ganze Kommunikation aufbauen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Modbus-Client kann nicht nur Variablen lesen sondern auch schreiben. Was (und wann) aus/in Variablen des Servers gelesen und geschrieben wird das muß im Client-Programm programmiert werden. Im Modbus-Server muß lediglich der Server-Dienst eingerichtet und gestartet werden, alles andere handelt der Server-Dienst ohne das Anwenderprogramm. (d.h. man muß keine Variablen-Adressen/Nummern angeben und keine Lese/Schreibe-Aufträge auslösen).

Wenn Du Werte von der Logo zur Wago übertragen willst, dann verwende im Logo-Programm einfach Netzwerk-Ausgänge. (PS: ich sehe gerade in Deinem Bild: hast Du ja schon)

Harald
 
Zuletzt bearbeitet:
Hallo,

da bin ich wieder.
Ich konnte mich erst letzte Nacht noch mal mit der Problematik beschäftigen.
Bis hierhin habe ich auch alles soweit verstanden.
Mir stellt sich jedoch die Frage welchen Funktionsbaustein oder Programm muss
ich auf der Wago laufen lassen.
Es gibt ja soviele und ich werde hier im Netz einfach nicht fündig welche „Lib“
und welches Programm das richtige ist.
 
Hallo,

da die 881 wohl der Server/Slave ist mußt Du dort eigentlich gar nichts machen, außer im WBM Modbus TCP freigeben. Lösche mal die Daten vom Modbuskonfigurator.

Du mußt nur Deine Variablen auf den Merkerbereich legen. Du fragst Coil 12291 von der Logo aus ab. Das ist Bit 3 von Merkerwort 0 (%MX0.3). Die Logo schreibt dann in Coil 12289 und 1290, das sind %MX0.1 und %MX0.2. Siehe dazu auch die Tabelle Bitzugriff Lesen (mit FC1 und FC2) bzw Bitzugriff Schreiben (mit FC5 und FC15) im Handbuch zur 881.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kurze Rückinfo.
Mein Testprogramm funktioniert endlich.

Ich habe die Daten aus dem Konfigurator gelöscht und in der Wago Steuerung die Globalen Variablen %MX0.0 bis %MX0.3 angelegt und siehe da, es funktioniert.

Logo sendet Coil 12289 auf Merkerbereich 12288 ( %MX0.0 ) der Wago.
Coil 12290 auf 12289
usw.

Somit um "1" verschoben.

Vielen Dank an Alle. :TOOL:
 
Zurück
Oben