Hallo,
es will mir nicht gelingen, beispielsweise Werte in einem DB auf Null zu vergleichen:
Schon die erste Zeile wird gelb markiert:
Als Hinsweis erhält man: Die Adresse wird nicht durch eine Variable belegt.
In Classic klappt das aber ganz wunderbar!
Gibt es in TIA eine andere Möglichkeit?
Kann es sein, daß Du auf Bilder auf Deiner Festplatte oder anderen lokalen Speicherplatz verlinkt hast?Weiß nicht, was das mit den Bildern ist ...
Wie die Meldung/Warnung schon sagt: es ist keine Variable mit der Adresse DBW0 deklariert. Weil an der Adresse ein Struct mit vielen Bools liegt.
Harald
Wie die Meldung/Warnung schon sagt: es ist keine Variable mit der Adresse DBW0 deklariert. Weil an der Adresse ein Struct mit vielen Bools liegt.
Bei einer 300er könntest Du die Anfangsadresse des Struct #Werte in ein Adressregister oder temp-DWord laden (Achtung: Multiinstanz-Offset aus AR2 beachten!) und dann indirekt Wordweise auf die Struktur zugreifen. Sowas "unsauberes" unsymbolisches sollte aber heutzutage nicht mehr veranstaltet werden.
Zusätzliche Gefahr: der Wordweise Zugriff erfasst auch ggf. nicht deklarierte Padding-Bits und -Bytes mit unkontrolliertem Inhalt.
Harald
L P##myStruct
T #temp-DWord
AUF DB10
L DBW [#temp-DWord] //Lade 16 aufeinanderfolgende Bools
L P##myStruct
LAR1
AUF DB10
L DBW [AR1, P#0.0] //Lade 16 aufeinanderfolgende Bools
AUF DB10
L P#0.0
T #pointer
L 4 // 4 DWORDs abfragen
Next: T #count
L DBD [#pointer]
L L#0
<>D
= "Merker"
L #pointer
L P#4.0
+D
T #pointer
L #count
LOOP Next
Der Schleifenteil wird es feststellen - und gleich wieder vergessen.Der Schleifenteil soll halt feststellen, ob ein Bit ungleich Null ist ... denke aber mein Konstrukt ist so noch nicht lauffähig, oder?
Der Schleifenteil wird es feststellen - und gleich wieder vergessen.
Harald
Wenn der Vergleich <> 0 feststellt (und TRUE an "Merker" zuweist), dann sollte die Schleife verlassen werden (SPB exit)
Harald
AUF DB10
L P#0.0
T #pointer
L 4 // 4 DWORDs abfragen
Next: T #count
L DBD [#pointer]
L L#0
<>D
= "Merker"
SPB Exit
L #pointer
L P#4.0
+D
T #pointer
L #count
LOOP Next
Exit: NOP 0
U "Werte_DB".Werte.Wert_1 //DB10.DBX0.0 / nur für Referenzdaten
CLR //VKE-Abgrenzung
LAR1 P#0.0 //P##myStruct
AUF DB10 //DB nochmal öffnen für Referenzdaten
L DBD [AR1, P#0.0]
L DBD [AR1, P#4.0]
OD
L DBD [AR1, P#8.0]
OD
L DBD [AR1, P#12.0]
OD
U <>0
= "Merker"
Und ich würde am Anfang des Codes einen "überflüssigen" Zugriff auf den ersten Member der Struktur nur für die Referenzdaten einbauen, damit man diesen Zugriff auf die Struktur finden kann. Und auch das dann eigentlich überflüssige "AUF DB10" würde ich auf jeden Fall für die Referenzdaten drinlassen.
Harald
U "Werte_DB".Werte.Wert_1 //DB10.DBX0.0 / nur für Referenzdaten
CLR //VKE-Abgrenzung
Jadieser Code dient rein zur "Orientierung" und hat nichts mit der eigentlichen Funktionalität zu tun?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?