- Beiträge
- 5.689
- Reaktionspunkte
- 1.621
-> Hier kostenlos registrieren
Ich habe hier ein Kurioses Problem
Ich habe einen Wert im DB4001 Element 3
Diesen Wert überschreibe ich mit 0 Wenn in einem Register (R 2000) eine 0 Erkannt wird
Das funktioniert tadellos wenn ich das über das Watch Windows mache.
Register bekommt 0. 0 wird in DB geschrieben, und beim Auslesen ist eine 0 drin.
Ich habe im Programm aber jetzt noch ne Abfrage drin welche eine 0 aufs Register schreibt wenn dieses Register den Wert 324 beinhaltet.
Das funktioniert nicht. Sondern der inhalt des Registers wird ständig mit dem Inhalt des DB überschrieben (Flackert im Watchwindow zwischen 0 und 324) und im DB selbst bleibt der Wert 324 Erhalten und wird durch die Systemfunktion nicht mehr überschrieben.
Mache ich da einen Denkfehler?
Hier mal der relevante Programmausschnitt.
Ich habe einen Wert im DB4001 Element 3
Diesen Wert überschreibe ich mit 0 Wenn in einem Register (R 2000) eine 0 Erkannt wird
Das funktioniert tadellos wenn ich das über das Watch Windows mache.
Register bekommt 0. 0 wird in DB geschrieben, und beim Auslesen ist eine 0 drin.
Ich habe im Programm aber jetzt noch ne Abfrage drin welche eine 0 aufs Register schreibt wenn dieses Register den Wert 324 beinhaltet.
Das funktioniert nicht. Sondern der inhalt des Registers wird ständig mit dem Inhalt des DB überschrieben (Flackert im Watchwindow zwischen 0 und 324) und im DB selbst bleibt der Wert 324 Erhalten und wird durch die Systemfunktion nicht mehr überschrieben.
Mache ich da einen Denkfehler?
Hier mal der relevante Programmausschnitt.
Code:
COB COB_Main ; Cyclic Organisation Block Hauptprogramm
0
CMP R 2000
K 0
ACC Z
DYN DYNFLAG[1]
CSF H S.SF.DBLIB.Library ;Library number
S.SF.DBLIB.SetDBItem ;Write a single DB item
4001 ;1 R|K IN, DB number (any DB number)
K 3 ;2 R|K IN, DB item
R 2000 ;3 R|K IN, Value to be written
CSF L S.SF.DBLIB.Library ;Library number
S.SF.DBLIB.GetDBItem ;Read a single DB item
4001 ;1 R|K IN, DB number (any DB number)
K 3 ;2 R|K IN, DB item
R 2000 ;3 R OUT, Value read
; Hier wird das register 2000 auf 0 gesetzt wenn der Inhalt 324 ist.
CMP R 2000
324
JR Z test1
JR TEST2
test1:
LD R 2000
K 0
INC R 1000
TEST2: NOP
ECOB