Wago 750-841 und Modbus???

McNugget

Level-1
Beiträge
220
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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.
 
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
 
Zuletzt bearbeitet:
Wie müsste ich denn zum Beispiel meinen "R_Temp_01" (Siehe oben) deklarieren, damit dieser Wert immer auf das erste Merkerwort "gespiegelt" wird?
Code:
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?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
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?

Das müsste dann aber so sein:
Code:
R_Temp_01 AT [B]%MD0[/B] : REAL    :=99.99;
Und ist auf dem Register 0x3000 (12288 ) zu finden
Code:
 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.
 
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
 
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
 

Anhänge

  • kw_01_1.zip
    462,8 KB · Aufrufe: 69
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zuletzt bearbeitet:
Zurück
Oben