Babylonkiller
Level-1
- Beiträge
- 23
- Reaktionspunkte
- 4
-> Hier kostenlos registrieren
Servus miteinander,
Folgendes Problem habe ich. Ich übergbe ein ARRAY[0..90]OF BOOL über einen POINTER an 90 Globale BOOL Variabele. Bis zum Register 64 passt die Übergabe der Werte. Ab Register 65 wird die 66igste Variable beschriben und nicht die 65igste. Warum wird das 65igste Bit immer übersprungen? Und was kann ich machen das es nicht übersprungen wird.
VAR_INPUT
EreignisID :WORD;
ControllerID :WORD;
Minute :WORD;
Stunde :WORD;
Datum :WORD;
END_VAR
VAR_OUTPUT
Tag :INT;
Monat :INT;
Jahr :INT;
END_VAR
VAR_IN_OUT
PT1: POINTER TO ARRAY[0..90]OF BOOL; (*Meldelisten Pointer *)
StartAdresse:BOOL;(*Adresse der ersten Globalen Variable *)
END_VAR
VAR
Meldelsite:ARRAY[0..90]OF BOOL;
Lauf:INT;
Lauf1:INT;
Index:INT;
TmpDatum:INT;
TmpDatum1:INT;
TmpDatum2:INT;
END_VAR
FOR Lauf:=0 TO 90 DO
IF Lauf=EreignisID THEN
Index:=Lauf;
EXIT;
END_IF;
END_FOR;
FOR Lauf1:=0 TO 90 DO
Meldelsite[Lauf1]:=FALSE;
END_FOR;
Meldelsite[Index]:=TRUE;
PT1:=ADR(StartAdresse);
PT1^:=Meldelsite;
Folgendes Problem habe ich. Ich übergbe ein ARRAY[0..90]OF BOOL über einen POINTER an 90 Globale BOOL Variabele. Bis zum Register 64 passt die Übergabe der Werte. Ab Register 65 wird die 66igste Variable beschriben und nicht die 65igste. Warum wird das 65igste Bit immer übersprungen? Und was kann ich machen das es nicht übersprungen wird.
VAR_INPUT
EreignisID :WORD;
ControllerID :WORD;
Minute :WORD;
Stunde :WORD;
Datum :WORD;
END_VAR
VAR_OUTPUT
Tag :INT;
Monat :INT;
Jahr :INT;
END_VAR
VAR_IN_OUT
PT1: POINTER TO ARRAY[0..90]OF BOOL; (*Meldelisten Pointer *)
StartAdresse:BOOL;(*Adresse der ersten Globalen Variable *)
END_VAR
VAR
Meldelsite:ARRAY[0..90]OF BOOL;
Lauf:INT;
Lauf1:INT;
Index:INT;
TmpDatum:INT;
TmpDatum1:INT;
TmpDatum2:INT;
END_VAR
FOR Lauf:=0 TO 90 DO
IF Lauf=EreignisID THEN
Index:=Lauf;
EXIT;
END_IF;
END_FOR;
FOR Lauf1:=0 TO 90 DO
Meldelsite[Lauf1]:=FALSE;
END_FOR;
Meldelsite[Index]:=TRUE;
PT1:=ADR(StartAdresse);
PT1^:=Meldelsite;