Wago Feldbuskoppler neue Generation

Hallo zusammen,
wir sind dabei Anwendungen aufzubauen, welche auf einen Wago Feldbuskoppler mit DI- sowie DO-(Relais-)Module setzt. Dabei ist aufgefallen, dass die bislang implementierte Variante vom Modbus TCP-Feldbuskoppler (750-352) abgekündigt und durch die vierte Generation (750-362) ersetzt wurde. Ich gehe davon aus, dass der bisherige Code nach wie vor lauffähig sein sollte, kann dies jemand bestätigen?
Ebenso möchte ich fragen, ob folgende Module implementiert sind:

  • 750-517: 2-Kanal-Relaisausgang (2 Wechsler)
  • 750-1405: 16-Kanal-DI-Modul
    Danke für eure Hilfe

Hallo Florian,

soweit ich das verstehe, sollte die neue Generation unterstützt werden. OpenEMS Edge liest dynamisch die Konfiguration der angeschlossenen Klemmen vom WAGO Feldbuskoppler aus. Meines Wissens nach, wurde dabei bei der neuen Version lediglich der Dateiname dieser Konfigurationsdatei geändert, aber das Format ist gleich geblieben.

OpenEMS Edge sucht seit dieser Änderung automatisch nach beiden Dateinamen:

Das Modul 750-517 sollte problemlos funktionieren. Ich habe es selbst noch nicht verwendet, aber die Implementierung funktioniert bisher mit allen 750-xxx Modulen und liest die Anzahl der Ausgänge dynamisch aus.

Das Modul 750-1405 wird vermutlich nicht out-of-the-box funktionieren. Hier hatten wir es bisher nur mit den 750-4xx Modulen zu tun (https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.io.wago/src/io/openems/edge/wago/Fieldbus4xxDI.java).

Bitte melde dich nach euren Tests zurück, dann können wir die Dokumentation zur Kompatibilität mit WAGO erweitern:

Gruß,
Stefan

Hallo,
Ich habe eine weitere Frage zum wago io-Modul.
Ich habe es für die digitalen Ein- und Ausgabemodule, die derzeit implementiert sind, zum Laufen gebracht.
Aber ich möchte es gerne auch auf das Lesen und Schreiben analoger Kanäle erweitern.
Gibt es ein prinzipielles Problem bei der Implementierung dieser Funktionalität?
Was ich versuchen würde, ist:

  • Erweiterung der io.api mit analogInput- und analogOutput-Kanälen
  • Erstellen des entsprechenden Fieldbus4xxAI-Skripts
  • Hinzufügen der entsprechenden cases zur FieldbusFactory
  • und wahrscheinlich muss ich einige Änderungen an der Datei Wago.java vornehmen, um die entsprechenden Kanäle automatisch zu erstellen.

Könnte das funktionieren? Hat jemand bereits Erfahrungen mit dem Lesen/Schreiben analoger Kanäle mit einer Wago?

Vielen Dank für die Hilfe!

Schönen Tag,

Nils

Hallo Nils,

das wäre genau das richtige Vorgehen. Ähnlich wie bei den digitalen Ein- und Ausgängen müssen auch die AbstractModbusElements für die analogen Register erstellt werden. Anstelle von CoinElements wären es hier dann vermutlich UnsignedWordElements; und nicht mehr modbus Function Code 1 (FC1ReadCoilsTask) sondern FC3 oder FC4. Ich würde deshalb zuerst Lesetests z. B. mit QModMaster (https://sourceforge.net/projects/qmodmaster/) durchführen.

Ich habe selbst noch nicht mit analogen WAGO Busklemmen gearbeitet und auch keine zur Hand um es selbst zu testen. Wenn du Unterstützung brauchst, melde dich aber gerne frühzeitig.

Gruß,
Stefan

Hello everyone,

I was unfortunately not able to modify the wago bundle to make it read signals from an analog fieldbus module (in my case a 750-496 8AI).

The problem that I face is that the whole bundle is build arround boolean channels and what I need is of course a double or an integer channel.

So my idea was to do the following:

  1. Create a new AnalogInput.java inside the io.api => This is also implemented in the wago.java

  2. The FieldbusModuleFactory needs to have an additional case structure for the analog module. In my case it is “750-496/000-000” that I got from the ea-config.xml => The module is recognized…no problem here.

  3. Create a new module class inside the io.wago package for the analaog module => Fieldbus4xxAI.java

  • This script is a copy of the Fieldbus4xxDI
  • Inside this script modifications are not possible for me without causing errors of the kind: want boolean not integer
  1. In wago.java I changed the two “FC1ReadCoilsTask” to “FC3ReadRegistersTask” and the CoilElement to UnsignedWordElement

  2. It seems that also the FieldbusChannelID.java is written for Boolean only and probably another script FieldbusAnalogChannelID needs to be created??

The current version of the code can be found at:

It would be nice if you could provide me with some ideas how the combination of digital and analog reading and writing could be done.

Thank you in advance!

All the best,

Nils

Sorry Nils, I did not yet have time to look into this in detail. But I found another bug in the WAGO implementation, which was fixed here:

I also took the chance to prepare some changes with regard to adding UnsignedWordElements.

Can you provide the “ea-config.xml” file of your setup? I added a JUnit test for parsing the XML file here: https://github.com/OpenEMS/openems/blob/develop/io.openems.edge.io.wago/test/io/openems/edge/wago/WagoTest.java#L28

Regards,
Stefan