-> Hier kostenlos registrieren
Hallo,
Ich benutze eine 300er CPU mit TIA Portal v. 17.
Bin neu bei SCL und möchte gerne eine Funktion programmieren, welche mir alle Bits in einem globalen DB prüft ob eine "1" drin steht. Der DB hat insgesamt 14 Byte.
Ich wollte dies mit einer inneren und einer äußeren Schleife machen. Die innere für die Bitadresse und die äußere für die Byteadresse.
Hier ein Beispiel wie ich es ungefähr machen würde.
[CODE ANFANG]
FOR #i_outer := 0 TO 14 BY +1 DO
FOR #i_inner := 0 TO 7 BY +1 DO
IF %DB59.DBX0.0 <> 0 THEN
#StoerungAktiv := TRUE;
ELSE
#StoerungAktiv := FALSE;
END_IF;
END_FOR;
END_FOR;
[CODE ENDE]
Nun zu meiner Frage:
Wie kann ich in der Anweisung (IF %DB59.DBX0.0 <> 0 THEN) das DB indirekt mit meinen Zählvariablen abfragen also z.B. so:
IF %DB59.DBX#i_outer.#i_inner <> 0 THEN
...
Ist das überhaupt möglich? Wenn nicht was wäre eine andere Lösung?
Danke schonmal im Voraus für die Hilfe.
Viele Grüße
Daniel
Ich benutze eine 300er CPU mit TIA Portal v. 17.
Bin neu bei SCL und möchte gerne eine Funktion programmieren, welche mir alle Bits in einem globalen DB prüft ob eine "1" drin steht. Der DB hat insgesamt 14 Byte.
Ich wollte dies mit einer inneren und einer äußeren Schleife machen. Die innere für die Bitadresse und die äußere für die Byteadresse.
Hier ein Beispiel wie ich es ungefähr machen würde.
[CODE ANFANG]
FOR #i_outer := 0 TO 14 BY +1 DO
FOR #i_inner := 0 TO 7 BY +1 DO
IF %DB59.DBX0.0 <> 0 THEN
#StoerungAktiv := TRUE;
ELSE
#StoerungAktiv := FALSE;
END_IF;
END_FOR;
END_FOR;
[CODE ENDE]
Nun zu meiner Frage:
Wie kann ich in der Anweisung (IF %DB59.DBX0.0 <> 0 THEN) das DB indirekt mit meinen Zählvariablen abfragen also z.B. so:
IF %DB59.DBX#i_outer.#i_inner <> 0 THEN
...
Ist das überhaupt möglich? Wenn nicht was wäre eine andere Lösung?
Danke schonmal im Voraus für die Hilfe.
Viele Grüße
Daniel