Combinaison de digits
Cette instruction FP combine le nombre de digits spécifié par n_Digits des données à partir de s_Start lorsque le déclencheur EN est TRUE. Le résultat est sauvegardé dans d.
Entrée
Valeur d’entrée, intervalle : 0-65535
Nombre de digits à combiner, intervalle : 0-4
Les portions inutilisées de la zone mémoire sont complétées par des zéros.
Sortie
Résultat
Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.
Si la valeur de n_Digits est en dehors de l’intervalle autorisé
Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.
Si la valeur de n_Digits est en dehors de l’intervalle autorisé
Dans la liste des variables globales, vous définissez des variables qui sont accessibles par tous les POU dans le projet.
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
VAR
bStart: BOOL:=FALSE;
iTestIndex: INT:=0;
dutTestError: BOOL32_OVERLAPPING_DUT:=w0 := 0,
w1 := 0;
arrDivideDigits_WORD: ARRAY [0..3] OF WORD:=[4(0)];
END_VAR
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_UNIFY_DIGITS!,,18,0,27,5,,?DEN?Ds_Start?Dn_Digits?AENO?Cd);
B(B_VARIN,,arrDivideDigits_WORD[0],16,2,18,4,);
B(B_VARIN,,4,16,3,18,5,);
B(B_F,E_EQ-2!,,29,1,35,6,,?DEN?D?D?AENO?C);
B(B_VARIN,,g_arrValuesWORD[iTestIndex],27,4,29,6,);
B(B_F,E_NOT!,,35,1,41,5,,?DEN?D?AENO?C);
B(B_VAROUT,,dutTestError.b3,41,3,43,5,);
B(B_CONTACT,,bStart,3,1,5,3,);
L(27,3,27,4);
L(27,4,29,4);
L(27,2,29,2);
L(29,2,29,3);
L(1,2,3,2);
L(5,2,18,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (bStart) then
FP_UNIFY_DIGITS(s_Start := arrDivideDigits_WORD[0],
n_Digits := 4,
d => wResult);
IF (wResult <> g_arrValuesWORD[iTestIndex]) then
dutTestError.b3 = TRUE;
END_IF;
END_IF;