wofür sind SET und CLR bei S7 VKE-begrenzend?

Zuviel Werbung?
-> Hier kostenlos registrieren
zu S5-Zeiten, da schrieb ich auch
Code:
U "irgendwas"
O "Eins"   // zum Test
= "Ausgang"
Das kann man heute in S7 noch genauso schreiben und tut es auch.

bei S7 wurde daraus:
Code:
U "irgendwas"
SET
= "Ausgang"
Diese Variante würde ich eher als unüblich bezeichnen (für mich ist das auch nicht ganz das selbe).
Außerdem bewirkt die Verwendung von SET, daß das Netzwerk nicht mehr in FUP/KOP darstellbar ist.

Ich benutze für Testzwecke immer die erste Variante (Verknüpfung des "Eins"-Merkers), weil diese Variante
in AWL, FUP und KOP gleichermaßen anwendbar ist.

Daher habe ich mal gelernt:

Code:
CLR
O M x.x
O M x.y
= M x.z
 
SET
U M x.x
U M x.y
= M x.z

Die Gurus hier können ja sagen ob das Käse ist.
Das sieht zwar besonders durchdacht aus, ist aber Käse, weil es völlig egal ist, ob die Befehlsfolge mit
SET oder CLR beginnt. Leute, die sowas anderen beibringen, haben SET und CLR nicht richtig verstanden
oder S7 mit einer anderen Programmiersprache verwechselt.
Code:
SET
O M x.x
O M x.y
= M x.z
 
CLR
U M x.x
U M x.y
= M x.z
bringen haargenau das gleiche Ergebnis. [EDIT] wie die zitierte IBFS-Variante.

Weil SET und CLR das Erstabfragebit /ER=0 schreiben, wird die nächste Verknüpfungsoperation eine
VKE-Lade-Operation, die das hier durch SET bzw. CLR verursachte VKE ohne Berücksichtigung einfach
überschreiben. Erst die zweite Verknüpfungsoperation verknüpft das VKE.

Gruß
Harald
 
Zuletzt bearbeitet:
Für mich ist es eigentlich ganz logisch, daß SET und CLR VKE-begrenzend wirken müssen.

SET heißt:
Setze jetzt das VKE auf 1 - unabhängig davon, was eine eventuelle vorherige Verknüpfung bis dahin ergeben hat!
Da dadurch vorherige Verknüpfungen hinfällig werden (so als wenn sie gar nicht stattgefunden hätten), ist die
nach dem SET folgende Verknüpfungsoperation logischerweise der Beginn einer neuen Verknüpfung.
Weil nun eine neue Verknüpfung beginnt, muß das VKE hier begrenzt sein.
(Das gilt für CLR ganz genauso, nur wird dabei das VKE auf 0 gesetzt.)

Daß SET und CLR VKE-begrenzend sind, war für die S7-Sprachdesigner also keine Ermessensfrage.

Und aus welchem Grund wird dann das /ER Flag im Statuswort auf 0 gesetzt? Dir scheint es nur um das VKE zu gehen. Das hätte man auch auf 1 setzen können ohne das /ER abzufragen oder nach der Operation auf 0 zu setzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... war für die S7-Sprachdesigner also keine Ermessensfrage.
...
Ich habe nun lange hin und herüberlegt, ob, wann etc. diese VKE-Begrenzung in Zusammenhang mit Rückgabewerten von Bausteinen nützlich sein könnte. Entweder im BIE oder auch direkt im VKE. In dem Zusammenhang habe ich bemerkt, dass der SAVE-Befehl nicht das VKE begrenzt. Verwundert aber war ich darüber, dass ich fand, dass der BEA-Befehl das VKE begrenzt. Dieser Befehl (man korrigiere mich, wenn ich jetzt Unwahrheiten schreibe) wird grundsätzlich am Bausteinende ausgeführt. Ganz egal, ob er dasteht oder nicht. Gut: BEB und SPB wirken (m.E. zurecht) auch VKE-begrenzend, auch CALL und UC. Aber der Befehl SPA nicht.

Will sagen: ich finde das gar nicht so offensichtlich, dass SET und CLR VKE-begrenzend sein müssen.
 
Also 1 und 0 Merker Benutze ich wenn nur temporär, da ich bei Bitverarbeitungen gerne FUP nutze.
Diese setze ich dann mit SET bzw CLR.

Das hat den Hintergrund,
das ich Bausteine aus einem Projekt ins andere kopieren kann,
ohne mir Gedanken zu machen, welche Merker jetzt welchen Zustand unbedingt haben müssen.
 
Zurück
Oben