EcoStruxure Machine Expert significa che prima di poter scaricare un progetto nel sistema di destinazione senza errori di compilazione, vengono ricercate nel codice sorgente possibili deviazioni da specifiche regole di codifica. A questo scopo, nelle impostazioni di progetto è possibile configurare un set di regole da rispettare. A ogni generazione del codice viene eseguita una verifica automatica in base alle regole definite.
in{analysis ...}
o il pragma {attribute 'analysis' := '...'}
.
I risultati dell'analisi vengono visualizzati come errori nella vista
con il prefisso .(SA0033): |
Per rilevare le variabili dichiarate ma non utilizzate nel codice di programma compilato. |
(SA0028): |
Per rilevare l'allocazione di due o più variabili alla stessa posizione di memoria.
Ad esempio, questo si verifica se vi sono le seguenti dichiarazioni: |
(SA0006): |
Per rilevare le variabili scritte da più di un task. |
Esempio (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): |
Per rilevare le uscite che vengono scritte in più di una posizione. |
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): |
Per rilevare l'uso multiplo di un nome/identificatore di una variabile o di un oggetto (POU) nell'ambito di un progetto. Possono presentarsi i seguenti casi:
|
Esempio (SA0027):
PROGRAM PLC_PRG
VAR
ton : INT; // error SA0027
END_VAR
Standard.library è inclusa nel progetto e fornisce il blocco funzione TON
che provoca l’uso multiplo di un nome.
Esempio (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
(SA0175): |
Per impostazione predefinita, il test è inattivo. Eseguirlo per cercare nel codice i costrutti seguenti che possono causare problemi con la codifica UTF-8:
Valutare i risultati e stabilire attentamente se abilitare la codifica UTF-8 a livello di progetto (con il parametro nella finestra di dialogo ). |