# Modbus_Extended_Master Modb_I05.lib wago  Slave/Server auslesen/schreiben



## humpelbein (9 Oktober 2017)

Hallo Leute,

Ich habe folgendes Problem.

Ich möchte die verwendete PFC200 8202 Steuerung als Modbus Master mit einem Wago fremden Slave/Server verbinden. Zum einen möchte ich dafür die Ethernet bzw. Modbus TCP und zum anderen Modbus RTU Rs232 verwenden. Bei Verwendung des FB Ethernet_Modbusmaster_TCP aus der WagoLibModbus_IP_01.lib klappt alles. Ich kann den Slave auslesen und Werte in Register schreiben.

Schließe ich die serielle Schnittelle an ( Com0) und verwende den FB Modbus_Extended_Master der Bibliothek Modb_IO05.lib treten Probleme auf. Ich verwende Codesys 2.3. 

Mein Programm siehe Bilder soll Abwechselnd einen Schreibjob und danach einen Lesejob durchführen. Dazu initalisiere ich alle Daten, welche nicht geändert werden müssen und ändere je nach Fall immer nur die benötigten Werte. ( Siehe Case ). Leider klappt nur das Schreiben. Wo liegt mein Fehler? Ich habe schon viel probiert und habe bemerkt, dass sobald der Functioncode geändert wird gar nichts mehr passiert. Es funktioniert nur der Funktionscode 16. Nutze ich einen anderen funktioniert es nicht. Kommentiere ich das Lesen aus werden die Schreibjobs durchgeführt. Kommentiere ich die Schreibjobs aus wird kein Auslesen durchgeführt. Manchmal habe ich ganz kurz einen Timeout Fehler im enumMB_ERROR.






Für Tipps wäre ich dankbar.

Gruß Flo


----------



## Sagas (9 Oktober 2017)

Hallo,

leider wird mir kein Anhang angezeigt. 
Kurze Rückfrage: Was spricht gegen den ModBus-Master in der Steuerungskonfig? Zumindest zum ersten Test der Funktion wäre es evtl. ratsam.

Grüße


----------



## humpelbein (9 Oktober 2017)

Hi,

wenn ich den Konfigurator nutze bzw. anklicke stürzt mein Codesys sofort komplett ab. Auch nach nochmaliger Installation. Könnte am Rechner liegen. Hab es bis jetzt noch an keinem anderen ausprobiert. Wollte  es erst mal per Fb  lösen. Kann man nun die Bilder öffnen?


----------



## Sagas (9 Oktober 2017)

Hallo,

gut wenn CoDeSys komplett abstürzt stimmt aber evtl mehr nicht. Hast du die Kommunikation über RTU schon ganz einfach getestet ohne Schrittekette und welchsel zwischen Read/Write? 

Die Anhänge sind nu da, danke.

Hab das Handbuch gerade nicht griffbereit, aber bist du sicher das Com 0 richtig ist und nicht der interne Service-Port? 

Grüße


----------



## humpelbein (9 Oktober 2017)

Hi,

ich versuche den Konfigurator heute Abend mal auf nem anderen Rechner aus. Das einzelne Schreiben mit Funktionscode 6 und 16 funktioniert. Was mich aber auch stutzig macht ist, dass in meiner Response nichts drin steht außer Nullen. Also anscheinend bekommt er keine Antwort vom Slave? 

Der Service Port? die Klappe wo ich mit dem USB Kabel die IP ändern kann?


----------



## Sagas (9 Oktober 2017)

Hi,

ja genau die Schnittstelle meinte ich - im Kern ist es ja auch nur eine Serielle Schnittstelle und ich meine da was im Hinterkopf gehabt zu haben. Evtl. macht es Sinn die Kommunikatoin wenn möglich wirklich erst mit dem Master-Tool zu testen. 

"ModBus Poll" wre ein nettes Tool wenn man mehr testen möchte.


----------



## humpelbein (9 Oktober 2017)

Okay ich teste das mal heute Abend. Hab mal nachgeschaut. Bei der PFC200 ist die Nummerierung von links nach rechts : Die stationäre com0 die service com1 usw. also das sollte passen. Vll. liegt es ja auch wirklich am Slave das er keine Response Daten ausgibt?


----------



## humpelbein (10 Oktober 2017)

Wenn ich das ganze mit dem Modbus Konfigurator mache kann ich weder schreiben noch lesen. Mir ist gestern aufgefallen, dass es ich einen binterfaceError bekomme mit der Nummer 4. Wo finde ich denn eine Liste in der steht welcher Fehler das ist?


----------



## Sagas (10 Oktober 2017)

Hallo, 

das Handbuch sagt dazu: 

0x04

This function block instance has already been 

assigned a different COM port. 


Also scheint doch etwas mit deiner Port-Zuordnung nicht zu stimmen. Das Handbuch bezeichent Port 1 auch als Service-Port. Und alle weiteren Schnittstellen wie 750-65x als fortlaufende Zahlen. 
Zum Vergleich http://www.wago.us/appnoteadmin/libraries23/Modb_l05/public/Modb_l05_en.pdf

Gruß


----------



## Tiktal (10 Oktober 2017)

Hier nochmal in Deutsch ;-)


----------



## humpelbein (10 Oktober 2017)

Okay danke hab ich mir mal ausgedruckt  

also momentan verwende ich com0 und kann immer noch nur in verschiedene Register schreiben. Kann es sein, dass das Problem folgendes ist? Beim starten vom Schreibjob wird nach der eingestellten Timeout Zeit der Timeout error ausgegeben und er versucht sofern ich den Auslesejob nicht auskommentiert habe diesen zu starten. Dabei merkt er das der letzte Schreibjob nicht abgeschlossen wurde und es findet eine doppel Belegung der com schnittstelle statt? 
Habe bemerkt das er eigentlich immer das Timeout auslöst, da keine Antwort vom Slave kommt. Die Response Datei ist immer leer. Habe ich vll. beim verkabeln einen Fehler drin ( vllt. das kreuzen von RxD un TxD)? Aber dann dürfte das schreiben eigentlich auch nicht funktionieren oder? Der Slave ist eine Eaton SPS an der ich auch an den blinkenden LEDS sehe das etwas ankommt ( RxD und TxD Blinken ).


----------



## humpelbein (11 Oktober 2017)

Hallo Leute,

nach endlosem rumprobieren habe ich meine SPS komplett platt gemacht und mit der neusten Firmeware neu bespielt. Zuvor sendete die sps die Daten an den Slave konnte aber keine Antwort empfangen. Jetzt nach dem kompletten Neustart funktioniert alles Einwandfrei. Ich vermute mal, dass da irgendwas mit der Firmware nicht gepasst hat. 

Danke


----------

