# WAGO, Analogausgang, Adresse herausfinden?



## kutt (12 November 2013)

Hi, 

ganz unerfahren bin ich mit CodeSys und Wago nicht, trotzdem komme ich nicht weiter.

Ich habe eine WAGO 750-871 mit einen 4 Port Digitaleingang, einem 4 Port Digitalausgang und einem 2 Port Analogausgang. 

Das Problem ist: ich finde einfach nicht die Adresse, auf die ich schreiben muß, um den analogen Ausgang anzusprechen. 

Das hab ich bereits herausgefunden. 

- digitaler Eingang ist auf %IX0 adressiert
- digitaler Ausgang ist auf %QX0 adressiert

lt. Handbuch werden die digitalen Eingänge von x0 bis xFF (=255) adressiet und die Eingänge ab x200 (=512) ff. 
Ich habe mir ein kleines Programm gemacht, mit dem ich die Inhalte des Speichers auslesen kann. Der digitale Ausgang liegt auf x202, was bei einem Offset von x200 passt. Wenn man dem Handbuch Glauben schenken darf, werden die analogen I/O's zu erst adressiert und damit  müssten die analogen Ausgänge auf x200 und x201 liegen (= %Q0 ). Es werden auch Werte nach x200 und x201 geschrieben...

Wenn ich auf die Adresse schreibe, passiert an dem Ausgang aber gar nichts... Es kommen immer 10V raus. 

Ich habe im Moment einen 0..10V regelbaren 3kW Phasenanschnitt drann (der auch mit einem Poti funktioniert, aber am Analogausgang immer voll aufregelt), werde morgen aber mal mit nem Oszi messen...

Gibt es eine Methode, die man herausfinden kann, wie die Ports wirklich adressiert sind? Bis jetzt habe ich das immer nach der Methode "Try and Error" herausgefunden. Im über 400 Seiten starken Handbuch steht zwar alles mögliche drinn, aber das anscheined nicht. Oder ich hab es noch nicht gefunden.


----------



## Dr.MirakulixX (12 November 2013)

Recht easy  in der Steuerungskonfiguration, wo du auch die Module "anmeldest" kannst du erstens direkt jedem I/O eine Variable vergeben und zum anderen steht dort auch deine Adresse.  Bei Bedarf kann ich dir morgen mal ein Bild dazu reinstellen.


----------



## Methi (12 November 2013)

Hallo,
mit deinem Offset von 0x0200 klingt das irgendwie nach Modbus-Adressen. Aber davon schreibst du bisher nichts.

Daher gehe ich davon aus, dass du nur mit Codesys I/Os schreiben willst. Dann sieht dein Prozessabbild so aus:

```
Analog1 at %QW0: Word;
Analog2 at %QW1: Word;
DigitalOut1 at %QX2.0: bool;
DigitalOut2 at %QX2.1: bool;
DigitalOut3 at %QX2.2: bool;
DigitalOut4 at %QX2.3: bool;

DigitalIn1 at %IX0.0: bool;
DigitalIn2 at %IX0.1: bool;
DigitalIn3 at %IX0.2: bool;
DigitalIn4 at %IX0.3: bool;
```
( Erst die analogen Klemmen, als Word ->%Q*W*, danach die digitalen Klemmen als Bit/ Bool ->%Q*X* )


Falls es doch Modbus sein soll:
Lesen der Eingänge ab 0x0000, Lesen der Ausgänge ab 0x0200, Schreiben der Ausgänge ab *0x0000* (!) 
--> s. Handbuch S. 240 und 241. (Unterschied der Tabellen beachten)


----------



## kutt (12 November 2013)

Mach mal bitte.. ich hab das halbe CodeSys schon durchwühlt, aber nichts in die Richtung gefunden.

Im Prinzip sind die Handbücher nicht schlecht. Es steht drinn, wie es funktioniert, aber wie man konkrekt das Problem löst, steht nicht da... ich nutze das CodeSys nicht mit Blöcken, sondern mit Quelltext und direkten Speicherzugriffen. Meine Anwendung ist halt zeitkritisch.

Mal eine Dumme Frage: Du hast geschrieben, daß man die Module anmelden muß? Ich hab damals die Wago zusammengesteckt und einfach programmiert. Nun stecke ich das analoge Ausgangsmodul dazu und stoße nur auf Probleme. Erst mal geht das Programm nicht mehr, weil sich der Adressraum verändert hat (wer hat sich denn sowas ausgedacht? Wenn ein Modul nach den anderen eingesteckt wird, könnte man eigentlich erwarten, daß die Adresse einfachhinzugefügt wird...)

Lt. Handbuch hab ich das so verstanden, daß die Adressierung automatisch vorgenommen wird, wenn man ein Modul dazusteckt. Man braucht halt nur die Adresse.  Die finde ich aber nirgends 

Im Handbuch steht auch, daß es Statusregister gibt ... Adresse irgegendwo in den x2000 Bereich. Die sind aber alle leer (Null)


----------



## kutt (12 November 2013)

Methi schrieb:


> [...]



Ja - so schaut es bei mir auch aus

%QW, %QX, %IX und %IW sind mir bekannt

Nun die Frage (was ich auch nicht im Handbuch verstehe)

Was sind Modbus Adressen... Was sind PFC Adressen? Das steht dort zu Hauf, ist aber nirgends erklärt?

Iterativ habe ich mittlerweile herausgefunden, daß bei dem ganzen %Q, %W, %I und %M Kram die Offsets wohl automatisch dazu addiert werden. Warum kann man da keine physikalischen Adressen angeben, wie es in jedem Controller möglich ist? z.B. bräuchte ich einen festen Adressraum von 1024 Words im RAM . Ich habe ewig im Handbuch der 750-871 gesucht, aber bis jetzt noch nicht herausgefunden, wie ich so einen Adressraum nutzen kann, noch ab welcher Adresse der RAM beginnt...

Dazu kommt:

Eine Adresse %IW0 hat die Adresse x0 (hex), aber eine Adresse %QW0 die Adresse x200 (hex). Wenn man lange genug im Handbuch sucht, findet man das irgendwann raus. Ich habs herausgefunden, indem ich mir ein Programm geschrieben habe und die Daten gesucht habe. Darüber habe ich die Speicher-Adresse gefunden, nach der ich dann im Handbuch gesucht habe. Ist eigentlich so, als wenn man sich durchs linke Knie in den rechten Fuß schießt, aber ich muß zugeben, daß ich den Aufbau des Handuches noch nicht wirklich schlau geworden bin... Mal fix was nachlesen - keine Chance.

Ich schau mir morgen mal die Seiten an... Ich war eigentlich immer auf Seite 79ff  hängengeblieben. Da steht einiges über die Adressierung.

Ich kann leider im Moment keinen Quelltext/Screenshots bieten - kann ich aber morgen nachreichen. Dann messe ich mal mit dem Oszi nach, was aus der Klemme wirklich rauskommt


----------

