Wie funktioniert eigentlich der Merkerbereich?

m.hoeft

Level-2
Beiträge
17
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bräuchte mal etwas Nachhilfe zur grundsätzlichen Funktionsweise eines Controllers. Meistens verwenden wir einen WAGO 750-880 oder auch mal 750-8202. Ich vermute aber, die Arbeitsweise des Merkerbereichs ist nicht so sehr vom Modell oder Hersteller abhängig.
Also der Zustand von Adressen, die ich mit %M... vergebe, ist dauerhaft gespeichert, auch wenn der Controller abgeschaltet wird. Dazu muss er im internen Speicher abgelegt werden. Gibt es einen Zwischenpuffer, aus dem die Daten von Zeit zu Zeit auf den internen Speicher geflusht werden? Oder funktioniert der Merkerbereich noch ganz anders?
Diese Frage interessiert mich aus einem ganz bestimmten Grund. Ich tausche über Modbus Daten zwischen zwei Controllern aus, der eine schreibt auf die Adresse 12288, also in den Merkerbereich, des anderen. Dabei kommt es immer wieder zu kurzen Verzögerungen und Störungen. Kann es sein, dass der Merkerbereich nicht für einen konstanten Datenstrom in Echtzeit geeignet ist? Sollte man dafür besser die PFC-IN bzw. PCF-OUT-Variablen verwenden? Soweit ich mit Wireshark beobachten kann, laufen die Modbus-Pakete gleichmäßig durch.

Vielen Dank für Eure Antworten und liebe Grüße

Michael Hoeft
 
Ob Daten im Merkerbereich abgelegt werden oder wo anders spielt für die Remanenz keine Rolle. Unter Umständen gibt es Hersteller die einen remanenten Merkerbereich haben. Das ist aber normalerweise nicht der Fall.
Außerdem spielt es ebenso keine Rolle "wie oft" du die Daten beschreibst. Du schreibst: "In einem konstanten Datenstrom". Das ist für den Merkerbereich unerheblich da egal woher die Daten kommen Sie diese "Zuordnung" verlieren. Ein Byte ist ein Byte, egal ob es per Modbus, Profinet, von Datei oder sonst woher kommt. Merker kannst du beliebig oft beschreiben und lesen. Da gibt es keine Grenze.

Was besonders am Merkerbereich im Vergleich zu normalen Variablen ist, dass diese eine feste Adresse haben und bei der Übersetzung nicht wie die Variablen neu organisiert werden. Dadurch kann es natürlich zu sehr fragmentiertem Speicher kommen. In der Codesys/Beckhoff Welt nutzt eigentlich fast niemand mehr Merker wenn es nicht unbedingt sein muss.

Willst du Daten remanent verfügbar haben so musst du diese als remanent kennzeichnen. Wie viele Daten sie remanent machen darfst hängt von der Steuerung ab. Manche speichern diese mit einem Pufferkondensator oder Batterie oder speichern diese mit der Restspannung noch schnell ab. Das musst du prüfen.
Bei Codesys definiert man remanente Daten wie folgt:
VAR RETAIN PERSISTENT
myBool : BOOL;
END_VAR
Ob du RETAIN und PERSISTENT benötigst lies in der Doku nach.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich halte von direktem Mapping überhaupt nichts.
1. Ist der Datenursprung im Zielsystem nicht nachvollziehbar.
2. Kannst du die Konsistenz der Daten nicht gewährleisten.

Eine saubere Programmierung der Kommunikation ist m.M. nach immer noch am besten.
Holger
 
Hallo Holger,

vielen Dank für Deine Antwort. Wie sieht denn eine saubere Programmierung aus? Könntest Du einen Link oder ein kurzes Beispiel schicken?

Viele Grüße Michael
 
Hallo excelite,

vielen Dank für Deine Antwort. Inzwischen habe ich mit Hilfe von WAGO das Problem lösen können. Merkerbereich und PFC-IN/PFC-OUT werden tatsächlich anders behandelt. Der Merkerbereich wird direkt innerhalb des Programmablaufes abgefragt. Da ich in verschiedenen Task einmal gelesen und das andere Mal geschrieben habe, kann es zu konkurrierenden Zugriffen kommen, die diese Verzögerungen verursacht haben. PFC-IN/PFC-OUT werden dagegen vom Feldbus verwaltet und hier ist auch Lesen und Schreiben sauber getrennt.

Viele Grüße Michael
 
Zurück
Oben