Step 7 Frage zum Befehl SET

spirit

Level-1
Beiträge
961
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

habe eine Frage bezüglich des Befehls SET. Ich sehe öfters mal im Programm folgenden Ausdruck:

Code:
St0:  NOP   0
      SET  
      S     M     10.0


Warum wird hier SET programmiert; der Merker würde doch auch ohne SET gesetzt werden, oder? :confused:
 
Hallo Forum,

habe eine Frage bezüglich des Befehls SET. Ich sehe öfters mal im Programm folgenden Ausdruck:

Code:
St0:  NOP   0
      SET  
      S     M     10.0


Warum wird hier SET programmiert; der Merker würde doch auch ohne SET gesetzt werden, oder? :confused:

Wenn mit VKE = 0 Der Sprung ausgeführt wird, wie soll dann der Merker gesetzt werden?

Mit SET wird das VKE auf eins gesetzt.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn mit VKE = 0 Der Sprung ausgeführt wird, wie soll dann der Merker gesetzt werden?

Mit SET wird das VKE auf eins gesetzt.


bike

Danke bike,

es muss die Vorbedingung erfüllt sein, damit der Sprung zur Marke St0 ausgeführt wird - das ist klaro!

Aber an der Sprungmarke selbst würde doch der Merker auch ohne den Befehl SET gesetzt werden; habe ich ja auch so ausprobiert ...
 
Aber an der Sprungmarke selbst würde doch der Merker auch ohne den Befehl SET gesetzt werden; habe ich ja auch so ausprobiert ...

Grundsätzlich ja. Aber wenn das Programm auch an der Sprungmarke vorbeiläuft ohne hingesprungen zu sein, dann ist das VKE womöglich 1/0 und der Ersteller wollte dann auch Setzen.
Oder bei Sprüngen die das VKE nicht beschreiben (SPZ,SPO etc.)

mfG René
 
Zuletzt bearbeitet:
Richtig. Man muß schauen, wie das Programm zu der Sprungmarke hingekommen ist:
- Wurde mit SPB/SPBN/SPBNB/... gesprungen, dann wird SET nicht gebraucht, weil diese Sprünge (unabhängig vom Sprung) das VKE immer auf 1 setzen.
- Wurde mit SPA/SPZ/SPM/SPO/... gesprungen, dann wurde das VKE von der "Absprung"-Stelle mitgenommen und kann also auch 0 sein, wodurch das S nicht ausgeführt werden würde.
- Ist das Programm einfach "von oben" in die Sprungmarke "hineingelaufen", dann ist das VKE an der Stelle vom Programm vor der Marke abhängig und kann ebenfalls 0 sein.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin!

Alles richtig - aber ein Punkt fehlt mir in der Auflistung: Die Lesbarkeit
Oftmals wird der SET-Befehl zum besseren Verständnis für Menschen die nicht jeden Tag von AWL-Anweisungen umgeben sind [überflüssiger Weise] mit programmiert. Instandhalter bei denen es darauf ankommt, dass sie schnell komplexe Netzwerke verstehen sind oftmals dankbar für derart überflüssige Anweisungen.

Zeiten in denen es auf Speicherplatz und Zykluszeit ankam, gehören Gottes Glück der Vergangenheit an - sind also kein Argument mehr.
Bleibt nur noch die Profilneurose mancher Entwickler, die meinen ihren intellektuellen Vorteil gegenüber den Instandhaltern im Programm zu dokumentieren indem sie möglichst umständlich und schwer nachvollziehbar programmieren.

Aber bevor das wieder ausufert - ja - wurde z.B. mit SPB gesprungen könnte man die Anweisung SET einsparen.
[was ich aber eigentlich viel schlimmer und noch überflüssiger finde, ist die NOP 0 am Sprungziel eine Zeile zuvor ;)]


Grüße
DaMeista
 
Tip: Als Füll/Dummy-Anweisung an einer Sprungmarke ist eine SET-Anweisung ein kleines bischen besser geeignet als eine NOP-Anweisung (ist kürzer und garantiert eine VKE-Begrenzung).
An die Sprungmarke kann aber auch gleich eine sinnvolle Anweisung geschrieben werden

Harald
..........
 
Zuviel Werbung?
-> Hier kostenlos registrieren
[was ich aber eigentlich viel schlimmer und noch überflüssiger finde, ist die NOP 0 am Sprungziel eine Zeile zuvor ;)]

Bäh ich mach da immer (edit: öfter) ein NOP 0 hin. Weil ich sonst keinen Dokumentationskommentar hinsetzen kann bevor überhaupt die entsprechenden Anweisungen anfangen. :p
Ich mach das üblicherweise bei Sprüngen, weil Sprunganweisungen oft kritisch werden für Programmierer vor allem wenn diese noch VKE/AKKU/Pointer vom Ursprung weiterverwenden

z.B.
Code:
SAV:  NOP   0
// Hier werden sicherere Werte gesetzt für den Fall kritischer Werte ab IKS/LS/MMI
      L     100
      T     #RepRap
      L     1.250000e+001
      T     #MinSchaufel

mfG René
 
Da gebe ich vollmi recht.
UND hat schon einmal jemand die Anweisung hinter der Sprungmarke in die nächste Zeile mit Enter verschieben können, wenn man etwas ändern will?
Man muss die Anweisung neu eingeben, bei NOP 0 geschieht das nicht.(wer muss ein NOP 0 schon andern ;-) )


bike
 
Zurück
Oben