Skip to main content

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 con x, seguido de exactamente un carácter en el conjunto a-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: standard icon

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()19

  • A_{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 funciones

  • FB_ 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: standard icon

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

procedimiento. Guardar en un archivo
  1. Hacer clic Construir → Análisis estático → Configuración.

  2. Haga clic en el Ahorrar 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.

procedimiento. Cargar un archivo con convenciones de nomenclatura
  1. Hacer clic Construir → Análisis estático → Configuración.

  2. Haga clic en el Carga 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.