Wago 750-342 I/O auslesen bzw. steuern

Hallo
Ich habe folgenden Testaufbau realisiert:
Contoller 750-342
Eingangsmodul 750-400 2DI
Ausgangsmodul 750-502 2DO
Endklemme

Im Forum hab ich schon jede Menge gelesen, wie man den Wago-Contoller per Modbus auslesen bzw. steuern kann.

Mit dem folgenden Code kann ich den Ausgang schalten:

$wago_id = 39763;
ModBus_WriteCoil(16418, true); //Gerät einschalten

Bis hier hatte ich keine Probleme. Habe mir ein weiteres ModBusDevice mit Adresse 0 erstellt für die Eingänge. Wie aber lese ich die Eingänge aus, ob sie true oder false sind.
Danke für Eure Hilfe.

Du musst in der Instanz die Leseadresse einstellen und den Timer zum auslesen aktivieren. Der Wert landet dann, wenn die Leseadresse korrekt ist, in der StatusVariable die du über GetValue($id) auslesen kannst.

paresy

Hallo paresy
Den Timer hatte ich noch nicht aktiviert. Allerdings habe ich nun das nächste Problem. Die Statusvariable wird nicht aktualisiert. Im Meldefenster steht folgendes:

[SPS\ModBusDevice] = Zeitüberschreitung beim Warten auf Antwort

An was kann das noch liegen?

Jetzt läuft es. Habe alles nochmal neu gestartet.

Hätte noch eine Frage zur Adressierung.
Wenn ich an den Testaufbau wie er im ersten Beitrag beschrieben ist, noch ein Analogausgangsmodul mit 2 Analogausgängen rechts neben das digitale Ausgangsmodul setze, welche Adressen hätten dann die beiden Analogausgänge,

Hallo computerpap;

Analogausgang 1 Adresse 512
Analogausgang 2 Adresse 513

Schau mal im Pdf auf Seite 121(115) Kapitel 4.2.4 Modbus Register Mapping

Hallo boXer

Die digitalen Modbus-Dienste (Coil-Dienste) sind Bitzugriffe, mit denen sich
ausschließlich die Zustände von digitalen I/O-Modulen ermitteln oder verändern
lassen. Komplexe I/O-Module sind mit diesen Diensten nicht erreichbar
und werden ignoriert. Deshalb wird bei der Adressierung der digitalen Kanäle
wieder mit 0 begonnen, so dass die MODBUS-Adresse immer identisch mit
der Kanalnummer ist (der 47-ste digitale Eingang hat z. B. die MODBUSAdresse
„46“).

Wenn ich das richtig verstanden habe, so ist dann die Adresse für den ersten Digitalausgang auch 512!
Dann müßte die Adressierung bei mir folgendermaßen sein:

Contoller 750-342
Eingangsmodul 750-400 2DI Adressen 0 und 1
Ausgangsmodul 750-502 2DO Adressen 512 und 513
Ausgangsmodul 750-552 2AO Adressen 512 und 513
Endklemme

Habe ich das so richtig verstanden, ich komm aus der S7-Welt, da ist die Adressierung viel einfacher.

Hallo computerpap,

Controller

[ul]
[li]750-400 IX0.0/IX0.1 --> Modbus 0/1
[/li][li]750-502 QX2.0/QX2.1 --> Modbus 544/545
[/li][li]750-552 QW0/QW1 --> Modbus 512/513
[/li][/ul]
Endklemme

Analoge Adressen schieben sich immer vor die digitalen, auch wenn die Karten physikalisch dahinter platziert sind.

Viele Grüße
Roland

Hallo MTec

Wenn ich die Adressen 544 und 545 für die digitalen Ausgänge benutze, werden diese nicht mehr geschalten. Wie kommst du auf diese Adressen? Welche Adressen müssen bei den ModBusDevice als Schreibadressen und welche Adressen müssen als Leseadressen eingetragen werden?
Ich steh total auf den Schlauch!

Hallo computerpap,

die Adressierung bei S7 ist nicht einfacher sondern nur einfach anders :smiley:
Anbei mal ein Beispiel für eine Controller Anbindung, Du benutzt einen Koppler vergleichbar einer ET200 d.h. ohne SPS Funktionalität.
Schau Dir einfach mal das Dokument an, den Zugriff auf Merkerwörter kannst Du überspringen da diese nur für die Controller (SPS) verwendbar sind, ein ähnliches Fragengeschehen hatten wir hier auch schon mal.

Modbus.zip (489 KB)

Hallo zusammen,

Danke für die Hilfe. Die pdf-Datei hab ich schon rauf und runtergelesen, aber so richtig verstanden hab ich es nicht.:confused: Ich hab jetzt einfach mal mit Adressen „rumgespielt“ und folgende Adressierung vorgenommen:

Contoller 750-342
Eingangsmodul 750-400 2DI Adressen 0 und 1 für Schreiben und Lesen
Eingangsmodul 750-465 2AI Adressen 0 und 1 für Schreiben und Lesen
Ausgangsmodul 750-502 2DO Adressen 512 und 513 für Schreiben und Lesen
Ausgangsmodul 750-552 2AO Adressen 512 und 513 für Schreiben und Lesen
Endklemme

Mit dieser Adressierung kann ich alle Ein- und Ausgänge lesen und die Ausgänge beschreiben. Weder die AI und DI noch die AO und DO kommen sich ins Gehege, obwohl die gleichen Adressen vergeben sind. Und genau das versteh ich einfach nicht. Vielleicht schafft es ja noch einer von Euch, mir das so halbwegs einzutrichtern.

Hallo,

bekomme das mit der Adressierung auch nicht so richtig hin.

Habe einmal 750-400 (2xDI) und dann 750-501(2xDO).

In Codesys bekomme ich %IX0.0 / %IX0.1 für die DIs und %QX0.0 / %QX0.1 für die DOs angezeigt.

Die DIs kann ich auch auf Adresse 0 und 1 auslesen. Jedoch die DOs bekomme ich nicht geschaltet. Habe verschiedenste Adressen ausprobiert (0,1,512,513…) und dann im Testcenter auf AN geklickt. Tut sich aber nichts.

Kann mir jemand sagen, was die richtige Adresse ist oder wo der Fehler sonst noch liegen könnte.

Fange gerade erst an mit der Wago. Da muss man sich echt erstmal reinwühlen.

Gruß,

Chris

Hallo computerpap,

Deine Erkenntnisse zur Adressierung sind richtig, die Erklärung dazu ist, das Modbusdienste zum Lesen oder Schreiben von Coil (Bitabfrage) und Registern (Wörtern) mit der Abfrage übermittelt werden. Die Anfrage vom Master (IpSymcon) an den Koppler prüft als erstes ob nun Bits oder Register abgefragt wurden. Die Antwort vom Koppler hast Du bereits selbst zusammengestellt und resultiert aus der Adressierung der entsprechenden Klemmen die Du im Einsatz hast. Eine 502 hat zwei digitale Ausgänge und belegt daher 2 Bits eine Analogklemme wie von Dir im Einsatz belegt 2 analoge Ausgänge und belegt daher 2 Wörter. Bei Bitabfragen von IP Symcon ignoriert der Koppler die Adressen der analogen Klemmen und überträgt nur die Bitadressen. Bei Anfrage von Analogwerten müsstest Du auch die Bitwerte abfragen können. Diese sind dan an der höchsten Modbusadresse zusammengefasst. Also in Deinem Fall Adresse 512 AO1, Adresse 513 AO2 und unter Adresse 514 im Wort gepackt Deine zwei digitalen Werte.

@Chris,
ich nehme an das Du einen 841 einsetzt. Eine aktive SPS Applikation verhindert dann den schreibenden Zugriff auf Deine Ausgänge. Willst Du Dich erst im Kopplermodus an Modbus herantasten musst Du Dein Gerät in Auslieferungszustand versetzen.
Tool herunterladen und SPS formatieren/extrahieren und in Default Settings in Werksauslieferungszustand zurücksetzen. (SPS Applikation ist dann halt weg).
http://www.wagocatalog.com/okv3/Download_files/WAGO_EthernetSettings_Setup(V5.1.2).zip

so schönen Sonntag und viel Erfolg beim Forschen

Hallo boXer!

Danke für deine Erklärung, jetzt kommt langsam Licht ins Dunkel.
Es ist praktisch bei Registerabfragen unabhängig, was als Adresse bei den Digitalausgängen in IPS unter ModBusDevice angegeben wird.

Bei Anfrage von Analogwerten müsstest Du auch die Bitwerte abfragen können. Diese sind dan an der höchsten Modbusadresse zusammengefasst. Also in Deinem Fall Adresse 512 AO1, Adresse 513 AO2 und unter Adresse 514 im Wort gepackt Deine zwei digitalen Werte.

Hallo computerpap,

viele Dank für Deine Hilfe. Kann jetzt auch die DOs ansprechen. Aber Sinn und Zweck des ganzen ist natürlich auch ein Programm auf der SPS am laufen zu haben.

Werde mich dann wohl mal mit Merkern beschäftigen müssen. Habe hierzu schon einiges im Forum gefunden, bin aber noch nicht so genau dahinter gekommen, wie ich das ganze in Codesys mache.

Werde mich mal weiter durchwühlen, aber falls jemand noch nen Tip/Beispiel/ Anleitung hat wäre ich sehr dankbar.

Schönen Abend noch,

Chris

Hallo Chris,

schau mal hier - bzgl. Merker ein quick and dirty Anleitung :slight_smile:

http://www.ip-symcon.de/forum/f41/wago-750-841-licht-ip-symcon-9660/#post79939

in diesem Sinne - viel Erfolg

Tilo

Hab es am laufen!

Vielen Dank!

Hallo, habe das gleiche vor, scheitere aber schon an der Koppelung IPS-Wago per IP-Netzwerk.
Wie hast Du das gemacht? (Ich habe im Client-Socket die IP eingestellt, Port 502 eingegeben, kann das aber nicht übernehmen. Der Port springt immer auf 21000 zurück und die Config kann nicht gespeichert werden. Windows-Firewall ist ausgeschaltet.)

Ich möchte auch nichts in CoDeSys programmieren, die gesamte Logik soll IPS machen.
Wago soll nur schalten oder Werte übergeben.

Hallo Jürgen852

Ich hab als erstes per Wago-Bootserver dem Feldbuskoppler die IP-Adresse zugewiesen und per ping-Befehl getestet. Danach in IPS einen Client-Socket mit der IP des Feldbuskopplers und Port 502 angelegt („Socket öffnen“ angehakt). Danach einen Modbus RTU/TCP Splitter angelegt und als übergeordnete Instanz den zuvor angelegten Client-Socket eingetragen. Anschließend die Modbusdevices erstellt. Ich nutze IPS 2.3, da gab es keine Probleme.
Wie hast du denn den Feldbuskoppler mit deinem PC verbunden, direkt oder hängt da eventuell noch ein Router, Switch oder Hub dazwischen?