Definición de convenciones de nomenclatura
En el Configuración de análisis estático diálogo, en el Convenciones de nombres pestaña, defina las convenciones de nomenclatura que seguirá en su código. Defina prefijos para los identificadores de sus POU, variables y tipos de datos según sus alcances y calificadores.
Luego, puede dejar que el análisis estático verifique el cumplimiento de las convenciones de nomenclatura.
Para obtener instrucciones, consulte: Comprobación del cumplimiento de las convenciones de nomenclatura definidas
Definición de prefijos
En el Configuración de análisis estático diálogo, en el Convenciones de nombres pestaña, defina las convenciones de nomenclatura en el campo de entrada de la Prefijo columna.
Caracter literal
Ejemplo:
PRG_
en Prefijos para POU, Prefijos para el tipo de POU, PROGRAMA (102)Múltiples literales por entrada que están separados por una coma
Sintaxis:
<prefix> ( , <next prefix> )*
Ejemplo:
PRG_, PRG
en Prefijos para POU, Prefijos para el tipo de POU, PROGRAMA (102)Expresión regular RegEx que define un conjunto de prefijos
Sintaxis:
@ <expression>
Ejemplos:
@x[a-dA-D]
define un prefijo que comienza conx
, seguido de exactamente un carácter en el conjuntoa-dA-D
@[A-Za-z][A-Za-z][A-Za-z][A-Za-z0-9]
define un prefijo que consta de cuatro caracteres: los primeros tres caracteres son letras y el cuarto carácter también puede ser un número.
Definición de prefijos para tipos de datos combinables
Los siguientes tipos de datos se basan en tipos de datos estándar, tipos de datos existentes o bloques de funciones:
Puntero:
POINTER TO <basic type>
Referencia:
REFERENCE TO <basic type>
Formación:
ARRAY[ <lower index bound> .. <upper index bound> ] OF <basic type>
Estos tipos de datos se pueden anidar y combinar entre sí. Cuando el Prefijos recursivos para tipos de datos combinables está seleccionada, Static Analysis espera prefijos combinados recursivamente para variables de tales tipos de datos combinables. Los prefijos siguen a la declaración y corresponden a las convenciones de nomenclatura definidas para los tipos de datos básicos.
Ejemplo
Se han establecido las siguientes convenciones de nomenclatura:
i
en Prefijos para variables, INT (26)p
en Prefijos para variables, PUNTERO (26)ref
en Prefijos para variables, REFERENCIA (27)struct
en Prefijos para variables, Estructura (32)Prefijos recursivos para tipos de datos combinables opción:
El siguiente código infringe las convenciones de nomenclatura y es difícil de leer.
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;
Static Analysis informa de las siguientes violaciones de las convenciones de nomenclatura:
NC0102: Nombre no válido 'plc1': Prefijo esperado 'PRG_'
NC0014: Nombre de variable no válido 'var0': Prefijo esperado 'astruct'
NC0014: Nombre de variable no válido 'var1': Prefijo esperado 'aaax'
NC0014: Nombre de variable no válido 'var2': Prefijo esperado 'ai'
NC0014: Nombre de variable no válido 'var3': Prefijo esperado 'refi'
NC0014: Nombre de variable no válido 'var6': Prefijo esperado 'ai'
NC0014: Nombre de variable no válido 'var7': Prefijo esperado 'pai'
NC0014: Nombre de variable no válido 'var8': Prefijo esperado 'refi'
NC0014: Nombre de variable no válido 'var9': Prefijo esperado 'struct'
Definición de prefijos para variables de un alias
Puede definir prefijos para variables de tipo de datos Alias como un literal con el marcador de posición {datatype}
. Luego, Static Analysis espera el prefijo del tipo de datos base en lugar del marcador de posición.
El Combine el prefijo de ámbito con el prefijo de tipo de datos opción no tiene ningún efecto sobre el uso del prefijo {datatype}
.
Ejemplo
Se han establecido las siguientes convenciones de nomenclatura:
s
en Prefijos para variables, Prefijos para tipos, CADENA()19A_{datatype}
en Prefijos para variables, Alias (33)
Código
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_VAR
Static Analysis informa de la siguiente violación de la convención de nomenclatura:
NC0033: Nombre de variable no válido 'As_Message_N3': Prefijo esperado 'A_s'
NC0033: Nombre de variable no válido 'AsMessage_N4': Prefijo esperado 'A_s'
Definición de prefijos para propiedades
Puede definir el prefijo para POU de tipo de datos PROPERTY
como un literal con el marcador de posición {datatype}
. Luego, Static Analysis espera el prefijo del tipo de datos de retorno de la propiedad en lugar del marcador de posición.
El Combine el prefijo de ámbito con el prefijo de tipo de datos opción no tiene ningún efecto sobre el uso del marcador de posición {datatype}
.
Ejemplo
Se han establecido las siguientes convenciones de nomenclatura:
fb
en Prefijos para variables, Prefijos para tipos, Instancia de bloque de funcionesFB_
en Prefijos para POU, Prefijos para el tipo de POU, BLOQUE DE FUNCIONES (103)prop_{datatype}
en Prefijos para POU, Prefijos para el tipo de POU, PROPIEDAD (107)
Código
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;
Static Analysis informa de la siguiente violación de las convenciones de nomenclatura:
NC0102: Nombre no válido 'plc1': Prefijo esperado 'PRG_'
NC0031: Nombre de variable no válido 'var10': Prefijo esperado 'fb'
NC0103: Nombre de variable no válido ''blocka': Prefijo esperado 'FB_'
NC0107: Nombre de variable no válido 'blocka.vara': Prefijo esperado 'prop_i'
Codificar de acuerdo con las convenciones de nomenclatura
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;
Definición de prefijos para estructuras
Puede definir un prefijo general para estructuras en el proyecto en Prefijos para DUT, Estructura (151). También puede dar a una estructura un prefijo especial. El prefijo especial anula el prefijo general.
El prefijo especial se define en la declaración del tipo de datos de la estructura con el pragma {attribute 'nameprefix' := <special prefix> '}
. Luego comience todas las variables de esta estructura con este prefijo <special prefix>
.
Ejemplo
Se han establecido las siguientes convenciones de nomenclatura:
struct
en Prefijos para variables, Estructura (32)S_
en Prefijos para DUT, Estructura (151)Prefijos recursivos para tipos de datos combinables:
Código
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;
Static Analysis informa de la siguiente violación de las convenciones de nomenclatura:
Nombre de variable no válido 'structLine0': Prefijo esperado 'penta'
Proporcionar otros CODESYS Static Analysis proyectos con convenciones de nomenclatura
Guarde sus convenciones de nomenclatura en un archivo CSA. Puede cargar y utilizar este archivo en otros CODESYS Static Analysis proyectos
Hacer clic
.Haga clic en el
botón.Se abre un cuadro de diálogo de selección de archivos. Allí puede almacenar las convenciones de nomenclatura en un archivo con cualquier nombre con la extensión de archivo CSA.
Hacer clic
.Haga clic en el
botón.Se abre el cuadro de diálogo de selección de archivos. Seleccione uno de los archivos CSA que se muestran a continuación.