FP_BITCOLUMN_TO_WORD

Umwandlung Bitspalte -> Bitzeile

Dieser FP-Befehl wandelt eine Bitspalte aus einem Adressbereich um, der am Eingang s_Start beginnt, und gibt jedes Bit in einer Bitzeile am Ausgang d zurück. Die Bitposition wird am Eingang n_Pos festgelegt (Bereich 0–15). Dieser Befehl ist die Umkehrung des Befehls FP_WORD_TO_BITCOLUMN.

Parameter

Eingang

s_Start (WORD)

Anfangsadresse der Bitspalte

n_Pos (WORD, INT, UINT)

Bitposition (Bereich 0–15)

Ausgang

d (WORD)

Ergebnis

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich

  • wenn 0 ³ n_Pos > 15

  • wenn s_Start außerhalb des zulässigen Bereichs liegt

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich

  • wenn 0 ³ n_Pos > 15

  • wenn s_Start außerhalb des zulässigen Bereichs liegt

Beispiel

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	VAR
		bStart: BOOL:=FALSE;
			(*activates the function*)
		iPosition: INT:=10;
			(*specifies the position
of the column*)
		wBit_combination: WORD:=16#0;
			(*result after a 0->1 leading
edge from start:
2#1100011110111000*)
	END_VAR

POE-Rumpf

Wenn die Variable bStart auf TRUE gesetzt wird, wird die Funktion ausgeführt. Die Bitspalte an Bitposition 10 des Datenbereichs mit der Anfangsadresse DT10 wird als 0101 0001 1101 1001 am Ausgang d ausgegeben.

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_F,FP_BITCOLUMN_TO_WORD!,,13,1,26,6,,?DEN?Ds_Start?Dn_Pos?AENO?Cd);
B(B_CONTACT,,bStart,6,2,8,4,);
B(B_VARIN,,DT10,11,3,13,5,);
B(B_VARIN,,iPosition,11,4,13,6,);
B(B_VAROUT,,wBit_combination,26,3,28,5,);
L(1,3,6,3);
L(8,3,13,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF bStart then
    FP_BITCOLUMN_TO_WORD(s_Start := DT10, n_Pos := iPosition, d => wBit_combination);
END_IF;

Letzte Änderung am: 2019-10-10Feedback zu dieser SeitePanasonic Hotline