L'EcoStruxure Machine Expert signifie qu'avant qu'un projet puisse être téléchargé dans le système cible sans erreur de compilation, le code source est analysé pour rechercher d'éventuelles différences avec certaines directives de codage. A cet effet, vous pouvez configurer un ensemble de règles dans les paramètres du projet. Chaque code généré fera l'objet d'une vérification automatique par rapport à ces règles.
dans{analysis ...}
ou le pragma.
Les résultats de cette analyse sont affichés en tant qu'erreurs dans la vue
avec le préfixe .(SA0033) : |
Détectez des variables, déclarées mais non utilisées dans le code de programme compilé. |
(SA0028) : |
Détectez une allocation de plusieurs variables au même emplacement de mémoire.
Cela se produit notamment en présence des déclarations |
(SA0006): |
Détectez les variables inscrites par plusieurs tâches. |
Exemple (SA0006) :
FUNCTION_BLOCK ADD_FB
g_iTemp1 := g_iTemp1 + INT#1;
PROGRAM PLC_PRG //controlled by MainTask
g_iTemp1 := g_iTemp1 + INT#2;
g_xTemp2 := g_iTemp1 > INT#10;
PROGRAM PLC_PRG_1 //controlled by SubTask
g_iTemp1 := g_iTemp1 - INT#3;
g_xTemp2 := g_iTemp1 < INT#-10;
(SA0004) : |
Détectez les sorties inscrites à plusieurs positions. |
VAR_GLOBAL
g_xVar AT %QX0.0 : BOOL ;
g_iTest AT %QW0 : INT ;
END_VAR
PROGRAM PLC_PRG
IF iCondition < INT#0 THEN
g_xVar := TRUE;
g_iTest := INT#12;
END_IF
CASE iCondition OF
INT#1:
g_xVar := FALSE;
INT#2:
g_iTest := INT#11;
ELSE
g_xVar := TRUE;
g_iTest := INT#9;
END_CASE
(SA0027) : |
Détectez des utilisations multiples d'un nom/identifiant pour une variable ou un objet (POU) dans le cadre d'un projet. Les cas suivants sont détectés :
|
Exemple (SA0027) :
PROGRAM PLC_PRG
VAR
ton : INT; // error SA0027
END_VAR
La bibliothèque Standard.library est incluse dans le projet et fournit le bloc fonction TON
qui génère plusieurs utilisations d'un nom.
(SA0167) : |
Ce test signale les instances de blocs fonction qui sont déclarés en tant que variables temporaires. Cela concerne les instances déclarées dans une méthode ou une fonction, ou encore en tant que VAR_TEMP, et qui par conséquent sont réinitialisées lors de chaque cycle de traitement et pour chaque appel du POU. |
Exemple (SA0167) :
PROGRAM PLC_PRG
VAR
END_VAR
VAR_TEMP
yafb: AFB;
END_VAR
FUNCTION Fun : INT
VAR_INPUT
END_VAR
VAR
funafb: AFB;
END_VAR
METHOD METH : INT
VAR_INPUT
END_VAR
VAR
methafb: AFB;
END_VAR