# MODBus-TCP Client zum Testen eines ETHERNET_MODBUSMASTER_TCP



## Termi (11 Februar 2017)

Hallo,
ich möchte mit einer 750-831 (Master) ein BHKW ansteuern. Das BHKW lauft als TCP-Modbus-Slave. Leider habe ich das Gerät zu Testzwecken nicht zur Verfügung.
Daher habe ich mir gedacht, ich benutze einen 750-8204 als Slave dafür. Die Aufgabenstellung ist, von einem TCP-MB-Master angesprochen zu werden und die Werte zu übertragen. Es sollen 60 Worte übertragen werden. Den Master habe ich bereits fertig. Nun möchte ich für den Slave ein Programm schreiben, in dem ich in einem Array (0..59) Werte ändere, die dem Master zur Verfügung gestellt werden. Leider gibt es ETHERNET_MODBUSSLAVE_TCP nicht. Ich will als Client auch nicht auf irgendwelche E/A schreiben/lesen, nur das Array ist interessant, was übergeben wird.
 Hat einer einen Lösungsvorschlag oder besser ein rudimentäres Beispiel für einen Slave per TCP?

Chris


----------



## KLM (11 Februar 2017)

Moin, WAGO Ethernet Controller sind aus der Firmware heraus schon MB Slaves, d.h. Du brauchst auf dem Slave keinen extra Programmteil dafür. Anders, als bei allen anderen WAGO Controllern muss beim PFC200 aber das Prozessabbild applikativ in die MB Register gemappt werden. Brauchst Du für Deine aufgabenstellung aber nur indirekt, weil Du ja eine Variable, in dem Fall Array, in MB Registern haben willst. Dazu kannst Du im PFC200 PRogramm das Array einfach via AT Befehl auf Merker mappen, die dann automatisch in den MB Registern liegen. Das gleiche funktioniert auch mit den Feldbusvariablen - siehe Steuerungskonfiguration. Dort ein Array anlegen und auf Merker umstellen.


----------



## Termi (12 Februar 2017)

Nabend,
ich habe zwar die Kommunikation laufen, find jedoch die Daten vom MB-Master auf dem Slave nicht.

Habe mal auf dem PFC200 (Slave) folgendes konfiguriert:

    abDatenInput    AT %IW1000        : ARRAY[0..1999] OF BYTE;
    abDatenOutput     AT %QW1000        : ARRAY[0..1999] OF BYTE;
    abDatenMerker     AT %MW0        : ARRAY[0..1999] OF BYTE;

hier sollten doch irgendwo meine Daten zu finden sein? 
leider nicht. Der Server sagt immer dass alles Ok ist. Also scheint die Kommuniktion zu laufen. Ich werde morgen erst einmal einen HUB besorgen, dann kann ich per Wireshark mitloggen.

Chris


----------



## KLM (12 Februar 2017)

Sind im PFC200 die MB Ports offen?
Hast Du die Arrays nur deklariert oder rufst Du sie in einem Programm auch auf?
Funktioniert es wenn Du nur ein Word auf %MW0 mappst?


----------



## Termi (13 Februar 2017)

Moin,
wüsste nicht, wo ich bei der Firmware (03) die Ports öffne. Ich denke, wenn es standardmäßig ein Slave ist und in der Firmware verankert, sollte es fluppen. Im Übrigen sagt der Master, dass die Kommunikation o.k. ist, Fehlercode = 0.
Ich habe es nur deklariert. Jetzt wo Du es sagst, ich hatte ein ähnliches Problem mit der seriellen Schnittstelle. Dort hatte ich auch nur deklariert. Ich teste es mal. 
Mit dem Word werde ich es heute Nachmittag ausproblieren.

Chris


----------



## KLM (13 Februar 2017)

Du solltest dringend mal einen Blick ins WBM des PFC200 werfen. Standardmäßig ist bei neuen Plattformen alles zu, was nicht zwingend offen sein muss. Dazu zählen auch die MB Ports. Und die serielle on board Schnittstelle ist ab Werk dem Linux zugeordnet und nicht Deiner Applikation - Einstellung auch im WBM.
Btw, FW(03) hatte noch den ein oder anderen Bug - besorgt Dir für Deine neue Applikation doch auch die neueste FW(08). Bekommst Du beim IO-Support auf Anfrage.


----------



## Termi (13 Februar 2017)

Nabend,
nur ich habe gerade die neueste Firmware (08) aufgespielt und bin mal wieder ein Opfer der nicht funktionieren Qualitätssicherung von Wago geworden. Nun ich habe einen 8204 Controller der 1.Generation, der nicht e!cockpit - fähig ist.
Ich spiele die neueste FW auf und er sagt mir


*MODBUS Services Configuration*

                 Not available as long as e!RUNTIME is not being used.



Bin mal wieder begeistert. Stunden meines Lebens verschwendet. Ich sollte mich mal bei Delta umschauen!

Chris


----------



## KLM (13 Februar 2017)

Immer ruhig...Die FW für alle PFC200 ist die gleiche. Boote noch mal mit nem frischen Image, zieh es in den Controller und boote ohne SD. Ggf. musst halt im WBM von e!RUNTIME auf CODESYS RUntime umstellen.
Sei doch froh, dass Du Dich mit einem Gerät für beides entscheiden kannst. Wobei ich glaube die e!RUNTIME wird auf einem PFC200, der ab Werk mit einer FW(<=3) ausgeliefert wurde, nich laufen, weil da die Lizenz für CODESYS 3 noch nicht drin ist. Aber Du willst ja eh CODESYS 2.
Also Ports wieder auf, serielle Schnittstelle an die Applikation, Prog. rein uns dann schaun wa mal.


----------



## Termi (13 Februar 2017)

ich bin die Ruhe in Person. 
Du hast Recht, die Firmware ist immer die Gleiche. Auf meinem Controller ist nun die FW 08 und ich habe keine Chance mehr eine Ältere aufzuspielen, da das Gerät zum "Downgrade" nichts mehr erkennt.
[h=2]Create bootable image[/h]      Create a bootable image from active partition and copy it to selected destination.      Process will start immediately.

                           [h=3]Create bootable image from active partition (Memory Card)[/h]                                        Destination:

                                           No device found             





Mit der neuen FW08 läuft aber keine Applikation. Die Codesys hängt sich  weg. Ich kann nur per Taskkill das Programm wieder loswerden. Im Moment boote ich die 02.03.15(00) von der Karte. Damit läuft wenigstens die Applikation. Mit dem Mist wollte ich mich an und für sich nicht beschäftigen. Ich wollte schlicht nur ein Modbus-Slave zum testen, mehr nicht. Selbst bei Wago habe ich kein Applikationsbeispiel gefunden, aber mindestens 5 Dokumente in denen die Belegung der BausteinEA's erklärt sind und da steht immer das Selbe drin, was einem irgendwie nicht wirklich weiter hilft.

Chris


----------



## Mobi (14 Februar 2017)

Würde nicht ein Tool reichen welches auf einem PC läuft und das BHKW simuliert, also den Modbus-Part?


----------



## Termi (14 Februar 2017)

Natürlich würde es reichen. Aber Wago versicherte mir, dass quasi jeder Controller ein MB-Slave eingebaut hat und dass es ja ganz einfach wäre. Nun ich habe mich bisher mit anderen Sachen auseinander gesetzt, z.B. serielle Schnittstellen 3964r etc. Modbus ist Neuland für mich. Und hilfreiche howto's gibt es nicht viele.


----------



## KLM (15 Februar 2017)

Also als MB Slave hast Du Dir den denbar schlechtesten Controller ge  oder 6, wenn Du weiter runter willst, brauchst Du eine spezielle Version  aus dem Support. Warum das bei Dir mit FW 8 nich will weiß ich zwar  noch nicht, aber an der FW per se liegt es erst einmal nich. Wie spielst  Du das FW Image auf die SD-Karte? Verwendest Du das Tool, das WAGO da  in der Mail beschreibt, oder kopierst Du nur das Image mit  Windos-Explorer?
FW(00) heißt, Du hast da irgendeine Beta-Version?! Von denen sind eigentlich nich so viele in Umlauf...


----------



## KLM (15 Februar 2017)

Wenn Du eine SD-Karte mit dem linux bootfähigen image beschreibst, dann ist die Karte voll, wenn Du das Tool nimmst, das WAGO da vorschlägt. Ist soweit kein Problem, musst halt die Karte wieder formatieren, wenn Du mit dem PFC200 ein Image aus dem Flash einspielen willst. Formatieren mit dem WBM geht ganz gut. Mit Windows eher weniger, weil Windows das nich kann. Zumindest mein Win 7 nich.


----------



## KLM (15 Februar 2017)

Aber zurück zu Deinem MB Problem. Hast Du mal getestet nur ein Merker-Word zu mappen und nicht gleich das ganze Array?


----------



## Termi (16 Februar 2017)

Hallo erstmal,
danke für die Antworten. Ich habe die FW08 zum laufen bekommen, in dem ich per WBM alle Einstellungen erneut vorgenommen habe. Anschießend Spannung weg und PC neu gestartet. Nun bekomme ich mein Programm wieder zum fluppen.
Modbus kann ich zwar immer nocht nicht per WBM ein oder ausschalten, aber Whireshark sagt, daß alles gut ist. Per FC 16 bekomme ich nun Daten zum Slave hin, jedoch per FC3 nicht vom Slave zum Master. Wenn ich z.B. eine Stelle im Slave "force" erscheint die nicht auf dem Master.
 Hmm mal schauen wie es weiter geht. Ich bleibe am Ball.

Chris


----------

