-> Hier kostenlos registrieren
Hallo!
(Step7 5.3 SP1 /412-2DP)
Ich suche nach der besten Möglichkeit um in einem DB in einem Array[0..127] of Bool ein bestimmtes Bool zu setzen.
Die Anfangsadresse des Array im DB ist byte 664.
Wenn z.B. Format 13 in der SPS aktiv ist möchte ich Bit Nr.13 in dem Array setzen!
Mir ist es gelungen mit Hilfe eines Any-Pointers und dem BlkMov ein Byte zu schreiben.
Ich habe es leider nicht geschaft mit dem Pointer anstatt eines Bytes nur ein Bit zu schreiben.
Ich habe schon versucht als Datentyp BOOL anzugeben und statt des Byteoffset direkt Bitadressiert(.xxx) zu arbeiten. Leider kann der BlkMov nicht nur ein Bit schreiben.
Kann ich irgendwie nur ein Bit setzen?
Auf #dnno
s dbx[ar1,p#0.0]
Wenn dieser Adressierung funktioniert, wie kann ich den Offset hier p#0.0 so hinbekommen das er stimmt. Für Format 9 bräuchte ich einen Offset von p#1.1. Wie kann ich diesen aus der 9 bilden?
Danke im Vorraus für alle Antworten.
Gruß
Thomas
(Step7 5.3 SP1 /412-2DP)
Ich suche nach der besten Möglichkeit um in einem DB in einem Array[0..127] of Bool ein bestimmtes Bool zu setzen.
Die Anfangsadresse des Array im DB ist byte 664.
Wenn z.B. Format 13 in der SPS aktiv ist möchte ich Bit Nr.13 in dem Array setzen!
Mir ist es gelungen mit Hilfe eines Any-Pointers und dem BlkMov ein Byte zu schreiben.
Code:
L P##Temp_ANY_Pointer_in
LAR1
L B#16#10 //Syntax ID für Step7
T LB [AR1,P#0.0]
L B#16#2 //Wert für TYP: 1 Bool, 2 Byte, 3 Char, 4 Word, 5 Int, 6 Dword, 7 Dint, 8 Real, 9 Date, A TOD, B Time, C S5Time, E DT, 13 String
T LB [AR1,P#1.0]
L 1 //Anzahl der zu Übertragenden Daten
T LW [AR1,P#2.0]
L DBNo //Datenbausteinnummer
T LW [AR1,P#4.0]
L P#DBX 0.0 //Bereichszeiger, in diesem Fall vom ersten Bit an. Für deine 2.Rezeptur brauchst du dann P#DBX 4.0
L #ByteOffset //664
SLW 3
+D
T LD [AR1,P#6.0]
Ich habe es leider nicht geschaft mit dem Pointer anstatt eines Bytes nur ein Bit zu schreiben.
Ich habe schon versucht als Datentyp BOOL anzugeben und statt des Byteoffset direkt Bitadressiert(.xxx) zu arbeiten. Leider kann der BlkMov nicht nur ein Bit schreiben.
Kann ich irgendwie nur ein Bit setzen?
Auf #dnno
s dbx[ar1,p#0.0]
Wenn dieser Adressierung funktioniert, wie kann ich den Offset hier p#0.0 so hinbekommen das er stimmt. Für Format 9 bräuchte ich einen Offset von p#1.1. Wie kann ich diesen aus der 9 bilden?
Danke im Vorraus für alle Antworten.
Gruß
Thomas
Zuletzt bearbeitet: