# Modbus TCP (dez) zu Codesys "Umrechnung"



## Sprocky (8 September 2016)

Hallo!
ich möchte via Modbus TCP Werte aus der (WAGO) SPS auslesen und schreiben. Mit den Merker geht das auch wunderbar. 

Bei Ein- und Ausgängen mache ich aber anscheinend einen grundsätzlichen Fehler, der mir auch mit Wago Dokumentation nicht auffällt. 

MX0.0 finde ich ab 12288.
Ab welchem Byte finde ich z.B. QX8.11? Mit 8x16+11=139 bekomme ich nicht den Wert des Ausgangs zurück.

Ich stehe irgendwie auf dem Schlauch. Kann mich jemand runterschubsen?

danke


----------



## Sprocky (8 September 2016)

Hallo!
Dank eines anderen Threads bzw. User hab ich in der Steuerungskonfiguration jetzt auch den "Modbus" und dort die Adressen gefunden. Do ist mien QX8.11 auf Modus TCP Stelle 523. 

Problem gelöst, aber nicht verstanden. Kann mich jemand trotzdem mit Verständnis segnen?

Danke


----------



## Thruser (10 September 2016)

Hallo,

welcher Controller, welche Module? Zeig doch mal die Konfiguration.

Gruß


----------



## SPS_A (12 September 2016)

Hallo, wie Thruser angedeutet hat, hängt dies vom Controller und den angefügten Klemmen ab. Anhand dessen erstellt der Controller das Modbus-Abbild inkl. den Adressen. Dabei werden analoge und digitale Klemmen in einer bestimmten Reihenfolge bearbeitet. Wenn du Klemmen hinzufügst oder entfernst ändert sich auch dementsprechend die Adressierung.

Viele Grüße


----------



## Sprocky (13 September 2016)

Hey!
Der Controller ist ein Wago 750-880, gefolgt von zwei 16-fach DO Karten, zwei 4-fach AO Karten ... ... ...

Reicht das zum Start?

DANKE


----------



## SPS_A (13 September 2016)

Wie ich das aus dem Dokument auf Seite 83 sehe:

http://www.wago.de/media/2_products/m07500880_00000000_0de.pdf

Offset 512 (200 hex) + 11 bit für den 11 DO-Ausgang (Wobei mir nicht ganz klar war ob noch mehr Klemmen dranhängen, ggf. ist hier ein Dreher drin).

(Hoffe ich bekomm das noch richtig zusammen).

Viele Grüße


----------



## Thruser (14 September 2016)

Hallo,

wie in dem von SPS_A verlinkten Dokument angegeben werden Hardwareausgänge bei Modbus ab Adresse 512 gemappt. (s. Tabelle 132, S. 248 und Tabelle 133, S. 249)

Dabei wird unterschieden ob es sich um digitale oder analoge Signale handelt. Digitale Signale werden als Coils verwendet, die analogen Signale als Register. Dadurch können unter gleichen Adresse zwei verschiedene Signale angesprochen werden. Welche Signal angesprochen wird ist abhängig vom Functioncode. Siehe dazu die jeweilige Überschrift der beiden oben angegebenen Tabellen.

Die digitalen Signale werden dazu fortlaufend hochgezählt.

Im Controller selbst werden die analogen und digitalen Signale anders gemappt. Erst kommen die analogen und dann im Anschluß die digitalen Signale bei der Zählung. Dabei werden die digitalen Signale fortlaufend in den Words aufgefüllt.
1. DO/DI -> erstes freies Word nach den analogen Signalen, Bit 0
2. DO/DI -> Bit 1
usw.

Daher landet Dein erster digitaler Ausgang auf QX8.0 Ausgangswort 8, Bit 0 und der zwölfte auf QX8.11.

Über Modbus ist QX8.0 aber der erste Coil und hat die Adresse 512. Der zwölfte Ausgang liegt daher auf Adresse 512+12-1= 523. Die -1 kommt daher, daß auf Adresse 512 ja schon der erste Ausgang liegt.

512 = QXy.0 (<- erster Ausgang)
513 = QXx.1
...
522 = QXy.10
523 = QXy.11 (<- zwölfter Ausgang)
524 = QXy.12

Über Modbus kann daher auf die 16 DO Module nicht Wortweise zugreifen wie direkt im Controller.

So, ich hoffe das ist einigermaßen verständlich

Gruß


----------

