Definire le convenzioni di denominazione
In dialogo Impostazioni Analisi statica sotto la scheda convenzioni di denominazione definisci le convenzioni di denominazione che seguirai nel tuo codice. Definisci i prefissi per gli identificatori dei tuoi blocchi di programmazione, variabili e tipi di dati in base ai loro ambiti e qualificatori.
È quindi possibile fare in modo che l'analisi statica verifichi la conformità alle convenzioni di denominazione.
Per le istruzioni, vedere: Verifica della conformità alle convenzioni di denominazione definite
Definisci i prefissi
In dialogo Impostazioni Analisi statica sotto la scheda convenzioni di denominazione definire le convenzioni di denominazione nel campo di input della colonna prefisso.
carattere letterale
Esempio:
PRG_in Prefissi per POU, Prefissi per il tipo POU, PROGRAMMA (102)Più letterali per voce, separati da una virgola
Sintassi:
<prefix> ( , <next prefix> )*Esempio:
PRG_, PRGin Prefissi per POU, Prefissi per il tipo POU, PROGRAMMA (102)espressione regolare RegEx, che definisce un insieme di prefissi
Sintassi:
@ <expression>Esempi:
@x[a-dA-D]definisce un prefisso che inizia conxinizia, seguito esattamente da un carattere dell'intervalloa-dA-D@[A-Za-z][A-Za-z][A-Za-z][A-Za-z0-9]definisce un prefisso composto da 4 caratteri: i primi 3 sono lettere, il 4° carattere può essere anche un numero
Definire i prefissi per i tipi di dati combinabili
I seguenti tipi di dati si basano su tipi di dati standard, tipi di dati esistenti o blocchi funzione:
puntatori:
POINTER TO <basic type>Riferimento:
REFERENCE TO <basic type>Vettore:
ARRAY[ <lower index bound> .. <upper index bound> ] OF <basic type>
Questi tipi di dati possono essere nidificati e combinati tra loro. Se l'opzione Prefissi ricorsivi per tipi di dati combinabili è attivata, l'analisi statica prevede prefissi composti in modo ricorsivo per variabili di tali tipi di dati combinabili. I prefissi seguono la dichiarazione e corrispondono alle convenzioni di denominazione concordate per i tipi di dati di base.
esempio
Sono state stabilite le seguenti convenzioni di denominazione:
iin Prefissi per variabili, INT (26)pin Prefissi per variabili, PUNTATORI (26)refin Prefissi per variabili, RIFERIMENTI (27)structin Prefissi per variabili, Struttura (32)opzione Prefissi ricorsivi per tipi di dati combinabili:

Il codice seguente viola le convenzioni di denominazione ed è difficile da leggere.
PROGRAM plc1
VAR
var1 : ARRAY[100..110] OF ARRAY[30..50] OF ARRAY[6..7] OF BOOL;
var2 : ARRAY[1..3] OF INT;
var3 : REFERENCE TO INT;
iVar4 : INT;
iVar5 : INT;
var6 : ARRAY[1..3] OF INT := [11, 22, 33];
var7 : POINTER TO ARRAY[1..3] OF INT;
var8 : REFERENCE TO INT;
var9 : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]);
var0 : ARRAY[0..3] OF S_POLYGONLINE; // S_POLYGONLINE is a already defined structure
END_VAR
iVar4 := iVar4 + 1;
var8 REF= iVar4;
var1[100][30][6] := TRUE;
var9.aiPoint1[1] := 99;
var7 := ADR(var6);
var6[2] := 44;
iVar5 := var7^[2];
var0[0] := var9;L'analisi statica segnala le seguenti violazioni delle convenzioni di denominazione:
NC0102: nome non valido 'plc1': prefisso previsto 'PRG_'
NC0014: Nome variabile 'var0' non valido: Prefisso previsto 'astruct'
NC0014: Nome variabile 'var1' non valido: Prefisso previsto 'aaax'
NC0014: nome variabile 'var2' non valido: prefisso previsto 'ai'
NC0014: Nome variabile 'var3' non valido: Prefisso previsto 'refi'
NC0014: nome variabile 'var6' non valido: prefisso previsto 'ai'
NC0014: Nome variabile 'var7' non valido: Prefisso previsto 'pai'
NC0014: Nome variabile 'var8' non valido: Prefisso previsto 'refi'
NC0014: nome variabile 'var9' non valido: prefisso previsto 'struct'
Definire i prefissi per le variabili di un alias
È possibile utilizzare i prefissi per le variabili del tipo di dati Alias come letterale con il carattere jolly {datatype} definire. Quindi l'analisi statica prevede il prefisso del tipo di dati di base anziché il segnaposto.
L'opzione Combina il prefisso dello spazio dei nomi con il prefisso del tipo di dati non pregiudica l'uso del prefisso {datatype}.
esempio
Sono state stabilite le seguenti convenzioni di denominazione:
sin Prefissi per variabili, Digita i prefissi, STRINGA()19A_{datatype}in Prefissi per variabili, Alias (33)
codice
TYPE A_MESSAGE : STRING[50]; // base data type is STRING
END_TYPE
VAR
A_sMessage_N1 : A_MESSAGE := 'Robot is running.';
A_s_Message_N2 : A_MESSAGE := 'Robot has been finished.';
As_Message_N3 : A_MESSAGE := 'Robot has been stopped.';
AsMessage_N4 : A_MESSAGE := 'Error 3 has been occured.';
END_VARL'analisi statica segnala la seguente violazione della convenzione di denominazione:
NC0033: Nome variabile 'As_Message_N3' non valido: Prefisso previsto 'A_s'
NC0033: Nome variabile 'AsMessage_N4' non valido: Prefisso previsto 'A_s''
Definire i prefissi per le proprietà
È possibile utilizzare il prefisso per i blocchi predefiniti (POU) del tipo di dati PROPERTY come letterale con il carattere jolly {datatype} definire. Quindi l'analisi statica prevede il prefisso del tipo di dati restituito della proprietà anziché il segnaposto.
L'opzione Combina il prefisso dello spazio dei nomi con il prefisso del tipo di dati non pregiudica l'uso del segnaposto {datatype}.
esempio
Sono state stabilite le seguenti convenzioni di denominazione:
fbin Prefissi per variabili, Digita i prefissi, istanza del blocco funzioneFB_in Prefissi per POU, Prefissi per il tipo POU, BLOCCO FUNZIONI (103)prop_{datatype}in Prefissi per POU, Prefissi per il tipo POU, IMMOBILE (107)
codice
FUNCTION_BLOCK blocka // Invalid function block name
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
iA : INT;
END_VAR
iA := iA + 1;
PROPERTY PUBLIC vara : INT // Invalid property name, return data type is INT
Get
vara := iA;
Set
iA := vara;
PROGRAM plc1
VAR
var10 : blocka; // Invalid variable name of typ function block
iVar11: INT;
END_VAR
var10();
IF var10.vara > 500 THEN
var10.vara := 0;
END_IF
iVar11 := var10.vara;L'analisi statica segnala la seguente violazione della convenzione di denominazione:
NC0102: nome non valido ''plc1': prefisso previsto 'PRG_''
NC0031: Nome variabile ''var10'' non valido: Prefisso previsto ''fb''
NC0103: Nome variabile ''blocka' non valido: Prefisso previsto 'FB_''
NC0107: Nome variabile 'blocka.vara' non valido: Prefisso previsto 'prop_i''
Codice secondo le convenzioni di denominazione
FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
iA : INT;
END_VAR
iA := iA + 1;
PROPERTY PUBLIC prop_iA : INT
Get
prop_iA := iA;
Set
iA := prop_iA;
PROGRAM PRG_PLC1
VAR
fbA : FB_A;
iVar11: INT;
END_VAR
fbA();
IF fbA.prop_iA > 500 THEN
fbA.prop_iA := 0;
END_IF
iVar11 := fbA.prop_iA;Definire i prefissi per le strutture
È possibile impostare un prefisso generale per le strutture nel progetto in Prefissi per DUT, Struttura (151) definire. Puoi anche fornire una struttura con un prefisso speciale. Il prefisso speciale quindi oscura il prefisso generale.
Il prefisso speciale è specificato nella dichiarazione del tipo di dati della struttura con il pragma {attribute 'nameprefix' := <special prefix> '} Sono definiti. Quindi avvia tutte le variabili di questa struttura con questo prefisso <special prefix>.
esempio
Sono state stabilite le seguenti convenzioni di denominazione:
structin Prefissi per variabili, Struttura(32)S_in Prefissi per DUT, Struttura (151)Prefissi ricorsivi per tipi di dati combinabili:

codice
TYPE S_POLYGONLINE :
STRUCT
aiStart : ARRAY[1..2] OF INT := [-99, -99];
aiPoint1 : ARRAY[1..2] OF INT;
aiPoint2 : ARRAY[1..2] OF INT;
aiPoint3 : ARRAY[1..2] OF INT;
aiPoint4 : ARRAY[1..2] OF INT;
aiEnd : ARRAY[1..2] OF INT := [99, 99];
END_STRUCT
END_TYPE
{attribute 'nameprefix' := 'penta'} // Pragma to define a special prefix
TYPE S_PENTA EXTENDS S_POLYGONLINE :
STRUCT
aiPoint5 : ARRAY[1..2] OF INT;
END_STRUCT
END_TYPE
PROGRAM PRG_Compute
VAR
structPolygon : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]);
structPentagon : S_PENTAGON := (aiStart:=[0,0], aiPoint1:=[1,1], aiPoint2:=[2,2], aiPoint3:=[3,3], aiPoint4:=[4,4], aiPoint5:=[5,5]);
structLine0 : S_PENTA;
pentaLine1 : S_PENTA;
iXPoint: INT;
aPoint0: ARRAY [1..2] OF INT;
aPoint1: ARRAY [1..2] OF INT;
END_VAR
iXPoint := structPolygon.aiPoint1[1];
aPoint0 := structLine0.aiEnd;
aiPoint1 := pentaLine1.aiEnd;L'analisi statica segnala la seguente violazione della convenzione di denominazione:
Nome variabile 'structLine0' non valido: prefisso previsto 'penta'
ulteriore CODESYS Static Analysis- Fornire progetti con convenzioni di denominazione
Salva le tue convenzioni di denominazione in un file CSA. Puoi usare questo file in altri CODESYS Static Analysis-Carica e usa i progetti.
Scegli il comando .
Scegli il pulsante .
Si apre una finestra di dialogo per la selezione dei file. Lì puoi memorizzare le convenzioni di denominazione in un file con qualsiasi nome con estensione CSA.
Scegli il comando .
Scegli il pulsante .
Si apre la finestra di dialogo per la selezione dei file. Selezionane uno dai file CSA visualizzati.