# Wie frage ich eine Variable im Netzwerk ab?



## enboss (4 März 2019)

Hallo  Forum,
meine Frage dreht sich im Modbus, meine Kenntnisse sind noch in dem Anfangsstadium.

Folgende Situation: Es existiert eine Wetterstation, diese wird mit Hilfe der Klemme 750-653 und der Bibliothek "MeteorologicalStation.lib" abgefragt.

Nun sind im Netzwerk noch einige weitere Feldbuscontroller von Wago (841er), die seinerseits einige Außenstrahler schalten sollen und zwar in Abhängigkeit von der Helligkeit draußen .

Die Frage lautet: Wie würdet ihr am besten diesen einen BOOL-Wert (dunkel oder nicht dunkel) zu den anderen Controllern schicken?
Ist folgende (meine) Herangehensweise richtig oder komplett falsch? -> Ich möchte in allen anderen Controllern mit der Hilfe der Bibliothek "ModbusEthernet_4.lib" und dem darin enthaltenen FB "ETHERNET_MODBUSMASTER_UDP" den Wert aus dem Wetterstation-Controller auslesen. In dem Wetterstation-Controller möchte ich die eine BOOL-Variable in der Merker AT %MW5: BOOL schreiben.

Wäre das der richtige Weg oder gibt es da einen eleganteren weg? Vielleicht sogar anders rum? Soll der Wetterstation-Controller alle anderen (das werden mehr als 10 sein) aufrufen und dort den Wert in den Speicher schreiben? Oder ist Modbus kompletter "Holz-Weg"?

Vielen Dank


----------



## ccore (4 März 2019)

Grundsätzlich geht das mit Modbus, allerdings hast du hier zwei verschiedene Protokolle. Die Klemme 750-653 ist für Modbus RTU, während die 750-841 über die Ethernet Schnittstelle angesprochen werden (UDP oder TCP). Der Merker MW besagt das es sich um ein Merkerwort handelt. Also eigentlich ein Zahlenwert. Hier wäre MX der Merker der Wahl. 
Sobald der Wert aus der Wetterstation abgeholt worden ist und auf einem Controller zur Verfügung steht kannst du ihn von da versenden oder dort abholen lassen. Wie es dir lieber ist.


----------



## Hoffy (4 März 2019)

Sieht deine Wetterstation so aus ?

https://www.voltus.de/out/pictures/media/Anwendungshinweis_WetterstationP03.pdf.

ist es möglich deine Werte in zeitliche Abstände abzufragen , um sie dann zu  vergleichen ?


----------



## enboss (4 März 2019)

Hallo ccora und Hoffy,
es geht nicht um die Wetterstation, die Werte kriege ich schon ausgelesen und verwertet.
Es geht um die grundsätzliche Vorgehensweise bei solchen Netzwerken (Zusammenschluss von Kontrollern) , um eine Variable auszulesen bzw zuschreiben.
Aber wenn ich das jetzt so sehe, dann bin ich vermutlich zu mindestens nicht ganz falsch davor mit meiner Art diese Aufgabe zu erledigen. 

@Hoffy Ja, das ist die Wetterstation. Ist schon tick älter


----------



## Mavorkit (4 März 2019)

Hi enboss,

Von wie vielen Controllern sprechen wir hier und wird es bei der einen bool Variable bleiben, oder kommen hier noch weitere hinzu?

Grundsätzlich gibt es zwei Methoden:

Netzwerkvariablen, die sind Recht leicht einzurichten (hier wird eine ganze Variablenliste freigegeben), werden aber ungern genommen weil hier unter Umständen dein Netzwerk zu gespammt werden kann.

Mit Modbus UDP oder TCP musst du festlegen, ob dein Controller mit der Wetterstation die Werte auf alle anderen schreibt oder die einzelnen Controller die Werte auch bei den Controller mit der Wetterstation abholen.
Wenn hier mehrere verschiedene Werte benötigt werden, würde ich probieren hier mit einer Struktur zu arbeiten.

Gruß

Mavorkit

Gesendet von meinem SM-G389F mit Tapatalk


----------



## ccore (5 März 2019)

enboss schrieb:


> Hallo ccora und Hoffy,
> es geht nicht um die Wetterstation, die Werte kriege ich schon ausgelesen und verwertet.
> Es geht um die grundsätzliche Vorgehensweise bei solchen Netzwerken (Zusammenschluss von Kontrollern) , um eine Variable auszulesen bzw zuschreiben.
> Aber wenn ich das jetzt so sehe, dann bin ich vermutlich zu mindestens nicht ganz falsch davor mit meiner Art diese Aufgabe zu erledigen.
> ...



Hallo enboss, 

das habe ich auch so verstanden. 
Ich wollte dir lediglich den Hinweis geben das du zwei verschiedene Protokolle dort hast. Wie auch Mavorkit nochmal geschrieben hat, ob du die Variable abholst oder versendest kannst du dir aussuchen. 

Gruß
ccore


----------



## enboss (5 März 2019)

Vielen Dank für die Hilfestellung!

Eine weitere Frage, die mich grad beschäftigt, ist: was ist der Unterschied zwischen 



> *%QW256...%QW511 *PFC-OUT-Area Flüchtige SPS-Ausgangsvariablen
> *%IW0...%IW255* Physical-Input-Area (1) First 256 Words of physical input data
> *%QW0...%QW255*  Physical-Output-Area (1) First 256 Words of physical output data
> *%MW0...%MW12287*  NOVRAM 8 kB retain memory (max. 24 kB)
> ...





Wenn ich alles richtig verstanden habe, sind die Adressen von 0 bis 255 die echten (Hardware) Aus- bzw Eingänge, die dann per Modbus gelesen bzw geschrieben werden können.
Aber wofür sind die Adressen ab 255? warum nimmt man da nicht einfach Merker? Kann mir vielleicht jemand den Unterschied und die verschiedenen Einsatzgebiete erklären?


Vielen Dank


----------



## Mavorkit (5 März 2019)

Hi enboss,

0 bis 511 sind die Hardware Eingänge. Dabei werden analoge Karten zuerst adressiert, dann digitale.
512 bis 1023 sind dann die Hardware Ausgänge.
Die zwei folgenden Bereiche sind für Bus Kommunikation, soweit ich weiß ist hier die Besonderheit das Eingänge nicht von der SPS manipuliert werden können und die Ausgänge nicht vom Bus verändert werden können.
Ab 12288 fangen dann die Merker an mit MW0.

Alles nach besten Wissen und Gewissen aus den Gedächtnis heraus.

Gruß

Mavorkit

Gesendet von meinem SM-G389F mit Tapatalk


----------



## Hoffy (5 März 2019)

phys. Eingänge ab Adresse 0x0000
phys. Ausgänge ab Adresse 0x0200 (512)
NOVRAM (Merkerspeicher) ab Adresse 0x3000 (12288 )
https://www.wago.com/wagoweb/documentation/app_note/a3000/a300003d.pdf


----------

