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



## blue_led (10 Dezember 2018)

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     OINTER TO BYTE;
 wWRITE_ADDRESS    :WORD:=12288;
 wWRITE_QUANTITY    :WORD:=1;
 ptSEND_DATA     OINTER 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.


----------



## dingo (10 Dezember 2018)

Wie kommst Du auf die Adressen?

Du möchtest Register aus der Logo in die Wago lesen, Richtig?

Kennst Du die Logo Adressen?

Schau mal in dieser Tabelle von Scorp:
Anhang anzeigen 43744


Die habe ich hier gefunden:

https://support.industry.siemens.com/tf/de/de/posts/logo-8-modbus/181646/?page=0&pageSize=10


----------



## PN/DP (10 Dezember 2018)

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


----------



## Blockmove (10 Dezember 2018)

Wer ist eigentlich Client und wer Server?


----------



## blue_led (10 Dezember 2018)

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.


----------



## blue_led (10 Dezember 2018)

Hier noch zwei Fotos von dem Testprogramm auf der Logo und dem Server Baustein auf der Wago.


----------



## PN/DP (10 Dezember 2018)

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


----------



## blue_led (10 Dezember 2018)

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.


----------



## PN/DP (10 Dezember 2018)

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


----------



## blue_led (19 Dezember 2018)

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.


----------



## Thruser (19 Dezember 2018)

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ß


----------



## blue_led (20 Dezember 2018)

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:


----------

