Contrôle des données ASCII
Cette instruction contrôle si les codes ASCII enregistrés dans la zone spécifiée par s2_AsciiData peuvent être correctement convertis selon la méthode de conversion spécifiée par n_ConversionMethod et les 4 codes de contrôle spécifiés par s1_Control.
Entrée
Caractère de contrôle
H : Convertit en données ASCII hexadécimales
- Conversion inverse
32 : Convertit en unités de 32 bits (2 mots)
Zone de départ de sauvegarde des données ASCII
Constante de 16 bits ou zone de 16 bits de sauvegarde de la méthode de conversion
Sortie
Zone de départ de sauvegarde des données binaires
Si les résultats sont corrects, la variable système sys_bIsEqual passe à TRUE.
Si les résultats sont incorrects, la variable système sys_bIsEqual passe à FALSE.
Pour en savoir plus sur s1_Control et F251_ATOB, voir F251_ATOB.
Si une erreur apparaît dans le caractère de contrôle désigné par s1_Control.
Si le sens normal (+) est indiqué dans s1_Control lorsque le format est décimal.
Si le nombre de caractères ASCII par unité convertie, indiqué par n_ConversionMethod, est supérieur à 4 pour des données de 16 bits ou 8 pour des données de 32 bits, lorsque le format hexadécimal est indiqué par s1_Control.
Si 0 est le nombre indiqué dans n_ConversionMethod pour les unités de 16 ou 32 bits (1 ou 2 mots) qui doivent être converties.
Si le nombre de décimales de 16 ou 32 bits qui doivent être converties, indiqué par n_ConversionMethod est supérieur à la zone de sauvegarde des données ASCII.
Si le résultat de la conversion est supérieur à la zone de sauvegarde.
Si une erreur apparaît dans le caractère de contrôle désigné par s1_Control.
Si le sens normal (+) est indiqué dans s1_Control lorsque le format est décimal.
Si le nombre de caractères ASCII par unité convertie, indiqué par n_ConversionMethod, est supérieur à 4 pour des données de 16 bits ou 8 pour des données de 32 bits, lorsque le format hexadécimal est indiqué par s1_Control.
Si 0 est le nombre indiqué dans n_ConversionMethod pour les unités de 16 ou 32 bits (1 ou 2 mots) qui doivent être converties.
Si le nombre de décimales de 16 ou 32 bits qui doivent être converties, indiqué par n_ConversionMethod est supérieur à la zone de sauvegarde des données ASCII.
Si le résultat de la conversion est supérieur à la zone de sauvegarde.
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
bExecute: BOOL:=FALSE;
sString1: STRING[10]:='1234567890';
(*Important: Initialize the string with the desired current length*)
bAsciiDataAreCorrect: BOOL:=FALSE;
END_VAR
Lorsque bExecute est défini sur TRUE, l’instruction contrôle si les données connectées à s2_AsciiData peuvent être converties lorsque le caractère de contrôle est 'D-16' et la méthode de conversion 16#214.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 9 ;
NETWORK_BODY
B(B_VARIN,,'D-16',21,5,23,7,);
B(B_VARIN,,16#214,21,7,23,9,);
B(B_F,F252_ACHK!,Instance,23,3,35,9,,?DEN?Ds1_Control?Ds2_AsciiData?Dn_ConversionMethod?AENO);
B(B_CONTACT,,sys_bIsEQ,36,4,38,6,);
B(B_F,Adr_Of_VarOffs_I!,Instance,10,5,19,9,,?D@'Var'?DOffs?CAdr);
B(B_VARIN,,2,8,7,10,9,);
B(B_VARIN,,sString1,8,6,10,8,);
B(B_COIL,,bAsciiDataAreCorrect,43,4,45,6,S);
B(B_COMMENT,,Result ø^bAsciiDataAreCorrect: TRUE,35,6,48,8,);
B(B_CONTACT,,bExecute,3,4,5,6,R);
B(B_COMMENT,,When bExcecute ist set to TRUE~ the instruction checks whether the data connectd atø^s2_AsciiData can be converted when the control string is 'D-16' and the conversion method 16#214.,2,1,40,3,);
L(19,7,23,7);
L(35,5,36,5);
L(38,5,43,5);
L(1,0,1,9);
L(1,5,3,5);
L(5,5,23,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bExecute) then
F252_ACHK(s1_Control := 'D-16', s2_AsciiData := Adr_Of_VarOffs(Var := sString1, Offs := 2), n_ConversionMethod := 16#214);
IF (sys_bIsEQ) then
bAsciiDataAreCorrect := TRUE;
end_if;
END_IF;