# Wago 750-841 und Modbus???



## McNugget (5 Oktober 2009)

Hallo allerseits.

Ich hoffe, hier kann mir mal jemand etwas auf die Sprünge helfen.

Ich würde gerne mal wissen, wie ich lesend und schreibend von aussen per Modbus auf meinen Wago Controller 750-841 zugreifen kann.

Habe jetzt schon einiges dazu gelesen, aber leider noch nicht besonders viel dazu verstanden.

Ist es richtig/sinnvoll, dass ich die Daten (Bits und Worte), die ich im Zugriff haben möchte, wenn ich sie intern deklariere, parallel auf Merkerbereiche deklariere?


Beispiel: 
Ich skaliere aus einem analogen (Temperatur-) Eingangswert einen Real-Wert auf die Variable  (z. B. -12,34). 

Ich deklariere folgende Variablen: 
Rohwert:
Eingangswort 1: W_Temp_01 (Word)

Verarbeiteter Wert:
R_Temp_01: REAL    :=99.99; (*Anzeige Realtemperatur informativ*) 

Den skalierten Wert "R_Temp_01" schreibe ich zusätzlich noch auf einen Merker.

Diesen Merker muss ich dann auslesen, um an meine Temperatur als Real-Wert zu kommen.

Sehe ich das so richtig?

Wie deklariere ich das korrekt?

Welche Speicheradresse muss ich belegen?

Wie musss ich die Adresse von aussen lesend deklarieren, damit ich darauf zugreifen kann?


Ich bin dankbar für jede Hilfe.


Gruss

McNugget


----------



## Grubba (5 Oktober 2009)

Im allgemeinen ist das so richtig. Du kannst aber auch direkt auf das EA-Abbild zugreifen und musst nicht zwingend auf "Merker" zugreifen. Jeder Merkeradresse ist eine Modbusadresse zugeordnet. So "entspricht" die Merkeradresse MW0 der Modbusadresse 12288.

Schön beschrieben ist das ganze auch in der Doku zum Wago Controller:

http://www.wago.com/wagoweb/documentation/750/ger_manu/841/m084100d.pdf

Da steht eigentlich schon eine Menge wissenswertes zum Modbusprotokoll drin.


----------



## Lebenslang (5 Oktober 2009)

http://www.pro-face.de/media/pdf/AG...Kopplung_an_WAGO.pdf#view=fit&pagemode=thumbs


----------



## McNugget (6 Oktober 2009)

Danke für die schnellen Antworten.

@Grubba: Ich werde aber doch wohl nicht schreibend von aussen in den Adressbereich greifen können, der für Eingänge zugewiesen ist, oder?

Wie müsste ich denn zum Beispiel meinen "R_Temp_01" (Siehe oben) deklarieren, damit dieser Wert immer auf das erste Merkerwort "gespiegelt" wird?


@Lebenslang: Vielen Dank für den Link, aber die dort genannten Adressen kann ich nicht mit der Wago-Doku von Grubba unter einen Hut bringen.





Ich fürchte, dieses Modbus Thema ist zu hoch für mich, bei den Funktionscodes blicke ich auch nicht so recht durch... :-?

Gibt es da ein Tutorial für Dummies, oder jemanden, der mir mal die Basics etwas näher bringen mag?


Wie gesagt, Anfänger mit blutiger Nase...


Gruss

McNugget


----------



## Grubba (6 Oktober 2009)

> Wie müsste ich denn zum Beispiel meinen "R_Temp_01" (Siehe oben) deklarieren, damit dieser Wert immer auf das erste Merkerwort "gespiegelt" wird?




```
R_Temp_01 AT %MW0 : REAL    :=99.99;
```
Dieser Wert würde dann über die Modbusadresse 12288 gelesen und geschrieben werden können.

Mal so am Rande:

Willst Du selbst was programmieren (in einer Hochsprache) oder mit irgendeiner Visu oder einem Terminal auf die Wago zugreifen?


----------



## repök (6 Oktober 2009)

Grubba schrieb:


> ```
> R_Temp_01 AT %MW0 : REAL    :=99.99;
> ```
> Dieser Wert würde dann über die Modbusadresse 12288 gelesen und geschrieben werden können.
> ...



Das müsste dann aber so sein:

```
R_Temp_01 AT [B]%MD0[/B] : REAL    :=99.99;
```
Und ist auf dem Register 0x3000 (12288 ) zu finden

```
R_Temp_02 AT [B]%MD1[/B] : REAL    :=99.99;
```
wäre dann 2 Wörte weiter, also register 0x3002 (12890).

Wenn du mit einem opc-server arbeitest, könnte es noch sein das du bei der registeradresse 1 dazuzählen musst. warum das so ist weiss ich nicht.
Mit dem dem opc-server von Codesys kann man dann auch ohne adressen arbeiten. da bietet die hilfe aber auch einiges.


----------



## McNugget (7 Oktober 2009)

Guten Morgen allerseits.

@Grubba: Ich versuche bereits seit  geraumer Zeit, von aussen auf den Controller zuzugreifen um Daten in einer Datenbank/Website zu loggen und zu visualisieren. Leider fehlt mir da auch noch der richtige Programmierer, aber ich möchte zumindest schon mal  Modbus und Co verstehen, bevor ich Aufgaben verteile.

@Repök: Vielen Dank. Die Antwort bringt mich schon weiter. Warum *%MD0* und nicht %MW0??? 
Wofür steht das *D*?

Gruss

McNugget


----------



## Cerberus (7 Oktober 2009)

McNugget schrieb:


> @Repök: Vielen Dank. Die Antwort bringt mich schon weiter. Warum *%MD0* und nicht %MW0???
> Wofür steht das *D*?


 
Das W Steht für Wort (16 bit) und das D für Doppelwort (32 bit). Ist also doppelt so groß.


----------



## McNugget (7 Oktober 2009)

Aha.. Vielen Dank.


Ist %MD dann für REAL-Werte das richtige, oder eher zu gross?

Gruss

McNugget


----------



## Cerberus (7 Oktober 2009)

McNugget schrieb:


> Ist %MD dann für REAL-Werte das richtige, oder eher zu gross?


 
REAL-Werte brauchen 32 Bit. Von dem her ist %MD das Richtige.


----------



## McNugget (7 Oktober 2009)

So. 

Es ist wieder so weit. Stehe wie der Ochs vor´m Berg und habe Frust!

Folgendes ist nun im Codesys deklariert:

    R_Temp_01 AT %MD0:                         REAL    :=99.99;
    R_Temp_02 AT %MD1:                         REAL    :=99.99;
    R_Temp_03 AT %MD2:                         REAL    :=99.99;
...
...
...
    ME_Druck_28 AT %MD32:                    REAL;
    ME_Druck_29 AT %MD33:                    REAL;
    ME_Druck_30 AT %MD34:                    REAL;


Nun versuche ich per Movicon (von Progea) auf den Controller zuzugreifen und mir die Werte anzeigen zu lassen.

Ich bekomme es um´s Verrecken nicht hin. :sw8:

Ich kann mich per Modbus-Treiber über TCP-IP mit dem Controller Verbinden, wunderbar.

Aber ich kann keine Variablen auslesen.

Ich habe das Movicon-Projekt mal angehängt, falls jemand die Software hat.


Kann mir jemand einen Tipp geben, wie es evtl. mit Movicon funktionieren könnte? Warum läuft der Sch... nicht?


Oder welche Software man noch verwenden könnte?

Ich bin total ratlos.



Gruss

McNugget


----------



## McNugget (7 Oktober 2009)

OK....

Ich habe es jetzt so allmählich hinbekommen. 

Einziges Problem ist noch, dass wenn ich mich per Visu auf den Controller schalte, die Werte zu "schwingen" beginnen, obwohl nur lesend zugegriffen wird...

Vielleicht kennt ja jemand so ein Phänomen.



McNugget


----------

