FP_WORD_TO_BITCOLUMN

Convertir fila de bits -> columna de bits

Estas instrucciones FP crean una columna de bits fuera de un valor en la entrada s que se devuelve dentro de la dirección especificada por d_Start. La posición del bit de la columna en d_Start se especifica en la entrada n_Pos (rango 0–15). Son las instrucciones inversas a FP_BITCOLUMN_TO_WORD.

Parámetros

Entrada

s (WORD)

Valor de entrada

n_Pos (WORD, INT, UINT)

Posición del bit (rango 0–15)

Salida

d_Start (WORD)

Dirección de inicio del área de datos para los resultados. El tamaño es n_Bits * 2 palabras.; solo se sobrescribirá la columna de bits especificada

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si el área especificada utilizando el modificador índice supera el límite.

  • si 0 ³ n_Pos > 15

  • si s_Start está fuera de rango

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si el área especificada utilizando el modificador índice supera el límite.

  • si 0 ³ n_Pos > 15

  • si s_Start está fuera de rango

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	VAR
		bStart: BOOL:=FALSE;
			(*activates the function*)
		wBit_combination: WORD:=16#51D9;
		iPosition: INT:=10;
			(*specifies the position
of the column*)
	END_VAR

Cuerpo de la POU

Cuando la variable bStart se encuentra a TRUE, se ejecuta la función. La fila de bits 0101 0001 1101 1001 de la entrada s se devuelve en la posición del bit 10 de los datos que comienzan en DT10.

Cuerpo LD

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_WORD_TO_BITCOLUMN!,,16,0,29,5,,?DEN?D@'s'?Dn_Pos?AENO?Cd_Start);
B(B_CONTACT,,bStart,7,1,9,3,);
B(B_VARIN,,wBit_combination,14,2,16,4,);
B(B_VARIN,,iPosition,14,3,16,5,);
B(B_VAROUT,,DT10,29,2,31,4,);
L(9,2,16,2);
L(1,2,7,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF (bStart) then
    FP_WORD_TO_BITCOLUMN(s := wBit_combination, n_Pos := 10, d_Start => DT10);
END_IF;

Modificado el: 2019-10-08Comentarios sobre esta páginaLínea directa de Panasonic