Distribuir dígitos
Estas instrucciones FP desintegran el valor de entrada de s en el número de dígitos especificado en n_Digits y distribuyen los dígitos a las direcciones que comienzan en d_Start.
Entrada
Valor de entrada
Número de dígitos a distribuir, rango: 0-4
Para n_Bytes=0 no se ejecutan las instrucciones
Salida
Dirección de inicio del área de datos para los resultados. El tamaño es n_Bits * 2 palabras.
si el área especificada utilizando el modificador índice supera el límite.
si el valor de n_Bytes está fuera de rango
si el valor de n_Bytes devuelve un resultado superior al área de datos especificado por d_Start
si el área especificada utilizando el modificador índice supera el límite.
si el valor de n_Bytes está fuera de rango
si el valor de n_Bytes devuelve un resultado superior al área de datos especificado por d_Start
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:=TRUE;
wData_input: WORD:=16#7310;
awOutput_distrib: ARRAY [0..3] OF WORD:=[4(0)];
END_VAR
Cuando la variable bStart se encuentra a TRUE, se ejecuta la función.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,FP_DIVIDE_DIGITS!,,9,0,19,5,,?DEN?D@'s'?Dn_Digits?AENO?Cd_Start);
B(B_CONTACT,,bStart,4,1,6,3,);
B(B_VARIN,,wData_input,7,2,9,4,);
B(B_VARIN,,4,7,3,9,5,);
B(B_VAROUT,,awOutput_distrib[0],19,2,21,4,);
L(6,2,9,2);
L(1,2,4,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If (bStart) then
FP_DIVIDE_DIGITS(s := wData_input, n_Digits := 4, d_Start => awOutput_distrib[0]);
End_if;