# FUP - Merker nur "Write" oder nur "Read"



## ssyn (16 Juni 2022)

Moin,

Ich analysiere ein altes Projekt, das für eine Maschine in FUP erstellt wurde. Obwohl FUP ist für
mich ungewöhnlich (ich schreibe in ST), aber meistens Code ist begreifbar. Da gibt es ca. 15-20 digitale Eingänge / Ausgänge + 2 analoge Eingänge. Der Kode wurde für eine einfache Steuerung geschrieben, benutzt nur Merker und MW (Word Merker) als Variable.

Aber es gibt eine Frage, dass ich nicht verstehen kann. Es gibt manche Merker oder MW, die haben nur R (read) oder nur W (write) Funktion im Programm.  So, man benutzt Wert von MW101, aber wovon kommt - ist unklar. Und man schreibt Wert in MW102 und da wird weiter in Kode nicht benutzt zu lesen.

Ein Beispiel - Netzwerk 1




So, es gibt einen Vergleicher. Er prüft ob Wert in MW100 ist gleich 1 ("1" ist Konstante) und wenn es True - macht Merker M102 True auch.

Es gibt Netzwerke 2-3-4 mit Konstante 2/3/4 und Merker M103 / M104 / M105 entsprechend.

Und wovon kommt Wert in MW100? In Kode gibt es keine W-Funktionalität, nur R.

Ich habe eine Vermutung. Die Maschine hat noch Bildschirm-Steuerung. Kann man manche Werte, so manche Merker oder MW-Merker da speichern und benutzen?


----------



## ioStart (16 Juni 2022)

ja. Da greifen dann die Querverweise nicht. Daher sieht man es nicht


----------



## ioStart (16 Juni 2022)

es kann dann noch sein, dass der Merker auf der SPS remanent gespeichert wird. Gerade bei einem Parameter wie Maschinentyp wird die Einstellung nur selten geändert


----------



## ssyn (16 Juni 2022)

ioStart, so, du meinst, dass man beim Übertragung des Programm einmal "manuell" den Wert in SPS einschreiben kann? Für nur "R"-Merker es ist klar, einmal den Wert eingeben und weiter ohne Änderung benutzen. Klingt logisch.
Aber was ist mit nur "W"-Merker?


----------



## ioStart (16 Juni 2022)

Um die Situation zu klären, müsst man im HMI-Projekt die entsprechenden Variablen suchen.
Es kann aber auch sein, dass der code nach einer Änderung nicht mehr "aufgeräumt" wurde, und die Variablen keine Funktion mehr erfüllen


----------



## Blockmove (16 Juni 2022)

Merkerworte bestehen bei den meisten SPS-Steuerungen aus 16 Merkerbits und aus 2 Merkerbytes.
Wenn du also einen Schreibzugriff auf ein Merkerbit (z.B. M01) machst, verändert irgendein Merkerwort auch seinen Wert.
Die Adressierung / Zuweisung welches Merkerbit zu welchem Merkerwort gehört, ist abhängig von der SPS.
Hier gibt es diverse Varianten.
Von welcher SPS stammt der Code?


----------



## ssyn (16 Juni 2022)

Eaton easy e4

Ich machte im neuen Projekt ähnlicher Kode und MW01 bei Simulation hat sofort Wert "64". 
Obwohl im echten Projekt etsprechende MW hat "0" bei Simulation. Wahrscheinlich muss ich mehr über Merkerworte lesen. Vielen, vielen Dank Blockmove !


----------



## dekuika (16 Juni 2022)

Möglich wäre, dass die HMI in der Variable "MW1" eine Zahl an die Steuerung übergibt. Mit CMP wird das dann überprüft und z.B. eine 1 setzt den Merker "Maschinentyp 1" auf true, eine 2 "Maschinentyp 2" auf true usw. Da spart man sich etliche HMI-bools. Aber da müsste man sich die Querverweise anschauen.


----------



## GUNSAMS (16 Juni 2022)

M01 und M02 sind im Merkerwort 1 enthalten. Das Merkerwort 1 besteht aus den Merkern M01 bis M16.
Ist M01 auf 1, dann hat das Merkerwort 1 den Wert 1. Ist M02 auf 1, dann hat das Merkerwort 1 den Wert 2. Sind beide auf 1, dann hat das Merkerwort 1 den Wert 3.


----------



## dekuika (16 Juni 2022)

Wenn absolut adressiert, müsste es dann nicht M1.0, M1.1 usw. heissen?


----------



## GUNSAMS (16 Juni 2022)

Nein, dass ist bei der Easy E4 anders.
M01, M02, M03, ....., M33, M34 usw.


----------



## Blockmove (16 Juni 2022)

dekuika schrieb:


> Wenn absolut adressiert, müsste es dann nicht M1.0, M1.1 usw. heissen?


Das ist nicht bei allen SPS-Systemen so.
Merker können auch z.B. durchnummeriert sein (0 - 2047) und dann kannst du anfangen zu rechnen.
Es gibt x Arten von Adressierung


----------



## dekuika (16 Juni 2022)

Ok, kenne mich mit der easy nicht aus. Aber was macht dann der Vergleicher für einen Sinn?


----------



## ssyn (16 Juni 2022)

Ich habe schon diese Tabelle gefunden.




Aber im Kode man benutzt MW ab MW33, da gibt schon keine M (letzte 505..512). Wahrscheinlich doch geht es über HMI, leider habe das nicht, wahrscheinlich wurde es separat erstellt, nicht zusammen wie bei Siemens / Beckhoff.


----------



## GUNSAMS (16 Juni 2022)

dekuika schrieb:


> Ok, kenne mich mit der easy nicht aus. Aber was macht dann der Vergleicher für einen Sinn?


Der Vergleicher macht schon Sinn, aber er darf als Ausgang nicht M01 verwenden, sondern M17 oder höher, weil MW01 ja den Merker M01 enthält.


----------



## dekuika (16 Juni 2022)

GUNSAMS schrieb:


> Der Vergleicher macht schon Sinn, aber er darf als Ausgang nicht M01 verwenden, sondern M17 oder höher, weil MW01 ja den Merker M01 enthält.


Das meinte ich ja.


----------



## ssyn (16 Juni 2022)

GUNSAMS, in Kode benutzt man Merker und MW mit Zahlen ab 90, ich machte nur ein Musterbeispiel, wusste nicht, dass es wichtig ist. 

Ich ändere jetzt Bild von Muster.


----------



## GUNSAMS (16 Juni 2022)

Wenn zusammen mit der Easy ein HMI betrieben wird und die Eingabe des Maschinentyps über das HMI erfolgt, dann schreibt das HMI in das MW100.
Daher kannst du im Programmcode der Easy keinen Schreibzugriff finden.


----------



## dekuika (16 Juni 2022)

ssyn schrieb:


> GUNSAMS, in Kode benutzt man Merker und MW mit Zahlen ab 90, ich machte nur ein Musterbeispiel, wusste nicht, dass es wichtig ist.
> 
> Ich ändere jetzt Bild von Muster.
> Anhang anzeigen 61747


So herum macht es Sinn.


----------

