B&R Automation Studio -- Bit Status aus Word auslesen mit FOR Schleife

Roccom1910

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ich würde gerne den Status von den einzelnen Bits mehrerer WORD Variablen auslesen. Kann mir da jemand helfen?


// check bit by bit for parallel start
// wRow0[0..4] OF WORD
// RowParaStart[0..15] of INT


// wäre schön gewesen aber er mag die variable nicht bei wRow0[0].i
(*FOR i := 0 TO 15 DO
IF wRow0[0].i THEN
RowParaStart := i+1;
END_IF;
END_FOR;*)

IF wRow0[0].0 THEN
RowParaStart[0] := 1;
END_IF;
IF wRow0[0].1 THEN
RowParaStart[1] := 2;
END_IF;
IF wRow0[0].2 THEN
RowParaStart[2] := 3;
END_IF;
IF wRow0[0].3 THEN
RowParaStart[3] := 4;
END_IF;
IF wRow0[0].4 THEN
RowParaStart[4] := 5;
END_IF;
IF wRow0[0].5 THEN
RowParaStart[5] := 6;
END_IF;
IF wRow0[0].6 THEN
RowParaStart[6] := 7;
END_IF;
IF wRow0[0].7 THEN
RowParaStart[7] := 8;
END_IF;
IF wRow0[0].8 THEN
RowParaStart[8] := 9;
END_IF;
IF wRow0[0].9 THEN
RowParaStart[9] := 10;
END_IF;
IF wRow0[0].10 THEN
RowParaStart[10] := 11;
END_IF;
IF wRow0[0].11 THEN
RowParaStart[11] := 12;
END_IF;
IF wRow0[0].12 THEN
RowParaStart[12] := 13;
END_IF;
IF wRow0[0].13 THEN
RowParaStart[13] := 14;
END_IF;
IF wRow0[0].14 THEN
RowParaStart[14] := 15;
END_IF;
IF wRow0[0].15 THEN
RowParaStart[15] := 16;
END_IF;

END_IF;
Mit der FOR Schleife am Anfang hat es leider nicht geklappt ich kann da wohl keine Variable verwenden was ich etwas komisch finde.

Danke schon mal im voraus.
 
Hi
Warum nicht in einer Schleife die Variable gegen den Zähler^2 verunden und das Ergebnis merken
Kann es leider gerade nicht runtertippen
HtH
Shrimps

Gesendet von meinem ONEPLUS A3003 mit Tapatalk
 
Soweit ich mich erinnern kann, gibts beim AS eine Library-Funktion, die einen Teil der Arbeit abnimmt. Ich glaube die hieß Byte2Bool oder so ähnlich. Die wandelt ein Byte-Array in ein Bool-Array so um. Mit dem Bool-Array sollts dann auch mit der Schleife klappen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch was:
In Automation Basic gabs früher (ca. 2006-2007) die Befehle BitTst, BitSet und BitClr, mit denen man den Zustand eines einzelnen Bits ebenfalls auslesen konnte
Code:
IF (BitTets(a, i) = true) THEN
   ...
END IF
Die Kommandos oder ein Äquvivalent dazu existiert sicherlich noch. Evenetuell warens das auch Library-Funktionen. Das kann ich aber nicht mehr sagen, ohne das Projekt (AS2.6) herauszusuchen bzw. ohne AS zu instalieren.

lg
 
Wie maxder2te bereits schrieb kann man auch mit dem BIT-TST Befehl die Bits bestimmen.
In strukturiertem Text sieht das dann so aus:
Code:
    FOR i:=0 TO 50 DO
        IF BIT_TST( wRow0, i )       THEN
            btest:=TRUE;
        END_IF
    END_FOR

Die Bit Befehle stehen auch im Automation Studio zur Verfügung.Eine Library wird nicht benötigt.
 
Zuletzt bearbeitet:
Zurück
Oben