Hallo,
ich versuche gerade ein Real-Wert (Temperatur) in einen Wago 750-842 Merker zu setzen. Leider klappt es nicht. In IP-SYMCON wird zwar der Wert angezeigt, aber in der SPS ist er in der Live-View nicht geändert.
Im Anhang meine Konfiguration. Das letzte Bild ist eine Debug-Ausgabe, ob der Befehl zum Setzen erfolgreich ausgeführt werden konnte.
Mein Merker in der Wago
MT00 AT %MD2 : REAL; (* 12296 *)
Für jede Hilfe wäre ich Dankbar
PS: Ich habe gestern mit einem Bool/Bit Wert getestet und konnte damit auch einen entsprechenden Merker in der Wago ändern.
Ähm … bin ja auch noch Anfänger in Bezug auf Wago, aber du schreibst einmal MD2 , dann in IPS die 12296 und in der Debug Ausgabe sieht man du schreibst auf die 13364 … meinst du das paßt so alles zusammen ???
Ein Merker MD2 wäre meiner Meinung nach Adresse 12292 … !?
Aber auch nur wenn du keine anderen Merker definiert hast, die sich evtl. mit dem MD2 überlagern … dann müßtest du den Merker anders definieren!
edit
hmm … zu lange zum Tippen benötigt … aber auf jeden Fall die gleiche Beobachtung …
Hallo,
und vielen Dank. Also die 13364 passt, da es die IP-SYMCON Instanz ID ist und nicht die Wago Adresse. Aber der richtige Hinweis war die 12292 und nicht 6 am Ende.
Mit der 12292 funktioniert es aber ich bin etwas verwirrt, wie man denn jetzt die Adresse berechnen kann.
Ich habe zum Testen einen Bit Merker. Die Adresse habe ich über über die Formel 12288 + MerkerNr * 16 + MerkerSubNr berechnet. Dadurch ergibt sich bei mir für den Merker M1.0 die Adresse 12304. Interessanterweise funktioniert das auch. Aso ich kann diesen Merker korrekt auslesen und setzen. Wie kann es denn sein, dass der Merker MD2 dann über 12292 bedient wird?
MW0 --> 12288 ist ein Merker Word und hat nur 1 Stelle, MW1 wäre dann 12289 … erst bei MD (Doppelword) kommt der Versatz um 2 und selbst da gibt es die 1 … und es funktioniert auch mit MD1 !?
MD0 --> 12288
MD1 --> 12290
MD2 --> 12292
Oder hab ich da jetzt einen gedanklichen Knoten ?
Hier im Forum existiert so eine Art Modbus Adressliste und aus der ergibt sich das zumindestens so wie ich es geschrieben habe …
Danke für die Erläuterung, damit komme zumindest bei Word und DWord klar, da diese 16 bzw. 32 Bit haben ist es für mich auch logisch, dass bei einem DWord eine Adresse übersprungen wird.
Was mir jetzt aber nicht klar ist, ist wie man Bytes oder Bits adressiert.
Wenn 12288 = MW0 und 12290 --> MW1 ist, wie wäre dann die Adresse für %MX0.4 : BOOL, also ein bestimmtes Bit ?
Wenn ich da nach meiner Formel gehe, käme 12288 + 0 * 16 + 4 = 12292 raus, was sich ja dann mit dem MW2 überlappt.
Im vorletzten Post des Threads ist die Liste mit den Adressen die ich gemeint habe .
Im Tabellenblat ADR_PW fängt es allerdings mit 12289 an, was falsch ist … da müßte 12288 stehen!
In Tabellenblatt1 ist es richtig.
Hi & Danke,
ich hab mir die Excel-Tabelle des vorletzten Beitrags geladen. Da ist zwar noch ein kleiner Fehler auf dem ersten Arbeitsblatt MX0.0 wäre angeblich 12289 aber auf dem zweiten Blatt ist es korrekt.
Und für alle die auf diesen Beitrag stoßen sollten… des Rätsels Lösung ist das tatsächlich Adressen mehrfach benutzt werden. Es wird für jedem Datentyp ausser beim Double Word eine Adresse genutzt.
MW0 = MX0.0
MW1 = MX0.1
MW2 = MX0.2 … usw. also wird für jeden Bit/Bool-Merker sozusagen eine ganze 16-Bit Adresse reserviert.
Nur bei einem Double Word wird eine Adresse übersprungen.
Dadurch ergeben sich folgende Rechenregeln. (n und m sind die jeweiligen Zahlen)
Adresse MXn.m = 12288 + ( n * 16 ) + m
Adresse MWn = 12288 + n
Adresse MDn = 12288 + ( n * 2 );
Somit setzt man seine Word und DoubleWord Merker am besten an den Anfang und die Bit/Bool-Merker weiter nach hinten, da dort die Adressen schnell steigen können und somit nicht mit nachfolgenden Merkern kollidieren können, falls man weitere hinzufügt.