# Wago 750-881 mit Modbus Ausgänge ansprechen



## helije (8 Juli 2019)

Hallo zusammen,

ich versuche bei Wago 750-881 + 750-530 (8 DA Karte) über Modbus die Ausgänge anzusprechen.
Erst möchte ich Bits (Boolean) Modbus Register in meinem Codesys SPS Programm abfragen und damit meine Ausgänge an Wago steuern.

Wie muss ich die Adresse aus Modbus Register als Variable in Codesys definieren? Wie sieht Variable aus?

z.B. Register Adresse 12289, 12290..., oder 512, 513 (Ausgänge), habe versucht: AT%MX0.1 usw. aber das ist der Fehler in Codesys.

Wir haben Genesis64 von Iconics in Betrieb. In Genesis64 kann ich auf Wago Modbus Register zugreifen/Werte schreiben, und kann ich entweder Coil oder Holding Register auswählen und noch +Adresse.

Oder haben Sie bessere Idee/Vorschlag, wie ich über Modbus Wago steuern kann?

Vielen Dank im Voraus


----------



## Mavorkit (9 Juli 2019)

Guten Morgen,

Ist der 881 programmiert oder komplett leer?

Gruß Mavorkit

Gesendet von meinem SM-G950F mit Tapatalk


----------



## helije (9 Juli 2019)

Hallo,

881 ist leer, aber ich habe vor, einfachen Sps Programm zu schreiben. Modbus Register Variable - QX0.0 (Ausgang) usw.
weil, ich habe irgendwo gelesen, es geht nicht direkt, Wago Ausgänge direkt über Modbus Register/Coil anzusprechen?!


----------



## Thruser (9 Juli 2019)

Hallo,

Du kannst die 881 auch als Koppler einsetzen, dazu mußt Du unter Steuerungskonfiguration bei der PA Zuweisung unter PA Zuordnung 'Modbus TCP/UDP,fieldbus 1' anstelle von 'PLC,PLC' wählen.

Danach kannst Du die Ausgänge über die Funktionen 1, 2, 5 und 15 (Coil) mit den Adressen 512-519 (für die ersten 8 DA) ansprechen.

Gruß


----------



## helije (9 Juli 2019)

Danke Thruser,

ich werde es heute testen.
das heißt, ich muss in Genesis64 Holding Register mit Adresse 514 (Bit 2) auswählen, siehe Bild



das sind die auch andere Möglichkeiten:


----------



## Thruser (9 Juli 2019)

Hallo,

Nein, Du mußt dafür Coil nehmen. Dann kannst Du jeden Ausgang direkt ansprechen. Funktionscodes 1, 2, 5 und 15 beziehen sich auf Coils (einzelne Bits).

Du könntest die Ausgänge auch über Register ansprechen, da kenne ich jetzt aber nicht die genaue Adresse. Dann müßtest Du aber auch die einzelnen Bits erst zu einem Word zusammenfassen, bevor Du sie sendest.

Coil Adresse 514 sollte der dritte Ausgangskanal sein. Aber eben als Coil, nicht Holding Register.

Gruß


----------



## Mavorkit (9 Juli 2019)

Hallo,

ich kenne zwar eure Software nicht, bin mir aber ziemlich sicher, dass die Modbus Adressen immer in Wörtern ausgedrückt werden, egal welche Funktion gewählt wird. Und auf Coil 514 zugreifen wird nicht gehen, weil das 8 Stück sind.

Der erste Digitalausgang wäre hier dann doch wohl 512.0 der zweite 512.1 und so weiter. Mit 512 könnte man das komplette Wort übertragen, was für Modbus performanter ist, da Boolsche Coild auch immer als Wort übertragen werden, nur dann als Boolscher Wert interpretiert werden. Das Datenaufkommen ist also bei einem BOOL und einem WORD komplett identisch.

Wie gesagt, ich kann nicht für eure Software sprechen, sondern für Modbus Kommunikation zwischen Controllern bzw. von einem Aufzeichnungssystem im Netz das einzelne Werte abgreift. Aber trotzdem sollte der Modbus Standard hier kein anderer sein.

Gruß

Mavorkit


----------



## Thruser (9 Juli 2019)

Hallo Marvorkit,

dann sieh Dir die Modbusspezifikation bitte noch einmal an.



Und hier noch die von der Wago



anhand der Meker kann man sehen:
12288 -> MX0.0
12289 -> MX0.1
12290 -> MX0.2

dann entsprechend für die Ausgänge
512 -> QX0.0
Gruß


----------



## helije (9 Juli 2019)

Hallo, 
"
anhand der Meker kann man sehen:
12288 -> MX0.0
12289 -> MX0.1
12290 -> MX0.2
"
schon probiert, hat nicht funktioniert.


"dann entsprechend für die Ausgänge
512 -> QX0.0"

512 hat funktioniert, für Bit 0, aber für alle andere nicht.
Welche Adresse wären dann für QX0.1,.2,.3...??

Danke 
Gruß


----------



## Thruser (9 Juli 2019)

helije schrieb:


> Hallo,
> "
> anhand der Meker kann man sehen:
> 12288 -> MX0.0
> ...


wie hast Du die denn deklariert?

```
xDummy1 AT %MX0.0: BOOL; (* 12288 *)
xDummy2 AT %MX0.1: BOOL; (* 12289 *)
```



helije schrieb:


> "dann entsprechend für die Ausgänge
> 512 -> QX0.0"
> 
> 512 hat funktioniert, für Bit 0, aber für alle andere nicht.
> ...


512 -> QX0.0
513 -> QX0.1
514 -> QX0.2

Gruß


----------

