S5 Code richtig verstehen

Werner81

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich hab da mal ne Frage bezüglich eines S5 Codes, und zwar geht es um den Teil mit L KY 0,0. Ich kann das irgendwie nicht nachvollziehen. Es findet ja erst einmal der "Und Vergleich" statt aber was passiert danach?
Mit KY 0,0 wird ja wenn ich es richtig verstanden hab mit der ersten 0 highbyte angesprochen und mit der zweiten das lowbyte?! Und wird einfach nur der Akku mit 0 überschrieben oder was soll das?
was passiert mit dem Ergebniss aus dem vergleich? wird dieses in DW "inhalt MW206" geschrieben oder was passiert? und wann wird BEB gesetzt?
Es wäre super wenn ihr mir helfen könnte ich tüftel an dem problem schon ein bissel länger.

Code:
//Auszug

A DB8                   // Aufruf DB

B MW200              //inhalt int z.B.: 10
L DW 0                 // Adresse definiert durch B MW200  d.h.:  DW10 
L KM 11111111 11111101 
UW                      // WORD VERGLEICH
L KY 0,0 
B MW206
T DW 0
BEB

B MW 200
L DW 0
L KM 00000000 00000010
OW
B MW 200
T DW 0
***
 
Code

Hallo Werner,

UW ist nicht VKE-beinflussend, BEB reagiert nur auf VKE=1. Was kommt vor deinem Codeschnippsel? Das DW mit Adresse in MW206 wird genullt. Biste dir sicher dass der Programmteil funktioniert wie er gedacht war?

L KY 0,0 -> L KF 0

André
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey André

Sicher bin ich mir da eigentlich schon, da dass Programm aus einer Laufenden Analge stammt. der code sieht im original so aus:
Code:
Netzwerk 4:

U E0.0
SPB =M001

B MW200              //inhalt int z.B.: 10
L DW 0                 // Adresse definiert durch B MW200  d.h.:  DW10 
L KM 11111111 11111101 
UW                      // WORD VERGLEICH
L KY 0,0 
B MW206
T DW 0
BEB

M001:
B MW 200
L DW 0
L KM 00000000 00000010
OW
B MW 200
T DW 0
***
der db wird in ein paar netzwerken vorher schon geöffnet. Aber wenn e0.0 true ist und das VKE gesetzt ist macht er ja nen sprung oder wird das vke auch gesetzt wenn e0.0 false ist?
Oder kann das vke auch in den vorherigen netzwerken gesetzt werden?
 
Code:
//Auszug
 
A DB8                   // Aufruf DB
 
B MW200              //inhalt int z.B.: 10
L DW 0                 // Adresse definiert durch B MW200  d.h.:  DW10 
L KM 11111111 11111101 
UW                      // WORD VERGLEICH
L KY 0,0 
B MW206
T DW 0
BEB

Mit dem UW wird jetzt nur das .1 Bit ausgeblendet, das VKE wird nicht verändert.

L KY 0,0 würde ich mit L 2#0 gleichsetzten!

Nur wenn ich das richtig verstehe wird jetzt das KY 0,0 in das Datenwort transferiert, welches im MW 206 adressiert wird!? :confused:

Das BEB wird von dem hier sichtbaren Code jedenfalls nicht beeinflusst, muss also davor liegen!

Code:
B MW 200
L DW 0
L KM 00000000 00000010
OW
B MW 200
T DW 0
***

Mit OW wird hier nur sichergestellt, das das .1 Bit auf jeden fall True ist!
der Rest sollte klar sein!

Mich würde dann auch interessieren was davor steht....
 
Mist, da war ich zu langsam! :D

Also mit dem neuen Code macht das BEB noch weniger Sinn. Sobald E 0.0 = True, dann wird gesprungen, das bedeutet das das BEB nie eine Berücksichtigung findet, da das VKE an dieser Stelle (BEB) immer False sein muss.

Ach so, das VKE kann bei S5 nicht über die Netzwerkgrenze hinaus benutzt werden!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke mal, da hätte auch ein BEA stehen können. Nach

SPB =M001

ist das VKE 1, das wird dort immer auf 1 gesetzt. Damit reagiert das BEB in diesem Falle wie ein BEA, denn wenn der Sprung ausgeführ wird, wird ja das BEB ohnehin übersprungen.

Warum die aber das UW ausführen???
L KY 0,0 wurde vielleicht nachträglich mal eingefügt um eine 0 auf das indirekt adressierte DW zu schreiben.
 
Das ist mir neu. Das VKE wird doch durch den Sprung nicht beeinflusst. :confused:

Nach dem Sprungbefehl ist das VKE immer 1, da ein Sprungbefehl VKE-begrenzend ist!

PS: Hier mal noch die entsprechende Passage aus der Step7-Hilfe zu SPB (Ist aber bei Step5 auch so):

Wenn VKE = 0, wird der Sprung nicht ausgeführt. Das VKE wird auf "1" gesetzt, und der Programmablauf wird mit der folgenden Anweisung fortgesetzt.
 
Zuletzt bearbeitet:
Ich glaub ich hab die stelle gefunden in der das VKE gesetzt wird und zwar findet ein paar netzwerke vorher ein vergleich statt zwischen zwei int zahlen mit bool ergebnis. und danach gibt es für mich keine ersichtliche stelle wo das vke zurück gestzt wird.
allerdings wie gesagt in einem andren netzwerk
 
Aber schöner Code ist das nicht, würde ich mal sagen, ein BEA wäre an dieser Stelle absolut eindeutig gewesen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich glaub ich hab die stelle gefunden in der das VKE gesetzt wird und zwar findet ein paar netzwerke vorher ein vergleich statt zwischen zwei int zahlen mit bool ergebnis. und danach gibt es für mich keine ersichtliche stelle wo das vke zurück gestzt wird.
allerdings wie gesagt in einem andren netzwerk

Ne oder? Das würde ich nochmal überdenken.

Noch mal, das gilt auch schon für Step5, SPB ist VKE-begrenzend, das VKE wird danach immer auf 1 gesetzt!
 
Zuletzt bearbeitet:
Ja hast recht ich hab das jetzt auch mal ausprobiert und nun funktionierts, mich hatte nur diese UW funktion verwirrt, aber ich denk mal da hat wer am programm ne änderung vorgenommen ohne den alten kram zu entfernen.
Aber danke noch mal, mich überracht es immer wieder wie schnell man hier hilfe bekommt!
Schön Gruß Werner
 
Zurück
Oben