Spanish20240206074029 - Codesys Manual
Spanish20240206074029 - Codesys Manual
Programación de PLC
con
CoDeSys 2.3
Copyright 1994, 1997, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2010
por 3S-Smart Software Solutions GmbH Todos los derechos reservados.
Hemos hecho todo lo posible para garantizar que esta documentación sea correcta y
completa. Sin embargo, dado que no es posible producir un texto absolutamente libre de
errores, no dude en enviarnos sus sugerencias y sugerencias para mejorarlo.
Marca
Intel es una marca comercial registrada y 80286, 80386, 80486, Pentium son marcas
comerciales de Intel Corporation.
Microsoft, MS y MS-DOS son marcas comerciales registradas, Windows e Intellisense
son marcas comerciales de Microsoft Corporation.
Editor
3S - Smart Software Solutions GmbH
Memminger Straße 151 D-87439
Kempten Tel. +49 831 5 40 31 - 0
Fax +49 831 5 40 31 – 50
Contenido
CoDeSys V2.3 i
Tabla de contenido
Ii CoDeSys V2.3
Tabla de contenido
7 ENI 7-1
7.1.1 ¿Qué es ENI........................................................................................................ 7-1
7.1.2 Condiciones previas para trabajar con una base de datos de proyectos ENI.................................. 7-1
7.1.3 Trabajar con la base de datos del proyecto ENI en CoDeSys......................................... 7-2
7.1.4 Categorías de objetos relativas a la base de datos del proyecto.......................................... 7-2
10 APÉNDICE 10-1
Iv CoDeSys V2.3
Tabla de contenido
11 Índice CLI
CoDeSys V2.3 v
Tabla de contenido
VI CoDeSys V2.3
1 - Una breve introducción a CoDeSys
Depuración
En caso de un error de programación, puede establecer puntos de interrupción. Si el proceso se
detiene en un punto de interrupción de este tipo, puede examinar los valores de todas las variables del
proyecto en este momento. Al trabajar secuencialmente (un solo paso), puede verificar la corrección
lógica de su programa.
Funciones adicionales en línea
Otras funciones de depuración:
Puede establecer variables de programa y entradas y salidas en determinados valores.
Puede utilizar el control de flujo para comprobar qué líneas de programa se han ejecutado.
Un registro registra las operaciones, las acciones del usuario y los procesos internos durante una
sesión en línea en orden cronológico.
Si se activa en la configuración de destino, el seguimiento de muestreo le permite rastrear y mostrar
el curso real de las variables durante un período prolongado de tiempo.
También una función específica del objetivo es el PLC Browser, que puede servir para solicitar cierta
información del PLC.
Una vez que el proyecto se ha configurado y probado, se puede cargar en el hardware y probar
también. Estarán disponibles las mismas funciones en línea que utilizó con la simulación.
Es posible que las variables globales de red y un administrador de parámetros estén disponibles, si están
activados por la configuración de destino actual, para el intercambio de datos dentro de una red de controladores.
ENI: La "interfaz de ingeniería" se puede utilizar para acceder a cualquier programa de gestión de código fuente
deseado a través del servidor ENI, que se ejecuta como un proceso independiente. Las POU de CoDeSys y los
archivos de compilación se pueden archivar en esa base de datos y, por lo tanto, también son accesibles para
otros clientes del servidor ENI. Esto permite la operación multiusuario durante el trabajo en un proyecto CoDeSys,
proporciona un conjunto de datos común para diferentes herramientas además de CoDeSys y hace posible una
gestión de versiones.
Herramientas: Esta funcionalidad también depende del objetivo y permite iniciar archivos ejecutables
específicos del objetivo en un proyecto CoDeSys. Además de eso, se pueden definir archivos, que
deben cargarse en el controlador. Las conexiones a herramientas externas pueden predefinirse en el
archivo de destino y/o insertarse en el árbol de recursos del proyecto.
A visualización de CoDeSys se puede procesar específicamente para que esté disponible como visualización web
y/o Visualización de objetivos. Esto permite ejecutar y ver la visualización a través de Internet o en un
monitor PLC.
Servidor de puerta de enlace Concepto, instalación e interfaz de usuario; Puerta de enlace Manual.pdf
Ayuda en línea para la interfaz de usuario a
través del menú Gateway (se puede abrir con
el ratón, haga clic en el símbolo de la puerta
de enlace en la bandeja del sistema)
Servidor OPC OPC-Server V2.0, Instalación y uso OPC_20_How_to_use_E.pdf
Visualización de Manual para la visualización de CoDeSys incl. CoDeSys_Visu_V23_E.pdf
CoDeSys CoDeSys HMI, Visualización de Destino y
Web
Movimiento suave Cómo utilizarlo, descripción de los principales CoDeSys_SoftMotion_V23_E.pdf
módulos de la biblioteca de SoftMotion
Bibliotheken Standard.lib y Util.lib se describen en el <SysLib-Name>.pdf
manual disponible. CoDeSys_V23_E.pdf
Para cada una de las bibliotecas del sistema
CoDeSys hay un documento <nombre de
biblioteca>.pdf bibliotecas de SoftMotion:
consulte la documentación de SoftMotion.
Contenido del
Instalación y configuración de los Servidores EniServerQuickstart_E.pdf
ENI para el control de código fuente de un CoDeSys_V23_E.pdf
proyecto CoDeSys en una base de datos
externa. Configuración de ENI en CoDeSys:
consulte el manual disponible.
ENI Admin, ENI Control y ENI Explorer:
consulte la ayuda en línea de referencia.
Función
Una función es una POU, que produce exactamente un elemento de datos (que puede constar de
varios elementos, como campos o estructuras) cuando se procesa, y cuya llamada en lenguajes
textuales puede ocurrir como un operador en expresiones.
Al declarar una función, no olvide que la función debe recibir un tipo. Esto significa que, después del
nombre de la función, debe escribir dos puntos seguidos de un tipo. Véase el Apéndice J:
Recomendaciones sobre la denominación.
A declaración de función correcta puede tener el siguiente aspecto:
FUNCIÓN Fct: INT
Además, se debe asignar un resultado a la función. Esto significa que el nombre de la función se utiliza
como variable de salida.
A declaración de función comienza con la palabra clave FUNCTION.
En IL, una llamada de función solo se puede colocar dentro de las acciones de un paso o dentro de una transición.
En ST, una llamada a una función se puede utilizar como operando en una expresión.
Ejemplo en IL de una función que toma tres variables de entrada y devuelve el producto de las dos
primeras dividido por la tercera:
LD 7 Fct
2,4 ST
Resultado
en ST:
en FBD:
Atención: Si una variable local se declara como RETAIN en una función, ¡esto no tiene ningún efecto! La variable
no se escribirá en el área Retener !
Nota: Los siguientes nombres de funciones de comprobación están reservados para el uso descrito:
- Si defines una función en tu proyecto con el nombre CheckBounds, puedes usarla para comprobar los
desbordamientos de rango en tu proyecto. El nombre de la función está definido y solo puede tener este
identificador. Para una descripción más detallada, consulte el capítulo 10.1, Operadores aritméticos, DIV.
- Si define funciones en su proyecto con los nombres CheckDivByte, CheckDivWord,
CheckDivDWord resp. CheckDivReal, puede usarlos para verificar el valor del divisor si usa el
operador DIV, por ejemplo, para evitar una división por 0.
- Si define funciones con los nombres CheckRangeSigned y CheckRangeUnsigned, se puede
interceptar el exceso de rango de las variables declaradas con tipos de subrango (consulte el capítulo
10.16, Tipos de datos).
Bloque de funciones
Un bloque de función es una POU que proporciona uno o más valores durante el procedimiento. A
diferencia de una función, un bloque de funciones no proporciona ningún valor devuelto.
Una declaración de bloque de funciones comienza con la palabra clave FUNCTION_BLOCK. Respecto
Apéndice J: Apéndice J: Recomendaciones sobre la nomenclatura.
Se pueden crear reproducciones o instancias (copias) de un bloque de función.
Ejemplo de un bloque de funciones en IL
Ejemplo en IL de un bloque de funciones con dos variables de entrada y dos variables de salida. Un producto es el
producto de los dos insumos, el otro una comparación de igualdad:
fbinst1:fb;
END_VAR LD 17
END_PROGRAM
Las partes de declaración de los bloques de funciones y los programas pueden contener declaraciones
de instancia. Las declaraciones de instancia no están permitidas en las funciones.
El acceso a una instancia de bloque de funciones se limita a la POU en la que se declaró, a menos que
se haya declarado globalmente.
El nombre de instancia de una instancia de bloque de funciones se puede utilizar como entrada para
una función o un bloque de funciones.
Nota: Todos los valores se conservan después de procesar un bloque de función hasta el siguiente en procesar. Por lo tanto, las
llamadas a bloques de funciones con los mismos argumentos no siempre devuelven los mismos valores de salida.
Nota: Si al menos una de las variables del bloque de funciones es una variable de retención, la instancia total se
almacena en el área de retención.
Si la instancia se inserta a través del asistente de entrada (<F2>) con la opción Con argumentos en
la ventana de implementación de una POU ST o IL, se mostrará automáticamente de acuerdo con esta
sintaxis con todos sus parámetros. Pero no necesariamente debe asignar estos parámetros.
Ejemplo:
FBINST es una variable local de tipo bloque de función, que contiene la variable de entrada xx y la
variable de salida yy. Cuando FBINST se inserta en un programa ST a través del asistente de entrada,
la llamada se mostrará de la siguiente manera: FBINST1(xx:= , yy=> );
InOutVariables en la llamada:
Tenga en cuenta que las InOutVariables (VAR_IN_OUT) de un bloque de función se entregan como
punteros. Por esta razón, en una llamada de un bloque de funciones, no se pueden asignar constantes
a VAR_IN_OUTs y no hay acceso de lectura o escritura desde el exterior a ellas.
Ejemplo
Llamar a una variable VAR_IN_OUT iInOut1 del bloque de funciones fubo en un módulo ST:
VAR fuboinst:fubo; iVar1:int;
END_VAR
iVar1:=2; fuboinst(iInOut1:=iVar1);
Así es como se llama a la instancia de un bloque de funciones en ST (la parte de declaración es la misma que con IL)
Así es como se llama a la instancia de un bloque de funciones en FBD (la parte de declaración es la misma que con IL)
En SFC, las llamadas a bloques de funciones solo pueden tener lugar en pasos.
Programa
Un programa es una POU que devuelve varios valores durante el funcionamiento. Los programas son reconocidos a
nivel mundial a lo largo del proyecto. Todos los valores se conservan desde la última vez que se ejecutó el programa
hasta la siguiente.
Se puede llamar a los programas. No se permite una llamada de programa en una función. Tampoco
hay instancias de programas.
Si una POU llama a un programa, y si por lo tanto se cambian los valores del programa, estos cambios se
conservan la próxima vez que se llama al programa, incluso si el programa ha sido llamado desde otro
Para.
Esto es diferente de llamar a un bloque de funciones. Allí solo se cambian los valores en la instancia
dada de un bloque de funciones.
Por lo tanto, estos cambios solo desempeñan un papel cuando se llama a la misma instancia.
Ejemplo de un programa
Una declaración de programa comienza con la palabra clave PROGRAM y termina con
END_PROGRAM. Respecto Apéndice J: Apéndice J: Recomendaciones sobre la nomenclatura.
Si se desea ajustar los parámetros de entrada y/o salida cuando se llama al programa, se puede hacer en
los lenguajes de texto IL y ST asignando valores a los parámetros después del nombre del programa entre
paréntesis (para los parámetros de entrada esta asignación se realiza utilizando ":= " al igual que con la
inicialización de variables en la posición de declaración, para los parámetros de salida se debe utilizar "=>").
Si el programa se inserta a través del asistente de entrada (<F2>) con la opción Con argumentos en
la ventana de implementación de una POU ST o IL, se mostrará automáticamente de acuerdo con esta
sintaxis con todos sus parámetros. Pero no necesariamente debe asignar estos parámetros.
Ejemplos de llamadas de programa:
En IL:
CAL PRGexample2 LD PRGexample2.out_var
ST ERG o con la asignación de los parámetros (asistente de entrada "Con argumentos", ver arriba): CAL
PRGexample2(in_var:=33, out_var=>erg )
En ST:
PRGejemplo2; Erg := PRGexample2.out_var; o con la asignación de los parámetros (asistente de entrada
"Con argumentos", ver arriba): PRGexample2(in_var:=33, out_var=>erg );
En FBD:
Vea el ejemplo del programa PRG que se muestra en la imagen de la parte superior de este capítulo:
LD 0 ST PRGexample.PAR (*La configuración predeterminada para
PAR es 0*) Llamada CAL IL (*ERG en la llamada IL da como
resultado 1*) Llamada CAL ST (*ERG en la llamada ST da como
resultado 2*) Llamada CAL FBD (*ERG en la llamada FBD da como
resultado 3*)
Si la variable PAR del ejemplo PRG del programa es inicializada por un programa principal con 0, y luego se
llama a uno tras otro programa con llamadas al programa mencionadas anteriormente, entonces el resultado
ERG en los programas tendrá los valores 1, 2 y 3. Si se intercambia la secuencia de las llamadas, los valores
de los parámetros de resultado dados también cambian de manera correspondiente.
PLC_PRG
El PLC_PRG es una POU especial predefinida. Cada proyecto debe contener este programa especial.
Esta POU se llama exactamente una vez por ciclo de control.
La primera vez que se utiliza el comando 'Proyecto' 'Agregar objeto' después de que se haya creado
un nuevo proyecto, la entrada predeterminada en el cuadro de diálogo POU será una POU llamada
PLC_PRG del tipo de programa. ¡No debe cambiar esta configuración predeterminada!
Si se han definido tareas, es posible que el proyecto no contenga ninguna PLC_PRG, ya que en este
caso la secuencia del procedimiento depende de la asignación de tareas.
Atención: ¡No elimine ni cambie el nombre de la POU PLC_PRG (suponiendo que no esté utilizando una
configuración de tareas)! PLC_PRG es generalmente el programa principal en un programa de una sola tarea.
Acción
Las acciones se pueden definir y asignar a bloques de funciones y programas ('Proyecto', 'Añadir
acción'). La acción representa una implementación adicional que puede crearse completamente en otro
idioma como la implementación "normal". A cada acción se le asigna un nombre.
Una acción trabaja con los datos del bloque de funciones o programa al que pertenece. La acción
utiliza las mismas variables de entrada/salida y variables locales que utiliza la implementación "normal".
Ejemplo de una acción de un bloque de funciones
En el ejemplo dado, al llamar al bloque de función Contador aumenta o disminuye la variable de salida
"out", dependiendo del valor de la variable de entrada "in". Al llamar a la acción Reset del bloque de
funciones, la variable de salida se pone a cero. La misma variable "out" se escribe en ambos casos.
Llamar a una acción:
Se llama a una acción con <Program_name>.<Action_name> o <Instance_name>.<Action_name>.
¡Respete la notación en FBD (vea el ejemplo a continuación)! Si se requiere llamar la acción dentro de
su propio bloque, simplemente se usa el nombre de la acción en los editores de texto y en la forma
gráfica se llama al bloque de funciones sin información de instancia.
Ejemplos de llamadas de la acción descrita anteriormente desde otra POU:
Nota: Las acciones juegan un papel importante en los bloques en los gráficos de funciones secuenciales, consulte Gráfico de
funciones secuenciales. La norma IEC no reconoce acciones distintas de las acciones del diagrama de funciones secuenciales.
Recursos
Necesita los recursos para configurar y organizar el proyecto y para realizar un seguimiento de los valores de las variables:
Variables globales que se pueden utilizar en todo el proyecto o red
Administrador de bibliotecas para agregar bibliotecas al proyecto
Registro para registrar las acciones durante una sesión en línea
Configuración de alarmas para la configuración de la gestión de alarmas en el proyecto
Configuración de PLC para configurar su hardware
Configuración de tareas para guiar el programa a través de las tareas
Administrador de inspecciones y recetas para mostrar los valores de las variables y establecer los valores de las variables predeterminados
Configuración de destino para la selección y, si es necesario, la configuración final del sistema de destino
Espacio de trabajo como imagen de las opciones del proyecto
Dependiendo del sistema de destino y de la configuración de destino realizada en CoDeSys, los
siguientes recursos también pueden estar disponibles en su proyecto:
Traza de muestreo para la visualización gráfica de los valores de las variables
Gestor de parámetros para el intercambio de datos con otros controladores de una red
PLC-Browser como monitor controlador
Herramientas (disponibilidad en función del objetivo) para llamar a programas de herramientas externas desde CoDeSys
Funcionalidad SoftMotion (debido a la licencia) con CNC-Editor (lista de programas CNC) y CAM-Editor
Bibliotecas
Puede incluir en el proyecto una serie de bibliotecas cuyas POU, tipos de datos y variables globales puede
utilizar al igual que las variables definidas por el usuario. Las bibliotecas standard.lib y util.lib son partes estándar
del programa y están siempre a su disposición. Véase el capítulo 6.4 "Administrador de bibliotecas".
Tipos de datos
Junto con los tipos de datos estándar, el usuario puede definir sus propios tipos de datos. Se pueden
crear estructuras, tipos de enumeración y referencias.
Véase el Apéndice C: «Tipos de datos».
Visualización
CoDeSys proporciona visualizaciones para que pueda mostrar las variables de su proyecto. Puede trazar
elementos geométricos fuera de línea con la ayuda de la visualización. En el modo en línea, estos pueden
cambiar su salida de formulario/color/texto en respuesta a los valores de variable especificados.
Una visualización se puede utilizar como una interfaz operativa pura para un PLC con CoDeSys HMI o como una
visualización web o una visualización de objetivos que se ejecuta a través de Internet o directamente en el PLC.
2.2 Idiomas...
CoDeSys es compatible con todos los lenguajes descritos por el estándar IEC-61131:
Lenguajes textuales:
Lista de instrucciones (IL)
Texto estructurado (ST)
Lenguajes Gráficos:
Gráfico de funciones secuenciales (SFC)
Diagrama de bloques de funciones (FBD)
Diagrama de escalera (LD)
Además, está disponible, basado en el Diagrama de Bloques de Funciones, el Editor de Gráficos de
Funciones Continuas (CFC).
Ejemplo:
LD 17 ST pelusa (* comentario *)
Modificadores y operadores en IL
En el lenguaje IL se pueden utilizar los siguientes operadores y modificadores.
Modificadores:
A continuación encontrará una tabla de todos los operadores en IL con sus posibles modificadores y el significado correspondiente:
Haga clic aquí para obtener una lista de todos los operadores de IEC.
Ejemplo de un programa IL mientras se usan algunos modificadores:
También es posible en IL poner paréntesis después de una operación. El valor del paréntesis se
considera entonces como un operando.
Por ejemplo:
LD 2 MUL 2 ADD 3 Erg
el valor resultante para Erg es 10, la operación MUL solo se evalúa entonces si se llega a ")"; como
operando para MUL 5 se calcula a continuación.
END_WHILE; END_IF;
Expresiones
Una expresión es una construcción que devuelve un valor después de su evaluación.
Las expresiones se componen de operadores y operandos. Un operando puede ser una constante, una
variable, una llamada a una función u otra expresión.
Valoración de expresiones
La evaluación de la expresión se lleva a cabo mediante el procesamiento de los operadores de acuerdo
con ciertas reglas vinculantes. El operador con el enlace más fuerte se procesa primero, luego el
operador con el siguiente enlace más fuerte, etc., hasta que se hayan procesado todos los operadores.
Los operadores con la misma fuerza de unión se procesan de izquierda a derecha.
A continuación encontrará una tabla de los operadores ST en orden de su fuerza de unión:
Exponenciación EXPT
Negar -
Construcción de complementos
NO
Multiplicar *
Dividir /
Módulo MOD
Agregar +
Restar -
Comparar <,>,<=,>=
Igual a =
No es igual a <>
Booleano AND Y
XOR booleano XOR
Existen las siguientes instrucciones en ST, dispuestas en una tabla junto con un ejemplo:
Operador de asignación
En el lado izquierdo de una asignación hay un operando (variable, dirección) al que se le asigna el
valor de la expresión en el lado derecho con el operador de asignación :=
Ejemplo:
Var1 := Var2 * 10;
Después de completar esta línea, Var1 tiene el valor diez veces mayor de Var2.
La variable de resultado, como en IL, se direcciona con el nombre del bloque de funciones, un punto
siguiente y el nombre de la variable:
CMD_TMR(IN := %IX5, PT := 300); R:=CMD_TMR. Q
Instrucción RETURN
La instrucción RETURN se puede utilizar para dejar una POU, por ejemplo, dependiendo de una condición
Instrucción IF
Con la instrucción IF se puede comprobar una condición y, dependiendo de esta condición, ejecutar
instrucciones.
Sintaxis:
SI <Boolean_expression1> ENTONCES
<IF_instructions>
{ELSIF <Boolean_expression2> ENTONCES.}
<ELSIF_instructions1>. .
Instrucción CASE
Con las instrucciones CASE se pueden combinar varias instrucciones condicionadas con la misma
variable de condición en una construcción.
Sintaxis:
CASO <Var1> DE
<Valor1>: <Instrucción 1> <Valor2>: <Instrucción 2>
<Valor3, Valor4, Valor5>: <Instrucción 3> <Valor6 ..
Valor10>: <Instrucción 4> ...
Bucle FOR
Con el bucle FOR se pueden programar procesos repetidos.
Sintaxis:
INT_Var :INT;
PARA <INT_Var> := <INIT_VALUE> A <END_VALUE> {BY <Tamaño del paso>} DO
<Instrucciones>
END_FOR;
La parte entre llaves {} es opcional.
Las <Instrucciones> se ejecutan siempre que el <INT_Var> del contador no sea mayor que el
<END_VALUE>. Esto se comprueba antes de ejecutar las <Instrucciones> de modo que las
<instrucciones> nunca se ejecutan si <INIT_VALUE> es mayor que <END_VALUE>.
Cuando se ejecutan <Instrucciones>, <INT_Var> siempre se incrementa en <Tamaño de paso>. El
tamaño del paso puede tener cualquier valor entero. Si falta, se establece en 1. El bucle también debe
terminar, ya que <INT_Var> solo se hace mayor.
Ejemplo:
PARA contador:=1 A 5 POR 1 DO Var1:=Var1*2;
END_FOR;
Erg:=Var1;
Supongamos que la configuración predeterminada para Var1 es el valor 1. Entonces tendrá el valor 32 después del bucle FOR.
Nota: <END_VALUE> no debe ser igual al valor límite del contador <INT_VAR>. Por ejemplo: Si la variable
Counter es de tipo SINT y si <END_VALUE> es 127, obtendrá un bucle sin fin.
Bucle WHILE
El bucle WHILE se puede utilizar como el bucle FOR con la diferencia de que la condición de ruptura
puede ser cualquier expresión booleana. Esto significa que se indica una condición que, cuando se
cumpla, se ejecutará el bucle.
Sintaxis:
WHILE <Expresión booleana>
<Instrucciones>
END_WHILE;
Las <Instrucciones> se ejecutan repetidamente siempre que el <Boolean_expression> devuelva TRUE.
Si el <Boolean_expression> ya es FALSO en la primera evaluación, entonces las <Instrucciones>
nunca se ejecutan. Si <Boolean_expression> nunca asume el valor FALSE, entonces las
<Instrucciones> se repiten sin cesar, lo que provoca un retraso de tiempo relativo.
Nota: El programador debe asegurarse de que no se produzca ningún bucle sin fin. Lo hace cambiando la
condición en la parte de instrucción del bucle, por ejemplo, contando hacia arriba o hacia abajo un contador.
Ejemplo:
WHILE counter<>0 DO Var1 := Var1*2; Contador := Contador-1; END_WHILE
Los bucles WHILE y REPEAT son, en cierto sentido, más potentes que el bucle FOR, ya que no es
necesario saber el número de ciclos antes de ejecutar el bucle. En algunos casos, por lo tanto, solo se
podrá trabajar con estos dos tipos de bucles. Sin embargo, si el número de ciclos de bucle es claro,
entonces es preferible un bucle FOR, ya que no permite bucles infinitos.
Bucle REPEAT
El bucle REPEAT es diferente del bucle WHILE porque la condición de ruptura se comprueba sólo
después de que se haya ejecutado el bucle. Esto significa que el bucle se ejecutará al menos una vez,
independientemente de la redacción de la condición de ruptura.
Sintaxis:
REPETIR
<Instrucciones>
HASTA <expresión booleana> END_REPEAT;
Las <Instrucciones> se llevan a cabo hasta que la <Expresión booleana> devuelve TRUE.
Si ya se produce <expresión booleana> en la primera evaluación TRUE, las <instrucciones> se
ejecutan solo una vez. Si <Boolean_expression> nunca asume el valor TRUE, entonces las
<Instrucciones> se repiten sin cesar, lo que provoca un retraso de tiempo relativo.
Nota: El programador debe asegurarse de que no se produzca ningún bucle sin fin. Lo hace cambiando la
condición en la parte de instrucción del bucle, por ejemplo, contando hacia arriba o hacia abajo un contador.
Ejemplo:
REPETIR
Var1 := Var1*2; Contador := Contador-1;
HASTA
Contador=0
END_REPEAT;
Instrucción EXIT
Si la instrucción EXIT aparece en un bucle FOR, WHILE o REPEAT, el bucle más interno finaliza,
independientemente de la condición de interrupción.
Para obtener más información sobre el editor SFC, consulte el Capítulo 5.4.4.
Paso
Una POU escrita en un diagrama de funciones secuenciales consta de una serie de pasos que están
conectados entre sí a través de conexiones dirigidas (transiciones).
Hay dos tipos de pasos.
El tipo simplificado consta de una acción y un indicador que muestra si el paso está activo. Si se implementa
la acción de un paso, aparece un pequeño triángulo en la esquina superior derecha del paso.
Un paso IEC consta de un indicador y una o más acciones asignadas o variables booleanas. Las
acciones asociadas aparecen a la derecha del paso.
Acción
Una acción puede contener una serie de instrucciones en IL o en ST, muchas redes en FBD o en LD, o
de nuevo en Gráfico de Funciones Secuenciales (SFC).
Con los pasos simplificados, una acción siempre está conectada a un paso. Para editar una acción, haga clic
dos veces con el ratón en el paso al que pertenece la acción. O seleccione el paso y seleccione el comando
de menú 'Extras', 'Zoom Action/Transition'. Además, es posible una acción de entrada o salida por paso.
Las acciones de los pasos IEC se cuelgan en el Organizador de objetos directamente debajo de su
SFC-POU y se cargan con un doble clic o pulsando <Enter> en su editor. Se pueden crear nuevas
acciones con 'Proyecto' 'Agregar acción'. Puede asignar un máximo de nueve acciones a un paso IEC.
Nota: Además de las transiciones, el modo de avance lento también se puede usar para saltar al siguiente paso;
consulte SFCtip y SFCtipmode.
Paso activo
Después de llamar a la POU SFC, la acción (rodeada por un borde doble) que pertenece al paso inicial
se ejecuta primero. Un paso, cuya acción se está ejecutando, se denomina activo. En el modo Online,
los pasos activos se muestran en azul.
En un ciclo de control se ejecutan todas las acciones que pertenecen a los pasos activos. A partir de
entonces, los pasos siguientes respectivos de los pasos activos se activan si las condiciones de transición
de los pasos siguientes son TRUE. Los pasos actualmente activos se ejecutarán en el siguiente ciclo.
Nota: Si el paso activo contiene una acción de salida, esta solo se ejecutará durante el siguiente ciclo, siempre que
la transición siguiente sea TRUE.
Paso IEC
Junto con los pasos simplificados, están disponibles los pasos estándar IEC en SFC.
Para poder utilizar los pasos IEC, debe vincular la biblioteca especial SFC lecsfc.lib en su proyecto.
No se pueden asignar más de nueve acciones a un paso IEC. Las acciones IEC no se fijan como
acciones de entrada, paso o salida a un paso determinado como en los pasos simplificados, sino que
se almacenan por separado de los pasos y se pueden reutilizar muchas veces dentro de una POU.
Para ello, deben asociarse a los pasos individuales con el comando 'Extras', 'Acción asociada'.
Junto con las acciones, las variables booleanas se pueden asignar a pasos.
La activación y desactivación de acciones y variables booleanas se puede controlar mediante los llamados
calificadores. Es posible que se produzcan retrasos. Dado que una acción aún puede estar activa, si se ha
procesado el siguiente paso, por ejemplo, a través del calificador S (Set), se pueden lograr procesos simultáneos.
Una variable booleana asociada se establece o se restablece con cada llamada del bloque SFC. Esto
significa que en cada llamada a la variable se le asigna el valor TRUE o FALSE.
Las acciones asociadas con un paso IEC se muestran a la derecha del paso en un cuadro de dos
partes. El campo de la izquierda contiene el calificador, posiblemente con la constante de tiempo, y el
campo de la derecha contiene el nombre de la acción o el nombre de la variable booleana.
Un ejemplo de un paso IEC con dos acciones:
Para facilitar el seguimiento de los procesos, todas las acciones activas en modo online se muestran en azul al igual que
los pasos activos. Después de cada ciclo, se realiza una comprobación para ver qué acciones están activas.
¡Preste atención aquí también a las restricciones sobre el uso de calificadores de tiempo en acciones
que se reutilizan repetidamente dentro del mismo ciclo (ver 'Calificador')!
Nota: Si una acción ha sido desactivada, se ejecutará una vez más. Esto significa que cada acción se ejecuta al
menos dos veces (también una acción con el calificador P).
En caso de una llamada, primero se ejecutan las acciones desactivadas, luego las acciones activas, en
orden alfabético cada vez.
El hecho de que un paso recién insertado sea un paso IEC depende de si se ha seleccionado el
comando de menú 'Extras' 'Usar IEC-Steps'.
En el Organizador de objetos, las acciones cuelgan directamente debajo de sus respectivas POU SFC.
Se pueden crear nuevas acciones con 'Proyecto' 'Agregar acción'.
Para utilizar los pasos IEC, debe incluir en su proyecto la biblioteca SFC especial Iecsfc.lib .
SFC POU con acciones en el Organizador de objetos
Calificador
Para asociar las acciones con los pasos IEC, están disponibles los siguientes calificadores:
Los calificadores L, D, SD, DS y SL necesitan un valor de tiempo en el formato de constante TIME. Este valor se
puede introducir directamente (por ejemplo, "T#5s") o mediante una variable de tipo de datos TIME (por ejemplo,
"t_var").
Nota: Cuando una acción ha sido desactivada, se ejecutará una vez más. Esto significa que cada acción se
ejecuta al menos dos veces (también una acción con el calificador P).
Banderas SFC
Para controlar el funcionamiento de las POU SFC se pueden utilizar banderas, que se crean implícitamente
durante la ejecución del proyecto. Para leer estos indicadores, debe definir las variables globales o locales
apropiadas como entradas o salidas. Ejemplo: Si en una POU SFC un paso está activo durante un tiempo
más largo que el definido en los atributos del paso, se establecerá un indicador, al que se puede acceder
mediante una variable "SFCError" (SFCError obtiene TRUE en este caso).
SFCEnableLimit: Esta variable es del tipo BOOL. Cuando tiene el valor TRUE, los tiempos de espera
de los pasos se registrarán en SFCError. Se ignorarán otros tiempos de espera.
SFCInit: Cuando esta variable booleana tiene el valor TRUE, el gráfico de funciones secuenciales se
vuelve a establecer en el paso Init. Los otros indicadores SFC también se restablecen (inicialización).
El paso Init permanece activo, pero no se ejecuta, mientras la variable tenga el valor TRUE. Solo
cuando SFCInit se vuelve a establecer en FALSE el bloque se puede procesar normalmente.
SFCReset: Esta variable, de tipo BOOL, se comporta de forma similar a SFCInit. Sin embargo, a
diferencia de este último, el procesamiento posterior tiene lugar después de la inicialización del paso
Init. Así, por ejemplo, el indicador SFCReset podría volver a establecerse en FALSE en el paso Init.
Tenga en cuenta: A partir de la versión 2.3.7.0 del compilador, SFCReset también se puede usar para restablecer
acciones booleanas asociadas a pasos IEC, lo que antes no era posible
SFCQuitError: Siempre que la ejecución del diagrama SFC se detenga mientras esta variable booleana tenga el valor
TRUE mediante el cual se restablece un posible tiempo de espera en la variable SFCErlor. Todas las veces anteriores
en los pasos activos se restablecen cuando la variable vuelve a asumir el valor FALSE. Es una condición previa que
también se haya definido el indicador SFCError, que registra cualquier tiempo de espera en el SFC.
SFCPause: La ejecución del diagrama SFC se detiene mientras esta variable booleana tenga el valor
TRUE.
SFCError: Esta variable booleana es TRUE cuando se ha agotado el tiempo de espera en un diagrama SFC. Si
se produce otro tiempo de espera en un programa después del primero, no se registrará a menos que la variable
SFCError se restablezca primero. Es una condición previa que se defina SFCError, si desea utilizar las otras
marcas de control de tiempo (SFCErrorStep, SFCErrorPOU, SFCQuitError, SFCErrorAnalyzation).
SFCTrans: Esta variable booleana toma el valor TRUE cuando se activa una transición.
SFCErrorStep: Esta variable es del tipo STRING. Si SFCError registra un tiempo de espera, en esta
variable se almacena el nombre del paso que ha causado el tiempo de espera. Es una condición previa
que también se haya definido el indicador SFCError, que registra cualquier tiempo de espera en el SFC.
SFCErrorPOU: Esta variable del tipo STRING contiene el nombre del bloque en el que se ha agotado
el tiempo de espera. Es una condición previa que también se haya definido el indicador SFCError, que
registra cualquier tiempo de espera en el SFC.
SFCCurrentStep: Esta variable es del tipo STRING. El nombre del paso se almacena en esta variable que
está activa, independientemente de la supervisión del tiempo. En el caso de secuencias simultáneas, el paso
se almacena en la rama de la parte exterior derecha. No se registrará ningún tiempo de espera adicional si se
agota el tiempo de espera y la variable SFCError no se restablece de nuevo.
Esto es posible para un máximo de 16 componentes (variables), por lo que el rango de la matriz es de un máximo de 0..15).
La estructura ExpressionResult, así como los módulos de análisis utilizados implícitamente, se
proporcionan con la biblioteca AnalyzationNew.lib. Los módulos de análisis también se pueden utilizar
explícitamente en otras POU, que no están programadas en SFC.
Es una condición previa para el análisis de una expresión de transición, que se registre un tiempo de
espera en el paso anterior. Por lo tanto, se debe implementar un monitoreo de tiempo allí y también se
debe definir la variable SFCError (ver arriba) en la ventana de declaración.
SFCTip, SFCTipMode: Estas variables de tipo BOOL permiten el modo de avance lento del SFC. Cuando
SFCTipMode=TRUE lo activa, solo es posible pasar al siguiente paso si SFCTip está establecido en TRUE.
Siempre que SFCTipMode se establezca en FALSE, es posible omitir incluso las transiciones.
Nota: Tenga en cuenta también las variables implícitas utilizables para escanear el estado y el tiempo de los pasos o acciones.
Sucursal alternativa
Dos o más ramas en SFC se pueden definir como ramas alternativas. Cada rama alternativa debe
comenzar y terminar con una transición. Las bifurcaciones alternativas pueden contener bifurcaciones
paralelas y otras bifurcaciones alternativas. Una rama alternativa comienza en una línea horizontal
(comienzo alternativo) y termina en una línea horizontal (final alternativo) o con un salto.
Si el paso que precede a la línea inicial alternativa está activo, la primera transición de cada bifurcación
alternativa se evalúa de izquierda a derecha. Se abre la primera transición desde la izquierda cuya
condición de transición tiene el valor TRUE y se activan los siguientes pasos (ver paso activo).
Rama paralela
Dos o más ramas en SFC se pueden definir como ramas paralelas. Cada rama paralela debe comenzar y
terminar con un paso. Las bifurcaciones paralelas pueden contener bifurcaciones alternativas u otras
bifurcaciones paralelas. Una rama paralela comienza con una línea doble (comienzo paralelo) y termina con
una línea doble (final paralelo) o con un salto. Se puede proporcionar con una etiqueta de salto.
Si la línea inicial paralela del paso anterior está activa y la condición de transición después de este
paso tiene el valor TRUE, los primeros pasos de todas las bifurcaciones paralelas se activan (consulte
paso activo). Estas ramas ahora se procesan en paralelo entre sí. El paso después de la línea final
paralela se activa cuando todos los pasos anteriores están activos y la condición de transición anterior
a este paso produce el valor TRUE.
Saltar
Un salto es una conexión con el escalón cuyo nombre se indica debajo del símbolo de salto. Los saltos
son necesarios porque no está permitido crear conexiones que conduzcan hacia arriba o se crucen
entre sí.
Para obtener más información sobre el editor FBD, consulte el Capítulo 5.4.2.
Para obtener más información sobre el editor LD, consulte el Capítulo 5.4.3.
Contacto
Cada red en LD consiste en el lado izquierdo de una red de contactos (los contactos están representados
por dos líneas paralelas: | |) que de izquierda a derecha muestran la condición "On" o "Off".
Estas condiciones corresponden a los valores booleanos TRUE y FALSE. Una variable booleana
pertenece a cada contacto. Si esta variable es TRUE, la condición es transmitida por la línea de
conexión de izquierda a derecha, de lo contrario, la conexión derecha recibe el valor "Out".
Los contactos se pueden conectar en paralelo, luego una de las ramas paralelas debe transmitir el
valor "On" para que la rama paralela transmita el valor "On"; o los contactos están conectados en serie,
entonces los contactos deben transmitir la condición "Encendido" para que el último contacto transmita
la condición "Encendido". Por lo tanto, esto corresponde a un circuito eléctrico en paralelo o en serie.
Un contacto también puede ser negado, reconocible por la barra en el símbolo de contacto: |/|. A
continuación, se transmite el valor de la línea si la variable es FALSE.
Bobina
En el lado derecho de una red en LD puede haber cualquier número de las llamadas bobinas que se representan
entre paréntesis:( ). Solo pueden estar en paralelo. Una bobina transmite el valor de las conexiones de izquierda a
derecha y lo copia en una variable booleana apropiada. En la línea de entrada puede estar presente el valor ON
(corresponde a la variable booleana TRUE) o el valor OFF (correspondiente a FALSE).
Los contactos y las bobinas también se pueden negar (en el ejemplo, el contacto SWITCH1 y la bobina
%QX3.0 se niega). Si se niega una bobina (reconocible por la barra diagonal en el símbolo de la
bobina: ( /)), copia el valor negado en la variable booleana adecuada. Si se niega un contacto, se
conecta solo si el valor booleano apropiado es FALSE.
Set/Reset bobinas
Las bobinas también se pueden definir como bobinas de ajuste o reinicio. Se puede reconocer una bobina
establecida por la "S" en el símbolo de la bobina: (S)) Nunca escribe sobre el valor TRUE en la variable
booleana apropiada. Es decir, si la variable se estableció una vez en TRUE, entonces sigue siéndolo.
Se puede reconocer una bobina de reinicio por la "R" en el símbolo de la bobina: (R)) Nunca escribe
sobre el valor FALSE en la variable booleana apropiada: Si la variable se ha establecido una vez en
FALSE, entonces sigue siéndolo.
LD como FBD
Al trabajar con LD, es muy posible que desee utilizar el resultado del interruptor de contacto para
controlar otras POU. Por un lado, puede usar las bobinas para poner el resultado en una variable global
que luego se puede usar en otro lugar. Sin embargo, también puede insertar la posible llamada
directamente en su red LD. Para ello, introduzca una POU con entrada EN.
Dichas POU son operandos, funciones, programas o bloques de funciones completamente normales
que tienen una entrada adicional que está etiquetada con EN. La entrada EN es siempre del tipo BOOL
y su significado es: La POU con entrada EN se evalúa cuando EN tiene el valor TRUE.
Una POU EN se conecta en paralelo a las bobinas, por lo que la entrada EN se conecta a la línea de
conexión entre los contactos y las bobinas. Si la información de ON se transmite a través de esta línea,
esta POU se evaluará con total normalidad.
A partir de un EN POU de este tipo, puede crear redes similares a FBD.
Ejemplo de una red LD con una EN POU
Depuración
Las funciones de depuración de CoDeSys facilitan la búsqueda de errores.
Para depurar, ejecute el comando 'Proyecto' 'Opciones' y en el cuadro de diálogo que aparece en
Opciones de compilación, seleccione activar la opción Depuración.
Punto de ruptura
Un punto de interrupción es un lugar del programa en el que se detiene el procesamiento. Por lo tanto,
es posible ver los valores de las variables en lugares específicos dentro del programa.
Los puntos de interrupción se pueden establecer en todos los editores. En los editores de texto, los puntos de
interrupción se establecen en los números de línea, en FBD y LD en los números de red, en CFC en las POU y en
SFC en los pasos. No se pueden establecer puntos de interrupción en las instancias de bloque de funciones.
Atención: El sistema de tiempo de ejecución CoDeSys SP 32 Bit Full desactivará la función de vigilancia de la
tarea en cuestión tan pronto como la ejecución del programa se detenga actualmente en un punto de interrupción.
Un solo paso
Un solo paso significa:
En IL: Ejecute el programa hasta el siguiente comando CAL, LD o JMP.
En ST: Ejecute la siguiente instrucción.
En FBD, LD: Ejecute la siguiente red.
En SFC: Continúe la acción hasta el siguiente paso.
Procediendo paso a paso, puede comprobar la corrección lógica de su programa.
Ciclo único
Si se ha elegido Ciclo único, la ejecución se detiene después de cada ciclo.
Monitorización
En el modo Online, todas las variables visualizables se leen desde el controlador y se muestran en tiempo real.
Encontrará esta pantalla en el editor de declaraciones y programas; también puede leer los valores actuales de
las variables en el Administrador de Relojes y Recetas y en una visualización. Si se van a supervisar variables de
instancias de bloques de funciones, primero se debe abrir la instancia correspondiente.
En las implementaciones, se muestra el valor del puntero. Sin embargo, para la eliminación de
referencias, se muestra el valor desreferenciado.
Monitorización de los componentes de la matriz: Además de los componentes de la matriz indexados
por una constante, también se muestran los componentes que están indexados por una variable:
5 Simulación
anarray[1] = anarray[i] = 1
Si el índice consta de una expresión (por ejemplo, [i+j] o [i+1]), el componente no se puede mostrar.
Por favor, tenga en cuenta:
Si se ha alcanzado el número máximo de variables que se pueden monitorizar, para cada variable
adicional en lugar del valor actual se mostrará la cadena "Demasiadas variables de monitorización".
Registro
El registro registra cronológicamente las acciones del usuario, los procesos internos, los cambios de estado y las excepciones durante el
procesamiento del modo en línea. Se utiliza para la supervisión y el seguimiento de errores (consulte Funciones en línea).
2.4 El estándar...
La norma IEC 61131-3 es un estándar internacional para lenguajes de programación de controladores
lógicos programables.
Los lenguajes de programación ofrecidos en CoDeSys se ajustan a los requisitos de la norma.
De acuerdo con esta norma, un programa consta de los siguientes elementos:
Estructuras (ver Tipos de datos)
POUs
Variables globales
Los elementos generales del lenguaje se describen en las secciones Identificador, Direcciones, Tipos,
Comentarios y Constantes.
El procesamiento de un programa CoDeSys comienza con el PLC_PRG especial POU. El PLC_PRG
de POU puede llamar a otros POU.
Crear POU
Empezar siempre es fácil: Inicie CoDeSys y elija 'Archivo' 'Nuevo'.
En el cuadro de diálogo que aparece, la primera POU ya ha recibido el nombre predeterminado
PLC_PRG. Mantenga este nombre, y el tipo de POU definitivamente debería ser un programa. Cada
proyecto necesita un programa con este nombre. En este caso elegimos como idioma de esta POU el
Editor de Gráficos de Funciones Continuas (CFC)
Ahora cree tres objetos más con el comando 'Proyecto', 'Agregar objeto' con la barra de menú o con el
menú contextual (presione el botón derecho del mouse en el Organizador de objetos). Un programa en
el lenguaje Sequential Function Chart (SFC) llamado SEQUENCE, un bloque de funciones en el
lenguaje Function Block Diagram (FBD) llamado TRAFFICSIGNAL, junto con un POU WAIT, también
del tipo function block, que queremos programar como una Lista de Instrucciones (IL).
Simulación de semáforos
Ahora pruebe su programa en modo de simulación. Compilar ('Proyecto', 'Construir') y cargarlo ('En
línea', 'Iniciar sesión' ). Inicie el programa con 'Online' 'Start', luego establezca la variable ON en
TRUE, por ejemplo, haciendo doble clic en la entrada "ON" en el cuadro de entrada del editor CFC.
Esto marcará la variable como preparada para establecerse en <TRUE>. A continuación, pulse
<Ctrl><F7> o el comando 'En línea' 'Escribir valores', para establecer el valor. Ahora la variable START
en ABLAUF (que habíamos establecido en TRUE manualmente en el primer nivel de extensión del
programa) obtiene este valor mediante la variable ON, que se usa en PLC_PRG. Esto hará que los
ciclos de los semáforos funcionen. PLC_PRG ha cambiado a una ventana de supervisión. Haga clic
dos veces en el signo más en el editor de declaraciones, la visualización de variables se despliega y
puede ver los valores de las variables individuales.
Declaración "TRAFFICSIGNAL"
Pasemos ahora a la señal de tráfico POU. En el editor de declaraciones, se declara como variable de
entrada (entre las palabras clave VAR_INPUT y END_VAR) una variable llamada STATUS del tipo INT.
STATUS tendrá cuatro condiciones posibles, es decir, una para las fases TRAFFICSIGNAL verde,
amarilla, amarilla/roja y roja.
En consecuencia, nuestro SEMALETERO tiene tres salidas, es decir, ROJO, AMARILLO y VERDE.
Debe declarar estas tres variables. A continuación, la parte de declaración de nuestro bloque de
función TRAFFICSIGNAL tendrá el siguiente aspecto:
Bloque de función TRAFFICSIGNAL, parte de declaración
Cuerpo "TRAFFICSIGNAL"
Ahora determinamos los valores de las variables de salida en función del STATUS de entrada de la POU. Para
hacer esto, vaya al cuerpo de la POU. Haga clic en el campo de la izquierda junto a la primera red (el campo gris
con el número 0001). Ahora ha seleccionado la primera red. Elija la opción de menú 'Insertar' 'Caja'.
En la primera red se inserta una caja con el operador AND y dos entradas:
Haga clic en el texto Y, para que aparezca seleccionado y cambie el texto a EQ. Seleccione entonces para cada
una de las dos entradas los tres signos de interrogación y sobrescriba con "STATUS" respectivamente "1".
Haga clic ahora en un lugar detrás de la caja de ecualización. Ahora se selecciona la salida de la
operación de ecualización. Elija 'Insertar' 'Asignar'. Cambie los tres signos de interrogación ??? a
VERDE. Ahora ha creado una red con la siguiente estructura:
STATUS se compara con 1, el resultado se asigna a GREEN. Por lo tanto, esta red cambia a VERDE si
el valor de estado preestablecido es 1.
Para los otros colores de TRAFFICSIGNAL necesitamos dos redes más. Para crear el primero, ejecute el
comando 'Insertar', 'Red (después)' e inserte un EQ-Box como se describe anteriormente. A continuación,
seleccione el pin de salida de esta caja y vuelva a utilizar el comando 'Insertar' 'Caja'. En el nuevo cuadro,
sustitúyase "Y" por "O". Ahora seleccione el primer pin de salida de la caja OR y use el comando 'Insertar'
'Asignar' para asignarlo a "GELB". Seleccione la segunda entrada del cuadro OR haciendo clic con el ratón en
la línea horizontal junto a los tres signos de interrogación, de modo que aparezca marcada por un rectángulo
punteado. Ahora use 'Insertar' 'Caja' para agregar una caja de ecualización adicional como se describió
anteriormente. Finalmente, la red debería verse como se muestra a continuación:
Bloque de función TRAFFICSIGNAL, parte de instrucción
Para insertar un operador delante de otro operador, debe seleccionar el lugar donde la entrada a la que
desea conectar el operador alimenta la caja.
A continuación, utilice el comando 'Insertar' 'Caja'. De lo contrario, puede configurar estas redes de la
misma manera que la primera red.
Ahora nuestro primer POU ha sido terminado. TRAFFICSIGNAL, de acuerdo con la entrada del valor
STATUS, controla cualquier color de luz que deseemos.
Declaración "WAIT"
Pasemos ahora a la POU WAIT. Se supone que esta POU se convierte en un temporizador con el que podemos
determinar la duración del período de tiempo de cada fase de TRAFFICSIGNAL. Nuestra POU recibe como
variable de entrada una variable TIME del tipo TIME, y como salida produce un valor booleano que queremos
llamar OK y que debe ser TRUE cuando finalice el período de tiempo deseado. Establecemos este valor con
FALSE insertando al final de la declaración (antes del punto y coma, sin embargo) " := FALSE ".
Para nuestros propósitos necesitamos el POU TP, un generador de reloj. Tiene dos entradas (IN, PT) y
dos salidas (Q, ET). TP hace lo siguiente:
Mientras IN sea FALSE, ET sea 0 y Q sea FALSE. Tan pronto como IN proporciona el valor TRUE, el
tiempo se calcula en la salida ET en milisegundos. Cuando ET alcanza el valor PT, ET ya no se cuenta.
Mientras tanto, Q produce TRUE siempre y cuando ET sea menor que PT. Tan pronto como se ha
alcanzado el valor PT, Q vuelve a producir FALSE. Consulte el capítulo sobre la biblioteca estándar
para obtener descripciones breves de todas las POU.
Para poder utilizar el TP de POU en el POU WAIT debemos crear una instancia local a partir de TP.
Para ello declaramos una variable local ZAB (para el tiempo transcurrido) del tipo TP (entre las
palabras clave VAR, END_VAR).
Por lo tanto, la parte de declaración de WAIT se ve así:
Bloque de función WAIT, parte de declaración
Cuerpo "WAIT"
Para crear el temporizador deseado, el cuerpo de la POU debe programarse de la siguiente manera:
Bloque de función WAIT, parte de instrucción
El valor negado de Q se guarda en OK después de cada ejecución de WAIT. Tan pronto como Q es
FALSE, OK produce TRUE.
El temporizador ha finalizado en este punto. Ahora es el momento de combinar nuestros dos bloques
de funciones WAIT y SEQUENCE en el programa principal PLC_PRG.
Los pasos (de arriba a abajo) reciben los nombres Switch1, Green2, Switch2, Green1, por lo que Init, por
supuesto, mantiene su nombre. "Switch" debe incluir una fase amarilla, en Verde1 TRAFFICSIGNAL1 será
verde, en Verde2 TRAFFICSIGNAL2 será verde. Finalmente, cambie la dirección de retorno de Init después
de Switch1. Si ha hecho todo bien, entonces el diagrama debería verse como en la siguiente imagen:
SECUENCIA de Programa, Primer Nivel de Expansión, Parte de Instrucción
Ahora tenemos que terminar la programación de los pasos individuales. Si hace doble clic en el campo
de un paso, aparecerá un cuadro de diálogo para abrir una nueva acción. En nuestro caso usaremos IL
(Instruction List).
Acciones y condiciones de transición
En la acción del paso Init se inicializan las variables, el STATUS de TRAFFICSIGNAL1 debe ser 1
(verde). El estado de TRAFFICSIGNAL2 debe ser 3 (rojo). A continuación, la acción Init tiene un
aspecto similar al de la siguiente imagen:
Acción Init
momento tenemos que configurarlo manualmente dentro de la POU. Para ello, haga doble clic en la línea de la
parte de declaración, donde se define START (START=FALSE). Esto establecerá la opción "<:=TRUE>" detrás
de la variable en color turquesa. Ahora seleccione el comando 'En línea' 'Escribir valores' para establecer este
valor. A continuación, START se mostrará en color azul en el diagrama de secuencia y el procesamiento de los
pasos se indicará con una marca azul del paso actualmente activo.
Cuando haya terminado esta prueba intermedia, utilice el comando 'En línea' 'Cerrar sesión' para salir
del modo de simulación y continuar con la programación.
Ahora seleccione la transición después de Switch1 e inserte un paso y luego una transición. Seleccione la
transición resultante e inserte una rama alternativa a su izquierda. Después de la transición izquierda, inserte
un paso y una transición. Después de la nueva transición resultante, inserte un salto después de Switch1.
Nombra las nuevas partes de la siguiente manera: el superior de los dos nuevos pasos debe llamarse
"Contar" y el inferior "Desactivado". Las transiciones se llaman (de arriba a abajo y de izquierda a
derecha) EXIT, TRUE y DELAY.OK. La nueva pieza debe parecerse a la parte marcada con el borde
negro en la siguiente imagen:
SECUENCIA de Programa, Segundo Nivel de Expansión, Parte de Instrucción
Ahora se van a implementar dos nuevas acciones y una nueva condición de transición. En el paso
Contar, la variable CONTADOR se incrementa en uno:
Recuento de acciones
La transición EXIT comprueba si el contador es mayor que un valor determinado, por ejemplo 7:
Transición EXIT
En Apagado, el estado de ambas luces se establece en 5 (APAGADO), (o cada otro número no es igual a 1,
2, 3 o 4), el CONTADOR se restablece a 0 y se establece un retardo de tiempo de 10 segundos:
Acción desactivada
El resultado
En nuestra situación hipotética, cae la noche después de siete ciclos de semáforos, durante diez
segundos el semáforo se apaga solo, luego volvemos a tener luz de día, la unidad de semáforo se
enciende de nuevo y todo el proceso comienza de nuevo desde el principio. Si lo desea, haga otra
prueba de la versión actual de su programa en modo de simulación antes de que pasemos a crear la
POU PLC_PRG.
PLC_PRG
Hemos definido y correlacionado la secuencia temporal de las fases para ambos conjuntos de semáforos en
el bloque SECUENCIA. Sin embargo, dado que vemos el sistema de semáforos como un módulo de un
sistema de bus, por ejemplo, el bus CAN, tenemos que hacer que las variables de entrada y salida estén
disponibles en el PLC_PRG de bloques. Queremos poner en marcha el sistema de semáforos a través de un
interruptor de encendido y queremos enviar a cada una de las seis luces (cada semáforo rojo, verde,
amarillo) el "comando de señal" correspondiente para cada paso de la SECUENCIA. Ahora estamos
declarando las variables booleanas apropiadas para estas seis salidas y una entrada, antes de crear el
programa en el editor, y las estamos asignando, al mismo tiempo, a las direcciones IEC correspondientes.
El siguiente paso es declarar las variables Light1 y Light2 del tipo Phases en el editor de declaraciones.
Declaración LIGHT1 y LIGHT2
Estos entregan el valor booleano de cada una de las seis luces a las seis salidas mencionadas
anteriormente para cada paso de la secuencia de bloques. Sin embargo, no estamos declarando las
variables de salida que están previstas dentro del bloque PLC_PRG, sino en Recursos para variables
globales. La variable de entrada booleana IN, que se utiliza para fijar la variable START en el bloque
SEQUENCE en TRUE, se puede fijar de la misma manera. ON también se asigna a una dirección IEC.
Seleccione la pestaña Recursos y abra la lista Variables globales.
Haga la declaración de la siguiente manera:
Declaración de las variables de entrada/salida para una configuración CAN
El nombre de la variable (por ejemplo, IN) va seguido, después de AT, por un signo de porcentaje que
comienza la dirección IEC. I significa entrada, Q salida, B (utilizado en este ejemplo) significa byte y los
bits individuales del módulo se direccionan usando 0.0 (0.1, 0.2, etc.). En este ejemplo, no realizaremos
la configuración necesaria del controlador, ya que depende del paquete de destino que tenga
disponible en su computadora. Consulte la configuración del PLC para obtener más información.
Ahora queremos rematar el bloque PLC_PRG.
Para ello entramos en la ventana del editor. Hemos seleccionado el editor de gráficos de funciones
continuas y, en consecuencia, obtenemos, en la barra de menús, una barra de símbolos CFC con
todos los elementos disponibles (ver El editor de gráficos de funciones continuas).
Haga clic con la tecla derecha del ratón en la ventana del editor y seleccione el elemento Box. Haga clic en el
texto Y y escriba "SECUENCIA" en su lugar. Esto hace que aparezca el bloque SEQUENCE con todas las
variables de entrada y salida ya definidas. Inserte otros dos elementos de bloque a los que denominará FASES.
Phases es un bloque de funciones y esto hace que se obtengan tres signos de interrogación rojos sobre el bloque
que se sustituyen por las variables LIGHT1 y LIGHT2 ya declaradas localmente. Ahora establezca un elemento del
tipo Input, que otorgue el título ON y seis elementos del tipo Output a los que asigne nombres de variable, como
se describe, a saber, L1_green, L1_yellow, L1_red, L2_green, L2_yellow, L2_red.
Todos los elementos del programa están ahora en su lugar y puede conectar las entradas y salidas,
haciendo clic en la línea corta en la entrada/salida de un elemento y arrastrándola con una tecla del
ratón constantemente presionada a la entrada/salida del elemento deseado.
Su programa finalmente debería verse como se muestra a continuación:
Simulación de semáforos
Ahora pruebe su programa en modo de simulación. Compilar ('Proyecto', 'Construir') y cargarlo ('En
línea', 'Iniciar sesión' ). Inicie el programa con 'Online' 'Start', luego establezca la variable ON en
TRUE, por ejemplo, haciendo doble clic en la entrada "ON" en el cuadro de entrada del editor CFC.
Esto marcará la variable como preparada para establecerse en <TRUE>. A continuación, pulse
<Ctrl><F7> o el comando 'En línea' 'Escribir valores', para establecer el valor. Ahora la variable START
en ABLAUF (que habíamos establecido en TRUE manualmente en el primer nivel de extensión del
programa) obtiene este valor mediante la variable ON, que se usa en PLC_PRG. Esto hará que los
ciclos de los semáforos funcionen. PLC_PRG ha cambiado a una ventana de supervisión. Haga clic
dos veces en el signo más en el editor de declaraciones, la visualización de variables se despliega y
puede ver los valores de las variables individuales.
Introduzca aquí cualquier nombre. Al confirmar el cuadro de diálogo con Aceptar, se abre una ventana
en la que puede configurar la nueva visualización.
• Dé el comando 'Insertar' 'Elipse' e intente dibujar un círculo de tamaño mediano (?2cm). Para ello, haga
clic en el campo del editor y dibuje con el botón izquierdo del ratón pulsado el círculo en su longitud.
• Ahora haga doble clic en el círculo. Se abre el cuadro de diálogo para editar elementos de visualización
• Elija la categoría Variables y en el campo Cambiar color ingrese el nombre de la variable. L1_red
o "L1_red". Esto significa que la variable global L1_red provocará el cambio de color tan pronto
como se establezca en TRUE. El punto antes del nombre de la variable indica que se trata de una
variable global, pero no es obligatorio.
• Luego elija la categoría Color y haga clic en el botón Interior en el área Color. Elige un color lo
más neutro posible, como el negro.
• Ahora haga clic en el botón dentro del área Color de alarma y elija el rojo que más se acerque al
de una luz roja.
El caso TRAFFICSIGNAL
Ahora ingrese el comando 'Insertar' 'Rectángulo', e inserte de la misma manera que el círculo un
rectángulo que encierra los tres círculos. Una vez más, elige un color lo más neutro posible para el
rectángulo y da el comando 'Extras' 'Enviar detrás' para que los círculos vuelvan a ser visibles.
Si el modo de simulación aún no está activado, puede activarlo con el comando 'En línea' 'Simulación'.
Si ahora inicia la simulación con los comandos 'En línea', 'Iniciar sesión' y 'En línea', 'Ejecutar', puede
observar el cambio de color de la primera señal de tráfico.
El segundo semáforo
La forma más sencilla de crear el segundo semáforo es copiar todos los elementos del primer
semáforo. Para ello, seleccione todos los elementos del primer semáforo y cópielos (como antes con
los semáforos del primer semáforo) con los comandos 'Editar', ' Copiar' y ' Editar', 'Pegar'. A
continuación, solo tiene que cambiar el texto "TRAFFICSIGNAL1" en los cuadros de diálogo
respectivos a "TRAFFICSIGNAL2", y se completa la visualización del segundo semáforo.
El interruptor de encendido
Inserte un rectángulo y asígnele, como se ha descrito anteriormente, un color para un semáforo de su elección e introduzca .
ON en Variables para el color de cambio. Introduzca "ON" en el campo de entrada de Contenido en la categoría Texto.
Para establecer la variable ON en TRUE con un clic del ratón en el interruptor, active la opción 'Alternar
variable' en la categoría 'Entrada' e ingrese el nombre de la variable ". ON" allí. La clave variable
significa que cuando se hace clic con el ratón en el elemento de visualización, la variable . ON se ajusta
al valor TRUE, pero se restablece al valor FALSE cuando se suelta de nuevo la tecla del ratón (hemos
creado un dispositivo de encendido simple para nuestro programa de semáforos).
Fuente en la visualización
Para completar la visualización, primero debe insertar dos rectángulos más que coloca debajo de las
señales de tráfico.
En el cuadro de diálogo de visualizaciones, establezca blanco en la categoría Color para Marco y escriba en la
categoría Texto en el campo Contenido " Luz1" o "Luz2". Ahora la visualización tiene el siguiente aspecto:
Los siguientes elementos se encuentran en la ventana principal de CoDeSys (de arriba a abajo):
La barra de menús
La barra de herramientas (opcional); con botones para una selección más rápida de los comandos del menú.
El organizador de objetos con tarjetas de registro para POU, tipos de datos, visualizaciones y recursos
Un divisor vertical de pantalla entre el organizador de objetos y el espacio de trabajo de CoDeSys
El espacio de trabajo en el que se encuentran las ventanas del editor
La ventana de mensajes (opcional)
La barra de estado (opcional); con información sobre el estado actual del proyecto
Ver también:
Menú contextual
Barra de menú
La barra de menú se encuentra en el borde superior de la ventana principal. Contiene todos los comandos del menú.
Barra de herramientas
Al hacer clic con el ratón en un símbolo, puede seleccionar un comando de menú más rápidamente. La
elección de los símbolos disponibles se adapta automáticamente a la ventana activa.
El comando solo se lleva a cabo cuando se presiona el botón del mouse sobre el símbolo y luego se
suelta. Si mantiene pulsado el puntero del ratón durante un breve periodo de tiempo sobre un símbolo
de la barra de herramientas, el nombre del símbolo se muestra en una información sobre herramientas.
Para ver una descripción de cada símbolo de la barra de herramientas, seleccione en Ayuda el editor
sobre el que desea información y haga clic en el símbolo de la barra de herramientas que le interese.
La visualización de la barra de herramientas es opcional (ver 'Proyecto', categoría 'Opciones', Escritorio).
Organizador de objetos
El organizador de objetos siempre se encuentra en el lado izquierdo de CoDeSys. En la parte inferior hay cuatro
tarjetas de registro con símbolos para los cuatro tipos de objetos: POU, tipos de datos, visualizaciones
y Recursos. Para cambiar entre los respectivos tipos de objetos, haga clic con el ratón en la tarjeta de
registro correspondiente o utilice la tecla de flecha izquierda o derecha.
En el capítulo Gestión de objetos en un proyecto aprenderá a trabajar con los objetos en el
Organizador de objetos.
Divisor de pantalla
El divisor de pantalla es el borde entre dos ventanas que no se superponen. En CoDeSys hay
separadores de pantalla entre el Organizador de Objetos y el espacio de trabajo de la ventana
principal, entre la interfaz (parte de declaración) y la implementación (parte de instrucción) de las POU
y entre el espacio de trabajo y la ventana de mensajes.
Puede mover el divisor de pantalla con el puntero del ratón. Para ello, mueva el ratón con el botón
izquierdo pulsado.
Asegúrese de que el divisor de pantalla permanezca siempre en su posición absoluta, incluso cuando
se haya cambiado el tamaño de la ventana. Si parece que el divisor de pantalla ya no está presente,
simplemente amplíe su ventana.
Espacio de trabajo
El espacio de trabajo se encuentra en el lado derecho de la ventana principal de CoDeSys. Todos los
editores de objetos y el administrador de bibliotecas se abren en esta área. El nombre del objeto actual
aparece en la barra de título; en el caso de las POU, aparece entre paréntesis una abreviatura para el
tipo de POU y el lenguaje de programación actualmente en uso.
Encontrará la descripción de los editores en el capítulo Los editores
En la opción de menú 'Ventana' encontrará todos los comandos para la gestión de ventanas.
Ventana de mensajes
La ventana de mensajes está separada por un divisor de pantalla debajo del espacio de trabajo en la
ventana principal.
Contiene todos los mensajes de las compilaciones, comprobaciones o comparaciones anteriores. Los
resultados de la búsqueda y la lista de referencias cruzadas también se pueden mostrar aquí.
Si hace doble clic con el ratón en la ventana de mensajes de un mensaje o pulsa <Intro>, el editor se
abre con el objeto. Se selecciona la línea correspondiente del objeto. Con los comandos 'Editar',
'Siguiente error' y 'Editar', 'Error anterior', puede saltar rápidamente entre los mensajes de error.
La visualización de la ventana de mensajes es opcional (ver 'Ventana', 'Mensajes').
Barra de estado
La barra de estado en la parte inferior del marco de la ventana principal en CoDeSys le brinda
información sobre el proyecto actual y sobre los comandos de menú.
Si un elemento es relevante, el concepto aparece en el lado derecho de la barra de estado en escritura
negra, de lo contrario en escritura gris.
Cuando se trabaja en modo online, el concepto Online aparece en letras negras. Si está trabajando en
el modo sin conexión, aparece en un script gris.
En el modo en línea, puede ver en la barra de estado si está en la simulación (SIM), si el programa se está procesando
(RUNS), si se ha establecido un punto de interrupción (BP) o si se están forzando variables (FORCE).
Con el editor de texto se indica el número de línea y columna de la posición actual del cursor (por
ejemplo, Línea:5, Col.:11). En el modo en línea, 'OV' se indica en negro en la barra de estado. Al
presionar la tecla <Ins> se cambia entre el modo Sobrescribir e Insertar.
Si el punto del ratón está en una visualización, se indica la posición actual de X e Y del cursor en
píxeles en relación con la esquina superior izquierda de la pantalla. Si el puntero del ratón está en un
elemento , o si se está procesando un elemento, se indica su número. Si tiene un elemento para
insertar, también aparece (por ejemplo, Rectángulo).
Si ha elegido un comando de menú pero aún no lo ha confirmado, aparecerá una breve descripción en
la barra de estado.
La visualización de la barra de estado es opcional (consulte 'Proyecto', categoría 'Opciones', Escritorio).
Menú contextual
Atajo: <Mayús>+<F10>
En lugar de usar la barra de menú para ejecutar un comando, puede usar el botón derecho del mouse.
El menú que aparece a continuación contiene los comandos más utilizados para un objeto
seleccionado o para el editor activo. La elección de los comandos disponibles se adapta
automáticamente a la ventana activa. La elección de los comandos disponibles se adapta
automáticamente a la ventana activa.
Registro X
Construir X
Contraseñas X
Descarga de la fuente X
Configuración de símbolos X
Control de código fuente del proyecto
X
Macros X
Guardado automático: Mientras trabaja, su proyecto se guarda de acuerdo con un intervalo de tiempo
definido (Intervalo de guardado automático) en un archivo temporal con la extensión ".asd" en el
directorio de proyectos. Este archivo se borra al salir normalmente del programa. Si por alguna razón
CoDeSys no se apaga "normalmente" (por ejemplo, debido a un corte de energía), entonces el archivo
no se borrará. Al volver a abrir el archivo, aparece el siguiente mensaje:
Ahora puede decidir si desea abrir el archivo original o el archivo de guardado automático.
Si se abre una biblioteca *.lib como proyecto, se creará un archivo de guardado automático correspondiente "*.asl".
Guardado automático antes de la compilación: El proyecto se guardará antes de cada compilación.
Al hacerlo, se creará un archivo con la extensión ".asd" o ".asl", que se comporta como se describió
anteriormente para la opción 'Auto Save'.
Solicitar información del proyecto: Al guardar un nuevo proyecto o guardar un proyecto con un
nuevo nombre, se llama automáticamente a la información del proyecto. Puede visualizar la
información del proyecto con el comando 'Proyecto' 'Información del proyecto' y también procesarla.
Carga automática: En el siguiente inicio de CoDeSys, el último proyecto abierto se carga automáticamente. La carga de
un proyecto al inicio de CoDeSys también puede tener lugar introduciendo el proyecto en la línea de comandos.
Recordar el proyecto de arranque al salir: Si el proyecto se ha modificado y descargado sin crear un nuevo
proyecto de arranque desde la última descarga de un proyecto de arranque, un cuadro de diálogo avisará al
usuario antes de abandonar el proyecto: "No se ha creado ningún proyecto de arranque desde la última descarga.
¿Salir de todos modos?".
Guardar credenciales de ENI: Se guardarán el nombre de usuario y la contraseña, tal como se
insertan en el cuadro de diálogo de inicio de sesión de la base de datos de ENI. En cuanto a los datos
de acceso, introducidos una vez por el usuario en 'Abrir proyecto desde el gestor de código fuente'
(véase el capítulo 4.2, 'Archivo' 'Abrir'), en este caso se guardarán adicionalmente el nombre de usuario
y la contraseña en el archivo codesys.ini.
Opciones para la información del usuario
Si elige esta categoría en el cuadro de diálogo Opciones, obtendrá el siguiente cuadro de diálogo:
Cuadro de diálogo Opciones de la categoría Información del usuario
A la información del usuario pertenecen el nombre del usuario, sus iniciales y la empresa para la que
trabaja. Cada una de las entradas puede ser modificada. La configuración se aplicará a cualquier otro
proyecto que se cree con CoDeSys en la computadora local.
Declaraciones como tablas: Si esta opción está activada, puede editar las variables de una tabla en lugar
de utilizar el editor de declaraciones habitual. Esta tabla está ordenada como una caja de tarjetas, donde
encontrará pestañas para variables de entrada, variables de salida, variables locales y variables in_out. Para
cada variable hay campos de edición para insertar Nombre, Dirección, Tipo, Inicial y Comentario.
Tab-Width: En el campo Tab-Width en la categoría Editor del cuadro de diálogo Opciones, puede
determinar el ancho de una pestaña como se muestra en los editores. La configuración predeterminada
es de cuatro caracteres, por lo que el ancho de caracteres depende de la fuente que se elija.
Fuente: Al hacer clic en el botón Fuente en la categoría Editor del cuadro de diálogo Opciones, puede elegir la fuente
en todos los editores de CoDeSys. El tamaño de la fuente es la unidad básica para todas las operaciones de dibujo. De
este modo, la elección de un tamaño de letra más grande amplía la impresión, incluso con cada editor de CoDeSys.
Una vez que haya ingresado el comando, se abre el cuadro de diálogo de fuente para elegir la fuente,
el estilo y el tamaño de fuente.
Marcar: Al elegir Marcar en la categoría Editor en el cuadro de diálogo Opciones, puede elegir si la
selección actual en los editores gráficos debe estar representada por un rectángulo punteado
(Punteado), un rectángulo con líneas continuas (Línea) o por un rectángulo relleno (Relleno). En este
último caso, la selección se muestra invertida.
Valores de bit: Al elegir Valores de bits en la categoría Editor del cuadro de diálogo Opciones, puede
elegir si los datos binarios (tipo BYTE, WORD, DWORD) durante la supervisión deben mostrarse como
decimales, hexadecimales o binarios.
Suprimir la supervisión de tipos complejos (matriz, puntero, VAR_IN_OUT): si esta opción está
activada, los tipos de datos complejos como matrices, punteros VAR_IN_OUTs no se mostrarán en la
ventana de supervisión en modo en línea.
Mostrar símbolos POU: Si esta opción está activada, en los cuadros de módulo que se insertan en un
editor gráfico, adicionalmente se mostrarán los símbolos, si están disponibles en la carpeta de la
biblioteca como mapas de bits. El nombre del archivo de mapa de bits debe estar compuesto por el
nombre del módulo y la extensión ".bmp". Ejemplo: Para el módulo TON hay un archivo de símbolos
TON.bmp disponible. El cuadro se mostrará de la siguiente manera:
Cuando se activa una opción, aparece una marca de verificación delante de ella.
Barra de herramientas: La barra de herramientas con los botones para una selección más rápida de
los comandos de menú se hace visible debajo de la barra de menú.
Barra de estado: La barra de estado en el borde inferior de la ventana principal de CoDeSys se vuelve visible.
En línea en modo Seguridad: En el modo Online, con los comandos 'Ejecutar', 'Detener', '
Restablecer', 'Alternar punto de interrupción', 'Ciclo único', 'Escribir valores', 'Forzar valores' y 'Liberar fuerza',
aparece un cuadro de diálogo con la solicitud de confirmación de si el comando debe ejecutarse realmente.
Si es compatible con el sistema de destino, es posible que haya disponible un cuadro de diálogo ampliado
cuando desee cargar el proyecto real desde el sistema de programación al PLC Si ya hay un proyecto en el
PLC, este cuadro de diálogo mostrará la información del proyecto de ese proyecto, así como la información
del proyecto que se va a cargar actualmente. Esta información del proyecto también estará disponible en
caso de crear un proyecto de arranque cuando ya exista uno en el PLC.
Consultar los parámetros de comunicación antes de iniciar sesión: Tan pronto como se ejecute el
comando 'En línea' 'Iniciar sesión', primero se abrirá el cuadro de diálogo de parámetros de comunicación.
Para entrar en el modo en línea, primero debe cerrar este cuadro de diálogo con Aceptar.
No guardar los parámetros de comunicación en el proyecto: La configuración del cuadro de diálogo de
parámetros de comunicación ('En línea', 'Parámetros de comunicación') no se guardará con el proyecto.
Mostrar márgenes del área de impresión: En cada ventana del editor, los límites del rango de impresión
establecido actualmente están marcados con líneas discontinuas rojas. Su tamaño depende de las
características de la impresora (tamaño del papel, orientación) y del tamaño del campo "Contenido" del
diseño de impresión establecido (menú: 'Archivo' "Configuración de la documentación").
Codificación XML: Se puede seleccionar el formato para las exportaciones XML. La configuración
predeterminada es "ISO 8859-1". Esto se refiere a la comunicación a través de ENI, la interfaz de
mensajes y la interfaz de automatización COM, así como a cada exportación XML activada por el
usuario desde CoDeSys. Una excepción es la exportación XML del Administrador de licencias.
Idioma: Defina aquí en qué idioma deben mostrarse los textos del menú y de los diálogos.
Nota: Tenga en cuenta que la elección del idioma no es posible en Windows 98T.
Opciones de colores
Si elige esta categoría en el cuadro de diálogo Opciones, obtendrá el siguiente cuadro de diálogo:
Cuadro de diálogo Opciones de la categoría Color
Puede editar la configuración de color predeterminada de CoDeSys. Puede elegir si desea cambiar la
configuración de color de los números de línea (preajuste predeterminado: gris claro), de las posiciones de
punto de interrupción ( gris oscuro), de un punto de interrupción establecido (azul claro), de la posición
actual (rojo), de las posiciones alcanzadas (verde) o de la supervisión de valores booleanos (azul).
Si ha elegido uno de los botones indicados, se abre el cuadro de diálogo para la entrada de colores.
Cuadro de diálogo para establecer colores
Se pueden introducir directorios en las áreas Proyecto y Común para que CoDeSys los utilice en la
búsqueda de bibliotecas, configuración del controlador y archivos de visualización, así como para
almacenar archivos de compilación y carga de código fuente . (Consideración: Los archivos de
compilación, por ejemplo, son archivos de mapas y listas, sin embargo, no archivos de símbolos. Este último
se guardará en el directorio del proyecto). Si activa el botón (...) detrás de un campo, se abre el cuadro de
diálogo de selección de directorios. En el caso de los archivos de biblioteca y configuración, se pueden
introducir varias rutas para cada uno, separadas por punto y coma ";".
Por favor, tenga en cuenta:
- Las rutas de la biblioteca se pueden introducir en función de la ruta del archivo de proyecto con el prefijo ".". Por
ejemplo: Si escribe ".\libs", las bibliotecas también se buscarán en 'C:\programs\projects\libs', si el proyecto actual está en
'C:\programs\projects'. Para obtener información sobre las rutas de las bibliotecas, consulte también: 'Capítulo 6.4,
'Insertar' 'Biblioteca adicional'. - No utilice espacios vacíos ni caracteres especiales, excepto "_" en las rutas de directorio.
Por lo general, CoDeSys busca primero en los directorios introducidos en 'Proyecto', luego en los de
'Destino' (definidos en el archivo de destino) y, finalmente, en los que aparecen en 'Común'. Si se
encuentran dos archivos con nombres idénticos, se utilizará el del directorio que se examina primero.
Si se abre un proyecto existente para el que aún no se ha generado ningún registro, se abre un cuadro
de diálogo que llama la atención sobre el hecho de que se está configurando un registro que recibirá su
primera entrada después del siguiente proceso de inicio de sesión.
El registro se almacena automáticamente como un archivo binario en el directorio del proyecto cuando se guarda el proyecto.
Si prefiere un directorio de destino diferente, puede activar la opción Directorio para registros de proyectos: e introduzca
la ruta adecuada en el campo de edición. Utilice el botón para acceder al cuadro de diálogo
"Seleccionar directorio" para este propósito.
Al archivo de registro se le asigna automáticamente el nombre del proyecto con la extensión .log. El número máximo de
sesiones en línea que se van a grabar viene determinado por Tamaño máximo del registro del proyecto. Si se
supera este número durante la grabación, se elimina la entrada más antigua para dejar espacio a la más reciente.
Depuración: Depende de las descripciones de destino si esta opción puede ser activada/desactivada por el
usuario o cuál es la configuración dada. Si se activa, se crea un código de depuración adicional, es decir, el código
puede llegar a ser considerablemente más grande. El código de depuración es necesario para hacer uso de las
funciones de depuración ofrecidas por CoDeSys (por ejemplo, puntos de interrupción). Al desactivar esta opción,
el procesamiento del proyecto se vuelve más rápido y el tamaño del código disminuye. La opción se almacena con
el proyecto.
Reemplazar constantes: El valor de cada constante de tipo escalar (por lo tanto, no para cadenas, matrices
y estructuras) se carga directamente, y en el modo en línea las constantes se muestran en verde. El
forzamiento, la escritura y la supervisión de una constante ya no son posibles. Si la opción está desactivada,
el valor se carga en una ubicación de almacenamiento a través del acceso a variables (esto permite, de
hecho, escribir el valor de la variable, pero implica un tiempo de procesamiento más largo).
Aquí, el comentario que comienza con el primer corchete no se cierra con el corchete que sigue a
"marcado", sino solo con el último corchete.
Atención: Actualmente esta opción debe usarse con cuidado: si la configuración en el proyecto no coincide con la
configuración elegida en una biblioteca que también se ha creado en CoDeSys y ahora se usa en el proyecto, se
producirán errores del compilador, que son difíciles de interpretar por el usuario y, a menudo, no se pueden borrar.
Crear archivo binario de la aplicación: Se crea una imagen binaria del código generado (proyecto de arranque)
en el directorio del proyecto durante la compilación. Nombre del archivo: <project_name>.bin. En comparación, el
comando 'En línea' 'Crear proyecto de arranque' configura el proyecto de arranque en el controlador.
Acciones ocultar programas: Esta opción está activada por defecto, cuando se crea un nuevo proyecto.
Significa: Si una acción local tiene el mismo nombre que una variable global o un programa, la siguiente
jerarquía es válida: variable local antes de acción local antes de variable global antes de programa.
Respecto: Si se abre un proyecto existente, que se ha creado con una versión anterior de CoDeSys, la opción se
desactivará por defecto. De este modo, se puede mantener la jerarquía previamente válida (variable local antes de
variable global, antes de programa antes de acción local).
Tratar LREAL como REAL: Si esta opción está activada (la disponibilidad depende del sistema de
tiempo de ejecución; por defecto: no activado), la compilación manejará los valores de LREAL como
valores REAL. Esto se puede utilizar para crear proyectos independientes de la plataforma.
Número de segmentos de datos: Aquí se define cuántos segmentos de memoria se deben asignar en el PLC para
los datos del proyecto. Este espacio es necesario para hacer posible el cambio en línea, incluso si se han agregado
nuevas variables. Si durante la compilación recibe el mensaje "Memoria de datos global insuficiente...", introduzca
un número más alto. En este sentido, las variables locales del programa se manejarán como variables globales.
Excluir objetos: Este botón abre el cuadro de diálogo Excluir objetos de la compilación: En el árbol de
componentes del proyecto, seleccione las POU que no deben tenerse en cuenta durante la compilación y active
la opción Excluir. A continuación, las POU excluidas se mostrarán en color verde en el árbol de selección.
Presione el botón Excluir no utilizados, si solo desea que se muestren las POU que se utilizan actualmente en
el programa. Tenga en cuenta que un solo objeto que se selecciona en el Organizador de objetos también se
puede excluir de la compilación utilizando el comando 'Excluir de la compilación' en el menú contextual.
Versión del compilador: Aquí se define la versión del compilador que se va a utilizar. Las versiones de CoDeSys
posteriores a la V2.3.3 (versión, Service Pack, parche) incluirán, además de la versión actual del compilador, las
versiones anteriores del compilador (de vuelta a la V2.3.3). Si siempre desea que el proyecto se compile con la última
versión del compilador, active la opción Usar más reciente. En este caso, sin embargo, se comprobará si el sistema
de programación abierto actualmente también es de esa versión. Si esto no es cierto, se utilizará la versión del
compilador que coincida con la versión del sistema de programación realmente utilizada. Si el proyecto debe
compilarse con una versión específica, defínala a través de la lista de selección en Fix.
Para ejercer control sobre el proceso de compilación, puede configurar dos macros: la macro en el
campo Macro antes de compilar se ejecuta antes del proceso de compilación; la macro en el campo Macro después de
compilar . Sin embargo, aquí no se pueden utilizar los siguientes comandos de macro: archivo nuevo, archivo abierto,
cierre de archivo, archivo guardar como, archivo de salida, en línea, compilación de proyecto, comprobación de proyecto,
compilación de proyecto, limpieza de proyecto, reconstrucción de proyecto, depuración, lista de observación.
Comprobar automáticamente:
Para comprobar la corrección semántica en cada compilación del proyecto se pueden activar las
siguientes opciones:
Variables no utilizadas
Áreas de memoria superpuestas
Acceso simultáneo
Acceso de escritura múltiple en la salida
Los resultados se mostrarán en la ventana de mensajes. Estas comprobaciones también pueden
iniciarse mediante los comandos respectivos del submenú 'Comprobar' en el menú 'Proyecto'.
Si el sistema de destino lo admite, los resultados negativos de la comprobación producirán errores del compilador.
Nota: Todas las entradas del cuadro de diálogo Opciones de construcción se almacenan con el proyecto.
Contraseñas
Para proteger sus archivos del acceso no autorizado, CoDeSys ofrece la opción de usar una
contraseña para protegerse contra la apertura o el cambio de sus archivos.
Si elige esta categoría en el cuadro de diálogo Opciones, obtendrá el cuadro de diálogo correspondiente.
Introduzca la contraseña deseada en el campo Contraseña. Para cada carácter escrito aparece un
asterisco (*) en el campo. Debe repetir la misma palabra en el campo Confirmar contraseña. Cierre el
cuadro de diálogo con Aceptar. Si recibes el mensaje:
"La contraseña no concuerda con la confirmación",
Entonces cometió un error de escritura durante una de las dos entradas. En este caso, repita ambas
entradas hasta que el cuadro de diálogo se cierre sin ningún mensaje.
Si ahora guarda el archivo y luego lo vuelve a abrir, aparecerá un cuadro de diálogo en el que se le
pedirá que introduzca la contraseña. El proyecto solo se puede abrir si se introduce la contraseña
correcta. De lo contrario, CoDeSys informa:
"La contraseña no es correcta".
Cuadro de diálogo Opciones de la categoría Contraseñas
Junto con la apertura del archivo, también puede usar una contraseña para protegerse contra el cambio
del archivo. Para ello, debe introducir una contraseña en el campo Contraseña de protección contra
escritura y confirmar esta entrada en el campo inferior.
Un proyecto protegido contra escritura se puede abrir sin contraseña. Para ello basta con pulsar el botón Cancelar,
si CoDeSys le indica que introduzca la contraseña de protección contra escritura al abrir un archivo.
Ahora puede compilar el proyecto, cargarlo en el PLC, simular, etc., pero no puede cambiarlo.
Por supuesto, es importante que memorices ambas contraseñas. Sin embargo, si alguna vez olvida
una contraseña, póngase en contacto con el fabricante de su PLC.
Las contraseñas se guardan con el proyecto.
Para crear derechos de acceso diferenciados, puede definir grupos de usuarios y "Contraseñas para
grupos de usuarios").
Además, hay que tener en cuenta las posibilidades ampliadas de proteger un proyecto mediante el
cifrado (véase el Capítulo 4.3, 'Archivo' 'Guardar como'), que por ejemplo puede ayudar a proteger una
biblioteca para que no se utilice sin haber introducido una clave.
Descarga de la fuente
Al seleccionar esta categoría, se abrirá el siguiente cuadro de diálogo:
Cuadro de diálogo de opciones para la categoría Descarga de fuentes
Puede elegir a qué tiempo y en qué medida se carga el proyecto en el sistema de control. La opción
Código fuente solo involucra exclusivamente el archivo CoDeSys (extensión de archivo .pro). La
opción Todos los archivos también incluye archivos como los archivos de biblioteca asociados,
mapas de bits de visualización, archivos de configuración, etc.
El uso de la opción Implícito en la carga permite que el rango de archivos seleccionado se cargue
automáticamente en el sistema del controlador con el comando 'En línea ' 'Descargar'.
El uso de la opción Implícito en la creación del proyecto de arranque permite que el rango de archivos seleccionado
se cargue automáticamente en el sistema del controlador con el comando 'En línea' 'Crear proyecto de arranque'.
Usando la opción Aviso en la carga se ofrece un cuadro de diálogo, cuando se da el comando 'En
línea ' 'Descargar', con la pregunta "¿Desea escribir el código fuente en el sistema de control?". Al
presionar Sí, se cargará automáticamente el rango de archivos seleccionado en el sistema del
controlador, o alternativamente puede terminar con No.
Al utilizar la opción On demand, el rango de archivos seleccionado debe cargarse expresamente en el
sistema de control dando el comando 'Online' 'Descarga de código fuente'.
El proyecto que se almacena en el sistema de control se puede recuperar usando 'Archivo' 'Abrir' con
Proyecto abierto desde PLC. Los archivos se desempaquetarán en el proceso.
Si la opción 'Configuración de símbolos desde el archivo INI' no está activada, las entradas de símbolos
se generarán de acuerdo con los ajustes que puede realizar en el cuadro de diálogo 'Establecer
atributos de objeto'. Para llegar allí, use el botón Configurar archivo de símbolos:
Cuadro de diálogo 'Establecer atributos de objeto' (en la categoría de opción Configuración de símbolos)
Utilice el editor de selección estructurado en árbol para marcar las variables que deben introducirse en el
archivo de símbolos. Para ello, puede seleccionar una entrada de POU (por ejemplo, Variables globales) que
marcará automáticamente todas las variables que pertenezcan a esta POU, o puede seleccionar variables
individuales que encuentre enumeradas para cada POU en el árbol. A continuación, configure las opciones
deseadas en la parte inferior del cuadro de diálogo haciendo clic con el ratón en los cuadros pequeños
correspondientes. Las opciones activadas están marcadas. Se pueden configurar las siguientes opciones:
Exportar variables del objeto: Las variables del objeto seleccionado se exportan en el archivo de símbolos.
Las siguientes opciones solo pueden surtir efecto si la opción Exportar variables de objeto está activada:
Exportar entradas de datos: Las entradas para acceder a las variables globales se crean para las
estructuras y matrices de los objetos.
Exportar componentes de estructura: Se crea una entrada individual para cada componente variable
de las estructuras del objeto.
Exportar entradas de matriz: Se crea una entrada individual para cada componente variable de las matrices del objeto.
Acceso de escritura: Las variables del objeto pueden ser cambiadas por el servidor OPC.
Una vez que se completa la configuración de las opciones para las variables seleccionadas actualmente, también
se pueden seleccionar otras POU, sin cerrar el cuadro de diálogo antes, y se les puede dar una configuración de
opción. Esto se puede llevar a cabo para cualquier número deseado de selecciones de POU, una tras otra.
Cuando se cierra el cuadro de diálogo seleccionando Aceptar, se aplican todas las configuraciones realizadas
desde que se abrió el cuadro de diálogo.
Nota: Considere la posibilidad de usar pragmas en la declaración de una variable, lo que podría definir que la
variable se lleve al archivo de símbolos con acceso restringido o que se excluya del archivo de símbolos.
Si la opción está activada, las funciones de la base de datos (Check in, Get last version, etc.) estarán disponibles para
manejar las POU del proyecto. A continuación, algunas de las funciones de la base de datos se ejecutarán
automáticamente como se define en los diálogos de opciones, y en el menú 'Proyecto' 'Enlace a la base de datos'
encontrará los comandos para llamar a las funciones explícitamente. Además, se agregará una pestaña 'Conexión a la base
de datos' en el cuadro de diálogo Propiedades, donde puede asignar una POU a una categoría de base de datos en
particular.
Cuadro de diálogo Opciones de la categoría Control de código fuente del proyecto
en el proyecto. Además de 'Objetos de proyecto' y 'Objetos compartidos', hay una tercera categoría de
base de datos, 'Archivos de compilación', para dichos objetos que no se crean hasta que se ha
compilado el proyecto. Por lo tanto, esta categoría no es relevante para la configuración actual.
Preguntar por el tipo de objetos nuevos: Si esta opción está activada, cada vez que se agregue un
nuevo objeto al proyecto, se abrirá el cuadro de diálogo 'Objeto' 'Propiedades', donde puede elegir a
cuál de las tres categorías de objetos mencionadas anteriormente se debe asignar la POU. Al hacerlo,
se puede sobrescribir la configuración estándar.
configurar ENI: Este botón abre el primero de los tres cuadros de diálogo de configuración de ENI:
Cada objeto de un proyecto, que se determina para ser gestionado en la base de datos de ENI, puede asignarse a
una de las siguientes categorías de base de datos: 'Objetos de proyecto', 'Objetos compartidos' o 'Compilar
archivos'. Para cada una de estas categorías, hay disponible un cuadro de diálogo separado para definir en qué
carpeta de la base de datos debe almacenarse y qué preajustes deben ser efectivos para ciertas funciones de la
base de datos:
Cuadro de diálogo Configuración ENI / Objetos de proyecto
Cuadro de diálogo Configuración ENI / Objetos compartidos
Cuadro de diálogo Configuración de ENI / Compilar archivos
Nota: Cada objeto se almacenará también localmente (con proyecto) en cualquier caso.
El cuadro de diálogo se abrirá uno tras otro si está realizando una configuración principal. En este caso, un asistente
(Botón Siguiente) te guiará y los ajustes introducidos en el primer diálogo se copiarán automáticamente a
los demás, de modo que solo tendrás que modificarlos si necesitas diferentes valores de parámetros.
Si desea modificar una configuración existente, los tres cuadros de diálogo se combinan en una
ventana (tres pestañas).
Si aún no ha iniciado sesión correctamente en la base de datos antes, se abrirá automáticamente el
cuadro de diálogo Iniciar sesión.
Opciones para objetos de proyecto y objetos compartidos con respecto a la base de datos del proyecto
Estos diálogos forman parte de la configuración de las opciones de la base de datos del proyecto ('Proyecto',
'Opciones', 'Control de código fuente del proyecto'). Aquí se definen los parámetros de acceso para las categorías
de base de datos 'Objetos de proyecto' y 'Objetos compartidos'. Ambos cuadros de diálogo contienen los mismos
elementos. (Un tercer diálogo está disponible para la configuración del acceso a la categoría de la base de datos
'Compilar archivos', ver capítulo siguiente)
Conexión ENI
Cuadro de diálogo 'Objetos de proyecto' en la categoría de opciones Control de código fuente del proyecto
Check-out
La función de la base de datos 'Check out' significa que la POU se marcará como 'en proceso' y
se bloqueará para otros usuarios hasta que se desbloquee de nuevo mediante un comando
'Check in' o 'Undo check out'.
Si la opción Inmediatamente al inicio de la edición está activada, un objeto se desprotegerá
automáticamente tan pronto como comience a editarlo. Si el objeto ya está desprotegido por otro
usuario (indicado por una cruz roja antes del nombre del objeto en el organizador de objetos de
CoDeSys), aparecerá un mensaje.
Check-in
La función de la base de datos 'Check in' significa que se creará una nueva versión del objeto en
la base de datos. Las versiones anteriores se mantendrán de todos modos.
Puede activar una o ambas de las siguientes opciones para definir la hora del check-in
automático:
Los elementos del cuadro de diálogo " Objetos compartidos" son los mismos que en el cuadro de
diálogo "Proyectar objetos" descrito anteriormente. La configuración se aplica a todos los objetos
asignados a la categoría de base de datos 'Objetos compartidos'.
Si realiza una configuración primaria, los diálogos de configuración aparecerán uno tras otro y será guiado por un
asistente (botón Siguiente). Por lo tanto, también accederá al cuadro de diálogo de configuración para las
Opciones para compilar archivos, consulte el siguiente capítulo. Los ajustes realizados en el primer cuadro de
diálogo se heredarán automáticamente a los demás. Por lo tanto, solo tienen que editarse si es necesario realizar
modificaciones.
Cancelar cerrará el cuadro de diálogo sin guardar las modificaciones realizadas en el cuadro de diálogo
abierto actualmente. Vuelve al cuadro de diálogo principal 'Opciones' 'Control de código fuente del proyecto'.
Si se ha modificado una configuración ya existente, los nuevos ajustes (para los tres diálogos) se
pueden guardar pulsando OK. Después de eso, el cuadro de diálogo se cerrará y volverá al cuadro de
diálogo principal 'Opciones' 'Control de código fuente del proyecto'.
Opciones para compilar archivos con respecto a la base de datos del proyecto
Este cuadro de diálogo forma parte de la configuración de opciones de la base de datos del proyecto ('Proyecto',
'Opciones', 'Control de código fuente del proyecto'). Aquí se define cómo se manejarán los objetos de la categoría
'Compilar archivos' en la base de datos. (Además de eso, hay otros dos diálogos disponibles para definir esto para
objetos de categoría 'Objetos de proyecto' y 'Objetos compartidos', consulte el capítulo anterior).
Cuadro de diálogo 'Compilar archivos' en la categoría Control de código fuente del proyecto
Para los campos de entrada TCP/IP-Address, Puerto, Nombre del proyecto, consulte la descripción del
cuadro de diálogo 'Objetos del proyecto/Objetos compartidos'.
Crear símbolo ASCII Si esta opción está activada, cada vez que se abra un archivo de símbolos *.sym (text
Información (.sym) *.sdb (formato binario), este archivo será
Crear información de se escribe en la base de datos automáticamente. Las entradas en el
símbolos binarios archivo de símbolos se crean como se define en la categoría de
(.sdb) opciones del proyecto 'Configuración de símbolos'.
Creación de un proyecto de arranque Si esta opción está activada, cada vez que se ejecute un proyecto de arranque
creado, este fichero se escribirá en la base de datos automáticamente.
Si está realizando una configuración primaria, los diálogos de configuración aparecerán uno tras otro, guiados por
un asistente (botón Siguiente). Los ajustes realizados en el primer cuadro de diálogo se heredarán
automáticamente a los demás. Por lo tanto, solo tienen que editarse si es necesario realizar modificaciones.
Cancelar cerrará el cuadro de diálogo sin guardar las modificaciones realizadas en el cuadro de diálogo
abierto actualmente (los ajustes realizados en los cuadros de diálogo anteriores se mantendrán de
todos modos). Vuelve al cuadro de diálogo principal 'Opciones' 'Control de código fuente del proyecto'.
Si ha modificado una configuración ya existente, los nuevos ajustes (para los tres diálogos) se pueden
guardar pulsando OK. Después de eso, el cuadro de diálogo se cerrará y volverá al cuadro de diálogo
principal 'Opciones' 'Control de código fuente del proyecto'.
El campo Menú se utiliza para definir la entrada de menú con la que aparecerá la macro en el menú
'Editar' 'Macros'. Para poder utilizar una sola letra como atajo, la letra debe ir precedida del símbolo '&'.
Ejemplo: el nombre "Ma&cro 1" genera la entrada de menú "Macro 1". Ejemplo: el nombre "Ma&cro 1"
creará un elemento de menú "Macro 1".
En el campo del editor Comandos, defina y/o edite los comandos que van a constituir la macro recién
creada o seleccionada. Todos los comandos del mecanismo por lotes de CoDeSys y todas las
palabras clave que son válidas para ellos están permitidos. Puede obtener una lista pulsando el botón
Ayuda. Se inicia una nueva línea de comandos pulsando <Ctrl><Intro>. El menú contextual con las
funciones comunes del editor de texto se obtiene pulsando el botón derecho del ratón. Los
componentes de comando que pertenecen juntos se pueden agrupar mediante comillas.
Si desea crear más macros, vuelva a realizar los pasos 1 a 3 antes de cerrar el cuadro de diálogo
pulsando el botón OK.
Si desea eliminar una macro, selecciónela en la lista de macros y presione el botón <Supr>.
Si desea cambiar el nombre de una macro, selecciónela en la lista de macros, inserte un nuevo nombre
en el campo de edición 'Nombre' y luego presione el botón Cambiar nombre.
Para editar una macro existente, selecciónela en la lista de macros y edite los campos 'Menú' y/o
'Comandos'. Las modificaciones se guardarán al pulsar el botón OK.
Tan pronto como se cierre el cuadro de diálogo pulsando el botón OK, se guardará la descripción real
de todas las macros en el proyecto.
Las entradas del menú de macros en el menú 'Editar' 'Macros' ahora se muestran en el orden en que
se definieron. Las macros no se comprueban hasta que se realiza una selección de menú.
Bibliotecas de macros:
Las macros se pueden guardar en bibliotecas de macros externas. Estas bibliotecas pueden incluirse en otros proyectos.
Creación de una biblioteca de macros que contenga las macros del proyecto abierto actualmente: Presione el botón
Crear. Aparece el cuadro de diálogo Fusionar proyecto, donde se enumeran todas las macros disponibles. Seleccione
las entradas deseadas y confirme con OK. El cuadro de diálogo de selección se cerrará y el cuadro de diálogo Guardar
macrobiblioteca se abrirá. Inserte aquí un nombre y una ruta para la nueva biblioteca y presione el botón Guardar.
'Archivo' 'Nuevo'
Símbolo:
Con este comando se crea un proyecto vacío con el nombre "Sin título". Este nombre debe cambiarse
al guardar.
'Archivo' 'Abrir'
Símbolo:
Con este comando se abre un proyecto ya existente. Si un proyecto ya ha sido abierto y cambiado,
entonces CoDeSys pregunta si este proyecto debe ser guardado o no.
Aparece el cuadro de diálogo para abrir un archivo y se debe elegir un archivo de proyecto con la
extensión "*.pro" o un archivo de biblioteca con la extensión "*.lib". Este archivo ya debe existir. No es
posible crear un proyecto con el comando "Abrir".
Cuadro de diálogo para abrir un archivo
es la inversa de la secuencia de 'En línea' 'Cargar código fuente', con la que se almacena el archivo fuente del proyecto
en el controlador. ¡No confunda con 'Crear proyecto de arranque'!)
Nota: Tenga en cuenta que, en cualquier caso, debe dar un nuevo nombre a un proyecto, cuando lo cargue desde
el PLC a su directorio local, de lo contrario no tendrá nombre. Si es compatible con el sistema de destino, se
predefinirá un 'Título' introducido en la información del proyecto como nuevo nombre de archivo del proyecto. En
este caso, al cargar el proyecto desde el PLC, se abrirá el cuadro de diálogo para guardar un archivo, donde se
ingresa automáticamente el nuevo nombre del archivo y se puede confirmar o modificar.
Inserte los datos de acceso apropiados (dirección TCP/IP, puerto, nombre de usuario, contraseña, solo
lectura) y la carpeta de la base de datos (nombre del proyecto) desde la que se deben obtener los objetos
y confirme con Next. Se cerrará el diálogo y se abrirá otro en el que se deben insertar los datos de acceso
a la categoría de base de datos 'Objetos compartidos'. Si pulsa el botón Finalizar, el cuadro de diálogo se
cerrará y los objetos de las carpetas definidas se recuperarán automáticamente y se mostrarán en el
gestor de objetos de CoDeSys. Si desea seguir manteniendo los objetos del proyecto bajo el control de la
base de datos, abra los diálogos de opciones del proyecto para establecer los parámetros deseados.
Los datos de acceso se almacenan en el archivo codesys.ini, el nombre de usuario y la contraseña, pero solo si la opción del
proyecto "Guardar credenciales ENI" (véase el Capítulo 4.2, Carga y guardado de la categoría) está activada.
'Archivo' 'Cerrar'
Con este comando, se cierra el proyecto abierto actualmente. Si el proyecto ha sido modificado,
entonces CoDeSys pregunta si estos cambios deben ser guardados o no.
Si el proyecto que se va a guardar lleva el nombre "Sin título", entonces se le debe dar un nombre (ver
'Archivo' 'Guardar como').
'Archivo' 'Guardar'
También puede guardar el proyecto actual como una biblioteca para usarlo en otros proyectos. Elija el
tipo de archivo Biblioteca interna (*.lib) si ha programado sus POU en CoDeSys.
Elija el tipo de archivo Biblioteca externa (*.lib) si desea implementar e integrar POU en otros idiomas
(por ejemplo, C). Esto significa que también se guarda otro archivo que recibe el nombre de archivo de
la biblioteca, pero con la extensión "*.h". Este archivo se construye como un archivo de encabezado C
con las declaraciones de todas las POU, tipos de datos y variables globales. Si se utilizan librerías
externas, en el modo de simulación se ejecutará la implementación, escrita para las POUs en
CoDeSys. Trabajando con el hardware real se ejecutará la implementación escrita en C.
Para guardar el proyecto como un proyecto o biblioteca cifrada, elija la opción Encrypted CoDeSys Projekt
(*.pro) o la opción CoDeSys Projekt (*.pro). Biblioteca interna cifrada (*.lib) o biblioteca externa cifrada
(*.lib). En este caso, aparece el cuadro de diálogo 'Cifrado', donde puede definir y confirmar una clave. El
proyecto posterior no se puede abrir, especialmente si no se puede usar una biblioteca sin esta clave:
Diálogo para el cifrado de un proyecto
El cifrado amplía la protección de un proyecto, que hasta ahora solo era posible mediante la asignación
de contraseñas para el acceso y la protección contra escritura. Estas posibilidades existirán más
adelante, pero no pueden evitar, por ejemplo, que se incluya una biblioteca en un proyecto sin
necesidad de introducir una contraseña de biblioteca (clave).
Una clave una vez definida se guardará con cualquier ahorro adicional del proyecto. Para modificar esa
clave, tienes que volver a utilizar el cuadro de diálogo 'Guardar como'.
Si se debe abrir un proyecto cifrado, o si se debe usar una biblioteca cifrada en un proyecto, aparecerá
el cuadro de diálogo solicitando la clave.
Cuadro de diálogo para introducir la clave
Después de haber realizado todos los ajustes, pulse OK. El proyecto actual se guardará en el archivo
indicado. Si el nuevo nombre de archivo ya existe, se le preguntará si desea sobrescribir este archivo.
Al guardar como una biblioteca, se compila todo el proyecto. Si se produce un error por este motivo, se
le indica que es necesario un proyecto correcto para crear una biblioteca. A continuación, el proyecto
no se guarda como biblioteca.
Tenga en cuenta: La función de archivo no es práctica para restaurar un entorno de proyecto. Está diseñado para
un fácil empaquetado de todos los archivos que pertenecen a un proyecto. Al descomprimir un archivo, las rutas de
los archivos particulares deben adaptarse al entorno real de CoDeSys.
Aquí puede definir qué categorías de archivos deben añadirse al archivo zip: Seleccione o anule la selección de
una categoría activando/desactivando la casilla de verificación correspondiente. Para ello, haga un solo clic del
ratón en la casilla de verificación o haga doble clic en el nombre de la categoría. Si una categoría está marcada
con , todos los archivos de esta categoría se agregarán al archivo zip, si está marcada con , no se agregará
ninguno de los archivos. Para seleccionar archivos individuales de una categoría, presione el botón
correspondiente Detalles. Se abrirá el cuadro de diálogo Detalles con una lista de archivos disponibles.
El cuadro de diálogo muestra una lista de todos los archivos que están disponibles para la categoría:
Automáticamente todos los archivos están seleccionados, una excepción es la categoría 'Archivos de destino'
donde solo se seleccionan los archivos que son relevantes para el sistema de destino establecido actualmente.
Para modificar la selección, activar o desactivar los archivos deseados. Con el botón Seleccionar todos los
archivos de la lista se seleccionan, con Seleccionar ninguno de ellos. Se puede seleccionar/deseleccionar un solo
archivo haciendo clic con el ratón en la casilla de verificación, también haciendo doble clic en la entrada de la lista o
pulsando la barra espaciadora cuando la entrada de la lista está marcada.
Cierre el cuadro de diálogo Detalles con Guardar para almacenar la nueva configuración.
En el cuadro de diálogo principal, la casilla de verificación de las categorías, para las que no se seleccionan
todos los archivos, aparecerá con un color de fondo gris . Están disponibles las siguientes categorías de
archivos, la columna derecha de la tabla muestra qué archivos se pueden agregar al archivo zip:
Categoría Dateien
Archivos de archivos utilizados para la configuración del PLC (archivos de configuración, archivos
configuración de dispositivo, iconos, etc.): por ejemplo, *.cfg, *.con, *.eds, *.dib, *.ico ....
Archivos de destino *.trg (archivos de destino en formato binario para todos los destinos instalados) *.txt (archivos
de destino para los destinos instalados en formato de texto, si están disponibles)
Proyecto de arranque Archivos de proyecto de arranque <nombre del proyecto>.prg, <nombre del
proyecto>.chk o los archivos de proyecto de arranque específicos de destino.
Para agregar cualquier otro archivo al zip, presione el botón Otros archivos. Se abrirá el cuadro de
diálogo 'Otros archivos' donde puede configurar una lista de los archivos deseados.
Pulse el botón Añadir para abrir el cuadro de diálogo estándar para abrir un archivo, donde podrá buscar un
archivo. Elija uno y confirme con Abrir. El archivo se agregará a la lista en el cuadro de diálogo 'Otros
archivos'. Repita esto para cada archivo que desee agregar. Para eliminar entradas de la lista, presione el
botón Eliminar. Cuando la lista de archivos seleccionados esté bien, cierre el cuadro de diálogo con OK.
Cuadro de diálogo para agregar otros archivos para el archivo ZIP
Para agregar un archivo Léame al archivo zip, presione el botón Comentario. Se abrirá un editor de
texto, donde puede ingresar cualquier texto. Si cierra el cuadro de diálogo con OK, durante la creación
del archivo zip se agregará un archivo readme.txt. Además de los comentarios introducidos, contendrá
información sobre la fecha de compilación y la versión de CoDeSys.
Si se han realizado todas las selecciones deseadas, en el cuadro de diálogo principal pulse
Salvar... Para crear y guardar el archivo zip: Se abrirá el cuadro de diálogo estándar para guardar un
archivo y podrá ingresar la ruta donde se debe almacenar el archivo zip. El archivo zip por defecto se
llama <projectname>.zip. Confirme con Guardar para comenzar a compilarlo. Durante la creación, se
muestra el estado de progreso actual y los pasos posteriores se enumeran en la ventana de mensajes.
También se mostrará un mensaje si no se pudo encontrar algún archivo.
Correo... para crear un archivo zip temporal y generar automáticamente un correo electrónico vacío
que contenga el archivo zip como archivo adjunto. Esta función solo funciona si la MAPI (interfaz de
programación de aplicaciones de mensajería) se ha instalado correctamente en el sistema, de lo
contrario se genera un mensaje de error. Durante la configuración del correo electrónico, se muestra el
estado de progreso y los pasos de la acción se enumeran en la ventana del mensaje. El archivo zip
temporal se eliminará automáticamente una vez finalizada la acción.
Cancelar para cancelar la acción; no se generará ningún archivo zip.
'Archivo' 'Imprimir'
Atajo: <Ctrl>+<P>
Con este comando se imprime el contenido de la ventana activa.
Una vez elegido el comando, aparece el cuadro de diálogo Imprimir. Elija la opción deseada o configure
la impresora y, a continuación, haga clic en Aceptar. Se imprime la ventana activa. La salida en color
está disponible en todos los editores.
Puede determinar el número de copias e imprimir la versión en un archivo.
Con el botón Propiedades, se abre el cuadro de diálogo para configurar la impresora.
Puede determinar el diseño de su impresión con el comando 'Archivo' 'Configuración de la impresora'.
Durante la impresión, el cuadro de diálogo muestra el número de páginas ya impresas. Al cerrar este
cuadro de diálogo, la impresión se detiene después de la página siguiente.
Para documentar todo su proyecto, utilice el comando 'Proyecto' 'Documento'.
Si desea crear un marco de documento para su proyecto, en el que pueda almacenar comentarios
sobre todas las variables utilizadas en el proyecto, abra una lista de variables globales y use el
comando 'Extras' 'Crear archivo de docuframe'.
Cuadro de diálogo Imprimir
En el campo Archivo puede introducir el nombre del archivo con la extensión ".dfr" en el que se debe
guardar el diseño de la página. El destino predeterminado de la configuración es el archivo DEFAULT. DFR.
Si desea cambiar un diseño existente, navegue por el árbol de directorios para encontrar el archivo
deseado con el botón Examinar
También puede elegir si desea comenzar una nueva página para cada objeto y para cada subobjeto.
Utilice el botón Configuración de la impresora para abrir la configuración de la impresora.
Si hace clic en el botón Editar, aparecerá el marco para configurar el diseño de la página. Aquí puede
determinar los números de página, la fecha, el nombre del archivo y el nombre de la POU, y también
colocar gráficos en la página y en el área de texto en la que se debe imprimir la documentación.
Ventana para pegar los marcadores de posición en el diseño de página
Con la opción de menú 'Insertar' 'Marcador de posición' y la posterior selección entre los cinco
marcadores de posición (Página, Nombre de POU, Nombre de archivo, Fecha y Contenido),
inserte en el diseño un llamado marcador de posición arrastrando un rectángulo en el diseño mientras
presiona el botón izquierdo del mouse. En la impresión se sustituyen de la siguiente manera:
Además, con ' Insertar' 'Mapa de bits' puede insertar un gráfico de mapa de bits (por ejemplo, el logotipo de
una empresa) en la página. Después de seleccionar el gráfico, también se debe dibujar un rectángulo aquí
en el diseño con el mouse. Se pueden insertar otros elementos de visualización (consulte Visualizaciones).
Si se cambió la plantilla, CoDeSys pregunta cuando se cierra la ventana si estos cambios deben
guardarse o no.
Sugerencia: Para conocer el formato de página que será válido para las impresiones, defina el diseño como se
describe anteriormente y active adicionalmente la opción 'Mostrar márgenes del área de impresión' en las opciones
del proyecto, categoría Escritorio.
'Archivo' 'Salir'
Atajo: <Alt>+<F4>
Con este comando se sale de CoDeSys.
Si se abre un proyecto, se cierra como se describe en 'Archivo' 'Guardar'.
'Proyecto' 'Construir'
Atajo: <F11>
El proyecto se compila usando 'Project' 'Build'. El proceso de compilación es básicamente incremental,
es decir, solo se vuelven a compilar las POU modificadas. La información necesaria sobre la última
compilación se almacena en un archivo *.ci cuando se guarda el proyecto. También se puede obtener
una compilación no incremental si primero se ejecuta el comando 'Proyecto' 'Borrar todo'.
En el caso de los sistemas de destino que admiten el cambio en línea, todas las POU que se cargarán en el controlador
en la siguiente descarga se marcan con una flecha azul en el Organizador de objetos después de la compilación.
El proceso de compilación que se lleva a cabo con 'Project' 'Build' se produce automáticamente si el
controlador ha iniciado sesión a través de 'Online' 'Log-in'.
Vea un diagrama que muestra las relaciones entre Project-Build, Project-Download, Online Change e
Login en el sistema de destino en el Capítulo 4.6, 'En línea' 'Login'.
Durante la compilación, se abre una ventana de mensaje que muestra el progreso del proceso de compilación, los
errores y advertencias que pueden ocurrir durante la compilación, así como información sobre los índices POU
utilizados y el espacio de memoria (número y porcentaje). Los errores y las advertencias están marcados con
números. Con F1 se obtiene más información sobre el error seleccionado actualmente.
Nota: Las referencias cruzadas se crean durante la compilación y se almacenan con la información de
compilación. Para poder utilizar el comando 'Mostrar árbol de llamadas', o para obtener resultados
actualizados con los comandos 'Mostrar referencia cruzada', 'Variables no utilizadas', 'Áreas de
memoria superpuestas', 'Acceso concurrente' y 'Acceso de escritura múltiple en la salida' (menú
'Proyecto' 'Verificar'), el proyecto debe reconstruirse después de cualquier cambio.
Nota: Después de haber realizado una 'Limpieza total', el inicio de sesión en el proyecto PLC solo es posible si el archivo *.ri
con la información del proyecto de la última descarga se ha renombrado o guardado fuera del directorio del proyecto (consulte
'Cargar información de descarga') y ahora se puede volver a cargar explícitamente antes de iniciar sesión.
Vea un diagrama que muestra las relaciones entre Project-Build, Project-Download, Online Change e
Login en el sistema de destino en el Capítulo 4.6, 'En línea' 'Login'.
Pero: Si el archivo *.ri en el directorio del proyecto se elimina con el comando 'Proyecto' 'Limpiar
todo', solo puede volver a cargar la información de descarga si también ha almacenado el archivo *.ri
en otro directorio. Consulte las sugerencias en el Capítulo 4.6, 'En línea' 'Iniciar sesión'.
Véase también en el Capítulo 4.6, 'En línea' 'Login' un diagrama que muestra las relaciones entre
Project-Build, Project-Download, Online Change e Login en el sistema de destino.
Si se marcan las opciones correspondientes, la información del proyecto actual se exportará como
símbolos de idioma a un archivo de traducción recién creado o se agregará a uno ya existente. Si no se
selecciona la opción correspondiente, la información que pertenezca a la categoría pertinente,
independientemente del proyecto del que provenga, se eliminará del archivo de traducción.
Textos en visualizaciones:
La opción "Textos de visualización" solo se refiere a "Texto" y "Tooltip-Text" de un elemento de visualización.
Tenga en cuenta los siguientes elementos cuando utilice un archivo de traducción para textos de visualización:
Un archivo de traducción *.tlt o *.txt solo se puede usar con CoDeSys o CoDeSys HMI, pero no con
Target-Visualization o Web-Visualization. Podría ser mejor usar un archivo de lenguaje de visualización
especial *.vis.
El cambio a otro idioma solo es posible en el modo en línea. Esto significa que los textos de visualización no
se traducirán mediante el comando 'Traducir a otro idioma'. Un cambio de idioma solo puede ocurrir en el
modo en línea si se ingresa el idioma correspondiente en el cuadro de diálogo 'Extras' 'Configuración'.
Si se debe utilizar un archivo *.tlt o *.txt para los textos de visualización ('Texto' y 'Texto para la información sobre
herramientas'), los textos deben estar entre corchetes con dos símbolos "#" en el cuadro de diálogo de
configuración del elemento de visualización (por ejemplo, #text#) para poder transferirlos al archivo de traducción.
Información de posición: Describe con las especificaciones la ruta del archivo, la POU y la línea la posición
del símbolo de idioma disponible para la traducción. Hay tres opciones disponibles para la selección:
'Todas': Se especifican todas las posiciones en las que aparece el elemento correspondiente.
El botón Excluir abre el cuadro de diálogo 'Excluir bibliotecas'. Aquí, se pueden seleccionar las
bibliotecas incluidas en el proyecto, cuya información de identificación no se transferirá al archivo de
traducción. Para ello, se selecciona con el ratón la entrada correspondiente de la tabla Bibliotecas
incluidas de la izquierda y se coloca en la tabla Bibliotecas excluidas de la derecha con el botón
Añadir . Del mismo modo, las entradas ya colocadas allí se pueden eliminar usando el botón
Eliminar . OK confirma la configuración y cierra el cuadro de diálogo.
Cuadro de diálogo para excluir información de biblioteca para el archivo de traducción
Se debe introducir un identificador de idioma en el campo del editor; No puede tener un espacio o un
carácter de diéresis (ä, ö, ü) ni al principio ni al final.
OK cierra el cuadro de diálogo "Agregar idioma de destino" y el nuevo idioma de destino aparece en la
lista de idiomas de destino.
Si se procesa un archivo de traducción existente, se eliminan las entradas de archivo de los idiomas
que aparecen en el archivo de traducción, pero no en la lista de idiomas de destino,
independientemente del proyecto a partir del cual se generaron.
A continuación se muestra un ejemplo de un párrafo de archivo de traducción que maneja el nombre de una
de las POU del proyecto. ST_Visu. Los idiomas de destino serán el inglés (EE. UU.) y el francés. En este
ejemplo, se ha añadido la información de posición del elemento del proyecto que debe traducirse:
- Antes de la traducción:
##NAME_ITEM
[D:\CoDeSys\projects\Bspdt_22.pro::ST_Visualisierung::0] ST_Visualisierung ##English :: ##TODO ##French :: ##TODO
##END_NAME_ITEM
- Después de la traducción:
El ##TODOs ha sido reemplazado por el inglés resp. Palabra francesa para 'Visualisierung':
##NAME_ITEM
[D:\CoDeSys\projects\Bspdt_22.pro::ST_Visualisierung::0] ST_Visualisierung ##English :: ST_Visualization ##French ::
ST_Visu
##END_NAME_ITEM
Por favor, compruebe que el identificador y los nombres traducidos siguen siendo válidos en relación con el
estándar y que las cadenas y los comentarios están entre corchetes correctos. Ejemplo: Para un comentario
(##COMMENT_ITEM) que se representa con "(* Kommentar 1 )" en el archivo de traducción, el "##TODO"
detrás de "##English" debe reemplazarse por un "(* comentario 1 *)". Para una cadena (##STRING_ITEM)
representada con "zeichenfolge1", el "##TODO" debe reemplazarse por "string1".
Sugerencia: Las siguientes partes de un archivo de traducción no deben modificarse sin conocimientos detallados:
Bloque de idioma, Bloque de bandera, Información de posición, Textos originales.
El proyecto actual se puede traducir a otro idioma si se utiliza un archivo de traducción adecuado.
Nota: Si desea guardar la versión del proyecto en el idioma en el que se creó originalmente, guarde una
copia del proyecto antes de la traducción con un nombre diferente. El proceso de traducción no se
puede deshacer.
Considere en este contexto la posibilidad de mostrar el proyecto en otro idioma (en esta versión de
visualización, sin embargo, no se puede editar).
En el campo Archivo de traducción, proporcione la ruta de acceso al archivo de traducción que se va a utilizar. Al
presionar Buscar, puede acceder al cuadro de diálogo de selección de archivos estándar de Windows.
El campo Idioma de destino contiene una lista de los identificadores de idioma introducidos en el
archivo de traducción, desde el que puede seleccionar el idioma de destino deseado.
OK inicia la traducción del proyecto actual al idioma de destino elegido con la ayuda del archivo de traducción
especificado. Durante la traducción, se muestra un cuadro de diálogo de progreso, así como mensajes de error, si los
hubiera. Después de la traducción, se cierran el cuadro de diálogo y todas las ventanas abiertas del editor del proyecto.
En el campo Archivo de traducción, inserte la ruta del archivo de traducción que desea utilizar. Puede recibir
asistencia mediante el cuadro de diálogo estándar para abrir un archivo que se abre con el botón Examinar.
En el campo Idioma de destino se encuentra una lista de selección que, además de la entrada "<Idioma
nativo>", también ofrece los identificadores de idioma definidos por el archivo de traducción configurado
actualmente. El idioma original es el que actualmente se guarda con el proyecto. (Solo se podía cambiar con
un 'Proyecto', 'Traducir'). Elija uno de los idiomas disponibles y confirme el diálogo con OK. A continuación,
el proyecto se mostrará en el idioma elegido, pero no se podrá editar en esta vista.
Si desea volver a ver el proyecto en su idioma original, utilice el comando 'Cambiar traducción'.
Nota: Por favor, tenga en cuenta las especialidades de los textos en las visualizaciones; véase más arriba, 'Crear archivo de traducción'.
'Alternar traducción'
Si se ha visualizado el proyecto (no editable) en otro idioma mediante el comando 'Mostrar proyecto
traducido', ahora puede cambiar entre esta versión de idioma y la versión original (editable) utilizando el
comando 'Cambiar traducción' del menú 'Proyecto' 'Traducir (a otro idioma)'.
Nota: Por favor, tenga en cuenta las especialidades de los textos en las visualizaciones; véase más arriba, 'Crear archivo de traducción'.
'Proyecto' 'Documento'
Este comando le permite imprimir la documentación de todo el proyecto.
Cuadro de diálogo para la documentación del proyecto
Para los dos últimos elementos, el proyecto debe haberse construido sin errores. Solo se imprimen las
áreas del cuadro de diálogo que están resaltadas en azul.
Si desea seleccionar todo el proyecto, seleccione el nombre del proyecto en la primera línea.
Si, por el contrario, solo desea seleccionar un solo objeto, haga clic en el objeto correspondiente o
mueva el rectángulo punteado sobre el objeto deseado con la tecla de flecha. Los objetos que tienen
un signo más delante de sus símbolos son objetos de organización que contienen otros objetos. Con
un clic en un signo más, el objeto de organización se expande, y con un clic en el signo menos
resultante, se puede volver a cerrar. Al seleccionar un objeto de organización, también se seleccionan
todos los objetos relevantes. Al presionar la tecla <Shift> puede seleccionar un grupo de objetos, y al
presionar la tecla <Ctrl> puede seleccionar varios objetos individuales.
Una vez que haya hecho su selección, haga clic en Aceptar. Aparece el cuadro de diálogo Imprimir.
Puede determinar el diseño de las páginas que se imprimirán con 'Archivo' 'Configuración de la
impresora'.
'Proyecto' 'Exportar'
Con CoDeSys los proyectos pueden ser exportados o importados. Eso le permite intercambiar
programas entre diferentes sistemas de programación IEC.
Existe un formato de intercambio estandarizado para las POU en IL, ST y SFC (el formato de
elementos comunes de IEC 1131-3). Para las POU en LD y FBD y los demás objetos, CoDeSys tiene
su propio formato de archivo, ya que no existe un formato de texto para esto en IEC 1131 3.
Los objetos seleccionados se escriben en un archivo ASCII.
Las POU, los tipos de datos, las visualizaciones y los recursos se pueden exportar. Además, las entradas en el
administrador de bibliotecas, es decir, la información de enlace a las bibliotecas, se pueden exportar (¡no las
bibliotecas en sí!).
Importante: Al volver a importar una POU FBD o LD exportada, se produce un error si un comentario en el editor
gráfico contiene una comilla simple ('), ya que esto se interpretará como el comienzo de una cadena.
Una vez que haya realizado su selección en la ventana del cuadro de diálogo (de la misma manera que
con 'Proyecto' 'Documento'), puede decidir si desea exportar las partes seleccionadas a un archivo o
exportar en archivos separados, uno para cada objeto. Active o desactive la opción Un archivo para
cada objeto y luego haga clic en Aceptar. Aparece el cuadro de diálogo para guardar archivos.
Introduzca un nombre de archivo con la expansión ".exp" o un directorio para los archivos de
exportación de objetos, que luego se guardarán allí con el nombre de archivo <objectname.exp>.
'Proyecto' 'Importar'
En el cuadro de diálogo resultante para abrir archivos, seleccione el archivo de exportación deseado.
Los datos se importan en el proyecto actual. Si ya existe un objeto con el mismo nombre en el mismo
proyecto, aparecerá un cuadro de diálogo con la pregunta "¿Desea reemplazarlo?": Si responde Sí, el
objeto del proyecto se reemplaza por el objeto del archivo de importación. Si la respuesta es No, el
nombre de los nuevos objetos recibe como complemento un subrayado y un dígito ("_0", "_1", ..). Con
Sí, todo o No, todo esto se lleva a cabo para todos los objetos.
Si la información se importa para vincularla con una biblioteca, la biblioteca se cargará y se anexará al final de la lista en
el administrador de bibliotecas. Si la biblioteca ya se cargó en el proyecto, no se volverá a cargar. Sin embargo, si el
archivo de exportación que se está importando muestra un tiempo de almacenamiento diferente para la biblioteca, el
nombre de la biblioteca se marca con un "*" en el administrador de bibliotecas (por ejemplo, standard.lib*30.3.99
11:30:14), de forma similar a la carga de un proyecto. Si no se puede encontrar la biblioteca, aparece un cuadro de
diálogo de información: "No se puede encontrar la biblioteca {<ruta>\}<nombre> <fecha> <hora>", como cuando se carga
un proyecto.
'Proyecto' 'Comparar'
Este comando se utiliza para comparar dos proyectos o para comparar la versión real de un proyecto
con la que se guardó por última vez.
Visión general:
En el modo de comparación, el proyecto real y el proyecto de referencia se presentarán en una ventana bipartita.
Los nombres de las POU, para los que se han encontrado diferencias, están marcados por colores. En el caso de
las POU del editor, también se muestra el contenido de las POU de forma vis-à-vis. Los resultados y la forma de
presentación en modo de comparación dependen de: 1. qué filtros se han activado para la ejecución de
comparación, afectando la consideración de los espacios en blanco y los comentarios durante la comparación; 2.
si la modificación dentro de líneas, redes o elementos se evalúa como una inserción completamente nueva de una
POU o no.
La versión del proyecto de referencia puede ser aceptada para diferencias simples o para diferencias
"todas igualmente marcadas". Aceptar significa que la versión del proyecto de referencia se transfiere
al proyecto real.
Tenga en cuenta: En el modo de comparación (consulte la barra de estado: COMPARAR) el proyecto no se puede editar.
Ejecutar comparación
Después de ejecutar el comando 'Proyecto' 'Comparar', se abre el cuadro de diálogo Comparación de proyectos:
Cuadro de diálogo para la comparación de proyectos
Inserte la ruta del proyecto de referencia en Proyecto para comparar. Pulse si desea utilizar el cuadro
de diálogo estándar para abrir un proyecto. Si inserta el nombre del proyecto real, la versión actual del
proyecto se comparará con la versión que se guardó en último lugar.
Si el proyecto está bajo control de código fuente en una base de datos de ENI, entonces la versión local se puede
comparar con la versión real que se encuentra en la base de datos. Para ello, active la opción Comparar con
ENI-Project.
Se pueden activar las siguientes opciones relativas a la comparación:
Ignorar espacios en blanco: No se detectarán diferencias que consistan en un número diferente de
espacios en blanco.
Ejemplo:
La línea 0005 ha sido modificada en el proyecto actual (lado izquierdo).
Ejemplo de "Oponerse a las diferencias"
Las POUs que son diferentes, están marcadas en el árbol de estructura por una sombra, un color
específico y, finalmente, por un texto adicional :
Rojo: La unidad ha sido modificada; se muestra con letras de color rojo en ambas particiones de la ventana.
Azul: Unidad solo disponible en el proyecto de comparación; se insertará un espacio en el lugar
correspondiente en la vista general de la estructura del proyecto real.
Verde: Unidad solo disponible en el proyecto real; se insertará un espacio en el lugar correspondiente
en la descripción general de la estructura del proyecto real.
Negro: Unidad para la que no se han detectado diferencias.
"(Propiedades cambiadas)": Este texto se adjunta al nombre de la POU en el árbol de estructura del
proyecto, si se han detectado diferencias en las propiedades de la POU.
Si no se trata de una POU del editor, sino de la configuración de la tarea, la configuración de destino,
etc., entonces la versión POU del proyecto real y el proyecto de referencia se pueden abrir en ventanas
separadas haciendo doble clic en la línea respectiva en la estructura del proyecto. En el caso de las
POU del proyecto, no se mostrarán más detalles de las diferencias.
'Proyecto' 'Fusionar'
Con este comando, puede combinar objetos (POU, tipos de datos, visualizaciones y recursos), así
como vínculos a bibliotecas de otros proyectos en el proyecto.
Cuando se ha dado el comando, primero aparece el cuadro de diálogo estándar para abrir archivos.
Cuando haya elegido un archivo allí, aparecerá un cuadro de diálogo en el que puede elegir el objeto
deseado. La selección se lleva a cabo como se describe con 'Proyecto' 'Documento' .
Si ya existe un objeto con el mismo nombre en el proyecto, el nombre del nuevo objeto recibe la adición
de un subrayado y un dígito ("_1", "_2" ...).
Inmediatamente cuando se invoca el comando "Búsqueda global" a través del símbolo en la barra de menús, la
búsqueda se lleva a cabo automáticamente en todas las partes del proyecto en las que se pueden realizar
búsquedas. Las cadenas de búsqueda introducidas más recientemente se pueden seleccionar a través del
cuadro combinado del campo Buscar. Si se encuentra una cadena de texto en un objeto, el objeto se carga
en el editor correspondiente o en el administrador de bibliotecas y se muestra la ubicación donde se encontró
la cadena. La visualización del texto que se encuentra, así como las funciones de búsqueda y búsqueda
siguiente se comportan de manera similar al comando 'Editar' 'Buscar'.
Si selecciona el botón En la ventana de mensajes, todas las ubicaciones en las que aparece la serie
de símbolos buscados en el objeto seleccionado se enumerarán línea por línea en forma de tabla en la
ventana de mensajes. Después, se mostrará el número de ubicaciones encontradas.
Si no se abrió la ventana del informe, se mostrará. Para cada ubicación que se encuentre, se mostrará
lo siguiente:
Nombre del objeto
Ubicación del hallazgo en la Declaración (Decl) o en la parte de Implementación (Impl) de una línea POU y
Si hace doble clic con el ratón en una línea de la ventana de mensajes o pulsa <Intro>, el editor se abre
con el objeto cargado. La línea en cuestión en el objeto está marcada. Puede saltar rápidamente entre
las líneas de visualización utilizando las teclas de función <F4> y <Mayús>+<F4>.
'Proyecto' 'Comprobar'
Este comando proporciona comandos para comprobar la corrección semántica del proyecto. Se tendrá
en cuenta el estado de la compilación más reciente. Para obtener los resultados de las
comprobaciones actualizadas, debe volver a compilar el proyecto después de cualquier cambio. Se
mostrará una advertencia apropiada en la ventana de mensajes.
Se abrirá un submenú con los siguientes comandos:
Variables no utilizadas
Áreas de memoria superpuestas
Acceso simultáneo
Acceso de escritura múltiple en la salida
Los resultados se mostrarán en la ventana de mensajes.
Tenga en cuenta: En las opciones del proyecto, categoría 'Build', puede definir estas comprobaciones semánticas
para que se realicen en cada compilación del proyecto de forma automática.
Variables no utilizadas
Esta función en el menú 'Proyecto' 'Verificar' (ver arriba) busca variables que han sido declaradas pero
que no se han utilizado en el programa. Se emiten por nombre y línea de POU, por ejemplo: PLC_PRG
(4) – var1. Las variables de las bibliotecas no se examinan.
Los resultados se muestran en la ventana de mensajes.
Acceso simultáneo
Esta función en el menú 'Proyecto' 'Verificar' (ver arriba) busca áreas de memoria de direcciones IEC a
las que se hace referencia en más de una tarea. Aquí no se hace ninguna distinción entre el acceso de
lectura y el de escritura. El resultado es, por ejemplo:
Se hace referencia a %MB28 en las siguientes tareas: Tarea1 – PLC_PRG (6): %MB28 [acceso de solo lectura]
Tarea2 – POU1. ACCIÓN (1) %MB28 [acceso de escritura]
Grupos de usuarios
En CoDeSys se pueden configurar hasta ocho grupos de usuarios con diferentes derechos de acceso a
las POU, tipos de datos, visualizaciones y recursos. Se pueden establecer derechos de acceso para
objetos individuales o para todos ellos. Solo un miembro de un determinado grupo de usuarios puede
abrir un proyecto. Un miembro de dicho grupo de usuarios debe identificarse mediante una contraseña.
Los grupos de usuarios están numerados del 0 al 7, por lo que el Grupo 0 tiene los derechos de administrador, es decir,
solo los miembros del grupo 0 pueden determinar las contraseñas y los derechos de acceso para todos los grupos y/u
objetos.
Cuando se inicia un nuevo proyecto, todas las contraseñas están inicialmente vacías. Hasta que se haya
establecido una contraseña para el grupo 0, se entra automáticamente en el proyecto como miembro del grupo 0.
Si existe una contraseña para el grupo de usuarios 0 mientras se carga el proyecto, se solicitará una contraseña
para todos los grupos cuando se abra el proyecto. Para ello, aparece el siguiente cuadro de diálogo:
Cuadro de diálogo para la introducción de la contraseña
En el cuadro combinado Grupo de usuarios en el lado izquierdo del cuadro de diálogo, ingrese el
grupo al que pertenece e ingrese en el lado derecho la contraseña correspondiente . Presione
Aceptar. Si la contraseña no coincide con la contraseña guardada, aparece el mensaje:
"La contraseña no es correcta".
Solo cuando haya ingresado la contraseña correcta, se puede abrir el proyecto.
Con el comando 'Contraseñas para grupo de usuarios' puede asignar las contraseñas, y con 'Objeto'
'Derechos de acceso' puede definir los derechos para objetos individuales o para todos ellos.
Utilice el comando 'Objeto' 'Derechos de acceso' para asignar los derechos de objetos individuales o de todos ellos.
En cuanto a la protección de un proyecto, se considera también lo siguiente:
- Contraseñas para el acceso y la protección contra escritura (Capítulo 4.2, Opciones para contraseñas)
- Cifrado de un proyecto al guardarlo (Capítulo 4.3, 'Archivo' 'Guardar como').
Definir
Obtener la última versión
Check-out
Check-in
Deshacer el check-out
Mostrar diferencias
Mostrar historial de
versiones Si está activado el comando 'Enlace a la base de datos' en el menú 'Proyecto', estarán
disponibles elementos de menú adicionales, que se refieren a todos los objetos del proyecto:
Definición múltiple
Obtener todas las versiones más recientes
Salida múltiple
Registro múltiple
Deshacer varias veces
Historial de versiones del proyecto
Versión de la etiqueta
Agregar objetos compartidos
Estado de actualización
Vea a continuación cómo se muestra el estado de un objeto o su manejo en la base de datos en el
Organizador de objetos:
Iniciar sesión
Este comando abrirá el cuadro de diálogo 'Login' donde puede introducir los datos de acceso a la base
de datos de ENI a través del servidor de ENI. Los datos de acceso también deben definirse en el
servidor ENI (ENI Admin, Gestión de usuarios) y, dependiendo de la base de datos utilizada
actualmente, también en la gestión de usuarios de la base de datos. Una vez ejecutado el comando,
primero se abrirá el cuadro de diálogo de inicio de sesión para la categoría 'Objetos del proyecto'.
Se muestran los siguientes elementos:
Objetos del proyecto:
Host: dirección del ordenador en el que se ejecuta el servidor ENI (debe coincidir con la entrada en el campo
'Dirección TCP/IP' en el cuadro de diálogo de opciones del proyecto para 'Control de código fuente del proyecto').
Proyecto: Nombre del proyecto de base de datos (debe coincidir con la entrada en el campo 'Nombre del proyecto' en
el cuadro de diálogo de opciones del proyecto para 'Control de código fuente del proyecto'/categoría 'Objetos del
proyecto').
Cuadro de diálogo 'Iniciar sesión'
Credenciales:
Inserte el nombre de usuario y la contraseña.
Cuando se activa la opción Usar por defecto para este proyecto, los datos de acceso introducidos
anteriormente se utilizarán automáticamente para cualquier comunicación posterior entre el proyecto
CoDeSys real y la base de datos relativa a objetos de la categoría real.
Presione OK para confirmar la configuración. El cuadro de diálogo se cerrará y automáticamente se abrirá el
cuadro de diálogo de inicio de sesión para 'Objetos compartidos'. Introduzca los datos de acceso de la
misma manera que se describe para los "Objetos de proyecto" y confirme con OK. Haga lo mismo en el
tercer cuadro de diálogo de inicio de sesión que se abrirá para la categoría 'Compilar archivos'.
El cuadro de diálogo de inicio de sesión siempre se abrirá tan pronto como intente acceder a la base de
datos antes de haber iniciado sesión con éxito como se describió anteriormente.
Nota: Si desea guardar los datos de acceso con el proyecto, active la opción 'Guardar credenciales ENI' en las
opciones del proyecto, categoría 'Cargar y guardar'.
Definir
Comando: 'Proyecto' 'Enlace a la base de datos' 'Definir'
Aquí se puede definir si el objeto que está marcado actualmente en el organizador de objetos debe mantenerse en
la base de datos o solo localmente en el proyecto. Se abrirá un cuadro de diálogo en el que podrá elegir una de las
dos categorías de la base de datos 'Proyecto' u 'Objetos compartidos', o la categoría 'Local'.
Los iconos de todos los objetos que se gestionan en la base de datos se mostrarán sombreados en gris
en el organizador de objetos.
Check-out
Comando: 'Proyecto' 'Enlace a la base de datos' 'Retirar'
El objeto que está marcado en el organizador de objetos será extraído de la base de datos y por eso
será bloqueado para otros usuarios.
Al ejecutar el comando, el usuario obtendrá un cuadro de diálogo 'Desproteger objeto'. Allí se puede
añadir un comentario que se almacenará en el historial de versiones del objeto en la base de datos.
Los saltos de línea se insertan mediante <Ctrl>+<Intro>. Si la versión del objeto difiere de la del
proyecto local, se mostrará un mensaje apropiado y el usuario podrá decidir si el objeto debe extraerse
de todos modos.
Una vez que el cuadro de diálogo se haya cerrado con OK, el objeto desprotegido se marcará con una
marca de verificación verde en el organizador de objetos del proyecto local. Para el resto de usuarios
aparecerá marcado con una cruz roja y no podrá ser editable por ellos.
Check-in
Comando: 'Proyecto' 'Enlace a la base de datos' 'Registrar'
El objeto que está marcado en el organizador de objetos se registrará en la base de datos. De este modo, se
creará una nueva versión del objeto en la base de datos. Las versiones anteriores se mantendrán de todos modos.
Al ejecutar el comando, el usuario obtendrá un cuadro de diálogo 'Registrar objeto'. Allí se puede
agregar un comentario que se almacenará en el historial de versiones del objeto en la base de datos.
Los saltos de línea se insertan mediante <Ctrl>+<Intro>.
Una vez que se haya cerrado el cuadro de diálogo con OK, se eliminará la marca verde delante del
nombre del objeto en el organizador de objetos.
Deshacer el check-out
Comando: 'Proyecto' 'Enlace a la base de datos' 'Deshacer desprotección'
Utilice este comando para cancelar la desprotección del objeto que está marcado actualmente en el
organizador de objetos. De este modo, también se anularán las modificaciones del objeto que se hayan
realizado localmente. No aparecerá ningún cuadro de diálogo. La última versión del objeto, sin
cambios, se mantendrá en la base de datos y volverá a ser accesible para otros usuarios. La cruz roja
delante del nombre del objeto en el organizador de objetos desaparecerá.
Mostrar diferencias
Comando: 'Proyecto' 'Enlace a la base de datos' 'Mostrar diferencias'
El objeto que está abierto por el usuario en CoDeSys se mostrará en una ventana que se divide en dos
partes. Allí, la versión local, que actualmente es editada por el usuario local, se opondrá a la última
versión (real) que se conserva en la base de datos. Las diferencias de las versiones se marcarán como
se describe para la comparación de proyectos (ver 'Proyecto' 'Comparar').
Versión: Numeración específica de la base de datos de las versiones del objeto que se han verificado una tras
otra. Las versiones etiquetadas no tienen número de versión, pero están marcadas con un icono de etiqueta.
Los botones:
Cerrar: El cuadro de diálogo se cerrará.
Visualización: La versión que está marcada actualmente en la tabla se abrirá en una ventana en CoDeSys.
La barra de título muestra: "ENI: <nombre del proyecto en la base de datos>/<nombre del objeto>
Detalles: Se abrirá el cuadro de diálogo 'Detalles del historial de versiones':
Archivo (nombre del proyecto y del objeto en la base de datos), Versión (ver arriba), Fecha (ver arriba),
Usuario (ver arriba), Comentario ( Comentario que se ha insertado cuando el objeto ha sido verificado en
resp. ha sido etiquetado). Utilice los botones Next resp. Antes de saltar a la ventana de detalles de la
entrada siguiente o anterior en la tabla en el cuadro de diálogo 'Historial de versiones de ..'.
Obtener la última versión: La versión que está marcada en la tabla se cargará en CoDeSys y allí se
sobrescribirá la versión local.
Diferencias: Si en la tabla solo se marca una versión de un objeto, este comando provocará una
comparación de esta versión con la última versión (real) de la base de datos. Si se marcan dos
versiones, se compararán. Las diferencias se muestran en una ventana bipartita como se hace en la
comparación de proyectos.
Restablecer versión: La versión que está marcada en la tabla se establecerá como la última versión.
¡Todas las versiones que se hayan registrado más tarde serán eliminadas! Esto puede ser útil para
restaurar un estado anterior de un objeto.
Solo etiquetas: Si esta opción está activada, solo se mostrarán en la tabla aquellas versiones del
objeto, que están marcadas con una etiqueta.
Cuadro de selección debajo de la opción 'Solo etiquetas': Aquí encontrará los nombres de todos los
usuarios que han ejecutado alguna acción de la base de datos para los objetos del proyecto actual.
Seleccione 'Todos' o uno de los nombres si desea obtener el historial de versiones de todos los
usuarios o solo de uno determinado.
Definición múltiple
Comando 'Proyecto' 'Enlace a la base de datos' 'Definición múltiple'
Utilice este comando si desea asignar varios objetos de un solo golpe a una determinada categoría de
base de datos. El cuadro de diálogo 'Propiedades' se abrirá como se describe para el comando
'Definir'. Elija la categoría deseada y cierre el cuadro de diálogo con OK. A continuación, se abrirá el
cuadro de diálogo 'ENI-Selection ', que enumera todas las POU del proyecto que se consideran para
la categoría elegida (Ejemplo: si elige la categoría 'objetos compartidos', la ventana de selección solo
ofrecerá las POU de la pestaña Recursos). Las POU se presentan en una estructura de árbol que
cumple con la del Organizador de Objetos. Seleccione las POU deseadas y confirme con OK.
Registro múltiple
Comando 'Proyecto' 'Enlace a la base de datos' 'Registro múltiple'
Puedes registrar varios objetos de un solo golpe. Para ello, se abrirá el cuadro de diálogo
'ENI-Selection' , que enumera todas las POU del proyecto. Seleccione los que deben registrarse y
confirme con OK. Para obtener más información, consulte el comando 'Check In'.
no se eliminarán del proyecto local. Si se llama a una versión etiquetada, que contiene objetos
compartidos, el usuario obtendrá un cuadro de diálogo en el que podrá decidir si esos objetos
compartidos también deben llamarse o no.
Versión de la etiqueta
Comando 'Proyecto' 'Enlace a la base de datos' 'Versión de etiqueta'
Este comando se utiliza para poner una "etiqueta" en la versión real de cada objeto de un proyecto, de modo que
exactamente esta versión del proyecto pueda ser recuperada más tarde. Se abrirá un cuadro de diálogo 'Etiqueta
<nombre del proyecto de la base de datos>'. Inserte un nombre de etiqueta (Etiqueta) (por ejemplo, "Versión de
lanzamiento") y, opcionalmente, un comentario. Al confirmar con OK, el diálogo se cerrará y la etiqueta y la acción
"etiquetada con <nombre de etiqueta>" aparecerán en la tabla del historial de versiones, así como en el historial de
un solo objeto como en el historial del proyecto. Los objetos compartidos que forman parte del proyecto también
obtendrán esa etiqueta. Una versión etiquetada del proyecto no obtiene un número de versión, sino que solo se
marca con un icono de etiqueta en la columna 'Versión'. Si la opción "Solo etiquetas" está activada en el cuadro de
diálogo Historial de versiones, solo se mostrarán las versiones etiquetadas.
Cuadro de diálogo 'Etiquetar proyecto <nombre del proyecto de base de datos>'
Por lo tanto, ejecute el comando 'Agregar objetos compartidos' para abrir el cuadro de diálogo 'Examinar ENI'. Una
lista en la parte derecha de la ventana muestra todos los objetos que están disponibles en la carpeta de la base de
datos que está seleccionada actualmente en la lista del lado izquierdo. Elija el objeto deseado y presione OK o
haga doble clic en la entrada para insertar el objeto en el proyecto CoDeSys actualmente abierto.
Estado de actualización
Comando 'Proyecto' 'Enlace a la base de datos' 'Actualizar estado'
Utilice este comando para actualizar la visualización en el Organizador de objetos, de modo que pueda
ver el estado real de los objetos relacionados con el control de código fuente del proyecto.
Con Drag&Drop puede mover los objetos, así como las carpetas dentro de su tipo de objeto. Para ello,
seleccione el objeto y arrástrelo con el botón izquierdo del ratón pulsado a la posición deseada.
Puede crear más carpetas con el comando 'Nueva carpeta'.
Nota: Las carpetas no tienen ninguna influencia en el programa, sino que solo sirven para estructurar su proyecto de manera clara.
'Nueva carpeta'
Con este comando se inserta una nueva carpeta como objeto estructural. Si se ha seleccionado una
carpeta, se crea la nueva debajo de ella. De lo contrario, se crea en el mismo nivel. Si se selecciona
una acción, la nueva carpeta se insertará en el nivel de la POU a la que pertenece la acción.
El menú contextual del Organizador de objetos que contiene este comando aparece cuando se ha
seleccionado un objeto o el tipo de objeto y se ha pulsado el botón derecho del ratón o <Mayús>+<F10>.
La carpeta recién insertada tiene inicialmente la designación 'Nueva carpeta'. Tenga en cuenta la
siguiente convención de nomenclatura para las carpetas:
Las carpetas del mismo nivel en la jerarquía deben tener nombres distintos. Las carpetas de diferentes
niveles pueden tener el mismo nombre.
Una carpeta no puede tener el mismo nombre que un objeto ubicado en el mismo nivel.
Si ya hay una carpeta con el nombre "Nueva carpeta" en el mismo nivel, cada carpeta adicional con
este nombre recibe automáticamente un número de serie adjunto (por ejemplo, "Nueva carpeta 1"). No
es posible cambiar el nombre a un nombre que ya esté en uso.
Introduzca el nombre de la nueva POU en el cuadro de diálogo que aparece. Recuerde que es posible
que el nombre del objeto no se haya utilizado ya.
Tenga en cuenta las siguientes restricciones:
El nombre de una POU no puede incluir ningún espacio
A POU no puede tener el mismo nombre que otra POU, un tipo de datos y no debe tener el mismo que
una visualización para evitar problemas con los cambios de visualización.
A tipo de datos no puede recibir el mismo nombre que otro tipo de datos o una POU.
A lista de variables globales no puede tener el mismo nombre que otra lista de variables globales.
Una acción no puede tener el mismo nombre que otra acción en la misma POU.
A visualización no puede tener el mismo nombre que otra visualización y no debe tener el mismo
nombre que una POU para evitar problemas con los cambios de visualización.
En todos los demás casos, se permite una nomenclatura idéntica. Así, por ejemplo, las acciones que pertenecen a
diferentes POU pueden tener el mismo nombre, y una visualización puede tener lo mismo que una POU.
En el caso de una POU, también se debe seleccionar el tipo de POU (programa, función o bloque de
funciones) y el idioma en el que está programada. 'Program' es el valor predeterminado de Tipo de la POU,
mientras que el de Idioma de la POU es el de la POU creada más recientemente. Si se crea una POU del
tipo de función, se debe introducir el tipo de datos deseado en el campo de entrada de texto Tipo de
retorno . Aquí se permiten todos los tipos de datos elementales y definidos (matrices, estructuras,
enumeraciones, alias). Se puede utilizar la asistencia de entrada (por ejemplo, a través de <F2>).
Después de pulsar OK, lo que solo es posible si no hay conflicto con las convenciones de nomenclatura descritas
anteriormente, el nuevo objeto se configura en el Organizador de objetos y aparece la ventana de entrada correspondiente.
Si se utiliza el comando 'Editar' ' Insertar', se inserta el objeto que se encuentra actualmente en el
portapapeles y no aparece ningún cuadro de diálogo. Si el nombre del objeto insertado entra en
conflicto con las convenciones de nomenclatura (véase más arriba), se hace único mediante la adición
de un número de serie añadido con un carácter de subrayado inicial (por ejemplo, "Rightturnsig_1").
Si el proyecto está bajo control de código fuente en una base de datos de ENI, puede ser (dependiendo
de la configuración en el cuadro de diálogo de opciones del proyecto para 'Control de código fuente del
proyecto') que se le pregunte automáticamente en qué categoría de base de datos desea manejar el
nuevo objeto. En este caso, se abrirá el cuadro de diálogo 'Propiedades', donde puede asignar el
objeto a una de las categorías de objetos de la base de datos.
'Guardar como plantilla'
Los objetos de tipo 'Variables globales', 'Tipos de datos', 'Función', 'Bloque de funciones' o 'Programa'
se pueden guardar como plantillas. Seleccione el objeto en el Organizador de objetos y elija el
comando 'Guardar como plantilla' en el menú contextual (botón derecho del ratón). A partir de ahora,
cada objeto nuevo del mismo tipo obtendrá automáticamente la parte de declaración de la plantilla. Se
utilizará la última plantilla creada para un tipo de objeto.
Considere la siguiente posibilidad: Una POU que ha sido creada en el FBD-Editor, puede - usando
el comando 'Extras' 'Ver' ser mostrada y editada en el KOP-Editor también sin ninguna conversión.
el Organizador de objetos, escriba la primera letra del nombre del objeto. Esto abrirá un cuadro de diálogo en
el que se muestran todos los objetos de los tipos de objetos disponibles que tienen esta letra inicial. Las
acciones se enumeran con la notación <POU name>.<action name>. Debido al hecho de que los objetos en
el cuadro de diálogo de selección de objetos se enumeran alfabéticamente, las acciones de una POU
siempre se colocan debajo de esta POU. Seleccione el objeto deseado y haga clic en el botón Abrir para
cargar el objeto en su ventana de edición. A partir de ahora, el objeto también se marca en el organizador de
objetos y se expandirán todas las carpetas que se colocan jerárquicamente sobre el objeto. Esta opción es
compatible con el tipo de objeto Resources solo para variables globales.
Visualización:
En la pestaña 'Visualización' se puede definir para el objeto de visualización (ver el Manual de Usuario
de Visualización de CoDeSys), cómo se debe utilizar:
Úselo como: Si en la configuración de destino está activada la opción 'Visualización web' o
'Visualización de destino', puede elegir aquí si el objeto debe formar parte de la visualización web o
Visualización de destino.
Se utiliza como: Active uno de estos ajustes que se refieren a la posibilidad de utilizar "Diseños maestros":
Visualización: El objeto se utiliza como una visualización normal.
Visualización sin diseño maestro:: Si se define un diseño maestro en el proyecto, no se
aplicará a este objeto de visualización.
Diseño maestro: El objeto se utilizará como diseño maestro. De forma predeterminada, el diseño
maestro siempre estará en primer plano de una visualización, excepto que se active la opción como
fondo.
Los miembros del grupo de usuarios 0 ahora pueden asignar derechos de acceso individuales para
cada grupo de usuarios. Hay tres configuraciones posibles:
Sin acceso: el objeto no puede ser abierto por un miembro del grupo de usuarios.
Acceso de lectura: el objeto puede abrirse para que lo lea un miembro del grupo de usuarios, pero no se puede cambiar.
Acceso completo: el objeto puede ser abierto y modificado por un miembro del grupo de usuarios.
La configuración hace referencia al objeto seleccionado actualmente en el Organizador de objetos o, si se
elige la opción Aplicar a todos, a todas las POU, tipos de datos, visualizaciones y recursos del proyecto.
La asignación a un grupo de usuarios se realiza al abrir el proyecto a través de una solicitud de
contraseña si se asignó una contraseña al grupo de usuarios 0.
Por favor, tenga en cuenta también la posibilidad de asignar derechos de acceso relacionados con el
funcionamiento de los elementos de visualización (Visualización, Seguridad).
Por favor, tenga en cuenta: Si desea ver instancias, primero debe iniciar sesión. (El proyecto se ha compilado sin
errores y se ha descargado en el PLC con 'Online' 'Login').
Al seleccionar una línea de la lista de referencias cruzadas y pulsar el botón Ir a o hacer doble clic en la
línea, la POU se muestra en su editor en el punto correspondiente. De esta manera, puede saltar a
todos los puntos de aplicación sin una búsqueda que requiere mucho tiempo.
Para facilitar el procesamiento, puede utilizar el botón Enviar a la ventana de mensajes para llevar la
lista de referencias cruzadas actual a la ventana de mensajes y desde allí cambiar a la POU respectiva.
Cuadro de diálogo y ejemplo de una lista de referencias cruzadas
Llamada directa de una lista de referencias cruzadas de un editor de POU o de una lista de seguimiento:
La lista de referencias cruzadas se puede generar directamente desde el editor (ST, FUP, KOP, AWL, CFC,
AS), que se utiliza para trabajar en una POU, o fuera de una lista de observación. En este caso, tanto en el
modo en línea como en el modo fuera de línea, el comando Mostrar referencias cruzadas está disponible en
el menú contextual o "Extras", cuando se selecciona una variable en el editor o en la lista de observación.
Nota: Los comandos Deshacer y Rehacer se aplican a la ventana actual. Cada ventana tiene su propia lista de
acciones. Si desea deshacer acciones en varias ventanas, debe activar la ventana correspondiente. Al deshacer o
rehacer en el Organizador de objetos, el foco debe estar aquí.
'Editar' 'Rehacer'
Atajo: <Ctrl>+<Y>
Con el comando en la ventana del editor actualmente abierta o en el Organizador de objetos, puede
restaurar una acción que haya deshecho ('Editar', 'Deshacer').
Siempre que haya ejecutado previamente el comando 'Deshacer', también puede llevar a cabo el comando
'Rehacer'.
Nota: Los comandos 'Deshacer' y 'Rehacer' se aplican a la ventana actual. Cada ventana tiene su propia lista de
acciones. Si desea deshacer acciones en varias ventanas, debe activar la ventana correspondiente. Al deshacer o
rehacer en el Administrador de objetos debe permanecer allí.
'Editar' 'Cortar'
En el editor SFC, la selección forma parte de una serie de pasos rodeados por un rectángulo punteado.
Para pegar el contenido del portapapeles, utilice el comando 'Editar' 'Pegar'. En el editor SFC también
puedes usar los comandos 'Extras', 'Insertar rama paralela (derecha)' o 'Extras', 'Pegar después'. Para
copiar una selección en el portapapeles sin borrarla, utilice el comando 'Editar' 'Copiar'.
Para eliminar un área seleccionada sin cambiar el portapapeles, use el comando 'Editar' 'Eliminar'.
'Editar' 'Copiar'
'Editar' 'Pegar'
En SFC se pueden utilizar los comandos 'Extras', 'Insertar rama paralela (derecha)' o 'Extras', 'Pegar
después' para insertar el contenido del portapapeles.
Para copiar una selección en el portapapeles sin borrarla, utilice el comando 'Editar' 'Copiar'.
Para eliminar un área seleccionada sin cambiar el portapapeles, use el comando 'Editar' 'Eliminar'.
'Editar' 'Eliminar'
Atajo: <Supr>
Elimina el área seleccionada de la ventana del editor. Esto no cambia el contenido del portapapeles.
En el organizador de objetos, esto también se aplica al objeto seleccionado, por lo que no se pueden
eliminar todos los objetos, por ejemplo, la configuración del PLC.
Para el tipo de selección, se aplican las mismas reglas que con 'Editar', 'Cortar'.
La forma de la selección depende del editor respectivo:
En los editores de texto (IL, ST y declaraciones) la selección es una lista de caracteres.
En los editores FBD y LD, la selección es una serie de redes que se resaltan con un rectángulo
punteado en el campo de número de red.
En el editor SFC, la selección forma parte de una serie de pasos rodeados por un rectángulo punteado.
En el administrador de bibliotecas, la selección es el nombre de la biblioteca seleccionada actualmente.
Para eliminar un área seleccionada y ponerla simultáneamente en el portapapeles, use el comando
'Editar' 'Cortar'.
'Editar' 'Buscar'
Símbolo:
Con este comando se busca un determinado pasaje de texto en la ventana del editor actual. Se abre el
cuadro de diálogo Buscar. Permanece abierto hasta que se pulsa el botón Cancelar.
En el campo Encuentra lo que puedes introducir la serie de personajes que buscas.
Además, puede decidir si el texto que está buscando coincide solo con la palabra completa o no, o también si se
debe considerar el caso de coincidencia, y si la búsqueda debe continuar hacia arriba o hacia abajo
a partir de la posición actual del cursor.
El botón Buscar siguiente inicia la búsqueda, que comienza en la posición seleccionada y continúa
en la dirección de búsqueda elegida. Si se encuentra el pasaje de texto, se resalta. Si no se encuentra
el pasaje, entonces un mensaje lo anuncia. La búsqueda se puede repetir varias veces seguidas hasta
que se haya alcanzado el principio o el final del contenido de la ventana del editor. En el editor CFC se
tendrá en cuenta el orden geométrico de los elementos, la búsqueda se ejecutará desde la esquina
superior izquierda de la ventana hasta la esquina superior derecha. ¡Tenga en cuenta que las POU
FBD se procesan de derecha a izquierda!
Cuadro de diálogo Buscar
'Editar' 'Reemplazar'
Con este comando, busca un determinado pasaje al igual que con el comando 'Editar', 'Buscar', y lo
reemplaza por otro. Después de seleccionar el comando, aparece la ventana de diálogo para buscar y
reemplazar. Este cuadro de diálogo permanece abierto hasta que se pulsa el botón Cancelar o
Cerrar.
En el campo detrás de Buscar automáticamente se insertará esa cadena que ha marcado antes en el
editor. También puede introducir la cadena de búsqueda manualmente. Al presionar el botón
Reemplazar , se reemplazará la selección actual con la cadena que se indica en el campo
Reemplazar con. Utilice el botón Buscar siguiente para llegar al siguiente pasaje donde se encuentra
la cadena. ¡Tenga en cuenta que las POU FBD se procesan de derecha a izquierda!
El botón Reemplazar todo reemplaza todas las apariciones del texto en el campo Buscar siguiente
después de la posición actual con el texto en el campo Reemplazar con. Al final del procedimiento, un
mensaje anuncia cuántos reemplazos se realizaron.
Las categorías ofrecidas dependen de la posición actual del cursor en la ventana del editor, es decir, de
lo que se puede introducir en este punto (por ejemplo, variables, operadores, POU, conversiones, etc.).
Si la opción Con argumentos está activa, cuando se inserta el elemento seleccionado, se especifican
con él los argumentos a transferir, por ejemplo: bloque de funciones fu1 seleccionado, que define la
variable de entrada var_in: fu1(var_in:=);
Inserción de la función func1, que utiliza var1 y var2 como parámetros de transferencia: func1(var1,var2)
Básicamente, es posible cambiar entre la visualización estructurada y no estructurada de los elementos
disponibles. Esto ocurre a través de la activación/desactivación de la opción de visualización
estructurada .
Nota: Para insertar identificadores, también puede utilizar la "funcionalidad IntelliSense".
Pantalla no estructurada
En la parte izquierda de la ventana siempre se enumeran las categorías de elementos que son relevantes para la
posición actual de la inserción. por ejemplo, operadores ST, variables locales, variables globales, programas
estándar, programas definidos, expresiones de observación, etc. En la parte derecha de la ventana, los elementos
de la categoría seleccionada se enumeran simplemente ordenados linealmente en orden alfabético.
En varios lugares (por ejemplo, en la lista de observación), se requieren nombres de variables de varias etapas.
En ese caso, el asistente de entrada muestra las variables disponibles con un nombre POU precedido, o en el
caso de variables estructuradas e instancias de bloque de funciones, adicionalmente con el nombre FB o el
nombre del tipo de datos. Ejemplos: PLC_PRG.ivar, PLC_PRG. Estructura1.Componente1.
Pantalla estructurada
Si se selecciona Visualización estructurada, las POU, las variables o los tipos de datos se ordenarán
jerárquicamente. Esto es posible para programas estándar, funciones estándar, bloques de función estándar,
programas definidos, funciones definidas, bloques de función definidos, variables globales, variables locales,
tipos definidos, variables de observación. La visualización visual y jerárquica corresponde a la del
Organizador de Objetos; si se hace referencia a los elementos de una biblioteca, estos se insertan en orden
alfabético en la parte superior y se muestra la jerarquía pertinente como en el Administrador de bibliotecas.
Las variables de entrada y salida de los bloques de función que se declaran como variables locales o globales
se enumeran en la categoría 'Variables locales' o 'Variables globales' bajo el nombre de la instancia (por ejemplo,
Inst_TP ET, Inst_TP IN,...). Para llegar allí, seleccione el nombre de la instancia (por ejemplo, Inst_TP) y confirme
con OK.
Si aquí se selecciona la instancia de un bloque de función, se puede seleccionar la opción Con
argumentos . En los lenguajes de texto ST e IL, así como durante la configuración de tareas, se
insertan el nombre de instancia y los parámetros de entrada del bloque de funciones.
Por ejemplo, si se selecciona Inst (DeklarationInst: TON;), se inserta lo siguiente:
Inst(IN:= ,PT:=)
Si no se selecciona la opción, solo se insertará el nombre de la instancia. En los lenguajes gráficos o
en la ventana Inspección, generalmente solo se inserta el nombre de la instancia.
Los componentes de las estructuras se muestran de forma analógica a las instancias de bloques de funciones.
En el caso de las enumeraciones, los valores de enumeración individuales se enumeran en el tipo de enumeración. El
orden es: enumeraciones de bibliotecas, enumeraciones de tipos de datos, enumeraciones locales de POU.
La regla general es que las líneas que contienen subobjetos no son seleccionables (excepto instancias,
ver arriba), sino que solo pueden tener su visualización de jerarquía expandida o contraída en un nivel,
como para los nombres de variables de varias etapas.
Si se invoca el Asistente de entrada en el Administrador de Relojes y Recetas o en la selección de variables de
rastreo en el cuadro de diálogo de configuración de rastreo, es posible realizar una selección múltiple. Cuando se
presiona la tecla <Shift>, puede seleccionar un rango de variables; cuando se presiona la tecla <Ctrl> puede
seleccionar muchas variables individuales. Las variables seleccionadas están marcadas de esta manera. Si,
durante la selección de rangos, se seleccionan líneas que no contienen variables válidas (por ejemplo, nombres de
POU), estas líneas no se incluirán en la selección. Cuando se realizan selecciones individuales, estas líneas no se
pueden marcar.
En la ventana de inspección y en la configuración de trazado es posible transferir estructuras,
matrices o instancias desde el cuadro de diálogo Asistente de entrada. Dado que un doble clic con el
botón del ratón está asociado a la extensión o contracción de la visualización de la jerarquía del
elemento, la selección en estos casos solo puede ser confirmada por OK.
A partir de entonces, las variables seleccionadas se insertan línea por línea en la ventana de inspección, es
decir, cada variable seleccionada se escribe en una línea separada. En el caso de las variables de
seguimiento, cada variable se inserta en una línea separada de la lista de variables de seguimiento.
Si se supera el número máximo de variables de seguimiento, 20, durante la inserción de las variables
seleccionadas, aparece el mensaje de error "Se permite un máximo de 20 variables". A continuación,
las demás variables seleccionadas no se insertan en la lista.
Puede cambiar a la visualización no estructurada desactivando la opción Estructurado.
Nota: Algunas entradas (por ejemplo, Variables globales) solo se actualizan en el cuadro de diálogo Asistente de entrada después de la compilación.
'Editar' 'Autodeclarar'
Atajo: <Mayús>+<F2>
Este comando abre el cuadro de diálogo para la declaración de una variable. Este cuadro de diálogo
también se abre automáticamente cuando se activa la opción 'Proyecto', 'Opciones', 'Editor',
'Autodeclaración' y, cuando se utiliza una nueva variable indefinida, el editor de declaraciones.
'Editar' 'Macros'
Este elemento de menú conduce a una lista de todas las macros definidas para el proyecto. (Para obtener
información sobre la generación de macros, consulte 'Proyecto', 'Opciones', 'Macros'). Cuando se selecciona
una macro ejecutable, se abrirá el cuadro de diálogo 'Procesar macro'. Se muestra el nombre de la macro y la
línea de comandos actualmente activa. El botón Cancelar se puede utilizar para detener el procesamiento de
la macro. En ese caso, el procesamiento del comando actual finalizará de todos modos. A continuación, se
muestra un mensaje apropiado en la ventana de mensajes y en el registro durante la operación en línea:
"<Macro>: Ejecución interrumpida por el usuario".
Las macros se pueden ejecutar en línea y fuera de línea, pero en cada caso solo se ejecutan los
comandos que están disponibles en el modo respectivo.
Si en las opciones del proyecto, categoría Escritorio, está activada la opción 'En línea en modo de
seguridad' y si el sistema de destino admite la funcionalidad, en el cuadro de diálogo Inicio de sesión
automáticamente también se mostrará la información del proyecto. Esta es la información del proyecto
que está actualmente abierto en CoDeSys y que ya está disponible en el controlador. A través del
botón Detalles << puede cerrar esta parte de información del cuadro de diálogo.
Si la opción "En línea en modo de seguridad" no está activada, puede abrir explícitamente la
visualización de información del proyecto en el cuadro de diálogo mediante el botón Detalles >>.
Tenga en cuenta que depende del objetivo qué botón se establece como botón predeterminado.
Después de un inicio de sesión exitoso, todas las funciones en línea están disponibles (si se han
ingresado los ajustes correspondientes en 'Proyecto', 'Opciones', categoría 'Construir'). Los valores
actuales se supervisan para todas las declaraciones de variables visibles.
Utilice el comando 'En línea' 'Cerrar sesión' para cambiar del modo en línea al modo fuera de línea.
(1) Carga e inicio del proyecto en PLC1, guardando la información de descarga para PLC1:
1. Conecte el proj.pro de proyecto CoDeSys al controlador PLC1 (parámetros en línea/comunicación) y cargue
proj.pro en el PLC1 (en línea /inicio de sesión, descarga). En el momento de la descarga se creará el archivo
proj00000001.ri en el directorio de proyectos, que contiene la información de descarga.
2. Cambie el nombre de proj00000001.ri, por ejemplo, a proj00000001_PLC1.ri. Este guardado del archivo con
otro nombre de archivo es necesario porque en una nueva descarga de proj.pro el archivo proj00000001.ri en
otro PLC se sobrescribiría con nueva información de descarga y, por lo tanto, se perdería la información
perteneciente a la descarga en PLC1.
3. Inicie el proyecto en PLC1 y, a continuación, cierre la sesión ('En línea', 'Inicio', 'En línea', 'Cerrar sesión'.
(2) Carga e inicio del proyecto en PLC2, guardando la información de descarga para PLC2:
1. Ahora conéctese al controlador PLC2 (usando el mismo destino que PLC1) y descargue proj.pro en PLC2.
Por lo tanto, nuevamente se creará un archivo proj00000001.ri en el directorio de proyectos, que ahora
contiene la información sobre la descarga realizada actualmente.
2. Cambie el nombre del nuevo proj00000001.ri, por ejemplo, a proj00000001_PLC2.ri para almacenarlo explícitamente.
3. Inicie el proyecto en PLC2 y cierre la sesión ('En línea', 'Inicio', 'En línea', 'Cerrar sesión').
(4) Cambio en línea en PLC1, almacenamiento de la información de descarga nuevamente para PLC1:
2. Para hacer posible el cambio en línea para proj.pro en PLC1, primero se debe restaurar la información de
descarga referente a la descarga de proj.pro en PLC1. Al iniciar sesión, CoDeSys está buscando un archivo
proj00000001.ri. Pero ha almacenado la información de descarga adecuada en el archivo
proj00000001_PLC1.ri. Ahora tienes 2 posibilidades:
(a) Puede cambiar el nombre de proj00000001_PLC1.ri nuevamente a proj00000001.ri. Por lo tanto, al iniciar
sesión en PLC1, automáticamente está disponible la información de descarga adecuada y CoDeSys le
preguntará si desea realizar un cambio en línea.
(b) Alternativamente, puede cargar explícitamente el archivo proj00000001_PLC1.ri mediante el comando
'Proyecto' 'Cargar descarga- Información', antes de iniciar sesión. Por lo tanto, no es necesario cambiar el
nombre del archivo ri y, sin embargo, hacer posible un cambio en línea.
3. En el cambio en línea en PLC1 se ha creado una versión actualizada del archivo proj00000001.ri, que contiene
la información de descarga actual. Guarde este archivo de nuevo como se describe en (4), para mantenerlo
disponible para un nuevo cambio en línea en PLC1.
(5) Cambio en línea en PLC2, almacenamiento de la información de descarga nuevamente para PLC2:
Para hacer posible un cambio en línea con respecto a las modificaciones en proj.pro realizadas en (3) también en
PLC2, realice los pasos correspondientes para proj00000001_PLC2.ri como se describe en el paso (4).
(6) Cada cambio en línea adicional después de una modificación del proyecto: Realice los pasos (3) a (5)
Si el sistema informa
Error:
"El perfil de controlador seleccionado no coincide con el del sistema de destino..."
Compruebe que el sistema de destino introducido en la configuración del sistema de destino
(Recursos) coincide con los parámetros introducidos en 'En línea' 'Parámetros de comunicación'.
Error:
"Error de comunicación. Se ha cerrado la sesión"
Compruebe si el controlador está funcionando. Compruebe si los parámetros introducidos en "En línea"
"Parámetros de comunicación" coinciden con los de su controlador. En particular, debe comprobar si se ha
introducido el puerto correcto y si las velocidades de transmisión en el controlador y el sistema de programación
coinciden. Si se utiliza el servidor de puerta de enlace, compruebe si se ha configurado el canal correcto.
Error:
"¡El programa ha sido modificado! ¿Debería cargarse el nuevo programa?"
El proyecto que está abierto en el editor es incompatible con el programa que se encuentra
actualmente en el PLC (o con el programa Modo de simulación que se está ejecutando). Por lo tanto,
no es posible supervisar ni depurar. Puede elegir "No", cerrar la sesión y abrir el proyecto correcto, o
usar "Sí" para cargar el proyecto actual en el PLC.
Mensaje:
"El programa ha cambiado. ¿Cambios de carga? (CAMBIO ONLINE)".
El proyecto se está ejecutando en el controlador. El sistema de destino es compatible con el "Cambio
en línea" y el proyecto se ha modificado en el controlador con respecto a la descarga más reciente o el
cambio en línea más reciente. Ahora puede decidir si estos cambios deben cargarse con el programa
del controlador en ejecución o si el comando debe cancelarse. Sin embargo, también puede cargar
todo el código compilado seleccionando el botón Cargar todo.
La conexión con el PLC se interrumpe o el programa del modo de simulación finaliza y se cambia al
modo fuera de línea.
Utilice el comando 'En línea' 'Iniciar sesión' para cambiar al modo en línea.
Este comando se puede ejecutar inmediatamente después del comando 'Online' 'Download', o después
de que el programa de usuario en el PLC haya finalizado con el comando 'Stop' 'Online', o cuando el
programa de usuario se encuentra en un punto de interrupción, o cuando se ha ejecutado el comando
'Online' 'Single Cycle'.
'En línea' 'Stop'
Para establecer o eliminar puntos de interrupción, también puede usar el comando 'En línea' 'Alternar punto de interrupción'.
En el caso de las variables booleanas, el valor se alterna (se cambia entre TRUE y FALSE, sin que se permita ningún
otro valor) haciendo doble clic en la línea en la que se declara la variable; No aparece ningún cuadro de diálogo.
El valor establecido para Escritura se muestra entre paréntesis y en color turquesa detrás del valor
anterior de la variable. Por ejemplo, a = 0 <: = 34>.
Sugerencia: Excepción: En el editor FBD y LD, el valor se muestra en color turquesa sin corchetes junto al nombre
de la variable.
Los valores que se van a escribir y que se han notado previamente se guardan en una lista de
escritura (Watch list), donde permanecen hasta que se escriben, se borran o se transfieren a una lista
de fuerza mediante el comando 'Forzar valores'.
El comando para escribir valores se puede encontrar en dos lugares:
• Comando 'Escribir valores' en el menú 'En línea'.
• Botón 'Escribir valores' en el cuadro de diálogo 'Editar la lista de escritura y la lista de fuerza'.
Cuando se ejecuta el comando 'Escribir valores', todos los valores contenidos en la lista de escritura se
escriben, una sola vez, en las variables apropiadas en el controlador al comienzo del ciclo, y luego se
eliminan de la lista de escritura. (Si se ejecuta el comando 'Forzar valores', las variables en cuestión
también se eliminan de la lista de escritura y se transfieren a la lista de fuerzas).
Nota: En el lenguaje de gráficos de funciones secuenciales (SFC), los valores individuales a partir de los cuales se
ensambla una expresión de transición no se pueden cambiar con 'Valores de escritura'. Esto se debe al hecho de
que en el monitoreo del 'Valor total' de la expresión, no se muestran los valores de las variables individuales (por
ejemplo, "a Y b" solo se muestra como VERDADERO si ambas variables tienen realmente el valor VERDADERO).
En FBD, por otro lado, solo se supervisa la primera variable de una expresión, utilizada, por ejemplo, como entrada
a un bloque de funciones. Por lo tanto, un comando 'Escribir valores' solo es posible para esta variable.
Nota: La lista de fuerza se crea en el primer forzamiento de las variables contenidas en la lista de escritura,
mientras que la lista de escritura existía antes de la primera escritura de las variables que contiene.
El comando para forzar una variable, lo que significa que se ingresará en la lista de fuerzas, se puede
encontrar en los siguientes lugares:
• Comando 'Forzar valores' en el menú 'En línea'.
• Botón 'Forzar valores' en el cuadro de diálogo 'Editar la lista de escritura y la lista de fuerza'.
Nota: En el lenguaje de gráficos de funciones secuenciales, los valores individuales a partir de los cuales se
ensambla una expresión de transición no se pueden cambiar con 'Forzar valores'. Esto se debe al hecho de que en
el monitoreo del 'Valor total' de la expresión, no se muestran los valores de las variables individuales (por ejemplo,
"a Y b" solo se muestra como VERDADERO si ambas variables tienen realmente el valor VERDADERO).
En FBD, por otro lado, solo se supervisa la primera variable de una expresión, utilizada, por ejemplo, como
entrada a un bloque de funciones. Por lo tanto, un comando 'Forzar valores' solo es posible para esta variable.
Para liberar la fuerza solo para variables individuales, primero debe marcar estas variables. Haga
esto de una manera que se describe a continuación. Después de eso, las variables elegidas se marcan
con una extensión turquesa <Release Force>:
Un doble clic del ratón en una línea, en la que se declara una variable no booleana, abre el cuadro de
diálogo 'Escribir variable <x>'. Presione el botón <Liberar fuerza para esta variable> .
Repita los dos clics del ratón en una línea en la que se declara que una variable booleana se alterna en
la pantalla <Fuerza de liberación> al final de la línea.
En el menú 'En línea', abra el diálogo Escribir/Forzar y elimine el valor en el campo de edición de la
columna 'Valor forzado'.
Cuando en la ventana de declaración se muestra para todas las variables deseadas el ajuste "<Liberar fuerza>",
seleccione el comando "Forzar valores" para transferir las modificaciones de la lista de fuerza al programa.
Si la lista de escritura actual (ver 'En línea' 'Valores de escritura') no está vacía mientras ejecuta el
comando 'Release Force', se abrirá el cuadro de diálogo 'Eliminar lista de escritura/fuerza'. Allí, el
usuario tiene que decidir si solo quiere liberar la fuerza o si adicionalmente quiere eliminar la lista de
escritura o si quiere eliminar ambas listas.
Cuadro de diálogo para eliminar listas de escritura/fuerza
Las variables llegan a la lista de observación a través de los comandos 'Online', 'Write Values' y se
transfieren a la lista de fuerza mediante el comando 'Online', 'Force Values'. Los valores se pueden
editar aquí en las columnas "Valor preparado" o "Valor forzado" haciendo clic con el ratón en una
entrada para abrir un campo de editor. Si la entrada no es coherente con el tipo, se muestra un
mensaje de error. Si se elimina un valor, significa que la entrada se elimina de la lista de escritura o que
la variable se notifica para la suspensión de forzar tan pronto como se cierra el cuadro de diálogo con
cualquier otro comando que no sea Cancelar.
Los siguientes comandos, correspondientes a los del menú Online, están disponibles a través de botones:
Valores forzados: Todas las entradas de la lista de escritura actual se transfieren a la lista de fuerza,
es decir, se fuerzan los valores de las variables en el controlador. Todas las variables marcadas con
'Fuerza de liberación' ya no son forzadas. A continuación, se cierra el cuadro de diálogo.
Valores de escritura: Todas las entradas de la lista de escritura actual se escriben una sola vez en las
variables correspondientes del controlador. A continuación, se cierra el cuadro de diálogo.
Liberar fuerza: Se eliminarán todas las entradas de la lista de fuerza o, si hay una lista de escritura,
aparecerá el cuadro de diálogo "Eliminar lista de escritura/fuerza", en el que el usuario debe decidir si
solo quiere liberar forzar o descartar la lista de escritura, o ambas cosas. El cuadro de diálogo se
cerrará en ese momento, o después de que se cierre el cuadro de diálogo de selección, según sea el
caso.
'En línea' 'Mostrar pila de llamadas'
Puede ejecutar este comando cuando el modo de simulación se detenga en un punto de interrupción.
Se le dará un cuadro de diálogo con una lista de la pila de llamadas POU.
Ejemplo de una pila de llamadas
La primera POU siempre está PLC_PRG, porque aquí es donde comienza la ejecución.
La última POU es siempre la POU que se está ejecutando.
Después de haber seleccionado una POU y haber pulsado el botón Ir a, la POU seleccionada se
carga en su editor y mostrará la línea o red que se está procesando.
PC_local es su PC local, PC_x es otra PC, a la que se dirigen las direcciones de la puerta de enlace.
PC_gateway es el equipo en el que está instalado el servidor de puerta de enlace, PC_PLC1 hasta PC_PLC4 son
los equipos en los que se ejecutan los sistemas en tiempo de ejecución. El diagrama muestra los módulos
separados, pero es totalmente posible que el servidor de puerta de enlace y / o los sistemas de tiempo de
ejecución se instalen juntos en la PC local.
Importante: Tenga en cuenta que una conexión a la puerta de enlace solo es posible a través de TCP/IP, así que
asegúrese de que su PC esté configurado correctamente.
Por otro lado, las conexiones desde la puerta de enlace a los distintos ordenadores en tiempo de
ejecución pueden ejecutarse a través de diferentes protocolos (TCP/IP, Pipe, etc.).
Para definir la conexión con el servidor de puerta de enlace deseado, abrimos el cuadro de diálogo
'Parámetros de comunicación Puerta de enlace' presionando el botón Puerta de enlace.
Cuadro de diálogo de ejemplo, definición de la conexión local a la puerta de enlace
Una vez configurado el canal deseado, cierre el cuadro de diálogo con OK. La configuración se guarda
con el proyecto.
El campo de entrada Nombre contiene automáticamente el nombre utilizado para el último canal introducido.
Si aún no se ha definido ningún canal, se ofrecerá el nombre de la puerta de enlace actual, seguido de un
carácter de subrayado, por ejemplo, 'localhost_'. Puede editar el nombre del canal en este punto. El nombre
del canal es puramente informativo, no tiene que ser un nombre único pero se recomienda usar uno.
Si se produce un error de comunicación al iniciar sesión, es posible que la interfaz no se pueda abrir
(por ejemplo, COM1 para una conexión en serie) posiblemente porque está siendo utilizada por otro
dispositivo. También es posible que el controlador no se esté ejecutando.
Los ajustes actuales se pueden consultar en cualquier momento mediante el botón Actualizar.
El cuadro de diálogo aparecerá de la siguiente manera si los parámetros de comunicación ya se han
configurado de acuerdo con el ejemplo de 'Principio de un sistema de pasarela':
En la parte central del cuadro de diálogo se encuentra la designación, en cada caso, del canal
seleccionado a la izquierda y el parámetro asociado en Nombre, Valor y Comentario.
¿Se ha iniciado el servidor de puerta de enlace (el símbolo de tres colores aparece en la parte inferior
derecha de la barra de herramientas)?
¿La dirección IP que ha introducido en el cuadro de diálogo "Puerta de enlace: Parámetros de comunicación"
es realmente la del ordenador en el que se ejecuta la puerta de enlace? (use "ping" para verificar)
¿Funciona localmente la conexión TCP/IP? Es posible que el error esté en TCP/IP.
El comando 'En línea' 'Crear proyecto de arranque' también está disponible en modo fuera de línea si el
proyecto se ha construido sin errores. En este caso, se crean los siguientes archivos en el directorio projects:
<projektname>.prg para el código del proyecto de arranque y projektname>. chk para la suma de
comprobación. Estos archivos se pueden renombrar según sea necesario y luego copiarse en un PLC.
Nota: Si la opción de proyecto Implícito en la creación del proyecto de arranque (categoría Descarga de
origen) está activada, las fuentes seleccionadas se cargarán automáticamente en el controlador en el comando 'En
línea' 'Crear proyecto de arranque'.
Con el comando 'En línea' 'Cargar archivo desde el controlador' puede recuperar un archivo cargado
previamente en el controlador.
'Ventana' 'Cascada'
Con este comando puede organizar todas las ventanas del área de trabajo en forma de cascada, una
detrás de la otra.
'Ventana' 'Mensajes'
Atajo: <Mayús>+<Esc>
Con este comando puede abrir o cerrar la ventana de mensajes con los mensajes del último
procedimiento de compilación, comprobación o comparación.
Si la ventana de mensajes está abierta, aparecerá una marca de verificación ( ) delante del comando.
En la pestaña Índice puede buscar páginas de ayuda sobre elementos específicos, en la pestaña Buscar se puede realizar
una búsqueda de texto completo en todas las páginas de ayuda. Siga las instrucciones de las tarjetas de registro.
Ayuda contextual
Atajo: <F1>
Puede utilizar la tecla <F1> en una ventana activa, en un cuadro de diálogo o encima de un comando
de menú para abrir la ayuda en línea. Al ejecutar un comando desde el menú, se muestra la ayuda
para el comando llamado en ese momento.
También puede resaltar un texto (por ejemplo, una palabra clave o una función estándar) y presionar
<F1> para que se muestre la ayuda para ese elemento.
5 Editores en CoDeSys
Comentario
Los comentarios de los usuarios deben incluirse en las secuencias de símbolos especiales "(*" y "*)".
Ejemplo: (*Este es un comentario.*)
Los comentarios están permitidos en todos los editores de texto, en cualquier ubicación deseada, es
decir, en todas las declaraciones, en los lenguajes IL y ST y en los tipos de datos autodefinidos. Si el
proyecto se imprime utilizando una plantilla, el comentario que se introdujo durante la declaración de la
variable aparece en los componentes del programa basados en texto después de cada variable.
En los editores gráficos FBD y LD, se pueden introducir comentarios para cada red. Para ello, busque
la red en la que desea comentar y active ' Insertar' 'Comentario'.
Además de eso, siempre se pueden agregar comentarios donde se insertan nombres de variables.
Ejemplo en FBD para un comentario de red y para un comentario colocado detrás de una variable de entrada:
En KOP también se puede agregar un comentario a cada contacto o a cada bobina, si esto se
configura en consecuencia en las opciones de visualización en el menú 'Extras' 'Opciones'. En el Editor
de Escaleras, adicionalmente se puede agregar un comentario para cada contacto y bobina en
particular, si las opciones correspondientes están activadas en el menú 'Extras' 'Opciones'.
En CFC hay POU de comentarios especiales que se pueden colocar a voluntad.
En SFC se pueden introducir comentarios sobre un paso en el cuadro de diálogo para editar los atributos del paso.
Los comentarios anidados también están permitidos si está activada la opción apropiada en el
cuadro de diálogo 'Proyecto', 'Opciones', 'Opciones de construcción'.
En el modo Online, si se apoya el cursor del ratón durante un breve periodo de tiempo en una variable,
el tipo y, si procede, la dirección y el comentario de esa variable se muestran en una información
sobre herramientas.
Acercar a POU
Atajo: <Alt>+<Intro>
Con este comando, una POU seleccionada se carga en su editor. El comando está disponible en el
menú contextual (<F2>) o en el menú 'Extras', si el cursor está situado en el nombre de una POU en un
editor de texto o si la casilla POU está seleccionada en un editor gráfico.
Si se trata de una POU de una biblioteca, se llama al administrador de la biblioteca y se muestra la
POU correspondiente.
Instancia abierta
Este comando corresponde al comando 'Proyecto' 'Abrir instancia'.
Está disponible en el menú contextual (<F2>) o en el menú 'Extras', si el cursor se coloca en el nombre
de un bloque de función en un editor de texto o si se selecciona el cuadro de bloque de función en un
editor gráfico.
Introducción de variables a través de la "Función IntelliSense"
Si la opción Enumerar componentes está activada en el cuadro de diálogo de opciones del proyecto
para la categoría 'Editor', entonces la funcionalidad "Intellisense" estará disponible en todos los
editores, en el Gestor de Relojes y Recetas, en la Visualización y en el Seguimiento de muestreo:
Si inserta un punto "." en lugar de un identificador, aparecerá un cuadro de selección que enumera todas las
variables locales y globales del proyecto. Puedes elegir uno de estos elementos y pulsar 'Retorno' para
insertarlo detrás del punto. También puede insertar el elemento haciendo doble clic en la entrada de la lista.
Si se introduce una instancia de bloque de funciones o una variable de estructura seguida de un punto,
aparecerá un cuadro de selección con todas las variables de entrada y salida del bloque de funciones
correspondiente o con una lista de los componentes de la estructura, donde se puede elegir el
elemento deseado e introducirlo pulsando "Retorno" o haciendo doble clic.
Ejemplo: Inserte "struvar." -> se ofrecerán los componentes de la
estructura struct1:
Si introduce cualquier cadena y pulsa <Ctrl> + <barra espaciadora>, aparecerá un cuadro de selección
con una lista de todas las POU y variables globales disponibles en el proyecto. Se seleccionará la
entrada de la lista que comience con la cadena dada y se puede ingresar al programa presionando la
tecla <Enter>.
Información sobre herramientas sin conexión para identificadores
En el modo fuera de línea, en todos los editores se aplica lo siguiente: Si el cursor se coloca sobre un
identificador editable, en una información sobre herramientas se mostrará el nombre del identificador, la
clase de la variable (por ejemplo, VAR_GLOBAL), el tipo de datos, los atributos de la variable (por
ejemplo, RETAIN), la dirección y el comentario.
Mostrar referencias cruzadas
Si se selecciona un identificador de variable en un editor, este comando "Mostrar referencias cruzadas"
estará disponible en el menú "Extras" o en el menú contextual. Se puede utilizar para obtener una lista
de todas las posiciones dentro del proyecto en las que se utiliza la variable. Para obtener información
sobre esta lista de referencias cruzadas, consulte: 'Proyecto' 'Mostrar referencia cruzada'.
En el modo Sobrescribir, 'OV' se muestra en negro en la barra de estado; el cambio entre los modos
Sobrescribir e Insertar se puede lograr con la tecla <Ins>.
La declaración de variables es compatible con el coloreado de sintaxis.
Los comandos más importantes se encuentran en el menú contextual (botón derecho del ratón o <Ctrl>+<F10>).
Sugerencia: Considere la posibilidad de usar pragmas para afectar las propiedades de una variable en relación
con el proceso de compilación o precompilación (véase el capítulo 5.2.3).
Parte de la declaración
Todas las variables que se van a utilizar solo en esta POU se declaran en la parte de declaración de la
POU. Estos pueden incluir: variables de entrada, variables de salida, variables de entrada/salida, variables
locales, variables remanentes y constantes. La sintaxis de declaración se basa en el estándar IEC61131-3.
Para una recomendación sobre el uso de identificadores, véase el Apéndice J: .
Con respecto a la posibilidad de utilizar plantillas para objetos de tipo 'Variables globales', 'Tipos de datos',
'Función', 'Bloque de funciones' o 'Programa', consulte el Capítulo 4.3, 'Archivo' Nuevo a partir de plantilla'.
Un ejemplo de una declaración correcta de variables en CoDeSys-Editor:
Variable de entrada
Entre las palabras clave VAR_INPUT y END_VAR, se declaran todas las variables que sirven como
variables de entrada para una POU. Eso significa que en la posición de llamada, el valor de las
variables se puede dar junto con una llamada.
Ejemplo:
VAR_INPUT
iIn1:INT (* 1. Tienes que ser un buen ejemplo de cómo puedes ser un buen ejemplo de cómo
END_VAR
Variable de salida
Entre las palabras clave VAR_OUTPUT y END_VAR, se declaran todas las variables que sirven como
variables de salida de una POU. Esto significa que estos valores se transfieren a la POU que realiza la
llamada. Allí se pueden responder y utilizar más.
Ejemplo:
VAR_OUTPUT
iOut1:INT; (* 1. Outputvariable*)
END_VAR
Ejemplo:
VAR_IN_OUT
iInOut1:INT; (* 1. En la década de 1980, los 100.000 pies (
END_VAR
Variables locales
Entre las palabras clave VAR y END_VAR, se declaran todas las variables locales de una POU. Estos
no tienen conexión externa; En otras palabras, no se pueden escribir desde fuera.
Ejemplo:
VAR iLoc1:INT; (* 1. Variable local*)
END_VAR
Remanente variable
Las variables remanentes pueden conservar su valor durante todo el período de ejecución habitual del
programa. Entre ellas se encuentran las variables de retención y las variables persistentes.
Ejemplo:
VAR RETENIDO iRem1:INT; (* 1. Variable de
retención*)
END_VAR
Las variables de retención se identifican mediante la palabra clave RETAIN. Estas variables mantienen su
valor incluso después de un apagado incontrolado del controlador, así como después de un apagado y
encendido normal del controlador (o en el comando 'En línea' 'Reset', consulte el Capítulo 4.6). Cuando el
programa se vuelva a ejecutar, los valores almacenados se procesarán más. Un ejemplo concreto sería un
contador de piezas en una línea de producción, que reinicia el conteo después de un corte de energía.
Todas las demás variables se inicializan de nuevo, ya sea con sus valores inicializados o con las
inicializaciones estándar.
A diferencia de las variables persistentes, las variables de retención se reinicializan en una nueva
descarga del programa.
Las variables persistentes se identifican mediante la palabra clave PERSISTENT. A diferencia de las variables
de retención, estas variables conservan su valor solo después de una nueva descarga, pero no después de un
'Reinicio' 'En línea', 'Reinicio (original)' o 'En línea' 'Restablecimiento (frío)' (consulte el Capítulo 4.6 cada
una), porque no se guardan en el "área de retención". Si también las variables persistentes deben mantener
sus valores después de un apagado incontrolado del controlador, entonces deben declararse adicionalmente
como variables VAR RETAIN. Un ejemplo concreto de "variables de retención persistentes" sería un
temporizador de operaciones que reinicia el cronometraje después de un corte de energía.
Atención:
- Si una variable local en un programa se declara como VAR RETAIN, entonces exactamente esa
variable se guardará en el área de retención (como una variable de retención global)
- Si una variable local en un bloque de función se declara como VAR RETAIN, entonces la instancia
completa del bloque de función se guardará en el área de retención (todos los datos de la POU), por
lo que solo la variable de retención declarada se manejará como una retención.
- Si una variable local en una función se declara como VAR RETAIN, entonces esto no tendrá ningún
efecto. ¡La variable no se guardará en el área de retención! Si una variable local se declara como
PERSISTENTE en una función, ¡esto también no tendrá ningún efecto!
Restablecimiento - x - x
Restablecer (llamado) - - - -
Restablecer (origen) - - - -
Descargar - - x x
x Constantes,
Cambio
literales
en línea
con tipo x x x
Las constantes se identifican con la palabra clave CONSTANT. Pueden ser declarados local o globalmente.
Sintaxis:
CONSTANTE VAR
<Identificador>:<Tipo> :=
<inicialización>; END_VAR
Ejemplo:
CONSTANTE VAR c_iCon1:INT:=12; (* 1.
Constante*)
END_VAR
Consulte el Apéndice B: Operandos en CoDeSys, para obtener una lista de posibles constantes. Véase
también la posibilidad de utilizar constantes con tipo (Typed Literals).
Variables externas
Las variables globales que se van a importar a la POU se designan con la palabra clave EXTERNAL.
También aparecen en la ventana Inspección de la parte de declaración en el modo en línea.
Si la declaración VAR_EXTERNAL no coincide con la declaración global en todos los aspectos, aparece el
siguiente mensaje de error: "¡La declaración de '<var>' no coincide con la declaración global!"
Si la variable global no existe, aparece el siguiente mensaje de error: "Variable global desconocida:
'<var>'!"
Ejemplo:
VAR EXTERNO iVarExt1:INT:=12; (* 1ª variable externa *)
END_VAR
Palabras clave
Las palabras clave deben escribirse en mayúsculas en todos los editores. Las palabras clave no se
pueden utilizar como variables. Ejemplos de palabras clave: VAR, VAR_CONSTANT, IF, NOT, INT.
Declaración de variables
Una declaración de variables tiene la siguiente sintaxis:
<Identificador> {AT <Dirección>}:<Tipo> {:=<inicialización>};
Las partes de las llaves {} son opcionales.
En cuanto al identificador, es decir, el nombre de una variable, hay que tener en cuenta que no puede contener
espacios ni diéresis, no puede declararse por duplicado y no puede ser idéntico a ninguna palabra clave. Se ignora
la escritura en mayúsculas y minúsculas de las variables, es decir, VAR1, Var1 y var1 no son variables diferentes.
Los subrayados en los identificadores son significativos, por ejemplo, A_BCD y AB_CD se interpretan como
identificadores diferentes. No se permiten varios subrayados consecutivos al principio de un identificador o dentro
de un identificador. La longitud del identificador, así como la parte significativa del mismo, es ilimitada.
Todas las declaraciones de variables y elementos de tipo de datos pueden incluir la inicialización. Son
provocados por el operador ":=". En el caso de las variables de tipos elementales, estas inicializaciones
son constantes. La inicialización predeterminada es 0 para todas las declaraciones.
Ejemplo:
iVar1:INT:=12; (* Variable entera con valor inicial de 12*)
Si desea vincular una variable directamente a una dirección definida, debe declarar la variable con la
palabra clave AT.
Para una entrada más rápida de las declaraciones, utilice el modo de acceso directo.
En los bloques de funciones también se pueden especificar variables con sentencias de dirección
incompletas. Para que una variable de este tipo se utilice en una instancia local, debe haber una
entrada para ella en la configuración de la variable.
Preste atención a las posibilidades de una declaración automática o del uso de pragmas para afectar
las propiedades de las variables relativas al proceso de compilación.
Declaración AT
Si desea vincular una variable directamente a una dirección definida, debe declarar la variable con la
palabra clave AT. La ventaja de este procedimiento es que se puede asignar un nombre significativo a
una dirección, y que cualquier cambio necesario de una señal entrante o saliente sólo tendrá que
realizarse en un lugar (por ejemplo, en la declaración).
Tenga en cuenta que no se puede acceder a las variables que requieren una entrada escribiendo.
Ejemplos:
xCounterHeat7 AT %QX0.0: BOOL;
wLightcabinetimpulse AT %IW2: PALABRA;
xDescargar EN %MX2.2: BOOL;
Nota: Si las variables booleanas se asignan a una dirección Byte, Word o DWORD, ocupan un byte con TRUE o
FALSE, ¡no solo el primer bit después del desplazamiento!
'Insertar' 'Tipo'
Con este comando recibirá una selección de los tipos posibles para una declaración de variables.
También recibirá la lista cuando acceda al Asistente de entrada (<F2>).
Los tipos se dividen en las siguientes categorías:
Coloreado de sintaxis
En todos los editores recibes apoyo visual en la implementación y declaración de variables. Los errores
se evitan, o se descubren más rápidamente, porque el texto se muestra en color.
Un comentario que se deje sin cerrar, anotando así instrucciones, se notará de inmediato; Las palabras
clave no estarán mal escritas accidentalmente, etc.
Se utilizará el siguiente resaltado de color:
El tipo de declaración viene determinado por el último identificador de la línea. En este contexto, se
aplicará lo siguiente:
Si no se ha establecido ningún tipo a través de estas reglas, el tipo es BOOL y el último identificador no
se usará como tipo (Ejemplo 1).
Cada constante, dependiendo del tipo de declaración, se convertirá en una inicialización o una cadena
(Ejemplos 2 y 3).
Una dirección (como en %MD12) se extiende alrededor de ATATDeclaration>Proc... attribute(Ejemplo 4.).
A texto después de un punto y coma (;) se convierte en un comentario (Ejemplo 4.).
Todos los demás caracteres de la línea se ignoran (por ejemplo, el signo de exclamación en el Ejemplo 5).
Ejemplos:
Atajo Declaración
Un R: BOOL;
ABI2 A, B: INT := 2;
ST S 2; Una cadena ST:STRING(2); (* Una cadena *)
X %MD12 R 5 Número real X AT %MD12: REAL := 5.0; (* Número real *)
B ! B: BOOL;
Autodeclaración
Si se ha elegido la opción Autodeclaración en la categoría Editor del cuadro de diálogo Opciones ,
aparecerá un cuadro de diálogo en todos los editores después de la entrada de una variable que aún
no se ha declarado. Con la ayuda de este cuadro de diálogo, ahora se puede declarar la variable.
Cuadro de diálogo para la declaración de variables
Con la ayuda del cuadro combinado Clase , seleccione si está tratando con una variable local (VAR),
una variable de entrada (VAR_INPUT), una variable de salida (VAR_OUTPUT), una variable de
entrada/salida (VAR_INOUT) o una variable global ( VAR_GLOBAL).
Con las opciones CONSTANT, RETAIN, PERSISTANT, puede definir si se trata de una constante o
de una variable de retención
El nombre de la variable que ha introducido en el editor se ha introducido en el campo Nombre, BOOL se ha introducido
colocados en el campo Tipo. El botón abre el cuadro de diálogo Asistente de entrada, que le permite
seleccionar entre todos los tipos de datos posibles.
Declaración de matrices:
Si se elige ARRAY como tipo de variable, aparece el cuadro de diálogo para introducir los límites de la matriz.
Cuadro de diálogo para determinar los límites de la matriz durante la declaración automática
Para cada una de las tres dimensiones posibles (Dim.), los límites de la matriz se pueden introducir en Inicio
y Finalizar haciendo clic con el ratón en el campo correspondiente para abrir un espacio de edición. La matriz
El tipo de datos se introduce en el campo Tipo. Al hacer esto, el botón se puede usar para abrir un
cuadro de diálogo del asistente de entrada.
Al salir del cuadro de diálogo de límites de matriz a través del botón Aceptar, las declaraciones de variables en formato
IEC se configuran en función de las entradas en el campo Tipo del cuadro de diálogo. Ejemplo: ARRAY [1..5, 1..3] OF
INT En el campo Valor inicial, puede introducir el valor inicial de la variable que se está declarando. Si se trata de un
o una estructura válida, puede abrir un cuadro de diálogo de inicialización especial a través del
botón o abrir el cuadro de diálogo del asistente de entrada para otros tipos de variables.
En el cuadro de diálogo de inicialización de una matriz, se presenta una lista de elementos de matriz; Un clic
del ratón en el espacio que sigue a ":="abre un campo de edición para introducir el valor inicial de un elemento.
En el cuadro de diálogo de inicialización de una estructura, los componentes individuales se muestran en una
estructura de árbol. El tipo y el valor inicial predeterminado aparecen entre paréntesis después del nombre de
la variable; Cada uno va seguido de ":=". Al hacer clic con el ratón en el campo que sigue a ":=", se abre un
campo de edición en el que se puede introducir el valor inicial deseado. Si el componente es una matriz, la
visualización de los campos individuales de la matriz se puede ampliar haciendo clic con el ratón en el signo
más antes del nombre de la matriz y los campos se pueden editar con los valores iniciales.
Después de salir del cuadro de diálogo de inicialización con OK, la inicialización de la matriz o de la
estructura aparece en el campo Valor inicial del cuadro de diálogo de declaración en formato IEC.
Ejemplo: x:=5,field:=2,3,struct2:=(a:=2,b:=3)
En el campo Dirección, puede enlazar la variable que se está declarando a una dirección IEC (declaración AT).
Si corresponde, escriba un comentario. El comentario se puede formatear con saltos de línea
mediante la combinación de teclas <Ctrl> + <Intro>.
Al pulsar OK, se cierra el diálogo de declaración y la variable se introduce en el editor de declaraciones
correspondiente de acuerdo con la sintaxis IEC.
Nota: El cuadro de diálogo para la declaración de variables también se obtiene mediante el comando 'Editar'
'Declarar variable'. Si el cursor descansa sobre una variable en modo Online, la ventana Autodeclaración se puede
abrir con <Mayús><F2> con la configuración actual relacionada con la variable mostrada.
Ambos tipos de visualización del editor de declaraciones se pueden cambiar sin causar ningún
problema. En el modo en línea no hay diferentes tipos de visualización.
Insértese una nueva declaración:
Para editar una nueva variable, seleccione el comando 'Insertar' 'Nueva declaración' (ver más abajo).
Ordenación de las declaraciones:
Para ordenar las entradas de la tabla, coloque el cursor en la barra de números de línea en el borde
izquierdo de la ventana del editor y elija uno de los siguientes comandos en el menú contextual:
Ordenar por nombre: Todas las líneas están ordenadas alfabéticamente de acuerdo con los nombres de los identificadores en la columna 'Nombre'.
Ordenar por dirección: Todas las líneas están ordenadas alfabéticamente de acuerdo con las
entradas de dirección en la columna 'Dirección'.
Ordenar por tipo: Todas las líneas están ordenadas alfabéticamente de acuerdo con los nombres de los tipos en la columna 'Tipo'.
Cuando una variable está abierta, todos sus componentes se enumeran después de ella. Aparece un
signo menos delante de la variable. Si vuelve a hacer doble clic o pulsa <Intro>, la variable se cerrará y
volverá a aparecer el signo más.
Al presionar <Enter> o hacer doble clic en una variable de un solo elemento, se abrirá el cuadro de
diálogo para escribir una variable. Aquí es posible cambiar el valor actual de la variable. En el caso de
las variables booleanas, no aparece ningún cuadro de diálogo; Estas variables están activadas para
alternar.
El nuevo valor se muestra después de la variable, entre corchetes puntiagudos y en color turquesa, y
permanece sin cambios. Si se da el comando 'En línea' 'Escribir valores', todas las variables se colocan
en la lista seleccionada y se muestran una vez más en negro.
Si se da el comando 'En línea' 'Forzar valores', entonces todas las variables se establecerán en los
valores seleccionados, hasta que se dé el comando 'Liberar fuerza'. En este caso, el color del valor de
fuerza cambia a rojo
Dependiendo del tipo y contenido de pragma, el pragma opera en la línea en la que se encuentra o en
todas las líneas subsiguientes hasta que es terminado por un pragma apropiado, o se ejecuta el mismo
pragma con diferentes parámetros, o se llega al final del archivo. Por archivo nos referimos aquí: parte
de declaración, parte de implementación, lista de variables globales, declaración de tipo.
El corchete de apertura puede seguir inmediatamente al nombre de una variable. Los corchetes de
apertura y cierre deben estar ubicados en la misma línea.
Los siguientes pragmas están disponibles actualmente en CoDeSys:
• Pragma {flag ...} para Inicialización, Monitoreo, Creación de símbolos
• Pragma {bitaccess ...} para Bitaccess
• Pragma {link} para vincular un POU o DUT
• Pragmas {parámetro ..}, {plantilla...}, {instancia...} para crear entradas para el Administrador de parámetros
• Pragma {library ...} para controlar la visualización de las partes de la declaración de la biblioteca
Con el modificador "on", el pragma opera en todas las declaraciones de variables subsiguientes hasta
que termina con el pragma {flag off}, o hasta que se sobrescribe con otro pragma {flag <flags> on}.
Sin el modificador "on" o "off", el pragma opera solo en la declaración de variable actual (es
decir, la declaración que se cierra con el siguiente punto y coma).
Ejemplos de uso de pragma {flag}:
Inicialización y monitorización de variables:
La variable a no se inicializará y no se supervisará. La variable b no se inicializará:
VAR
a: INT {flag noinit, nowatch};
b: INT {flag noinit };
END_VAR
VAR {flag noinit, nowatch on}
a: INT; {flag noinit on}
b: INT; {bandera desactivada}
END_VAR
Ninguna de las variables se inicializará:
{marcar acerca de} VAR
a : INT;
b : INT; END_VAR {flag off} VAR {flag noinit on}
a : INT;
b : INT; {bandera desactivada}
END_VAR
Obtención de variables en el archivo de símbolos:
Los indicadores "noread" y "nowrite" se utilizan, en una POU que tiene permiso de lectura y/o escritura,
para proporcionar a las variables seleccionadas derechos de acceso restringidos. El valor
predeterminado de la variable es el mismo que el valor de la POU en la que se declara la variable. Si una
variable no tiene permiso de lectura ni de escritura, no se exportará al archivo de símbolos.
Ejemplos:
Si la POU tiene permiso de lectura y escritura, con los siguientes pragmas la variable a solo se puede
exportar con permiso de escritura, mientras que la variable b no se puede exportar en absoluto:
VAR
a: INT {flag noread};
b: INT {flag noread, nowrite};
END_VAR
VAR { flag noread on}
a: INT; { flag noread, nowrite on}
b: INT; {bandera desactivada}
END_VAR
Ni la variable a ni la b se exportarán al archivo de símbolos:
{ flag noread, nowrite on } VAR
a: INT;
b : INT; END_VAR {marcar apagado}
VAR { marcar noread, nowrite on}
a: INT;
b: INT; {bandera desactivada}
END_VAR
...
FUNCTION_BLOCK afB
VAR
b: bfb {flag nowrite};
c : INT;
END_VAR ...
FUNCTION_BLOCK bfB
VAR
d: INT {flag noread};
e: INT {flag nowrite};
END_VAR
"a.b.d": No se exportará
"a.b.e": Se exportará solo con permiso de lectura
"a.c": Se exportará con permiso de lectura y escritura.
Tenga en cuenta: ¡La opción del proyecto 'Reemplazar constantes' (categoría Construir) debe estar activada!
Por lo tanto, los comentarios o cualquier declaración de variables se pueden ocultar al usuario. Los
pragmas {library private} y {library public} afectan al resto de la misma línea o a las líneas siguientes,
siempre y cuando no se sobrescriban entre sí.
Sintaxis: {library public} La prueba posterior se mostrará en el Administrador de bibliotecas.
{library private} :La prueba posterior no se mostrará.
Ejemplo: Vea a continuación la parte de declaración de una biblioteca, que se crea en CoDeSys. El
comentario "(* esto es para todos *)" debe mostrarse en el Administrador de bibliotecas después de
haber incluido la biblioteca en un proyecto., el comentario "(* pero esto no es para todos" sin
embargo no debe mostrarse. Las variables local e in2 tampoco deben mostrarse:
{biblioteca pública} (*esto es para todos*) {biblioteca privada} (*esto no es para todos*)
{biblioteca pública}
FUNCIÓN afun : BOOL
VAR_INPUT
en: BOOL;
END_VAR
{biblioteca privada}
VAR local: BOOL;
END_VAR
{biblioteca pública}
VAR_INPUT
en2: BOOL; {biblioteca
privada} in3: BOOL;
{biblioteca pública}
END_VAR
La sintaxis:
La instrucción pragma está encerrada entre llaves, se ignoran las mayúsculas y minúsculas: { <Texto
de instrucción> }. Si se incluye en declaraciones de variables "normales", debe establecerse antes del
punto y coma final de la declaración.
Los pragmas, que se utilizan en la interfaz VAR_CONFIG, se establecen cada uno en una sola línea y
no terminan con un punto y coma.
Las definiciones clave se escriben separadas por caracteres de espacio, todas juntas entre corchetes.
<value>: Valor del atributo definido por <key>. Si <valor> contiene espacios vacíos, debe ir entre
comillas dobles, por ejemplo, ... accessright="solo lectura"...
Tenga en cuenta: Las instrucciones de pragma serán efectivas tan pronto como se cambie el foco, es decir, tan
pronto como se realice una precompilación, por ejemplo, saliendo de la ventana del editor. Las entradas erróneas
no se enviarán hasta que se compile el proyecto.
Para una variable definida en una declaración PROGRAM o VAR_GLOBAL, se puede crear una
entrada en una lista de parámetros de tipo 'Variables', si se declara como se describe a
continuación: (Si la lista de parámetros aún no existe, se creará automáticamente)
Sintaxis: {lista de parámetros=<nombre> [ <clave>=<valor> <clave>=<valor> ... Otras claves ] }
Ejemplo: La variable bvar se declara en un programa. Se debe introducir en la lista de parámetros parlist1 tipo
'Variables') con el nombre simbólico bvar1, el valor 102, el índice 16#1200 y el subíndice 16#2l.
VAR
bvar:INT{lista de parámetros=parlist1 [nombre=bvar1 valor=102 índice=16#1200
subíndice=16#1 ] };
END_VAR
b) a través de una declaración en la interfaz VAR_CONFIG:
Existe la posibilidad de crear una entrada para una variable en una lista de parámetros de tipo
'Variables' colocando un pragma en una ventana de VAR_CONFIG (independientemente de las
configuraciones de variables, que también se realizan en la interfaz VAR_CONFIG): (Si la lista de
parámetros aún no existe, se creará automáticamente)
Sintaxis: {parámetro list=<name> path=<path> [ <key>=<value> <key>=<value> ... Otras claves ] }
<ruta> Ruta de la variable para la que se debe generar la entrada, por ejemplo, "PLC_PRG.act1.var_x"
Ejemplo: Para la variable var_x se crea una entrada en la lista de parámetros "varlist1", el nombre
simbólico es xvar".
VAR_CONFIG
{lista de parámetros=varlist1 ruta=PLC_PRG.act1.var_x [ nombre=xvar ] }
END_VAR
END_STRUCT
END_TYPE
3. Entradas en listas de parámetros de tipo «Instancia» (para matrices, variables de función, bloque o estructura)
Para las matrices, la clave "plantilla" se definirá automáticamente con la plantilla implícitamente
disponible "ARRAY", para las estructuras y los bloques de funciones debe estar disponible una plantilla
adecuada en el Administrador de parámetros y debe formar parte de la declaración aquí descrita.
Para cada elemento particular de la matriz o de la estructura o del bloque de funciones se puede
predefinir una entrada individual en la lista de parámetros: por ejemplo, para cada elemento se
puede especificar una definición propia [name=<elementname>].
Las definiciones de las claves de cada elemento en particular (¡todas las claves de un elemento en
particular están encerradas entre los mismos corchetes!) deben organizarse en una fila, separadas por
espacios vacíos. Los paquetes de definición de los elementos se referirán automáticamente a los
elementos de acuerdo con el orden ascendente del índice (miembro). Si no hay tantas definiciones de
clave disponibles como elementos hay en la matriz o en la estructura o el bloque de funciones, entonces
a los elementos restantes se les asignarán los mismos valores que al último elemento definido
individualmente (Excepción para el "nombre" de la clave para las matrices, ver más abajo). (ver ejemplo
1b).
Automatismos relativos al "nombre" de la clave al introducir matrices en las listas de parámetros:
- Si no especifica un nombre para un elemento de matriz en el pragma, ese elemento y
todos los elementos siguientes obtendrán automáticamente los nombres <POU
name>_<Array variable name>_<correspondiente al número de índice de la matriz>.
Ejemplo: La variable de matriz ARRVAR [1..8] de INT en POU PLC_PRG debe introducirse
en una lista de variables a través de un pragma; Si la clave "name" no está definida en el
pragma, los elementos particulares de la matriz en la lista de parámetros se llamarán
automáticamente "PLC_PRG_arrvar_1" a "PLC_PRG_arrvar_8".
- Si define cualquier nombre "<name>_<first index number of array range>" para el primer elemento
de la matriz a través de pragma, los siguientes elementos de la matriz en la lista de parámetros se
llamarán automáticamente "<name>_<número de índice correspondiente>".
Ejemplo: La variable de matriz ARRVAR [1..8] de INT in debe introducirse en una lista de
variables a través de un pragma; El pragma solo especifica [name=xyz_1]" para el primer
elemento de la matriz y, por lo tanto, en la lista de parámetros, los siguientes elementos
obtendrán automáticamente los nombres "xyz_2" a "xyz_8".
Atención: No defina un valor para la clave "Miembro"; esta columna se rellenará automáticamente utilizando
los valores del índice de la matriz.
Ejemplos:
Ejemplo 1a: Se declara una variable de matriz arr_1 como se describe a continuación para crear un arrinst de
lista de parámetros de tipo 'Instance' (si aún no está disponible), en el que se introducen los componentes de la
matriz, por lo que cada elemento primero obtendrá un nombre simbólico xname_<número de índice> (podría
editarse posteriormente en el administrador de parámetros) y el subíndice se contará hasta 1 para cada entrada,
Empezando por 0 (basesubindex). Accesslevel=low se aplicará a todos los elementos.
arr_1: ARRAY [1..8] OF INT{instance list=arrinst template=ARRAY baseindex=16#0 basesubindex=16#0 [name=xname_1 accesslevel=low] }
Ejemplo 1b: Para una variable de matriz arr_1 solo para los elementos 1 a 4 ya los nombres
están definidos a través del pragma, los elementos 5 a 8 obtendrán automáticamente el nombre
del elemento 4 extendido por un subrayado y el número de índice apropiado, es decir,
"xname_5" a "xname_8". Tenga en cuenta que deben introducirse otras definiciones de clave
para un elemento en particular entre los mismos corchetes que se muestran aquí para el primer
y cuarto elemento con respecto al nivel de acceso:
arr_1: ARRAY [1..8] OF INT{instance list
= arrinst template
= ARRAY baseindex
= 16#0
basesubindex= 16#0[name= aname accesslevel= high] [name= bname] [name= cname] [name= xname
accesslevel=medium]};
Ejemplo 2:
Una variable de estructura de tipo "stru1" (contiene las variables a,b,c) se declara como se
describe a continuación para obtener entradas en una lista de parámetros de tipo 'Instancia' que
se basa en la plantilla "strulist_temp"; La lista obtendrá entradas para los componentes A, B, C,
no se asignan nombres simbólicos, el nivel de acceso se establece en "alto" y cada valor de
índice definido por la plantilla se incrementará en 2. Asegúrese de que la plantilla definida en el
pragma esté disponible en el Administrador de parámetros:
struvar:stru1{instance list=strulist template=strulist_templ baseindex=16#2 basesubindex=16#0
[accesslevel=high] };
en la declaración del bloque de funciones o en la estructura. Afecta a que solo aquellos componentes de la
estructura del bloque de funciones, que se declaran como "persistentes", se ingresarán en la información
persistente.
Ejemplo:
Si una instancia del siguiente bloque de funciones se declara como persistente, solo las variables local y
fblevel3 se escribirán en la información persistente. Sin pragma {nonpersistent} todas las variables del bloque
de funciones se almacenarían allí.
FUNCTION_BLOCK FB_Level_2
{no persistente}
VAR_INPUT
bvar_in : BOOL;
END_VAR
VAR_OUTPUT
bvar_out : BOOL;
END_VAR
VAR ivar2 : INT;
END_VAR FUE
PERSISTENTE
local : INT := 33; fblevel3 : FB_Level_3;
END_VAR
Los comandos más importantes se encuentran en el menú contextual (botón derecho del ratón o <Ctrl>+<F10>).
Los editores de texto utilizan los siguientes comandos de menú de forma especial:
Si coloca el puntero del ratón brevemente encima de una variable, el tipo, la dirección y el comentario
sobre la variable se mostrarán en una información sobre herramientas.
Tenga en cuenta que el ancho de las mitades de la ventana también se puede modificar dibujando el
divisor con el mouse.
En el modo en línea, el color de fondo del número de línea indica el estado del punto de interrupción de
cada línea. La configuración estándar de los colores es:
gris oscuro: esta línea es una posición posible para un punto de interrupción.
Azul claro: se ha establecido un punto de interrupción en esta línea.
rojo: El programa ha llegado a este punto.
En el modo en línea, simplemente haciendo clic con el mouse cambiará el estado del punto de interrupción de esta
línea.
Todos los editores de POU constan de una parte de declaración y un cuerpo. Estos están separados
por un divisor de pantalla.
El editor de listas de instrucciones es un editor de texto con las capacidades habituales de los editores
de texto de Windows. Los comandos más importantes se encuentran en el menú contextual (botón
derecho del ratón o <Ctrl>+<F10>). Las llamadas POU multilínea también son posibles:
Ejemplo:
CAL CTU_inst( CU:=%IX10, PV:=( LD A ADD 5 ) )
Para obtener información sobre el idioma, consulte el Capítulo 2.2.1, Lista de instrucciones (IL).
IL en modo Online
Con el comando 'En línea' 'Control de flujo', se inserta un campo adicional en el que se muestra el
contenido del acumulador en el editor IL en el lado izquierdo de cada línea.
Para obtener más información sobre el editor IL en modo en línea, consulte 'Los editores de texto en modo
en línea'.
Todos los editores de POU constan de una parte de declaración y un cuerpo. Estos están separados
por un divisor de pantalla.
El editor de texto estructurado es un editor de texto con las capacidades habituales de los editores de texto de Windows.
Los comandos más importantes se encuentran en el menú contextual (botón derecho del ratón o <Ctrl>+<F10>).
Para obtener información sobre el lenguaje, consulte el Capítulo 2.2.2, 'Texto estructurado (ST).
En la forma estándar, cada objeto se muestra con el nivel de zoom del 100%. El nivel de zoom que se
establece se guarda como una propiedad de objeto en el proyecto.
¡La impresión de la documentación del proyecto siempre se produce al 100% de la pantalla!
El nivel de zoom se puede establecer a través de una lista de selección en la barra de herramientas. Se
pueden seleccionar valores entre el 25% y el 400%; Los valores individuales entre el 10% y el 500% se
pueden introducir manualmente.
La selección de un nivel de zoom solo está disponible si el cursor se apoya en un objeto creado en un
lenguaje gráfico o en un objeto de visualización.
Incluso con el objeto ampliado, las posiciones del cursor en los editores se pueden seleccionar aún más e incluso se puede
alcanzar con las teclas de flecha. El tamaño del texto se rige por el factor de zoom y el tamaño de fuente que se establece.
La ejecución de todas las funciones del menú del editor (por ejemplo, insertar un cuadro) en función de
la posición del cursor está disponible en todos los niveles de zoom, teniendo en cuenta lo mismo.
En el modo Online, cada objeto se muestra según el nivel de zoom que se haya establecido; La
funcionalidad en línea está disponible sin restricciones.
Cuando se utiliza IntelliMouse, un objeto se puede ampliar/reducir presionando la tecla <CTRL> y al
mismo tiempo girando la rueda hacia adelante o hacia atrás.
Red
En los editores LD y FBD, el programa está organizado en una lista de redes. Cada red está designada
en el lado izquierdo por un número de red en serie y tiene una estructura que consiste en una
expresión lógica o aritmética, un programa, una función o una llamada a bloque de funciones, y una
instrucción de salto o retorno.
Etiqueta
Cada red tiene una etiqueta que, opcionalmente, se puede dejar vacía. Esta etiqueta se edita haciendo
clic en la primera línea de la red, directamente al lado del número de red. Ahora puede introducir una
etiqueta, seguida de dos puntos.
Comentarios, Redes con saltos de línea, 'Extras' 'Opciones'
Cada red puede ser suministrada con un comentario de varias líneas. En el cuadro de diálogo
'Opciones de bloque de funciones y diagrama de escalera', que se puede abrir ejecutando el comando
'Extras' 'Opciones', puede realizar los ajustes relativos a los comentarios y saltos de línea:
Opciones de bloque de funciones y diagrama de escalera de diálogo
En el campo Tamaño máximo de comentario, puede introducir el número máximo de líneas que estarán disponibles
para un comentario de red (el valor predeterminado aquí es 4). En el campo Tamaño mínimo del comentario
Puede introducir el número de líneas que, por lo general, deben reservarse para . Si, por ejemplo, se ingresa
el número 2, entonces, al comienzo de cada red habrá dos líneas vacías después de la línea de etiqueta. El
valor predeterminado aquí es 0, que tiene la ventaja de permitir que quepan más redes en el área de la
pantalla. Si el tamaño mínimo del comentario es mayor que 0, para ingresar un comentario, simplemente
haga clic en la línea de comentarios y luego ingrese el comentario. De lo contrario, primero debe seleccionar
la red en la que se va a introducir un comentario y utilizar 'Insertar' 'Comentario' para insertar una línea de
comentario. A diferencia del texto del programa, los comentarios se muestran en gris.
Alternative Look & Feel: Las siguientes opciones permiten definir un look alternativo de las redes.
Comentarios por contacto (solo para el editor de escalera): Si esta opción está activada, puede asignar un
comentario individual a cada contacto o bobina. En el campo de edición Líneas para comentario variable,
introduzca el número de líneas que deben reservarse y mostrarse para el comentario. Si se realiza esta
configuración, se mostrará un campo de comentario en el editor encima de cada contacto y bobina donde
puede insertar texto. Si está activada la opción 'Comentarios por contacto', en el editor de escaleras también
se puede definir el número de líneas (Líneas para texto variable:) que se deben usar para el nombre de
la variable del contacto o la bobina. Esto se usa para mostrar incluso nombres largos por completo
dividiéndolos en varias líneas. En el siguiente ejemplo, se definen 2 líneas para el comentario de la variable y
1 línea para el texto de la variable:
Ejemplo de una red con visualización de la variable comentario y dirección:
Redes con saltos de línea (solo para el editor de escalera): Si esta opción está activada, los saltos de
línea se forzarán en las redes tan pronto como la longitud de la red exceda el tamaño de ventana dado
y algunos de los elementos no sean visibles.
Ejemplo de una red con saltos de línea
Reemplazar con Símbolo después de ingresar Dirección: ( solo para el editor de escalera): Si esta opción está
activada, puede ingresar una dirección en una casilla o en un contacto o bobina (por ejemplo, "%QB4") y esta
dirección será reemplazada inmediatamente por el nombre de la variable que se asigna a la dirección. Si no hay
ninguna variable asignada a la dirección introducida, la dirección permanece mostrada sin cambios.
Establecer comentario de contacto en comentario de símbolo: Si esta opción está activada, en el campo
de comentarios de un contacto o una bobina se mostrará ese comentario que se ha definido en la
declaración de la variable utilizada para el contacto o bobina (ver imagen de arriba, en 'Comentarios por
contacto'). El comentario puede ser editado. Sin embargo, para este propósito, también se debe activar la
opción 'Comentarios por contacto'. Tenga en cuenta que un comentario que ya se ha introducido localmente
en un contacto o bobina será reemplazado automáticamente por el comentario variable en cualquier caso,
¡incluso si la variable no tiene un comentario en su declaración!
Mostrar dirección del símbolo: ( solo para el editor de escalera): Si esta opción está activada y una
variable asignada a un contacto o bobina se asigna a una dirección, la dirección se mostrará encima
del nombre de la variable (ver arriba, imagen en 'Comentarios por contacto').
Mostrar comentarios de variables por peldaño en la impresión: Si esta opción está activada, en
cada red para cada variable utilizada en esa red se mostrará una línea que muestra el nombre, la
dirección, el tipo de datos y el comentario de esta variable, tal como se define en la declaración de
variables. Esto puede ser útil para una documentación (impresión) del proyecto.
Ejemplo de una red que muestra una línea de información para cada variable
El control de flujo se ejecuta con el comando 'En línea' 'Control de flujo'. Con el control de flujo, puede ver los
valores actuales que se transportan en las redes a través de las líneas de conexión. Si las líneas de
conexión no llevan valores booleanos, el valor se mostrará en un campo especialmente insertado. Los
campos de supervisión para las variables que no se utilizan (por ejemplo, en la función SEL) se muestran en
un tono gris. Si las líneas llevan valores booleanos, se sombrearán en azul, en el caso de que lleven TRUE.
Por lo tanto, puede acompañar el flujo de información mientras el PLC está funcionando.
Si coloca el puntero del ratón brevemente encima de una variable, el tipo, la dirección y el comentario
sobre la variable se mostrarán en una información sobre herramientas.
El editor de diagramas de bloques de funciones es un editor gráfico. Funciona con una lista de redes, en la
que cada red contiene una estructura que muestra, respectivamente, una expresión lógica o aritmética, la
llamada de un bloque de funciones, una función, un programa, un salto o una instrucción de retorno. Los
comandos más importantes se encuentran en el menú contextual (botón derecho del ratón o <Ctrl>+<F10>).
Con respecto a la posibilidad de cambiar la visualización de un FBD-POU entre el editor FBD y KOP,
tanto en modo fuera de línea como en modo en línea. Además, considere las posibilidades que ofrecen
las 'Opciones de bloque de funciones y diagrama de escalera' (consulte el Capítulo 5.4.1: Comentarios,
saltos de línea, 'Extras', 'Opciones').
Posiciones del cursor en FBD
Cada texto es una posición posible del cursor. El texto seleccionado está sobre un fondo azul y ahora
se puede cambiar.
También puede reconocer la posición actual del cursor por un rectángulo punteado. A continuación se
muestra una lista de todas las posiciones posibles del cursor con un ejemplo:
1) Todos los campos de texto (posibles posiciones del cursor enmarcadas en negro):
2) Cada entrada:
6) Detrás del objeto más externo a la derecha de cada red ("última posición del cursor", la misma
posición del cursor que se utilizó para seleccionar una red):
Para insertar una asignación adicional a una asignación existente, utilice el botón 'Insertar ' 'Salida'
mandar.
Para un salto insertado, se puede hacer una selección que acompaña al texto ingresado "???", y el
salto se puede reemplazar por la etiqueta a la que se asignará.
'Insertar' 'Entrada'
'Insertar' 'Salida'
Símbolo:
Este comando inserta una asignación adicional en una asignación existente. Esta capacidad sirve para
la colocación de los llamados peines de asignación; es decir, la asignación del valor que se encuentra
actualmente en la línea a varias variables.
Si selecciona la cruz rayada encima de una tarea (Posición del cursor 5) (ver 'Posiciones del cursor en
FBD') o la salida directamente delante de ella (Posición del cursor 4), entonces se insertará otra tarea
después de las que ya están allí.
Si se selecciona la línea que cruza directamente delante de una tarea (Posición del cursor 4), se
insertará otra tarea delante de esta.
La salida insertada se asigna con el texto "???". Se debe hacer clic en este texto y cambiarlo por la
variable deseada. Para ello, también puede utilizar el Asistente de entrada. Para la posibilidad de
introducir una dirección en lugar del nombre de la variable, consulte la descripción del diálogo de
opciones en el Capítulo 5.4.1: Comentarios, saltos de línea, 'Extras' 'Opciones'.
'Extras' 'Negate
'Extras' 'Set/Reset'
Símbolo:
Con este comando puede definir salidas como Establecer o Restablecer salidas. Una cuadrícula con
Establecer salida se muestra con [S] y una cuadrícula con Restablecer salida se muestra con [R].
'Extras' 'Vista'
Utilizando este comando para una POU creada en el FBD-Editor, puede elegir si debe mostrarse en el
LD- (lógica de escalera) o en el FBD-Editor (diagrama de bloques de funciones). Esto es posible tanto
en el modo offline como en el online.
Instancia abierta
Este comando corresponde al comando 'Proyecto' 'Abrir instancia'.
Está disponible en el menú contextual (<F2>) o en el menú 'Extras', si el cursor se coloca en el nombre
de un bloque de función en un editor de texto o si se selecciona el cuadro de bloque de función en un
editor gráfico.
Cortar, copiar, pegar y eliminar en FBD
Los comandos utilizados para 'Cortar', 'Copiar', 'Pegar ' y 'Eliminar' se encuentran en el elemento de menú 'Editar'.
Si se selecciona una cruz de línea (Posición del cursor 5) (consulte 'Posiciones del cursor en FBD'), se cortarán,
eliminarán o copiarán las asignaciones, saltos o DEVOLUCIONES ubicados debajo de la línea cruzada.
Si se selecciona una POU (posición del cursor 3), el objeto seleccionado se cortará, eliminará o
copiará, junto con todas las ramas que dependan de las entradas, con la excepción de la primera rama
(posición más alta).
De lo contrario, se cortará, eliminará o copiará toda la rama situada delante de la posición del cursor.
Después de copiar o cortar, la parte eliminada o copiada se encuentra en el portapapeles y ahora se
puede pegar, como se desee.
Para ello, primero debe seleccionar el punto de pegado. Los puntos de pegado válidos incluyen
entradas y salidas.
Si se ha cargado una POU en el portapapeles (como recordatorio: en este caso, todas las ramas
conectadas, excepto la primera, se encuentran juntas en el portapapeles), la primera entrada se
conecta con la rama antes del punto de pegado.
De lo contrario, toda la rama ubicada frente al punto de pegado será reemplazada por el contenido del
portapapeles.
En cada caso, el último elemento pegado está conectado a la rama situada delante del punto de pegado.
Nota: El siguiente problema se resuelve cortando y pegando: Se inserta un nuevo operador en medio de una red.
La rama ubicada a la derecha del operador ahora está conectada con la primera entrada, pero debe estar
conectada con la segunda entrada. Ahora puede seleccionar la primera entrada y ejecutar el comando 'Editar'
'Cortar'. Después de esto, puede seleccionar la segunda entrada y ejecutar el comando 'Editar' 'Pegar'. De esta
manera, la rama depende de la segunda entrada.
Se muestra el valor actual de cada variable. Excepción: Si la entrada de un bloque de funciones es una
expresión, solo se supervisa la primera variable de la expresión.
Al hacer doble clic en una variable, se abre el cuadro de diálogo para escribir una variable. Aquí es
posible cambiar el valor actual de la variable. En el caso de las variables booleanas, no aparece ningún
cuadro de diálogo; Estas variables están activadas para alternar.
El nuevo valor se volverá rojo y permanecerá sin cambios. Si se da el comando 'En línea' 'Escribir
valores', todas las variables se colocan en la lista seleccionada y se muestran una vez más en negro.
El control de flujo se inicia con el comando 'En línea' 'Control de flujo' Utilizando el control de flujo,
puede ver los valores actuales que se transportan en las redes a través de las líneas de conexión. Si
las líneas de conexión no llevan valores booleanos, el valor se mostrará en un campo especialmente
insertado. Si las líneas llevan valores booleanos, se sombrearán en azul en caso de que lleven TRUE.
De este modo, puede acompañar el flujo de información mientras el PLC está funcionando.
Si coloca el puntero del ratón brevemente encima de una variable, el tipo, la dirección y el comentario
sobre la variable se mostrarán en una información sobre herramientas.
Todos los editores de POU constan de una parte de declaración y un cuerpo. Estos están separados
por un divisor de pantalla.
El editor LD es un editor gráfico. Los comandos más importantes se encuentran en el menú contextual
(botón derecho del ratón o <Ctrl>+<F10>).
Para obtener información sobre los elementos, consulte el Capítulo 2.2.6, Diagrama de escalera (LD).
Tenga en cuenta las posibilidades relativas a los comentarios, la introducción de direcciones y el
aspecto alternativo que ofrece el cuadro de diálogo de opciones (véase el capítulo 5.4.1).
3. Cada bobina
Para ello, seleccione el elemento deseado (contacto, bobina, bloque de funciones) y arrástrelo, manteniendo
pulsada la tecla del ratón, lejos de la posición actual. A partir de ese momento, todas las posiciones posibles
dentro de todas las redes de la POU, a las que se puede mover el elemento, se indicarán mediante rectángulos
rellenos de gris.
Mueva el elemento a una de estas posiciones y suelte la tecla del ratón: el elemento se insertará en la
nueva posición.
Sin embargo, si mueve el elemento al nombre (nombre de la variable) de otro elemento, el campo de
nombre se sombreará en verde. Si luego suelta la tecla del mouse, el nombre anterior será
reemplazado por el "arrastrado". Si adicionalmente se muestran la dirección y el comentario (opciones),
la copia también se aplicará a ellos.
Símbolo:
Este comando inserta una red en el editor de escalera. Si ya hay redes, la nueva se insertará antes de
la actualmente enfocada.
Símbolo:
Este comando inserta una red en el editor de escalera. Si ya hay redes, la nueva se insertará después
de la enfocada actualmente.
'Insertar' 'Contacto' en LD
'Insertar' 'Bobina' en LD
A la bobina se le da el texto "???" como configuración predeterminada. Puede hacer clic en este texto y
cambiarlo a la variable deseada. Para ello, también puede utilizar el Asistente de entrada.
Para la posibilidad de introducir direcciones, utilizar saltos de línea en los nombres de las variables y
utilizar comentarios por contacto (bobina, bloque de funciones), consulte la descripción de las
'Opciones de bloque de funciones y diagrama de escalera' (consulte el Capítulo 5.4.1: Comentarios,
saltos de línea, 'Extras', 'Opciones').
'Insertar' ''Set' bobina' en LD
Símbolo:
Este comando inserta una bobina de reinicio. Lo mismo ocurre con los comandos 'Insertar' 'Bobina' y
'Extras' 'Set/Reset', que en combinación también podrían usarse para obtener una bobina de reinicio.
ejecución se controla en la entrada EN. Esta entrada se anexa en la línea de conexión entre las
bobinas y los contactos. Si esta conexión lleva la información "On", se evaluará la POU.
Si una POU ya se ha creado una vez con la entrada EN, esta POU se puede utilizar para crear una red.
Esto significa que los datos de los operadores, funciones y bloques de funciones habituales pueden
fluir en una POU EN y una POU EN puede transportar datos a dichas POU habituales.
Por lo tanto, si desea programar una red en el editor LD, como en FBD, solo necesita insertar primero
un operador EN en una nueva red. Posteriormente, a partir de esta POU, puede continuar
construyendo desde su red, como en el editor FBD. Una red así formada funcionará como la red
correspondiente en FBD.
Símbolo:
Utilice este comando para insertar un bloque de función, un operador, una función o un programa con
entrada EN en una red LD.
La posición marcada debe ser la conexión entre los contactos y las bobinas (Posición del cursor 4) o
una bobina (Posición del cursor 3). La nueva POU se inserta en paralelo a las bobinas y debajo de
ellas; contiene inicialmente la designación "Y". Si lo deseas, puedes cambiar esta designación por otra.
Para ello, también puede utilizar el Asistente de entrada.
Símbolo:
Este comando inserta un bloque de función R_TRIG, que sirve para detectar un flanco ascendente
(FALSO -> VERDADERO) en la señal entrante. Lo mismo ocurre con el comando 'Insertar' 'Bloque de
funciones', que se puede utilizar para insertar cualquier bloque de funciones disponible.
Símbolo:
Este comando inserta un bloque de función F_TRIG, que sirve para detectar un flanco ascendente
(TRUE -> FALSE) en la señal entrante. Lo mismo ocurre con el comando 'Insertar' 'Bloque de
funciones', que se puede utilizar para insertar cualquier bloque de funciones disponible.
Símbolo:
Este comando inserta un bloque de función de temporizador de tipo TON. Esto sirve para obtener un
retardo de encendido (transmisión retardada de la señal entrante). Para la inserción ocurre lo mismo
que para el comando 'Insertar' 'Bloque de funciones', que también se puede usar para insertar un
módulo TON.
'Insertar' 'Saltar' en LD
Con este comando se puede insertar un salto paralelo en el editor LD seleccionado, en paralelo, al final
de las bobinas anteriores. Si la línea entrante entrega el valor "On", entonces el salto se ejecutará a la
etiqueta indicada.
La posición marcada debe ser la conexión entre los contactos y las bobinas o una bobina.
El salto está presente con el texto "???". Puede hacer clic en este texto y realizar un cambio en la
etiqueta deseada.
'Insertar' 'Retorno' en LD
En el editor LD, puede utilizar este comando para insertar una instrucción Return en paralelo al final de
las bobinas anteriores. Si la línea entrante entrega el valor "On", se interrumpe el procesamiento de la
POU en esta red.
La posición marcada debe ser la conexión entre los contactos y las bobinas o una bobina.
'Extras' 'Negar' en LD
'Extras' 'Set/Reset' en LD
Símbolo:
Si ejecuta este comando en una bobina, recibirá un Set Coil. Una bobina de este tipo nunca
sobrescribe el valor TRUE en la variable booleana respectiva. Esto significa que una vez que haya
establecido el valor de esta variable en TRUE, siempre permanecerá en TRUE. Una bobina fija se
designa con una "S" en el símbolo de la bobina.
Si ejecuta este comando una vez más, se le dará una bobina de reinicio. Una bobina de este tipo nunca
sobrescribe el valor FALSE en la variable booleana respectiva. Esto significa que una vez que haya
establecido el valor de esta variable en FALSE, siempre permanecerá en FALSE. Una bobina de
reinicio se designa con una "R" en el símbolo de la bobina.
Si ejecuta este comando repetidamente, la bobina alternará entre set, reset y bobina normal.
Si coloca el puntero del ratón brevemente encima de una variable, el tipo, la dirección y el comentario
sobre la variable se mostrarán en una información sobre herramientas.
Todos los editores de POU constan de una parte de declaración y un cuerpo. Estos están separados
por un divisor de pantalla.
El editor de gráficos de funciones secuenciales es un editor gráfico. Los comandos más importantes se encuentran
en el menú contextual (botón derecho del ratón o <Ctrl><F10>). La información sobre herramientas muestra tanto
en el modo sin conexión como en el modo en línea y en el estado ampliado los nombres completos o las
expresiones de pasos, transiciones, saltos, etiquetas de salto, calificadores o acciones asociadas.
Para obtener información sobre el gráfico de funciones secuenciales, consulte el Capítulo 2.2.3, 'Gráfico de funciones secuenciales'.
El editor del Diagrama de Funciones Secuenciales debe estar de acuerdo con las particularidades de la
SFC. En referencia a estos, los siguientes elementos del menú serán de utilidad.
la esquina inferior izquierda o derecha del grupo. La selección resultante es el grupo cohesivo más
pequeño de elementos que incluye ambos elementos.
¡Tenga en cuenta que un paso solo se puede eliminar junto con la transición anterior o la siguiente!
Nota: Al cambiar el nombre de un paso, tenga en cuenta que no se puede agregar ningún comentario. Ejemplo:
¡"Step_xy (* contador *)" no está permitido!
Símbolo:
Este comando inserta una rama alternativa en el editor SFC como la rama izquierda del bloque
marcado. Para ello, el bloque marcado debe comenzar y terminar con una transición. A continuación, la
nueva rama se compone de una transición.
Símbolo:
'Este comando inserta una rama paralela en el editor SFC como la rama izquierda del bloque marcado.
Para ello, el bloque marcado debe comenzar y terminar con un paso. La nueva rama se compone
entonces de un paso. Para permitir saltos a las ramas paralelas que se han creado, estas deben estar
provistas de una etiqueta de salto (ver 'Extras' 'Añadir etiqueta a la rama paralela').
'Insertar' 'Saltar'
'Este comando inserta un salto en el editor SFC al final de la rama, a la que pertenece el bloque
marcado. Para ello, la rama debe ser una rama alternativa.
La cadena de texto insertada 'Step' en el salto insertado se puede seleccionar y reemplazar por el
nombre del paso o la etiqueta de salto de una rama paralela a la que se va a saltar.
Con respecto al nombre del paso, consulte arriba 'Insertar' 'Transición de paso (antes)'.
'Insertar' 'Transición-Salto'
Símbolo:
Este comando inserta una transición en el editor SFC, seguida de un salto al final de la rama
seleccionada. Para ello, la rama debe ser una rama paralela.
La cadena de texto insertada 'Step' en el salto insertado se puede seleccionar y reemplazar por el
nombre del paso o la etiqueta de salto de una rama paralela a la que se va a saltar.
Con respecto al nombre del paso y el nombre de la transición, consulte arriba 'Insertar' 'Transición de paso (antes)'.
A paso con una acción de entrada se designa con una "E" en la esquina inferior izquierda.
Tenga en cuenta que la condición de transición que se escribe dentro de la ventana del editor tendrá
prioridad sobre una condición que podría escribirse directamente en la marca de transición. Ejemplo: Si aquí
i>100, entonces la condición de transición será FALSE, ¡aunque se haya ingresado TRUE en la marca!
Puede aprovechar tres entradas diferentes en el cuadro de diálogo de atributos de paso. En Tiempo
mínimo, especifique el período de tiempo mínimo que debe tardar el procesamiento de este paso. En
Tiempo máximo, especifique el tiempo máximo que debe tardar el procesamiento de este paso. Tenga
en cuenta que las entradas son del tipo TIME, por lo que utiliza una constante TIME (es decir, T#3s) o
una variable del tipo TIME.
En Comentario , puede insertar un comentario en el paso. En el cuadro de diálogo "Opciones de
diagrama de funciones secuenciales" que se abre en "Extras" "Opciones", se puede definir si se
muestran los comentarios, el ajuste de tiempo o nada para los pasos en el editor SFC. A la derecha,
junto al paso, aparecerá el comentario o la configuración de tiempo o ninguno de ambos.
Aquellos atributos que no se muestran debido a la configuración de las opciones, pueden, además del
nombre del paso, mostrarse en una información sobre herramientas, que aparece cuando el cursor se
coloca en la esquina superior o inferior derecha del cuadro de pasos.
Si se excede el tiempo máximo, se establecen indicadores SFC que el usuario puede consultar.
En el ejemplo se muestra un paso cuya ejecución debe durar al menos dos y, como máximo, diez
segundos. En el modo Online, además de estos dos tiempos, hay una visualización de cuánto tiempo
ha estado activo el paso.
En el ejemplo, los pasos 2 y 6 tienen un límite de tiempo. Shift1 dura al menos dos y, como máximo,
diez segundos. Shift2 dura al menos siete y, como máximo, ocho segundos.
'Extras' 'Opciones'
Con este comando se abre un cuadro de diálogo en el que se pueden configurar diferentes opciones para la POU SFC.
En Altura del paso, puede introducir la altura de las líneas que puede tener un paso SFC en el editor
SFC. 4 es la configuración estándar aquí. En Ancho de paso, puede especificar cuántas columnas
debe tener un escalón. 6 es la configuración estándar aquí.
También puede preestablecer la Visualización en el paso, es decir, cuál de los atributos, definidos como
'Extras' 'Atributos del paso' debe mostrarse junto al paso. Elija Comentario, Límites de tiempo o Nada:
• Si se establece "Nada", el comentario definido y los límites de tiempo se pueden mostrar en una información sobre
herramientas, que aparece cuando se coloca el cursor en la esquina inferior derecha del cuadro de pasos.
• Si se establece "Comentario", el comentario definido y los límites de tiempo se pueden mostrar en una información
sobre herramientas, que aparece cuando se coloca el cursor en la esquina superior derecha del cuadro de pasos.
• Si se establece "Límites de tiempo", el comentario definido y los límites de tiempo se pueden mostrar en una
información sobre herramientas, que aparece cuando se coloca el cursor en la esquina inferior derecha del cuadro
de pasos.
Cuadro de diálogo para las opciones del gráfico de funciones secuenciales
Símbolo:
Si este comando está activado (indicado por una marca de verificación delante del elemento de menú y
un símbolo impreso en la barra de herramientas), se insertarán pasos IEC en lugar de los pasos
simplificados al insertar transiciones de pasos y bifurcaciones paralelas.
Si esta opción está activada, el paso Init se establece como un paso IEC al crear una nueva POU SFC.
Esta configuración se guarda en el archivo "CoDeSys.ini" y se restaura cuando CoDeSys se inicia de nuevo.
Gráfico de funciones secuenciales con un paso activo (Mayús1) y un punto de interrupción (Paso 10)
En la imagen de arriba, el paso representado ya ha estado activo 8 segundos y 410 milisegundos. Sin
embargo, el paso debe estar activo durante al menos 7 minutos antes de que se abandone el paso.
Con ' En línea' 'Alternar punto de interrupción' se puede establecer un punto de interrupción en un paso o
en una acción en las ubicaciones permitidas por el lenguaje en uso. A continuación, el procesamiento se
detiene antes de la ejecución de este paso o antes de la ubicación de la acción en el programa. Los pasos o
las ubicaciones del programa en los que se establece un punto de interrupción están marcados en azul claro.
Si hay varios pasos activos en una rama paralela, el paso activo cuya acción se procesará a
continuación se muestra en rojo.
Si se han utilizado los pasos IEC, todas las acciones activas en el modo en línea se mostrarán en azul.
Con el comando ' En línea' 'Paso a paso' se pasa siempre al siguiente paso en el que se ejecuta la
acción. Si la ubicación actual es:
a paso en el procesamiento lineal de una POU o un paso en la rama paralela más a la derecha de una POU, la
ejecución devuelve desde la POU SFC al autor de la llamada. Si el POU es el programa principal, comienza el
siguiente ciclo.
a paso en una bifurcación paralela que no sea la más a la derecha, la ejecución salta al paso activo en
la siguiente bifurcación paralela.
la última ubicación del punto de interrupción dentro de una acción 3S, la ejecución salta al llamador del SFC.
la última ubicación del punto de interrupción dentro de una acción IEC, la ejecución salta al llamador del SFC.
La última posición del punto de interrupción dentro de una acción de entrada o una acción de salida, la
ejecución salta al siguiente paso activo.
Con 'Online', 'Step in', incluso se pueden realizar acciones. Si se va a saltar a una acción de entrada,
salida o IEC, se debe establecer un punto de interrupción allí. Dentro de las acciones, toda la
funcionalidad de depuración del editor correspondiente está disponible para el usuario.
Si apoya el cursor del ratón durante un breve periodo de tiempo sobre una variable en el editor de declaraciones,
el tipo, la dirección y el comentario de la variable se mostrarán en una información sobre herramientas
Tenga en cuenta: Si cambia el nombre de un paso y realiza un cambio en línea mientras este paso está activo, el
programa se detendrá en estado indefinido.
Nota: En las expresiones de supervisión (por ejemplo, A Y B) en las transiciones, solo se muestra el "Valor total" de la
transición.
No se utiliza ninguna cuadrícula de ajuste para el editor de gráficos de funciones continuas, por lo que los
elementos se pueden colocar en cualquier lugar. Los elementos de la lista de procesamiento secuencial
incluyen cuadros, entrada, salida, salto, etiqueta, retorno y comentarios. Las entradas y salidas de estos
elementos se pueden conectar arrastrando una conexión con el ratón. La línea de conexión se dibujará
automáticamente. La línea de conexión más corta posible se traza teniendo en cuenta las conexiones
existentes. Las líneas de conexión se ajustan automáticamente cuando se mueven los elementos. Si se da el
caso de que no se pueda trazar una línea de conexión simplemente por falta de espacio, se mostrará una
línea roja entre la entrada y la salida asociada. Esta línea se convertirá en una línea de conexión tan pronto
como haya espacio disponible.
Una ventaja del gráfico de funciones continuo en comparación con el editor de diagramas de bloques de
funciones habitual FBD es el hecho de que las rutas de retroalimentación se pueden insertar directamente.
Los comandos más importantes se pueden encontrar en el menú contextual
2. Campos de texto para el cuadro de elementos, entrada, salida, salto, etiqueta, retorno y comentarios,
así como campos de texto para el marcador de conexión
Este comando se utiliza para insertar un salto. El texto ofrecido "???" puede ser seleccionado y
reemplazado por la etiqueta de salto a la que debe saltar el programa.
La etiqueta de salto se inserta mediante el comando 'Insertar 'Etiqueta'.
Símbolo:
Estos comandos están disponibles tan pronto como se abre una macro para editarla. Se utilizan para
insertar pines de entrada o salida como entradas y salidas de la macro. Se diferencian de las entradas
y salidas normales de las POU por la forma en que se muestran y en que no tienen índice de posición.
VarOut1 se establece en TRUE, si VarIn1 entrega TRUE. VarOut1 conserva este valor, incluso cuando
VarIn1 vuelve a FALSE.
VarOut2 se establece en FALSE, si VarIn2 entrega TRUE. VarOut2 conserva este valor, incluso
cuando VarIn2 vuelve a FALSE.
La activación múltiple de este comando hace que la salida cambie entre Set, Reset y la condición
normal.
ADD solo se ejecuta en este ejemplo cuando la variable booleana "condition" es TRUE. VarOut
también se establecerá en TRUE después de la ejecución de ADD. Pero si la condición de epílogo
cambia a FALSE, ADD ya no se ejecutará y, por lo tanto, VarOut seguirá siendo TRUE. El siguiente
ejemplo muestra cómo se puede utilizar el valor ENO para otros bloques:
x debe inicializarse en 1 e y inicializarse en 0. Los números en la esquina derecha del bloque indican el
orden en que se ejecutan los comandos.
x se incrementará en uno hasta que alcance el valor 10. Esto hace que la salida del módulo LT(0)
entregue el valor FALSE y se ejecuten SUB(3) y ADD(5). x se vuelve a establecer en el valor 1 e y se
incrementa en 1. LT(0) se ejecuta de nuevo siempre y cuando x sea menor que 10. Por lo tanto, cuenta
el número de veces que x pasa por el rango de valores de 1 a 10.
puede cambiar cuando se selecciona el tronco del bloque en cuestión y luego se selecciona el comando 'Extras',
'Propiedades' o simplemente se hace doble clic en el tronco. Se abre el cuadro de diálogo "Editar parámetros":
Cuadro de diálogo Propiedades
Los valores del parámetro de entrada constante (VAR_INPUT CONSTANT) se pueden cambiar. Aquí
es necesario marcar el valor del parámetro en la columna Valor. Otro clic del ratón o pulsando la barra
espaciadora permite editarlo. La confirmación del cambio en el valor se realiza pulsando la tecla <Intro>
o pulsando <Escape> rechaza los cambios. El botón OK almacena todos los cambios realizados.
Tenga en cuenta: Esta funcionalidad y la declaración asociada de variables con la palabra clave "VAR_INPUT
CONSTANT" solo tiene un impacto para el editor CFC. En el editor FBD siempre se mostrarán todas las variables
de ENTRADA en un cuadro, independientemente de si se declaran como VAR_INPUT o como CONSTANTE
VAR_INPUT. También para los editores de texto esto no hace ninguna diferencia.
El comando ' Extras' 'Seleccionar todo' marca todos los elementos a la vez.
Creación de conexiones
Una entrada de un elemento se puede conectar con precisión a la salida de otro elemento. Una salida
de un elemento se puede conectar a las entradas de otros elementos.
Hay varias posibilidades para conectar la entrada de un elemento E2 con la salida de un elemento E1.
Coloque el ratón en la salida del elemento E1, haga clic con la tecla izquierda del ratón, mantenga
pulsada la tecla izquierda del ratón y arrastre el cursor del ratón a la entrada del elemento E2 y suelte
la tecla izquierda del ratón. Durante esta operación de arrastre con el ratón, se establece una conexión
entre la salida del elemento E1 y el cursor del ratón.
Coloque el ratón en la entrada del elemento E2, haga clic con la tecla izquierda del ratón, mantenga pulsada la tecla
izquierda del ratón y arrastre el cursor del ratón a la salida del elemento E1 y suelte la tecla izquierda del ratón.
Mueva uno de los elementos E1 o E2 y colóquelo de tal manera soltando la tecla izquierda del mouse
que la salida del elemento E2 y la entrada del elemento E1 toquen.
Cuando el elemento E2 es un bloque con una entrada libre, también se puede establecer una conexión
arrastrando el ratón desde una salida de E1 hasta el tronco de E2. Se creará una conexión con la
entrada libre en la posición más alta en E2 cuando se suelte la tecla del ratón. En el caso de que el
bloque E2 no tenga una entrada libre, pero sea un operador al que se le pueda añadir una entrada, se
generará automáticamente una nueva entrada.
La salida y la entrada de un bloque se pueden conectar entre sí (ruta de retroalimentación) mediante
este método. Para establecer una conexión entre dos pines, haga clic con el botón izquierdo del ratón
en un pin, mantenga presionado el botón y arrastre así la conexión hasta el pin deseado, donde luego
suelte el botón. Si durante el arrastre de la conexión se extiende fuera del área de trabajo del editor, el
desplazamiento se produce automáticamente. En el caso de los tipos de datos simples, la prueba de
tipo se lleva a cabo durante la conexión. Si los tipos de los dos pines no son compatibles, el cursor
cambia a "Prohibido". En el caso de los tipos de datos complejos, no se realizan pruebas.
Cambio de conexiones
Una conexión entre la salida de un elemento E1 y la entrada de un elemento E2 se puede cambiar
fácilmente por una conexión entre la salida del elemento E1 y la entrada del elemento E3. Se hace clic
con el ratón en la entrada de E2, se mantiene pulsada la tecla izquierda del ratón, el cursor del ratón se
mueve a la entrada de E3 y luego se suelta.
Eliminación de conexiones
Hay varias posibilidades para eliminar la conexión entre la salida de un elemento E1 y la entrada de un
elemento E2:
Seleccione la salida del elemento E1 y presione la tecla <Eliminar> o ejecute el comando 'Editar' 'Eliminar'.
Se eliminarán varias conexiones al mismo tiempo si la salida de E1 está conectada a más de una de
las entradas.
Seleccione la entrada del elemento E2 y presione la tecla <Eliminar> o ejecute el comando 'Editar' 'Eliminar'.
Seleccione la entrada de E2 con el ratón, mantenga pulsada la tecla izquierda del ratón y arrastre la
conexión desde la entrada a E2. La conexión se elimina cuando se suelta la tecla izquierda del ratón en
un área libre de la pantalla.
El programa da un nombre único como estándar que comienza con M, pero que se puede cambiar El
nombre del conector se almacena como un parámetro de salida, pero se puede editar tanto en la
entrada como en la salida.
Es importante saber que el nombre del conector está asociado a una propiedad de la salida de una
conexión y se almacena con ella.
2. Edite el conector en la entrada: Si se reemplaza el texto en un conector, también se reemplazará en el marcador de conexión
correspondiente en la otra POU. Las conexiones en las representaciones de conectores se pueden convertir en conexiones
normales en las que se marca la salida de las conexiones (posición del cursor 4) y se selecciona de nuevo el punto de menú
Orden de ejecución
Los elementos block, output, jump, return y label poseen cada uno un número que indica el orden en que se
ejecutan. En este orden secuencial, los elementos individuales se evalúan en tiempo de ejecución.
Al pegar un elemento, el número se da automáticamente de acuerdo con la secuencia topológica (de
izquierda a derecha y de arriba hacia abajo). El nuevo elemento recibe el número de su sucesor
topológico si la secuencia ya se ha cambiado y todos los números más altos se incrementan en uno.
El número de un elemento permanece constante cuando se mueve.
La secuencia influye en el resultado y debe cambiarse en ciertos casos.
Si se muestra la secuencia, el número de ejecución secuencial correspondiente se muestra en la
esquina superior derecha del elemento.
Cuando se selecciona este comando, lo primero que sucede es que los elementos se ordenan
topográficamente. A continuación, se crea una nueva lista de procesamiento secuencial. Basándose en
los valores conocidos de las entradas, el ordenador calcula cuáles de los elementos aún no numerados
pueden ser procesados a continuación. En la "red" anterior, el bloque AND, por ejemplo, podría
procesarse inmediatamente, ya que se conocen los valores en sus entradas (1 y 2). El bloque SUB solo
se puede procesar entonces, ya que primero se debe conocer el resultado de ADD, etc.
Las rutas de retroalimentación se insertan en último lugar.
La ventaja de la secuenciación del flujo de datos es que una caja de salida que está conectada a la
salida de un bloque viene inmediatamente después de ella en el sistema de secuenciación del flujo de
datos, lo que por orden topológico no siempre sería el caso. En algunos casos, el ordenamiento
topológico puede ofrecer un resultado diferente al ordenamiento por flujo de datos, un punto que se
puede reconocer en el ejemplo anterior.
Símbolo:
Con este comando, se pueden ensamblar varias POU que se seleccionan al mismo tiempo en un bloque, que
se puede nombrar como una macro. Las macros solo se pueden reproducir copiando/pegando, por lo que cada
copia se convierte en una macro separada cuyo nombre se puede elegir de forma independiente. Por lo tanto,
las macros no son referencias. Todas las conexiones que se cortan mediante la creación de una macro generan
pines de entrada o salida en la macro. Las conexiones a las entradas generan un in-pin. El nombre
predeterminado aparece junto a la chincheta con el formato In<n>. Para las conexiones a salidas, aparece
Out<n>. Las conexiones afectadas que tenían marcadores de conexión antes de la creación de la macro,
conservan el marcador de conexión en el PIN de la macro.
Al principio, una macro tiene el nombre predeterminado "MACRO". Esto se puede cambiar en el campo
Nombre del uso de la macro. Si se edita la macro, el nombre de la macro se mostrará en la barra de
título de la ventana del editor anexada al nombre de la POU.
Ejemplo: Selección
Macro:
En el editor:
Símbolo:
Con este comando, o haciendo doble clic en el cuerpo de la macro, la macro se abre para editarla en la
ventana del editor de la POU asociada. El nombre de la macro se muestra anexado al nombre de la
POU en la barra de título.
Los cuadros de pines generados para las entradas y salidas de la macro durante la creación se pueden manejar como
entradas y salidas POU normales. También se pueden mover, eliminar, agregar, etc. Sólo difieren en la forma en que
se muestran y no tienen índice de posición. Para agregar puede usar los botones (entrada) resp.
(salida), que están disponibles en la barra de menús. Los cuadros de pines tienen esquinas
redondeadas. El texto en el cuadro de pines coincide con el nombre del pin en la pantalla de macros.
El orden de los pines en el cuadro de macros sigue el orden de ejecución de los elementos de la
macro. Un índice de orden inferior antes de uno más alto, un pin más alto antes de uno más bajo.
El orden de procesamiento dentro de la macro se cierra, en otras palabras, la macro se procesa como
un bloque, en la posición de la macro en la POU primaria. Por lo tanto, los comandos para manipular el
orden de ejecución operan solo dentro de la macro.
'Extras' 'Un nivel macro atrás', 'Extras' 'Todos los niveles macro atrás'
Símbolos:
Estos comandos también están disponibles en la barra de herramientas, tan pronto como se abre una
macro para editarla. Si las macros están anidadas unas dentro de otras, es posible cambiar al siguiente
nivel de visualización más alto o más alto.
los valores mostrados. En el caso de las conexiones booleanas, el nombre de la variable y la conexión
se muestran en azul si el valor es TRUE, de lo contrario permanecen en negro.
Las conexiones booleanas internas también se muestran en línea en azul en el estado VERDADERO,
de lo contrario, en negro. El valor de las conexiones internas no booleanas se muestra en un pequeño
cuadro con esquinas redondeadas en el pin de salida de la conexión.
Las conexiones no booleanas con marcadores de conexión muestran su valor dentro del marcador de
conexión. En el caso de las conexiones booleanas, las líneas y los nombres de los marcadores se
muestran en azul si la línea lleva el valor TRUE, de lo contrario es negro.
Control de flujo:
Cuando se activa el control de flujo, las conexiones que se han atravesado se marcan con el color
seleccionado en las opciones del proyecto.
Interrupción:
Los puntos de interrupción se pueden establecer en todos los elementos que también tienen un índice de orden de
secuencia de procesamiento. El procesamiento del programa se detendrá antes de la ejecución del elemento
respectivo, es decir, para las POU y las salidas antes de la asignación de entradas, para las etiquetas de salto
antes de la ejecución del elemento con el siguiente índice. El índice de secuencia de procesamiento del elemento
se utiliza como posición del punto de interrupción en el cuadro de diálogo Punto de interrupción.
La configuración de los puntos de interrupción en un elemento seleccionado se realiza con la tecla F9 o a través
de la opción de menú 'Punto de interrupción activado/desactivado' en el menú 'En línea' o 'Extras' o en el menú
contextual del editor. Si se establece un punto de interrupción en un elemento, este se borrará y se revertirá la
próxima vez que se ejecute el comando 'Punto de interrupción activado/desactivado'. Además, el punto de
interrupción de un elemento se puede alternar haciendo doble clic en él.
Los puntos de interrupción se muestran en los colores introducidos en las opciones del proyecto.
Etiqueta de DEVOLUCIÓN:
En el modo Online, se genera automáticamente una etiqueta de salto con el nombre "RETURN" en la primera
columna y después del último elemento del editor. Esta etiqueta marca el final de la POU y se salta al paso paso
justo antes de que la ejecución salga de la POU. No se insertan marcas RETURN en las macros.
Escalonamiento:
Al usar 'Paso a paso', siempre saltará al elemento con el índice de orden siguiente más alto. Si el
elemento actual es una macro o una POU, entonces su implemento se bifurca cuando 'Step in' está en
vigor. Si se ejecuta un 'Paso a paso' desde allí, se salta al elemento cuyo índice de orden sigue al de la
macro.
Acercar a POU
Atajo: <Alt>+<Intro>
Con este comando, una POU seleccionada se carga en su editor. El comando está disponible en el
menú contextual (<F2>) o en el menú 'Extras', si el cursor está situado en el nombre de una POU en un
editor de texto o si la casilla POU está seleccionada en un editor gráfico.
Si se trata de una POU de una biblioteca, se llama al administrador de la biblioteca y se muestra la
POU correspondiente.
6 Los recursos
Variables
En el Organizador
globalesdeo objetos,
uno de los
seleccione
objetos existentes
el icono con variables globales. A continuación, ejecute el
comando 'Proyecto' 'Añadir objeto'. Asigne un nombre correspondiente al objeto que aparece en el
cuadro de diálogo. Con este nombre se creará un objeto adicional con la palabra clave VAR_GLOBAL.
Si prefiere una configuración variable de un objeto, cambie la palabra clave correspondiente a
VAR_CONFIG.
No está permitido nombrar dos variables globales de forma idéntica. Por ejemplo, obtendrá un error del compilador,
si ha definido una variable "var1" en la configuración del PLC, así como en una lista global de variables.
Variables de red
Nota: El uso de variables de red debe ser compatible con el sistema de destino y debe estar activado en la
configuración de destino (categoría Funcionalidad de red).
Mediante un intercambio automático de datos (compárese con el intercambio de datos no automático a través del
Administrador de parámetros) es posible actualizar el valor de una variable de red en varios sistemas de control
dentro de una red de controladores compatible con CoDeSys . Esto no requiere funciones específicas del
controlador, pero los suscriptores de red deben utilizar listas de declaraciones idénticas y configuraciones de
transferencia coincidentes para las variables de red en sus proyectos. Para que esto sea posible, se recomienda
que la declaración no se introduzca manualmente en cada aplicación de controlador, sino que se cargue desde un
archivo separado al crear la lista. (consulte 'Crear una lista global de variables').
Active la opción Importar antes de compilar, si desea que la lista de variables se lea desde el archivo
externo antes de cada compilación del proyecto. Active la opción Exportar antes de compilar, si
desea que la lista de variables se escriba en el archivo externo antes de cada compilación del proyecto.
Si cierra el cuadro de diálogo 'Lista de variables globales' con OK, se crea el nuevo objeto. Las listas de variables globales se
pueden reconocer en el Organizador de objetos por el símbolo . Con el comando 'Proyecto', 'Objeto', 'Propiedades', puede
volver a abrir el cuadro de diálogo de configuración 'Lista global de variables' para la entrada marcada en el Organizador de
objetos.
Si aún no hay ninguna configuración, en el caso de una red UDP obtendrá una única hoja tabuladora
con la inscripción ' Conexión 1 (UDP)'. Cada vez que se vuelve a pulsar el botón "Añadir red", se
obtienen hasta cuatro hojas más inscritas con números de serie después de "Conexión".
Tipo de red: elija el tipo deseado de la lista. La lista está definida por las entradas del sistema de
destino. Por ejemplo, se puede seleccionar "CAN" como abreviatura de una red CAN, o "UDP" para un
sistema de transmisión UDP.
Configuración: Este botón abre el cuadro de diálogo Configuración para <tipo de red> con los
siguientes parámetros de configuración:
UDP:
Si se pulsa este botón, se definirá el puerto 1202 para el intercambio de datos con los demás
participantes de la red. La dirección de difusión/multidifusión se establecerá en "255 . 255 . 255 . 255",
lo que significa que el intercambio de datos se realizará con todos los participantes de la red.
Puerto: Introduzca aquí el número de puerto deseado para sobrescribir la configuración estándar
(consulte más arriba, Usar estándar). ¡Asegúrese de que los otros nodos de la red definan el mismo
puerto! Si tiene más de una conexión UDP definida en el proyecto, el número de puerto se modificará
automáticamente en todos los conjuntos de configuración de acuerdo con la entrada que realice aquí.
ENLATAR:
Índice del Controlador: Índice del Controlador CAN, mediante el cual se deben transferir las variables.
Depende del sistema de destino, si las variables de red de la lista se pueden definir como 'legibles' y
'escritura'' o exclusivamente una de ambas. Para configurar esta propiedad, active las opciones
respectivas 'Leer' y 'Escribir':
Leer: Se leerán las variables de la lista; si la opción está desactivada, se ignorarán otras variables
enviadas a través de la red. Además, se puede activar la siguiente opción:
Solicitud en el arranque: Si el nodo local es un nodo de "lectura" (opción 'Lectura' activada), tan pronto
como se reinicie, los valores reales de las variables se solicitarán a todos los nodos de escritura y serán
enviados por aquellos, independientemente de cualquier otra condición de transmisión (tiempo, evento),
que normalmente desencadenan la comunicación. Condición previa: En la configuración de los nodos de
escritura se debe activar la opción 'Responder a las solicitudes de arranque'. (ver más abajo).
Escritura: Se escribirán las variables, adicionalmente se pueden configurar las siguientes opciones:
Incluir suma de comprobación: Se agregará una suma de comprobación a cada paquete que se envíe.
El receptor comprobará la suma de comprobación para asegurarse de que las definiciones de variables de
remitente y receptor son idénticas. No se aceptará un paquete con una suma de comprobación que no
coincida y, si está configurado ('Usar transferencia de acuse de recibo', ver más abajo), se confirmará
negativamente.
Usar transferencia de acuse de recibo: (no hay función en caso de CAN) Cada mensaje será
reconocido por el receptor. Tan pronto como el remitente no reciba al menos un acuse de recibo
dentro de un ciclo, se producirá un mensaje de error, que en el caso de una red UDP- se
escribirá en la estructura de diagnóstico proporcionada por NetVarUdp_LIB_V23.lib.
Responder a las solicitudes de arranque: Si el nodo local es un nodo de "escritura" (opción 'Escribir'
activada), se responderá a cada solicitud de un nodo de lectura que envíe en el arranque (Opción Solicitud
en el arranque, ver arriba). Esto significa que los valores reales de las variables se transmitirán incluso si
ninguno de los otros activadores de transmisión definidos (tiempo o evento) lo forzaría en este momento.
Transmitir cada ciclo: Las variables se escriben dentro de los intervalos especificados después
de Intervalo. (notación de tiempo, por ejemplo, T#70ms).
Transmitir en caso de cambio: Las variables se escriben solo cuando sus valores cambian; una entrada
después de Mínimo puede, sin embargo, establecer un lapso de tiempo mínimo entre transferencias.
Transmitir en el evento: Las variables de la lista se escribirán tan pronto como la variable
insertada en Variable obtenga TRUE.
Las listas de variables de red global se marcan con el símbolo en el Organizador de objetos.
Nota: Si se utiliza una variable global de red en una o más tareas, se aplica lo siguiente al componente de tiempo
de la transferencia: Cuando se llama a cada tarea, se prueba para determinar qué parámetros se aplican a la
transferencia del valor de la variable (configuración en el cuadro de diálogo 'Lista de variables globales'). El valor
de la variable se transferirá o no, dependiendo de si ha pasado el intervalo de tiempo especificado. En cada
transferencia, el contador de intervalo de tiempo para esta variable se restablece a cero.
El envío siempre se realiza desde el sistema de tiempo de ejecución del controlador afectado. Por lo
tanto, no es necesario proporcionar funciones específicas de control para el intercambio de datos.
Sintaxis:
VAR_GLOBAL
(* Declaraciones de variables *)
END_VAR
Solo se pueden utilizar variables de red, si el sistema de destino lo permite. También se definen en esta
sintaxis.
Ejemplo de una lista de variables de red que se creó mediante la vinculación de un archivo de exportación *.exp y que obtuvo
el nombre NETWORKVARIABLES_UDP:
Ejemplo de una lista de variables de red, que se ha creado cargando un archivo de exportación *.exp y
que se nombró Network_Vars_UDP:
Constantes globales
Las constantes globales también obtienen la palabra clave CONSTANT.
Sintaxis:
VAR_GLOBAL CONSTANTE
(* Declaraciones de variables *)
END_VAR
EN %Q*: BOOL;
END_VAR
Aquí se definen dos variables de E/S locales, una entrada local (%I*) y una salida local (%Q*).
Si desea configurar E/S locales para la configuración de variables en el Organizador de objetos en los Recursos
tarjeta de registro, el objeto Variable_Configuration generalmente estará disponible. A continuación,
se puede cambiar el nombre del objeto y crear otros objetos para la configuración de las variables.
El editor para la configuración de variables funciona como el editor de declaraciones.
Las variables para las configuraciones de E/S locales deben ubicarse entre las palabras clave VAR_CONFIG y
END_VAR.
El nombre de una variable de este tipo consiste en una ruta de instancia completa a través de la cual las POU
individuales y los nombres de instancia están separados entre sí por puntos. La declaración debe contener una
dirección cuya clase (entrada/salida) corresponda a la de la dirección especificada de forma incompleta (%I*, %Q*)
en el bloque de funciones. Además, el tipo de datos debe coincidir con la declaración en el bloque de funciones.
Las variables de configuración, cuya ruta de acceso de instancia no es válida porque la instancia no existe,
también se denotan como errores. Por otro lado, también se notifica un error si no existe ninguna
configuración para una variable de instancia. Para recibir una lista de todas las variables de configuración
necesarias, se puede utilizar el elemento de menú "Todas las rutas de instancia" en el menú "Insertar".
PROGRAMA PLC_PRG
VAR Hugo: locio; Otto: locio;
END_VAR
A continuación, una configuración de variable corregida se vería de esta manera:
VAR_CONFIG
PLC_PRG. Hugo.loci AT %IX1.0 : BOOL; PLC_PRG. Hugo.loco AT %QX0.0 : BOOL; PLC_PRG. Otto.loci AT
%IX1.0 : BOOL; PLC_PRG. Otto.loco AT %QX0.3 : BOOL;
END_VAR
Abra con un clic del ratón en el signo más en la entrada 'Configuración de alarmas' el árbol de
configuración disponible actualmente. Si va a crear una nueva configuración, este árbol solo mostrará
las entradas 'Clases de alarma' y 'Sistema'.
describe la ocurrencia momentánea de un cambio, por ejemplo, un cambio del estado normal al estado
de alarma. En la configuración de alarmas de CoDeSys para los tres tipos de eventos y los estados de
alarma correspondientes se utilizan los mismos nombres (INTO, ACK, OUTOF).
Presione el botón Agregar para crear una nueva clase de alarma. A continuación, en la ventana superior se insertará
una línea, principalmente solo con una entrada "NOACK" (sin acuse de recibo) en la columna "Acuse de recibo".
Defina un nombre para la clase de alarma en el campo correspondiente de la columna Nombre (abra un marco de
edición haciendo clic con el ratón en el campo) y, si es necesario, modifique el tipo de confirmación en la columna
Reconocimiento.
Correo electrónico:
Se enviará un correo electrónico De: dirección de correo electrónico del remitente; Para: dirección
de correo electrónico del destinatario; Sujeto: cualquier tema;
con el mensaje definido.
Mensaje: Texto del mensaje (ver más abajo); Servidor:
Nombre del servidor de correo electrónico.
Variable: Una variable del programa Variable: Nombre de la variable: Puede seleccionar
CoDeSys obtendrá el estado de las variables del proyecto a través del asistente de
la alarma o una cadena de texto entrada (<F2>): Una variable booleana indicará los
estados de alarma NORM = 0 e INTO = 1, una
de mensaje. variable entera indicará los estados de alarma NORM
= 0, INTO = 1, ACK = 2, OUTOF = 4; una variable de
cadena obtendrá
MENSAJE Se utilizará el texto del mensaje que se define para la alarma concreta en
la configuración del grupo de alarmas.
FECHA Fecha en la que se alcanzó el estado de alarma (INTO).
HORA Hora de entrada de la alarma.
EXPRESIÓN Expresión (definida en el grupo de alarmas) que ha provocado la alarma.
PRIORIDAD Prioridad de la alarma (definida para el grupo de alarmas).
VALOR Valor actual de la expresión (véase más arriba).
TIPO Tipo de alarma (definido en el grupo de alarmas)
CLASE Clase de alarma (definida en el grupo de alarmas)
TARGETVALUE Valor objetivo para los tipos de alarma DEV+ y DEV- (definidos en el grupo de alarmas)
Más adelante, al definir la alarma en el grupo de alarmas, introduzca en la columna 'Mensaje' lo siguiente:
"¡Temperatura crítica!". La salida del mensaje de alarma final será la siguiente:
Nota: El texto del mensaje también se verá afectado en caso de un cambio de idioma del proyecto si se
incluye en un archivo *. vis o en un archivo de traducción *.tlt. PERO: En este caso, al igual que los textos
que se refieren a una visualización, debe establecerse entre dos caracteres "#" (por ejemplo, en el ejemplo
que se muestra arriba: "#Temperature crítico !#" y "TIME /EXPRESSION: MESSAGE #current#: VALUE",
para que el texto se introduzca en el archivo de traducción como ALARMTEXT_ITEMs).
A la configuración del grupo de alarmas se debe definir un fichero de registro para la acción «Guardar» (véase el capítulo 6.3.4).
Se puede definir una estructura jerárquica de grupos de alarmas a través de elementos de carpeta. Cuando se selecciona
un grupo de alarmas en el árbol de configuración, automáticamente se mostrará el cuadro de diálogo Grupo de alarmas.
A través del botón Agregar una alarma se puede agregar al grupo. Se insertará una nueva línea en la
ventana de la tabla y allí se establecerán los siguientes parámetros:
Expresión: Introduzca aquí la variable del proyecto o una expresión (por ejemplo, "a + b") a la que
debe hacer referencia la alarma. Se recomienda utilizar el asistente de entrada <F2> o la "función
Intellisense" para una entrada correcta.
Tipo: Se pueden utilizar los tipos de alarma enumerados a continuación. Para cada tipo, concierne al
comentario apropiado o a las definiciones que deben hacerse en el área más allá de la tabla.
DIG=0 Alarma digital, activa tan pronto como la expresión se convierte en FALSE.
DIG=1 Alarma digital, activa tan pronto como la expresión se vuelve VERDADERA.
LOLO Alarma analógica, activa tan pronto como el valor de la expresión cae por debajo del valor
definido para el tipo de alarma LOLO. Puede definir una tolerancia (Banda muerta). Mientras el
valor de la expresión esté dentro de la banda muerta, no se activará ninguna alarma, incluso si el
valor LOLO ha estado cayendo por debajo del límite.
LO correspondiente a LOLO.
HI Alarma analógica, activa tan pronto como la expresión supera el valor definido para el tipo de
alarma HIHI. Puede definir una tolerancia (Banda muerta). Mientras el valor de la expresión esté
dentro de la banda muerta, no se activará ninguna alarma, incluso si el valor HI ha superado el límite.
Desactivación: Aquí se puede introducir una variable de proyecto, que en un flanco ascendente
desactivará cualquier creación de la alarma. Sin embargo, tenga en cuenta que esta configuración se
sobrescribirá con la entrada que se puede encontrar en el campo 'Variable de desactivación'. (véase
más arriba).
Triggervariable resp. Número de registros: consulte más arriba, Evento de cambio de archivo.
Eliminar archivos antiguos después de .. Horas: Número de días transcurridos desde el día de la creación,
después de los cuales se deben eliminar todos los archivos de registro de alarmas, excepto el actual.
Elija aquí un archivo de idioma (*.vis o *.tlt) que debe usarse para los textos de configuración de
alarmas cuando se cambia el idioma en CoDeSys. Para ello, asegúrese de que el archivo de idioma
contenga, entre otros, las traducciones de las cadenas de texto de la configuración de alarma. Véase
también: Capítulo 4.3, Traducir el proyecto a otro idioma.
Alternativamente, puede definir el cambio de idioma dinámico especificando un archivo de idioma especial en
formato xml, como se usa para los elementos de visualización. Sin embargo, tenga en cuenta que los ajustes
reales solo se refieren a la visualización de los mensajes de alarma en CoDeSys. Si la configuración de la alarma
es visualizada por un elemento de la tabla de alarmas en un objeto de visualización, allí serán válidas las
configuraciones de idioma de visualización separadas.
En línea:
Desactivar la evaluación de alarmas en el modo en línea: Si se establece esta configuración en
línea, no habrá manejo de alarmas en el modo en línea. Esto significa que no se realizará ninguna
evaluación de alarma correspondiente a la configuración de alarma actual y no se mostrará ninguna
alarma. Esto puede ser deseable en ciertos entornos para ahorrar tiempo de cómputo.
diálogo 'Información sobre la biblioteca externa'. Para abrir este cuadro de diálogo, seleccione el nombre de
la biblioteca correspondiente en el administrador de bibliotecas y ejecute el comando 'Extras', 'Propiedades'.
Las carpetas se abren y cierran haciendo doble clic en la línea o pulsando <Intro>. Hay un signo más
delante de las carpetas cerradas y un signo menos delante de las carpetas abiertas.
Si se selecciona una POU haciendo clic con el ratón o seleccionándola con las teclas de flecha, la
declaración de la POU aparecerá en la zona superior derecha del gestor de bibliotecas; y en la parte
inferior derecha se encuentra la pantalla gráfica en forma de caja negra con entradas y salidas.
Con los tipos de datos y las variables globales, la declaración se muestra en el área derecha del
administrador de bibliotecas.
Biblioteca estándar
La biblioteca con "standard.lib" siempre está disponible. Contiene todas las funciones y bloques de función
que se requieren del IEC61131-3 como POU estándar para un sistema de programación IEC. La diferencia
entre una función estándar y un operador es que el operador es reconocido implícitamente por el sistema de
programación, mientras que las POU estándar deben estar vinculadas al proyecto (standard.lib).
El código para estas POU existe como una biblioteca C y es un componente de CoDeSys.
Tener en cuenta qué directorios de bibliotecas están definidos actualmente en las opciones del
proyecto (véase el Capítulo 4.2, categoría 'Directorios'). Si inserta una biblioteca desde un directorio
que no está definido allí, la biblioteca se ingresará con la ruta respectiva.
'Extras' 'Propiedades'
Este comando abrirá el cuadro de diálogo 'Información sobre la biblioteca interna (o externa)'. En el
caso de las bibliotecas internas, encontrará todos los datos que se han insertado en la información del
proyecto (cuando corresponda, incluida la información de la licencia) cuando se creó la biblioteca en
CoDeSys. En el caso de las bibliotecas externas, se mostrará el nombre de la biblioteca y la ruta de
acceso de la biblioteca.
6.5 Registro
El registro almacena en orden cronológico las acciones que se producen durante una sesión en línea.
Para ello, se configura un archivo de registro binario (*.log). Después, el usuario puede almacenar
extractos del registro del proyecto correspondiente en un registro externo.
La ventana de registro se puede abrir en modo sin conexión o en línea y, por lo tanto, puede servir
como un monitor directo en línea.
'Ventana' 'Registro'
Para abrirlo, seleccione la opción de menú 'Ventana' 'Registro' o seleccione la entrada 'Registro' en la pestaña Recursos.
En la ventana de registro, el nombre de archivo del registro que se muestra actualmente aparece
después de Log:. Si este es el registro del proyecto actual, se mostrará la palabra "(Interno)".
Las entradas registradas se muestran en la ventana de registro. La entrada más reciente siempre aparece en la parte inferior.
Solo se mostrarán las acciones pertenecientes a categorías que se hayan activado en el campo 'Filtro'
del menú 'Proyecto', 'Opciones', 'Registro'.
La información disponible sobre la entrada seleccionada actualmente se muestra debajo de la
Acción interna: Se ha ejecutado una acción interna en la capa Online (por ejemplo, Eliminar búferes o
Depuración de inicialización).
Cambio de estado: El estado del sistema de tiempo de ejecución ha cambiado (por ejemplo, de Running a Break, si un
se alcanza el punto de interrupción).
Excepción: Se ha producido una excepción, por ejemplo, un error de comunicación.
Ventana de registro
Descripción: El tipo de acción. Las acciones del usuario tienen los mismos nombres que sus
correspondientes comandos de menú; todas las demás acciones están en inglés y tienen el mismo
nombre que la función OnlineXXX() correspondiente.
Información: Este campo contiene una descripción de un error que puede haber ocurrido durante una
acción. El campo está vacío si no se ha producido ningún error.
Hora del sistema: la hora del sistema a la que comenzó la acción, al segundo más cercano.
Tiempo relativo: el tiempo medido desde el inicio de la sesión en línea hasta el milisegundo más
cercano.
Duración: Duración de la acción en milisegundos.
Registro de menú
Cuando la ventana de registro tiene el foco de entrada, la opción de menú Registro aparece en la
barra de menú en lugar de los elementos 'Extras' y 'Opciones'.
El menú incluye los siguientes elementos:
Carga... Se puede cargar un archivo de registro externo *.log y mostrarlo mediante el cuadro de diálogo estándar de apertura de archivos.
El registro que está presente en el proyecto no será sobrescrito por el comando. Si la ventana de
registro se cierra y luego se vuelve a abrir, o se inicia una nueva sesión en línea, la versión cargada se
reemplazará nuevamente por el registro del proyecto.
Salvar... Este elemento de menú solo se puede seleccionar si el registro del proyecto se muestra
actualmente. Permite almacenar un extracto del registro del proyecto en un archivo externo. Para ello, se
desplegará el siguiente cuadro de diálogo, en el que se podrán seleccionar las sesiones Online a almacenar:
Después de una selección exitosa, se abre el cuadro de diálogo estándar para almacenar un archivo ('Guardar registro').
Mostrar registro del proyecto Este comando solo se puede seleccionar si actualmente se muestra un
registro externo. Vuelve a cambiar la pantalla al registro del proyecto.
El archivo de configuración *.cfg describe una configuración básica, que se asigna en el editor de
configuración, y define hasta qué punto el usuario puede personalizar esta configuración en el editor.
Atención: Tan pronto como se haya modificado el archivo de configuración subyacente (*.cfg), debe rehacer la
configuración en CoDeSys.
Nota sobre la compatibilidad de versiones: En CoDeSys V2.2 se implementó un nuevo formato para la configuración
del PLC. A partir de esa versión los archivos de configuración básica tienen que usar la extensión *.cfg. Por el contrario,
el editor de configuración de las versiones anteriores de CoDeSys necesitaba archivos de configuración con una
extensión *.con. Pero: El sistema de destino puede definir que el configurador "antiguo" debe usarse más adelante,
incluso cuando se abre un proyecto antiguo en V2.2 o superior (ver comentarios al final de este capítulo). Esto evita la
necesidad de crear nuevos archivos de configuración, los archivos *.con se pueden usar más adelante. Si el sistema de
destino no es compatible con el configurador antiguo, puede convertir el PLC antiguo
El editor de configuración de CoDeSys permite configurar módulos de E/S, así como módulos CAN y
Profibus.
Si es compatible con el sistema de destino, existe la posibilidad de obtener información del PLC: 1. un
escaneo de la estructura de hardware real que se puede utilizar directamente en la configuración del
PLC, 2. mensajes de diagnóstico que se mostrarán como mensajes en CoDeSys, 3. información de
estado que se mostrará en el cuadro de diálogo Configuración del PLC
Después de la personalización final por parte del usuario, se envía una imagen binaria de la configuración al PLC:
Ejemplo de configuración de PLC con un módulo de CPU y un módulo CAN
La configuración del PLC se muestra en el editor en estructura de árbol y se puede editar mediante
comandos de menú y diálogos. La configuración contiene elementos de entrada y/o salida y también
elementos de gestión que a su vez también tienen subelementos (por ejemplo, un bus CAN o una
tarjeta de entrada digital con 8 entradas).
Para las entradas y salidas, se pueden asignar nombres simbólicos. La dirección IEC a la que se puede
acceder a esta entrada o salida se encuentra detrás del nombre simbólico.
Posiblemente, el sistema de destino utilizado actualmente define que se utilizará la configuración del PLC CoDeSys
V2.1. En este caso, para obtener ayuda sobre cómo trabajar con la configuración del PLC, consulte la documentación
del usuario sobre CoDeSys V2.1, pero tenga en cuenta las siguientes extensiones en el configurador:
Configurador CAN:
Opción "Crear todos los SDO" en el cuadro de diálogo "Parámetros CAN" de un módulo CAN (véase el
Capítulo 6.6.8). Atención: Los SDO ahora siempre se crean de acuerdo con el mecanismo utilizado en
el configurador V2.3; Por lo tanto, los resultados pueden diferir de los que obtuvo anteriormente.
Edite el campo "Device-Type" en el cuadro de diálogo "Configuración de CAN" de un CanDevice (consulte el Capítulo 6.6.9).
Programador Profibus:
La lista de selección de los módulos Profibus (véase el Capítulo 6.6.7) disponibles para su inserción
ahora está ordenada alfabéticamente por nombres de módulos.
adaptación adicional que realiza el usuario en el configurador de PLC CoDeSys. En la ventana de la derecha se
muestran los diálogos de configuración disponibles actualmente en una o varias pestañas.
La parte derecha de la ventana es visible por defecto, pero puede desvanecerse a través de la opción
de menú 'Extras' 'Propiedades'.
En la parte superior del árbol de configuración se encuentra la entrada del módulo "root" con un
nombre, que se ha definido en el archivo de configuración.
A continuación encontrará jerárquicamente sangrados los otros elementos de la configuración: módulos
de diferentes tipos (CAN, Profibus, E/S), canales o canales de bits.
El editor de configuración se divide en dos partes. En la ventana de la izquierda se muestra el árbol de
configuración. La estructura y los componentes del árbol resultan principalmente (configuración estándar)
de las definiciones que se encuentran en el archivo de configuración, pero pueden modificarse mediante la
adaptación adicional que realiza el usuario en el configurador de PLC CoDeSys. En la ventana de la derecha
se muestran los diálogos de configuración disponibles actualmente en una o varias pestañas.
La parte derecha de la ventana es visible por defecto, pero puede desvanecerse a través de la opción
de menú 'Extras' 'Propiedades'.
En la parte superior del árbol de configuración se encuentra la entrada del módulo "root" con un
nombre, que se ha definido en el archivo de configuración.
A continuación encontrará jerárquicamente sangrados los otros elementos de la configuración: módulos
de diferentes tipos (CAN, Profibus, E/S), canales o canales de bits.
Selección de elementos
Para seleccionar elementos, haga clic con el ratón en el elemento correspondiente o, con las teclas de
flecha, mueva el rectángulo punteado sobre el elemento deseado.
Los elementos que comienzan con un signo más son elementos de organización y contienen
subelementos. Para abrir un elemento, selecciónelo y haga doble clic en el signo más o pulse <Intro>.
Puede cerrar los elementos abiertos (signo menos delante del elemento) de la misma manera.
Tenga en cuenta: Si es compatible con el sistema de destino, se puede utilizar un escaneo del hardware existente
para la inserción de módulos en la configuración del PLC CoDeSys.
Nombres simbólicos
Los nombres simbólicos de los módulos y canales se pueden definir en el archivo de configuración. En este
caso, se mostrarán en el editor de configuración antes del 'AT' de la dirección IEC del elemento respectivo.
En el archivo de configuración también se define si el nombre simbólico se puede editar o insertar en el editor
de configuración. Para introducir un nombre simbólico, seleccione el módulo o canal deseado en el árbol de
configuración y abra un campo de texto haciendo clic con el ratón en el 'AT' antes de la dirección IEC. De la
misma manera, puede editar un nombre simbólico existente después de hacer doble clic en el nombre. Tenga
en cuenta que la asignación de un nombre simbólico se corresponde con una declaración de variable válida.
Exportación/Importación de módulos
Si un módulo se define como "exportable" en el archivo de configuración (*.cfg), en el menú contextual
encontrará los comandos 'Exportar módulo' e 'Importar módulo' cuando se seleccione el módulo en el
árbol de configuración.
Con el comando 'Exportar módulo' se abrirá el cuadro de diálogo para seleccionar un archivo. Aquí
puede definir un archivo al que se exportará el módulo en formato XML junto con todos los submódulos
y su configuración. Este archivo se puede importar en otra configuración de PLC mediante el comando
'Importar módulo', si se selecciona un módulo definido adecuadamente en el árbol de configuración.
De este modo, el árbol de configuración de un módulo en particular se puede transferir de forma
sencilla a otra configuración de PLC.
Calcular direcciones: A cada módulo recién insertado se le asigna automáticamente una dirección,
que resulta de la dirección del módulo insertado anteriormente más el tamaño de esta dirección. Si se
elimina un módulo de la configuración, las direcciones de los siguientes módulos se ajustan
automáticamente. Cuando se ejecuta el comando 'Extras' 'Compute addresses', se recalcularán todas
las direcciones que comiencen en el nodo (módulo) seleccionado.
Comprobar si hay direcciones superpuestas: En la compilación, se comprobará si el proyecto tiene
direcciones superpuestas y se mostrará el mensaje correspondiente.
Guardar archivos de configuración en el proyecto: La información contenida en los archivos de
configuración *.cfg y los archivos de descripción del dispositivo, que subyacen a la configuración actual
del PLC, se guardarán en el proyecto.
Por lo tanto ( si no está definido por el archivo de configuración, ¡que siempre se debe volver a cargar la
configuración estándar !), la configuración configurada por el usuario se mantendrá en el proyecto, incluso si no se
encuentran los archivos de configuración cuando se vuelve a abrir el proyecto. Tenga en cuenta que, en tal caso, la
configuración completa específica del proyecto se perderá si la opción aquí descrita no está activada.
Al guardar la información de configuración con el proyecto, también se mantendrá en un cambio de
destino. Pero tenga en cuenta en este caso, que el nuevo objetivo podría traer sus propios archivos de
configuración que luego se considerarán adicionalmente.
Cuadro de diálogo para los ajustes generales de la configuración del PLC
El modo global de direccionamiento (direcciones planas / direcciones según Id) en la configuración del
PLC se define en el archivo de configuración.
Atención: En el fichero de configuración *.cfg se puede definir que la configuración estándar debe ser restaurada
en cada reapertura del proyecto. En este caso, todas las adaptaciones de la configuración realizadas por el usuario
se perderán.
A continuación se muestran los parámetros de entrada y salida del bloque de funciones DiagGetState.
Defina una instancia de este bloque de funciones en su proyecto CoDeSys para leer la información de
diagnóstico de un módulo de bus específico:
Variables de entrada de DiagGetState:
DRIVERNAME:PUNTERO A Nombre del conductor (dirección del nombre) al que se debe enviar
LA CADENA; la solicitud de diagnóstico. Si aquí se ingresa un 0, la solicitud de
diagnóstico se enviará a todos los conductores presentes.
El módulo, a excepción de BusMemberID, utiliza los mismos parámetros de entrada y salida. Sin
embargo, los parámetros STATE y EXTENDEDINFO tienen el siguiente significado diferente:
ESTADO:INT; Si READY = TRUE, STATE obtiene uno de los siguientes valores que definen el
estado real del bus: BUSSTATE_BUSOK (El bus funciona correctamente)
BUSSTATE_BUSFAULT (Error de bus) BUSSTATE_BUSNOTCOMMUNICATING (Error de
comunicación) BUSSTATE_BUSSTOPPED (El bus está detenido)
En este cuadro de diálogo se muestran los parámetros dados por el archivo del dispositivo. Solo se
puede editar la columna 'valor'.
Índice: El índice es un dígito consecutivo (i), que numera a lo largo de todos los parámetros del
módulo.
Nombre: Nombre del parámetro
Valor : Valor del parámetro, editable
Inicialmente, se muestra el valor predeterminado. Los valores se pueden establecer directamente o por medio de
nombres simbólicos. Si las entradas del archivo de configuración no están configuradas como 'Solo lectura', se
pueden editar. Para hacer eso, haga clic en el campo de edición o seleccione una de las entradas en una lista de
desplazamiento. Si el valor es un nombre de archivo, puede abrir el cuadro de diálogo 'Abrir archivo' haciendo
doble clic y buscar otro archivo allí.
Predeterminado: Valor predeterminado de los parámetros
Min.: valor mínimo del parámetro (solo si no se utilizan nombres simbólicos)
Max.: valor máximo del parámetro (sólo si no se utilizan nombres simbólicos)
Una información sobre herramientas puede proporcionar información adicional sobre el parámetro marcado actualmente.
En lugar del cuadro de diálogo Parámetros del módulo, puede haber un cuadro de diálogo específico
del cliente. Esto se debe al hecho de que dicho diálogo está vinculado por una entrada (Hook-DLL) en
la definición del módulo en el archivo de configuración.
Dirección: Este campo de edición solo estará disponible si se activó mediante una entrada en el archivo
de configuración. Inserte la dirección deseada para el canal.
Cuadro de diálogo de parámetros base para un canal
El cuadro de diálogo Parámetros base de los canales de bits solo contiene el campo Comentario.
La configuración de los módulos maestro y esclavo en CoDeSys se basa en los archivos gsd adjuntos
a ellos por el fabricante del hardware. Para ello, se considerarán todos los archivos gsd que se
almacenan en el directorio de archivos de configuración (consulte el Capítulo 4.2, Opciones del
proyecto: Directorios). Los módulos descritos por un archivo gsd se pueden insertar en el árbol de
configuración y sus parámetros se pueden editar allí.
Debajo de un maestro se pueden insertar uno o varios esclavos.
Si se selecciona un maestro DP en el árbol de configuración, los siguientes diálogos estarán disponibles en la
parte derecha de la configuración: Parámetros base, Parámetro DP, Parámetros de bus, Parámetros de módulo.
Si se selecciona un esclavo DP, que se inserta debajo de un maestro DP, pueden estar disponibles los
siguientes diálogos (dependiendo de las definiciones en el archivo de configuración): Parámetros base,
Parámetro DP, Entrada/Salida, Parámetros de usuario, Grupos, Parámetros del módulo. Dependiendo de la
configuración del archivo de configuración, el cuadro de diálogo "Parámetro DP" puede tener otro título.
Si se inserta un esclavo DP en el nivel de un maestro, los siguientes diálogos están disponibles para la
configuración: Parámetros base, Parámetros DP, Entrada/Salida, Parámetros del módulo.
Modo Modo de borrado automático: Si esta opción está activada, las salidas de los
esclavos pasarán a un estado de guardado en caso de error y el maestro cambiará del
estado "operar" a "borrar".
Inicio automático: Si esta opción no está activada, el maestro debe iniciarse
manualmente. Sin embargo, depende del controlador, si se evalúa la configuración.
El archivo GSD perteneciente a un dispositivo se puede abrir y examinar Botón Archivo GSD.
usando el botón
El botón Grupos lleva al cuadro de diálogo 'Propiedades del grupo'. Las propiedades de grupo pertenecen a
los esclavos asignados al maestro. Se pueden configurar hasta ocho grupos. Para cada grupo, introduzca si
va a funcionar en modo de congelación y/o en modo de sincronización. Al asignar esclavos (ver
'Propiedades del esclavo DP', 'Asignación de grupos') a varios grupos, el intercambio de datos del maestro
se puede sincronizar a través de un comando de control global. Con un comando Freeze, un maestro
instruye a un esclavo o a un grupo para que "congele" las entradas en su estado instantáneo y transfiera
estos datos en el siguiente intercambio de datos. Con un comando Sync, se instruye a los esclavos para que
cambien síncronamente para generar en el siguiente comando Synch todos los datos recibidos del maestro
después del primer comando.
Para activar o desactivar las opciones de congelación y sincronización de un grupo, haga clic con el
botón izquierdo del ratón en la ubicación adecuada de la tabla para colocar o eliminar una "X" junto a la
opción deseada, o utilice el botón derecho del ratón para activar o desactivar la opción a través de un
menú contextual. Además, puede editar el nombre del grupo aquí.
Parámetros DP del cuadro de diálogo Maestro DP / Propiedades de grupo
Velocidad Las entradas que ya están presentes en el archivo GSD están disponibles para su selección, pero solo un
Se puede introducir la velocidad de transmisión soportada por todos los esclavos.
Usar valores predeterminados
Si la opción está activada, las entradas realizadas en el cuadro de diálogo 'Parámetros del bus' serán
optimizado con respecto a las especificaciones de los archivos GSD; Solo es posible
Edite los valores si la opción está desactivada.
Importante: Los valores calculados automáticamente son solo valores aproximados.
Tiempo máximo durante el cual el maestro espera, después de enviar un mensaje de solicitud, la receta
del primer carácter del mensaje de respuesta del esclavo
Retardo mínimo de la estación TSDR (en tbit): tiempo mínimo de reacción después del cual una
estación del bus puede responder (mín. 11 tBit)
Max.Station Delay max. TSDR (en tbit): intervalo de tiempo máximo dentro del cual un esclavo debe responder.
Quiet Time TQUI (en tbit): período de inactividad que debe tenerse en cuenta durante la conversión de
señales NRZ (Non Return to Zero) a otras codificaciones (tiempo de conmutación para repetidor)
TTR de rotación objetivo (en tbit): ajuste del tiempo de ciclo del token; intervalo de tiempo proyectado en
el que un tiempo maestro debe recibir el token. Resultado de la suma de los tiempos de parada
simbólicos de todos los maestros en el autobús.
Factor de actualización de GAP Factor G de actualización de GAP: número de ciclos de bus después
de los cuales se busca en el GAP del maestro (rango de direcciones desde su propia dirección de bus
hasta la dirección de la siguiente estación activa) una estación activa adicional recién insertada.
Máx. Reintento Límite máximo de intentos de solicitud repetidos por parte del maestro cuando no ha
recibido una respuesta válida del esclavo
Intervalo mínimo esclavo Tiempo entre dos ciclos de bus en el que el esclavo puede procesar una
solicitud del maestro (base de tiempo 100 s). El valor introducido aquí debe comprobarse con las
especificaciones respectivas en el archivo GSD del esclavo.
Tiempo de espera de sondeo: Tiempo máximo después del cual el solicitante debe recuperar la respuesta del
maestro mediante una comunicación maestro-maestro (maestro DP de clase 2) (base de tiempo 1 ms).
Tiempo de control de datos Tiempo en el que el maestro informa de su estado a los esclavos asignados
a él. Al mismo tiempo, el maestro supervisa si se ha producido al menos un intercambio de datos con
los esclavos dentro de este período y actualiza el Data_Transfer_List.
Tiempo de guardián Valor de tiempo para la supervisión de acceso (guardián). Actualmente no se
admite la configuración (se ha fijado en 400 ms)
Parámetros DP de un esclavo DP
Este diálogo muestra los siguientes parámetros extraídos del archivo de dispositivo del esclavo DP (el
diálogo puede tener un título diferente, que se define en el archivo de configuración):
Diálogo de parámetros DP para un esclavo DP
Identificación Dirección de la estación (véase 'Propiedades de los maestros DP'), nombre de la estación
(coincide con el nombre del dispositivo, editable)
Activación El esclavo está activo/inactivo en la configuración actual. Si no se selecciona la
activación, los datos de configuración se transferirán al acoplador en la
descarga, pero no se producirá el intercambio de datos a través del bus.
Perro guardián Si el control de vigilancia está activado, se aplica el tiempo de vigilancia introducido
(supervisión de acceso, base 10 ms). Si el maestro no ha accedido al esclavo dentro
de este tiempo, se restablece a su estado de inicialización. Puede inspeccionar el
Entrada/Salida de un esclavo DP
Cuadro de diálogo para configurar las entradas/salidas de un esclavo DP
Este tipo de selección no es posible para esclavos no modulares. Estos imponen directamente una
visualización cerrada de sus entradas y salidas en la ventana derecha. Los módulos no deseados se
pueden eliminar seleccionando y usando Eliminar.
El botón Propiedades conduce al cuadro de diálogo "Propiedades del módulo" para el módulo de entrada o
salida seleccionado actualmente en la lista izquierda o derecha. Muestra el nombre, la configuración
(codificación de la descripción del módulo según el estándar PROFIBUS) y las longitudes de entrada y
salida del módulo en bytes. Si la descripción del módulo en el archivo GSD contiene parámetros específicos
además del conjunto estándar, estos se enumeran aquí con sus valores y rango de valores. Si la opción
Nombres simbólicos está activada, se utilizan los nombres simbólicos.
Aquí se enumeran varios parámetros ampliados de un esclavo DP, definidos en el archivo GSD. Los parámetros
muestra el nombre del parámetro. Los valores de los parámetros introducidos en la columna Valor se pueden
modificar haciendo doble clic o con el botón derecho del ratón. Además, se especifica el rango de valores.
Si también se especifican nombres simbólicos para los parámetros en el archivo GSD, se puede
activar la opción Nombres simbólicos , de modo que los valores se puedan mostrar con estos
nombres. A título informativo, la longitud de los parámetros de usuario también se proporciona
encima de la tabla.
Asignación de grupo de un esclavo DP
Diálogo para la asignación de grupos de un esclavo DP
Este diálogo se utiliza para asignar el esclavo a uno o más de los ocho grupos posibles. Las propiedades de grupo
de aplicación universal (Sync. Por otro lado, el modo y/o el modo de congelación se definen durante la
configuración de las propiedades del maestro (consulte más arriba 'Parámetros DP del maestro DP, Propiedades
de grupo'). También se puede acceder a este cuadro de diálogo a través del botón Propiedades de grupo
global .
Los grupos a los que está asignado el esclavo están marcados con un signo más. La asignación o
eliminación de un grupo se realiza seleccionando el nombre del grupo en la Pertenencia al grupo
y pulsando 'Añadir esclavo al grupo' o 'Eliminar esclavo del grupo' con el botón derecho del ratón, o
haciendo clic de nuevo con el ratón a la izquierda del nombre del grupo.
Un dispositivo esclavo sólo puede asignarse a aquellos grupos cuyas propiedades admite. Las
propiedades correspondientes de cada esclavo (Sync. Modo/Modo de congelación) se muestran
encima de la tabla. Se comprueban los modos admitidos por el dispositivo.
Los módulos CAN obtienen una configuración que describe su comportamiento dependiente del tiempo
y de los errores durante el intercambio de mensajes (cuadro de diálogo 'Parámetros CAN de un módulo
CAN'). Más adelante, para cada módulo, el mapeo de los PDOs (Process Data Objects), que sirven
para enviar y recibir (diálogos 'Recibir...' resp. 'Enviar PDO-Mapping'). Los valores de los SDO (objetos
de datos de servicio) disponibles se pueden adaptar (cuadro de diálogo 'Objetos de datos de servicio').
Los parámetros adicionales de un módulo CAN o CAN Master, especificados en el archivo de
descripción del dispositivo, se pueden configurar en el cuadro de diálogo 'Parámetros de módulo'.
Si un PLC programable por CoDeSys debe integrarse en una red CAN como esclavo CANopen (también
llamado "nodo CANopen" y en lo sucesivo denominado "dispositivo CAN"), se puede configurar en el
configurador de PLC CoDeSys y la configuración se puede almacenar en forma de archivo EDS. Este
archivo de descripción del dispositivo se puede utilizar en cualquier configuración CANopen Master deseada.
En los capítulos siguientes se describen los diálogos y los comandos de menú del configurador
CANopen. Para más información, consulte el documento "CANopen für 3S Laufzeitsysteme
V<version>.pdf".
Parámetros básicos de un maestro CAN
El diálogo Parámetros base de un maestro CAN coincide con el de los otros módulos (consulte el
capítulo 6.6.5, 'Parámetros base de un módulo de E/S').
Se debe proporcionar una dirección de marcador en la dirección de diagnóstico del módulo CAN.
Funciona como se describe para el maestro CAN.
Sección General:
El Node-Id sirve para identificar el módulo CAN de forma única y corresponde al número establecido
en el propio módulo, que está entre 1 y 127. El Id debe introducirse como un número decimal.
Si se activa la escritura DCF, se creará un archivo DCF después de insertar un archivo EDS en el
directorio definido para los archivos compilados cuyo nombre se compone del nombre del archivo EDS
y el ID de nodo que se agrega al final.
Si la opción Crear todos los SDO está activada, se crearán SDO para todos los objetos (no solo para
los que han sido modificados).
Si se activa la opción Restablecer nodo (la disponibilidad depende del contenido del archivo de
descripción del dispositivo), el esclavo se reiniciará antes de descargar la configuración.
Si la opción Dispositivo opcional está activada (la disponibilidad en el cuadro de diálogo depende del
objetivo), el maestro solo intentará leer una vez desde este nodo. Entonces el nodo, si no responde,
será ignorado, es decir, el maestro volverá al modo de funcionamiento normal.
Si se activa la opción Sin inicialización (la disponibilidad en el cuadro de diálogo depende del destino),
el maestro activará inmediatamente el nodo, sin enviar SDO de configuración. (No obstante, los datos
SDO se crearán y guardarán en el controlador).
Si el destino lo admite, la creación de SDO se puede suprimir en tres niveles. Esto puede ser deseable
en caso de tener un espacio limitado para la configuración:
Atención: ¡Estos ajustes no deben modificarse sin tener un conocimiento detallado del sistema!
Todos los objetos "mapeables" en el archivo EDS se encuentran en el lado izquierdo y se pueden
agregar en el lado derecho al PDO (Objeto de datos de proceso) (botón ">>") o eliminarse nuevamente
(botón Eliminar ). Los StandardDataTypes se pueden insertar para crear espacios vacíos en el PDO.
El botón Insertar elemento se puede utilizar para crear más PDO's y para añadirles los objetos
apropiados. La asignación de entradas o salidas a las direcciones IEC se puede lograr a través de las
PDO insertadas. Los ajustes que se han realizado en la configuración del sistema del controlador se
harán visibles cuando se salga del cuadro de diálogo. A los objetos individuales se les pueden dar
nombres simbólicos.
Las propiedades del conjunto estándar de las PDO se pueden editar mediante el comando Propiedades.
Cuadro de diálogo de propiedades de PDO
Para introducir las rutas de los archivos, puede utilizar el cuadro de diálogo estándar para buscar un
archivo, que se puede abrir utilizando el botón Examinar....
ID de nodo: El ID de nodo (1-127) es el número de nodo que utiliza el maestro para direccionar el
dispositivo en una red CANopen.
Velocidad en baudios: En la lista de selección, elija la velocidad en baudios deseada para la transmisión dentro del bus.
Tipo de dispositivo: En este campo se muestra automáticamente el tipo de dispositivo, que se
devuelve al buscar 0x1000 de objeto, es decir, el tipo de PLC que se configura en el proyecto. El tipo
de dispositivo se puede editar.
Arranque automático: Si esta opción está activada, en una descarga o en el arranque del PLC, el bus
CAN se inicializará y se iniciará automáticamente: Si la opción no está activada, el CanDevice esperará
un comando apropiado.
Es posible configurar la funcionalidad de Nodeguard y Emergency Telegram. Consulte la descripción
correspondiente para la configuración de los módulos CAN y el maestro.
Configuración de latidos:
Si la opción Activar generación de latidos está activada, el CanDevice enviará latidos de acuerdo con
el intervalo (milisegundos), definido en Tiempo del productor de latidos:.
Si la opción Activar consumidor de latidos está activada, el CanDevice escuchará los latidos, que son enviados
por el módulo definido por el ID de consumidor. El tiempo de consumo de latidos define el tiempo (en
milisegundos) después del cual se establecerá un indicador de error en caso de que no se haya recibido ningún
latido.
Configuración de CAN de diálogo
Tenga en cuenta: El subíndice 0 de un índice, que implica más de un subíndice, se utilizará implícitamente para
almacenar el número de subíndices. Por este motivo, no utilice el subíndice 0 en el Administrador de parámetros.
También hay que tener en cuenta que los parámetros de un índice en particular deben introducirse en orden
ascendente (subíndices 1,2,3...) en el Administrador de parámetros.
Lista de objetos mapeables: Elija de la lista de selección la lista de parámetros de las variables,
para cuyas entradas el CanDevice debe generar PDO. Si es compatible con el sistema de destino, se
pueden crear listas de parámetros de tipo 'Mapping' en el Administrador de parámetros, que contienen
De acuerdo con la lista de parámetros elegida, los objetos aparecerán en la ventana de la izquierda. En la ventana de
la derecha se crea la configuración de PDO deseada (PDO's). A través de los botones Insertar, recibir PDO resp.
Insertar enviar PDO, allí puede insertar 'Recibir PDO' y 'Enviar PDO' debajo de los elementos de organización de la
lista correspondiente. Para asignar un objeto de la ventana izquierda a uno de estos PDO de envío o recepción,
marque el objeto en la ventana de la izquierda y también el PDO en la ventana de la derecha y luego presione >>.
A continuación, el objeto se insertará debajo de la PDO en la ventana de la derecha. Las propiedades de la PDO se
pueden definir en un cuadro de diálogo que también se utiliza para la configuración de PDO de otros módulos CAN.
Ejemplo:
Objetivo: En el primer PDO de recepción (COB-Id = 512 + NodeId) del CanDevice, se debe recibir la variable
PLC_PRG.a.
Por lo tanto, en el Administrador de parámetros, en una lista de variables, se debe asignar un índice/subíndice a la variable
PLC_PRG.a. El Administrador de parámetros solo se puede abrir si está activado en la configuración de destino en la categoría
"Funcionalidad de red" y si se definen rangos de índices y subíndices válidos.
Ahora, en el cuadro de diálogo 'Default PDO-Mapping' del CanDevice, la entrada de índice/subíndice de la lista
de parámetros respectiva se puede asignar a un PDO de recepción.
También se define aquí la velocidad de transmisión [Baud] para el intercambio de datos dentro de la
red. Elija una de las siguientes configuraciones: 125000 (predeterminado), 250000, 500000.
Experto...: Este botón abre el cuadro de diálogo Configuración ampliada, donde se pueden cambiar
los siguientes ajustes:
UCMM: ( Gestor de mensajes no conectados para varias conexiones) Si esta opción está
activada (por defecto), el esclavo es capaz de manejar los mensajes UCMM. Las clasificaciones
posibles: Grupo1, Grupo2 o Grupo3 (por defecto)
Las siguientes comprobaciones se realizarán de forma predeterminada al inicio de la red y
pueden desactivarse aquí, si es necesario. Durante la comprobación, siempre se comparará el
valor dado por el archivo EDS con el que se encuentra en el dispositivo: Comprobar el ID del
proveedor, Comprobar el tipo de dispositivo, Comprobar el código del producto,
Comprobar la versión del producto
Conexión de E/S seleccionada: Seleccione uno de los siguientes tipos de conexión, que debe ser
válido para la conexión de E/S definida a continuación:
Sondeo: Los datos del esclavo se sondearán cíclicamente (Maestro-Esclavo-proceso)
Bit Strobe: El DeviceNet-Master envía un telegrama de difusión a todos los esclavos pidiéndoles que
envíen los datos actuales. Los esclavos responderán uno tras otro, comenzando con el nodo 1.
Cambio de estado: El esclavo enviará sus datos al maestro en cada cambio detectado en una
entrada. No se necesita ninguna solicitud explícita por parte del maestro.
Cíclico: El esclavo enviará sus datos después de un tiempo de ciclo definido sin una solicitud
explícita por parte del maestro (función "Heartbeat").
Sondeo de multidifusión: actualmente no se admite
E/S completa: Aquí se mostrarán las sumas de bytes de entrada y bytes de salida, que se utilizan
actualmente para todas las entradas y salidas configuradas. Las sumas se calculan a partir de las
longitudes definidas para las E/S en las áreas "Entradas" y "Salida" del cuadro de diálogo.
Ampliado: Este botón abre el cuadro de diálogo Más ajustes, que permite modificar los siguientes
ajustes predeterminados para el tipo de conexión elegido actualmente:
Velocidad esperada de paquetes: Predeterminado: 75, velocidad esperada (en milisegundos)
según la cual se espera que el esclavo envíe sus datos a través de la conexión actual.
Tiempo de espera de fragmentación: [ms]: valor predeterminado 1600 ms; Si los datos a enviar
superan un tamaño de 8 Bytes, deben fragmentarse y enviarse en varios paquetes de telegramas. El
tiempo de espera de fragmentación define en milisegundos, cuánto tiempo debe esperar el maestro
una respuesta del esclavo en un telegrama fragmentado, antes de activar la acción definida en
'Acción en caso de error de tiempo de espera'.
Cuadro de diálogo 'Más ajustes', Ejemplo para el tipo de conexión 'Cíclico'
Acción en caso de error de tiempo de espera: Defina cuál de las siguientes acciones debe
iniciarse en caso de que se agote el tiempo de espera:
Transición a tiempo de espera agotado: (Predeterminado) Esta acción se define específicamente como esclavo.
Para modificar la longitud de una entrada configurada, haga doble clic en esta entrada. Se abrirá el
cuadro de diálogo Longitud de la conexión. Introduzca aquí la longitud deseada en bytes y confirme
con OK. La longitud se mostrará entre paréntesis detrás de la entrada configurada.
Las entradas configuradas serán visibles inmediatamente en el árbol de configuración. Debajo de la
entrada esclava habrá una entrada con el nombre del tipo de conexión. A continuación, se insertarán
las respectivas entradas y salidas.
Salidas:
Configure las salidas como se describe para las entradas.
Parámetros de un DeviceNet-Slave
Los parámetros enumerados aquí vienen dados por el archivo EDS. De acuerdo con la configuración
de conexión de E/S definida, sus valores actuales se intercambiarán en la red.
Obj.: Identificación del parámetro (objeto), que se utiliza para acceder al parámetro en una lista de
parámetros (diccionario de objetos). Este número de objeto se crea a partir del número de parámetro dado
por la descripción del parámetro correspondiente en el archivo EDS (sección [Params], "Param<number>").
Las entradas booleanas se pueden alternar con los clics del ratón. En otras entradas, al hacer clic con
el ratón en el principio de la línea, se abre un cuadro de diálogo en el que se puede modificar el valor.
El valor modificado se establecerá en el PLC tan pronto como se cierre el cuadro de diálogo con OK.
También hay que tener en cuenta las posibilidades específicas del objetivo para el diagnóstico en línea.
Para cada tarea, puede especificar una serie de programas que serán iniciados por la tarea. Si la tarea
se ejecuta en el ciclo actual, estos programas se procesarán durante la duración de un ciclo.
La combinación de prioridad y condición determinará en qué orden cronológico se ejecutarán las
tareas.
Nota: Por favor, no utilice la misma función de cadena (ver standard.lib) en varias tareas, ya que esto puede
causar fallos en el programa al sobrescribir.
En la parte derecha de la ventana se mostrará un cuadro de diálogo que pertenece a la entrada marcada actualmente
en el árbol de configuración. Aquí se pueden configurar las tareas (Propiedades de la tarea), las llamadas al programa
(Llamada al programa) o definir la vinculación de los eventos del sistema (Eventos del sistema). Depende del destino
qué opciones están disponibles en los diálogos de configuración. Se definen mediante un archivo de descripción al que
se hace referencia en el archivo de destino. Si las descripciones estándar se amplían con definiciones específicas del
cliente, se mostrarán en una pestaña adicional "Parámetro" en la parte derecha de la ventana.
El nombre de una tarea o un nombre de programa también se puede editar en el árbol de configuración. Para ello, haga
clic con el ratón en el nombre o seleccione la entrada y pulse el botón <Espacio> para abrir un marco de edición.
Puede utilizar las teclas de flecha para seleccionar la entrada anterior o siguiente en el árbol de configuración.
Al hacer clic en el nombre de la tarea o programa, o al presionar la <barra espaciadora>, puede
establecer un cuadro de control de edición alrededor del nombre. A continuación, puede cambiar la
designación directamente en el editor de tareas.
'Insertar' 'Insertar tarea' o 'Insertar' 'Anexar tarea'
Con este comando puede insertar una nueva tarea en la configuración de tareas. Cada una de las
entradas consta de un símbolo y el nombre de la tarea.
Si se selecciona una tarea o la entrada 'Eventos del sistema', el comando 'Insertar tarea' estará a su
disposición. La nueva tarea se insertará después de la seleccionada. Si se selecciona la entrada
'Configuración de tareas', entonces ' Anexar tarea' está disponible y la nueva tarea se agregará al final
de la lista existente. El número máximo de tareas lo define el sistema de destino. Tenga en cuenta que
un cierto número de tareas ya pueden estar reservadas para los módulos de la configuración del PLC
(definidos en el archivo cfg).
Al insertar una tarea, se abrirá el cuadro de diálogo para configurar los atributos de la tarea .
Inserte los atributos deseados:
Nombre: un nombre para la tarea; con este nombre la tarea se representa en el árbol de
configuración; el nombre se puede editar allí después de hacer clic con el ratón en la entrada o
después de pulsar la tecla <Espacio> cuando se selecciona la entrada.
Prioridad (0-31): ( un número entre 0 y 31; 0 es la prioridad más alta, 31 es la más baja),
Tipo:
cíclico ( ): La tarea se procesará cíclicamente de acuerdo con la definición de tiempo dada en el
campo 'Intervalo' (ver más abajo).
freewheeling ( ): La tarea se procesará tan pronto como se inicie el programa y al final de una
ejecución se reiniciará automáticamente en un bucle continuo. No hay un tiempo de ciclo definido.
activado por evento ( ): La tarea se iniciará tan pronto como la variable, que se define en el campo
Evento, obtenga un flanco ascendente.
activado por un evento externo ( ): La tarea se iniciará tan pronto como se produzca el evento del
sistema, que se define en el campo Evento . Depende del objetivo, qué eventos se apoyarán y
ofrecerán en la lista de selección. (No debe confundirse con los eventos del sistema
Propiedades:
Intervalo (para Tipo 'cíclico' o 'activado por evento externo' si el evento requiere una entrada de tiempo): el
período de tiempo, después del cual se debe reiniciar la tarea. Si ingresa un número, puede elegir la unidad
deseada en el cuadro de selección detrás del campo de edición: milisegundos [ms] o microsegundos [ μ s].
Las entradas en formato [ms] se mostrarán en el formato TIME (por ejemplo, "t#200ms") tan pronto como se
vuelva a pintar la ventana; pero también puede ingresar directamente el valor en formato TIME. Las entradas
en [ms] siempre se mostrarán como un número puro (por ejemplo, "300").
Evento (para Tipo 'activado por evento' o 'activado por evento externo'): una variable global que activará el
inicio de la tarea tan pronto como se detecte un flanco ascendente. Botón de uso ... o el asistente de entrada
<F2> para obtener una lista de todas las variables globales disponibles. Es posible que el sistema de destino
defina eventos Singleton. Se trata de eventos, que solo permiten iniciar una única tarea. Durante la
compilación del proyecto se comprobará si un evento de este tipo inicia varias tareas. La comprobación se
refiere a la dirección de datos de la variable de evento, no al nombre. Por ejemplo: si el sistema de destino
define %MX1.1 y %IB4 como eventos singleton, el uso de las siguientes variables como variables de evento
producirá dos errores (a y b, así como c y d tienen la misma dirección)
VAR_GLOBAL
a AT %MX1.1: BOOL;
b EN %MX1.1: BOOL;
c AT %MB4: BOOL;
d AT %MD1: BOOL;
END_VAR
Si no hay ninguna entrada en los campos 'Intervalo' y 'Evento', el intervalo de la tarea dependerá del
sistema de tiempo de ejecución que se utilice (consulte la documentación de tiempo de ejecución); por
ejemplo, en este caso para CoDeSys SP NT V2.2 y superior se utilizará un intervalo de 10 ms).
Perro guardián
Para cada tarea se puede configurar un control de tiempo (watchdog). Si el sistema de destino admite una
configuración de vigilancia ampliada, es posible que haya límites superior e inferior predefinidos y se defina
un valor predeterminado para el tiempo de vigilancia, así como una definición de tiempo en porcentaje.
Perro guardián: Cuando esta opción está activada ( ) entonces, con respecto a la sensibilidad
establecida actualmente (ver más abajo), la tarea terminará en estado de error tan pronto como el
procesamiento tarde más de lo definido en el campo 'Tiempo' (ver más abajo).
Atención: El sistema de destino CoDeSys SP 32 Bit Full desactiva la función de vigilancia cuando el control de
flujo está activo o cuando la ejecución se detiene actualmente en un punto de interrupción.
Tiempo (por ejemplo: t#200ms): Tiempo de vigilancia; después de la expiración de este plazo, con respecto
a la sensibilidad establecida actualmente (ver más abajo), el perro guardián se activará a menos que la tarea
no haya finalizado ya. Dependiendo del sistema de destino, el tiempo debe introducirse como porcentaje del
intervalo de tareas. En este caso, el cuadro de selección de unidad está atenuado y muestra "%".
Sensibilidad: Aquí puede introducir números enteros en los que se debe generar un error al rebasar el
tiempo de vigilancia. La entrada predeterminada es "1", es decir, en la primera superación del tiempo
de vigilancia se produce un error. Atención: Si se introduce "0", ¡el perro guardián se desactivará!
Atributos específicos del fabricante:
Además de estos atributos estándar para la tarea seleccionada actualmente, los atributos específicos
del fabricante pueden mostrarse en una segunda pestaña, "Parámetros". Este será el caso si se
define en el archivo de descripción específico del destino para la configuración de la tarea.
En el campo 'llamada de programa', especifique un nombre de programa válido fuera de su proyecto o abra el Asistente de
entrada con el botón Seleccionar para seleccionar un nombre de programa válido. El nombre del programa también se
puede modificar más adelante en el árbol de configuración. Para ello, seleccione la entrada y pulse la tecla <Espacio> o
simplemente haga clic con el ratón para abrir un campo del editor. Si el programa seleccionado requiere variables de
entrada, introdúzcalas en su forma habitual y del tipo declarado (por ejemplo, prg(invar:=17)).
Tenga en cuenta: No utilice la misma función de cadena en varias tareas (consulte Elementos de biblioteca
estándar), ya que en este caso los valores pueden estar sobre trazo durante el procesamiento de las tareas.
Cada evento se representa en una línea: El nombre y la descripción se muestran como se define en
el archivo de destino, en la columna llamada POU puede ingresar el nombre de la POU del proyecto
que debe llamarse y procesarse tan pronto como ocurra el evento.
Para ello, utilice el asistente de entrada (<F2>) o introduzca manualmente el nombre de una POU ya
existente (por ejemplo, "PLC_PRG" o "PRG. ACT1"), o inserte un nombre para una POU que aún no existe.
Atención para los sistemas de destino RISC y Motorola 68K: El nombre de una función asignada a un
evento del sistema (función de devolución de llamada) debe comenzar con "callback"!. Para crear una nueva
POU (función) en el proyecto, presione el botón Crear POU <nombre>. A continuación, la POU se insertará
en el organizador de objetos. Los parámetros de entrada y salida requeridos por el evento se definirán
automáticamente en la parte de declaración de la POU. Debajo de la tabla de asignación, el evento
seleccionado actualmente se muestra en una imagen, mostrando los parámetros requeridos.
Si realmente desea que el evento llame a la POU, active la entrada en la tabla de asignación ( ). La
activación/desactivación se realiza haciendo clic con el ratón en el cuadro de control.
La entrada de la tarea se mostrará en color rojo en caso de que el estado sea 'Stop on Error' o 'Stop Watchdog'.
Para cada tarea se muestra un gráfico de barras. La longitud de la barra representa la duración de un
período de ciclo. Debajo de la barra, así como mediante marcas apropiadas en la barra, se ilustran los
siguientes valores de medición:
El botón Reset se puede utilizar para volver a establecer los valores de Min., Max. y Jitter a 0.
La escala del gráfico (microsegundos por píxel) se puede ajustar con la ayuda de una lista de selección en
Escalado [ μ s/píxel].
Dependiendo del sistema de destino PLC_PRG puede procesarse en cualquier caso como una tarea
libre sin insertarse en el árbol de configuración de tareas.
Funciones online adicionales en el menú contextual o en el menú 'Extras':
'Extras' 'Callstack'
Este comando está disponible en el menú Extras de la Configuración de tareas. Si el programa se
detiene en un punto de interrupción durante la depuración, se puede usar para mostrar la pila de
llamadas de la POU correspondiente. Para ello, la tarea de depuración debe seleccionarse en el árbol
de configuración de tareas de. Se abrirá la ventana 'Pila de llamadas de la tarea <nombre de la tarea>'.
Allí se obtiene el nombre de la POU y la posición del punto de interrupción (por ejemplo, "prog_x (2)"
para la línea 2 de la POU prog_x). A continuación, la pila de llamadas completa se muestra en orden
inverso. Si presiona el botón 'Ir a', el foco saltará a esa posición en la POU que está marcada
actualmente en la pila de llamadas.
En el Gestor de Inspecciones y Recetas (pestaña Recursos del Organizador de objetos) se pueden ver
los valores actuales de las variables especificadas en las llamadas "listas de vigilancia (Supervisión").
Más adelante, las variables enumeradas en una lista de vigilancia se pueden preestablecer con valores
constantes y este conjunto de valores, llamado "Receta", se puede transferir al PLC. También los valores
actuales de las variables de una lista de observación se pueden leer desde el PLC al Administrador de Relojes y
Recetas como un preajuste/receta. En este contexto, se tiene en cuenta la posibilidad de guardar recetas en
archivos y volver a cargarlas en el Administrador de recetas cuando sea necesario. Consulte más información
sobre el uso de recetas en: Creación de listas de seguimiento, Recetas
En el modo en línea, las listas de vigilancia también se pueden usar para escribir y forzar variables.
Todas estas funciones, por ejemplo, se pueden utilizar para el registro y la configuración de parámetros de
control.
Editor
El Administrador de Relojes y Recetas, dependiendo del sistema de destino, está disponible en una de las siguientes
variantes: Ventana del Editor Tabular para cada lista de observación, o Editor de 1 ventana para todas las listas de
observación.
Editor tabular:
Cada lista de observación se ve en una ventana de editor tabular independiente y se pueden
abrir varias ventanas al mismo tiempo. En este caso, las listas de seguimiento disponibles se
mostrarán como entradas en la pestaña "Recursos" con sangría debajo del Administrador de
relojes y recetas. Cada uno se puede abrir haciendo doble clic en la entrada.
El editor tabular contiene columnas para el nombre, la dirección, el valor, el valor preparado, el
valor de la receta y el comentario de la variable de inspección.
Lista de seguimiento en vista tabular
Esta vista del editor se abre a través del Administrador de objetos y recetas en la pestaña Recursos del Organizador de
objetos. Las variables de inspección se introducen línea por línea y se puede asignar un valor de receta a cada una
mediante ":=". Sobre esto, vea también: Creación de listas de seguimiento, Recetas
Es posible agregar variables a las listas de observación en el modo fuera de línea escribiendo o en el
modo en línea directamente desde los editores de POU. Consulte Creación de listas de seguimiento, recetas
Se puede llamar a una lista de referencias cruzadas directamente desde una lista de observación,
cuando se selecciona una de las variables de observación. En este caso, está disponible el comando
Mostrar referencias cruzadas en el menú Extras o en el menú contextual. En la lista de referencias
cruzadas, consulte: 'Proyecto' 'Mostrar referencias cruzadas'.
Rellene la nueva lista con variables de observación de los editores de POU, o agregue variables a las listas existentes:
• Si se seleccionan una o varias variables o elementos en uno de los editores de POU, las
variables se pueden agregar directamente a una de las listas de seguimiento existentes
mediante el comando 'Agregar a la lista de seguimiento' (menú 'Extras' o menú contextual).
• En lugar de un identificador variable, se puede introducir una dirección en formato estándar
en una lista de observación. El comando 'Insertar rango de direcciones' (menú 'Extras' o
menú contextual) permite agregar todas las direcciones de un rango de direcciones
especificado de una sola vez.
1-Editor de ventanas:
• Para introducir variables en una lista de observación, la lista debe seleccionarse en la parte
izquierda de la ventana del Administrador de inspecciones y recetas. A continuación, las
variables se añaden en la parte derecha en la posición actual del cursor línea por línea, ya
sea con la ayuda del asistente de entrada <F2> (ver la nota a continuación) o escribiendo.
Consulte Información general, Editor para ver la sintaxis solicitada. Si las variables deben ser
introducidas en modo online, previamente se debe desactivar la monitorización. A través del
comando 'Monitoring aktiv' en los 'Extras' o en el menú contextual se puede cambiar entre
activado y desactivado.
Nota sobre el uso del Asistente de entrada en el Administrador de relojes y recetas:
La vista no estructurada del Asistente de entrada ofrece funciones de filtro adicionales para seleccionar
variables de observación: En el campo de entrada Filtro, puede introducir una cadena y, además,
especificar si esta cadena debe encontrarse al principio del nombre de una variable (Prefijo), al final del
nombre de una variable (Sufijo) o en una posición arbitraria dentro del nombre de la variable para
obtener las variables de inspección que se ofrecen para su selección.
Trabajar con recetas
Las variables de una lista de seguimiento se pueden preestablecer con valores constantes. En el editor
tabular esto es posible a través del valor de la receta de la columna, en el editor de 1 ventana mediante una
asignación a través de ":=". A continuación, la lista de vigilancia se puede utilizar como una "receta".
Si el preajuste debe realizarse automáticamente con los valores actuales leídos desde el PLC, se
puede utilizar el comando 'Leer receta'.
En la variante 1-Window-Editor del Administrador de Relojes y Recetas, los valores de receta deben
asignarse de acuerdo con el siguiente ejemplo:
Ejemplo:
PLC_PRG. TEMPORIZADOR:=50
Aquí la variable PLC_PRG. TIMER está preajustado con 50.
Tenga en cuenta lo siguiente para las variables de tipo matriz, estructura o instancia de bloque de
funciones: Los elementos particulares o las variables de instancia deben introducirse explícitamente
para poder preestablecerlos con valores. Ejemplo: Supongamos que se define una estructura STRU
con componentes a, b,c, y se declara una variable de estructura struvar en el programa PLC_PRG.
Para preestablecer a, b, c con valores, se debe ingresar lo siguiente en la lista de observación:
PLC_PRG.struvar.a:=<valor>
PLC_PRG.struvar.b:=<valor>
PLC_PRG.struvar.c:=<valor>
En consecuencia, se debe realizar el preajuste de los elementos de una matriz: Ejemplo para
una variable de matriz arr_var de tipo ARRAY[0...6]
PLC_PRG.arr_var[0]:=<valor>
PLC_PRG.arr_var[1]:=<valor>
...
Si un bloque de funciones fb contiene las variables x,y y se declara una variable de instancia
fb_inst de tipo fb en PLC_PRG, x e y se pueden predefinir de la siguiente manera:
PLC_PRG.fb_inst.x:=<value>
PLC_PRG.fb_inst.y:=<value>
Las recetas se pueden guardar externamente en un archivo mediante el comando 'Extras', 'Guardar lista de
observación' y se pueden volver a cargar en el editor a través de 'Extras', 'Cargar lista de observación'. En el modo
en línea, los valores de la receta se pueden escribir en las variables del PLC a través de 'Extras', 'Escribir receta'.
Para los bloques de funciones, el comando solo estará disponible si se conoce la ruta de instancia
completa de una variable dentro de la POU.
Notas sobre la selección de elementos en los editores de POU:
Básicamente, se pueden seleccionar variables particulares como de costumbre para el editor respectivo.
Además, se cumple lo siguiente:
• En el editor FBD, todos los elementos a la izquierda de un elemento seleccionado
también se seleccionarán automáticamente. Por ejemplo, también se seleccionarán las
entradas a y b de un cuadro Y cuando seleccione el cuadro Y.
• En el editor de escalera, se pueden seleccionar varios elementos manteniendo pulsada
la tecla <Mayús> mientras se hace clic en los elementos deseados.
• En el editor ST e IL, en la parte derecha de la ventana, se puede seleccionar una sola
variable. En la parte izquierda, se pueden seleccionar varias líneas para agregar todas
las variables incluidas a la lista de observación.
• En el editor SFC puede seleccionar varios elementos sucesivos para que todas las
variables incluidas se agreguen a la lista de observación.
• En las partes de declaración de GVL y POUs sólo se pueden seleccionar determinadas
variables.
Nota: Si se utiliza la vista tabular, se puede cambiar el nombre de la lista de observación en el Organizador de
objetos mediante el comando 'Proyecto''Objeto', 'Renombrar'.
La lista de seguimiento guardada se puede volver a cargar con 'Extras' 'Cargar lista de seguimiento'.
Por ejemplo, esto permite gestionar varias "Recetas" para el mismo conjunto de variables, que se
pueden cargar en el PLC según sea necesario actualmente.
Con 'Extras' 'Guardar lista de seguimiento', puede guardar una lista de observación.
Nota: El comando solo se refiere a los valores de esa lista de observación, que
está seleccionada actualmente en el Administrador de relojes y recetas.
El formato de visualización (binario, hexadecimal, decimal) de los valores de las variables depende principalmente de
la preconfiguración realizada en las opciones del proyecto, categoría Editor, pero se puede cambiar para cada variable
en particular a través de los comandos 'Hexadecimal', 'Binario ' y ' Decimal' disponibles en el menú contextual.
Los valores estructurados (matrices, estructuras o instancias de bloques de funciones) se marcan con
un signo más o menos delante del identificador. Al hacer clic en el signo más con el ratón o pulsando
<Enter>, la visualización de los componentes particulares de la variable se expandirá o se contraerá.
Si se marca una variable de bloque de funciones en la lista de observación, el menú contextual
asociado contendrá adicionalmente los comandos 'Zoom' y 'Abrir instancia'.
La vista monitorin en la vista 1-Window-Editor se puede desactivar y reactivar mediante el comando
'Extra', 'Monitoring Active' o <Alt>+<X>+<M>.
La variable de inspección se puede preajustar con valores constantes y luego, en el modo en línea, la
lista de observación se puede escribir en las variables en el PLC como una receta (comando 'Escribir
receta'). El preajuste también se puede realizar con los valores actuales del PLC. Para ello, en el modo
onlne, se utiliza el comando 'Extras', 'Leer receta'. En este caso, se sobrescribirán los valores de receta
que ya existan.
También se pueden agregar nuevas variables de reloj en el modo en línea a través de varios
mecanismos. Sobre esto, consulte: Creación de listas de seguimiento, recetas.
Ejemplo:
PLC_PRG. Contador [:= <valor actual>] = <valor actual>
Nota: El comando solo se refiere a los valores de esa lista de observación, que está seleccionada actualmente en el
y Gestor de Recetas!
En el Editor de 1 ventana, al hacer clic con el ratón en un valor de variable especificado, también se
puede abrir el cuadro de diálogo correspondiente para introducir el valor que debe ser forzado o escrito.
Para poder realizar un seguimiento, abra el objeto para un seguimiento de muestreo en los recursos
registrar la tarjeta en el Organizador de objetos. Cree o cargue una configuración de seguimiento
adecuada y defina las variables que se van a rastrear. (Ver 'Extras', 'Configuración de Trazas' y
'Selección de las Variables a Mostrar').
Una vez que haya creado la configuración y haya iniciado el trazado en el PLC ('Start Trace'), se
trazarán los valores de las variables. Con 'Leer trazado', los valores trazados finales se leerán y se
mostrarán gráficamente como curvas.
Tenga en cuenta: Si se utiliza una configuración de tarea para controlar el programa, la funcionalidad de
seguimiento se refiere a la tarea de depuración.
Un Trace (valores variables y configuración) se puede guardar y volver a cargar en formato de proyecto (*.trc) o
en formato XML (*.mon). Solo la configuración se puede almacenar y volver a cargar a través de un archivo *.tcf.
Varios seguimientos pueden estar disponibles en un proyecto para mostrarse. Se enumeran en una
lista de selección ('Trace') en la esquina superior derecha de la ventana de seguimiento. Puede
seleccionar una de ellas para que sea la configuración de seguimiento utilizada actualmente.
En primer lugar, defina un nombre para la configuración de seguimiento (Nombre de seguimiento). Este nombre se
añadirá a la lista de selección 'Seguimiento' en la esquina superior derecha de la ventana Seguimiento, tan pronto como
haya confirmado y cerrado el diálogo de configuración con OK. Opcionalmente, introduzca un comentario.
La lista de las variables que se van a rastrear está inicialmente vacía. Para anexar una variable, la
variable debe introducirse en el campo de la lista. A continuación, puede utilizar el botón Insertar o el
<Intro> para añadir la variable a la lista. También puede utilizar el Asistente de entrada (Administrador
de ayuda). Es posible el uso de variables de enumeración.
A variable se elimina de la lista cuando se selecciona la variable y, a continuación, se pulsa el botón Eliminar.
Se puede introducir una variable booleana o analógica (también una variable de enumeración) en el
campo Variable de activación. La asistencia de entrada se puede utilizar aquí. La variable
desencadenadora describe la condición de terminación del seguimiento.
En Nivel de activación, se introduce el nivel de una variable de activación analógica en la que se
produce el evento de activación. También puede usar una constante ENUM aquí. Cuando se
selecciona Positivo de flanco de activación , el evento de activación se produce después de un
flanco ascendente de la variable de activación booleana o cuando una variable analógica ha pasado a
través del nivel de activación de abajo hacia arriba. Las causas negativas se desencadenan después
de un borde descendente o cuando una variable analógica va de arriba a abajo. Ambas causas se
activan tanto para los bordes descendentes como ascendentes o por un paso positivo o negativo,
mientras que ninguna no inicia un evento desencadenante en absoluto.
La posición de activación se utiliza para establecer el porcentaje del valor medido que se registrará antes
de que se produzca el evento de activación. Si, por ejemplo, introduce 25 aquí, se muestra el 25 % de los
valores medidos antes del evento desencadenante y el 75 % después y, a continuación, se termina la traza.
El campo Frecuencia de muestreo se utiliza para establecer el período de tiempo entre dos
grabaciones en milisegundos o, si es compatible con el sistema de destino, en microsegundos. El valor
predeterminado "0" significa un procedimiento de escaneo por ciclo.
Seleccione el modo para recuperar los valores grabados (Grabación): Con Single el número de las
muestras definidas se muestra una vez. Con Continuo, la lectura del registro del número definido de
valores medidos se inicia de nuevo cada vez. Si, por ejemplo, introduce el número '35', la primera
pantalla contiene los primeros valores medidos del 1 al 35 y el registro de los siguientes 35 valores
medidos (36-70) se leerá automáticamente, etc. La selección manual se utiliza para leer las
grabaciones de seguimiento específicamente con 'Extras' 'Leer seguimiento'.
El modo de recuperación funciona independientemente de si se ha activado o no una variable de
activación. Si no se establece ninguna variable de activación, el búfer de seguimiento se rellenará con
el número definido de valores medidos y el contenido del búfer se leerá y mostrará en la recuperación.
El botón Guardar se utiliza para almacenar la configuración de seguimiento que se ha creado en un
archivo. Para ello, se abre la ventana estándar "Guardar archivo como".
Las configuraciones de seguimiento almacenadas se pueden recuperar mediante el botón Cargar.
Para ello, se abre la ventana estándar "Archivo abierto".
Nota: Tenga en cuenta que Guardar y cargar en el cuadro de diálogo de configuración solo se refiere a la
configuración, no a los valores de un registro de seguimiento (a diferencia de los comandos de menú 'Extras',
'Guardar valores de seguimiento', 'Guardar valores' y ..' Valores de carga').
Si el campo Variable de activación está vacío, la grabación de seguimiento se ejecutará sin fin y se
puede detener mediante 'Extras' 'Detener seguimiento'.
Símbolo:
Con este comando, la configuración de trazas se transfiere al PLC y se inicia el muestreo de trazas en
el PLC.
Símbolo:
Con este comando se lee el búfer de traza actual desde el PLC y se muestran los valores de las
variables seleccionadas.
Utilice los comandos de este menú para guardar o volver a cargar trazas (configuración + valores de
traza) en archivos o desde archivos, para cargar una traza desde el controlador al proyecto o para
establecer una determinada traza como la que se debe usar en el proyecto.
Nota: Considere la forma alternativa de almacenar y volver a cargar las trazas utilizando los comandos del menú
'Extras' 'Guardar valores de traza' (formato de proyecto, *.trc-Datei, ASCII) !
Símbolo:
Este comando detiene el seguimiento de muestreo en el PLC.
Si se carga un búfer de seguimiento ('Extras', 'Iniciar seguimiento'), se pueden leer los valores de todas las
variables que se mostrarán ('Extras', 'Leer seguimiento' o 'Extras', 'Lectura automática') y se mostrarán en
consecuencia. Si no se ha establecido ninguna frecuencia de escaneo, el eje X se inscribirá con el número
continuo del valor trazado. El búfer de seguimiento se eliminará tan pronto como se detenga el muestreo de
seguimiento ('Extras', 'Detener seguimiento').
El indicador de estado de la ventana de seguimiento (primera línea) indica si el búfer de seguimiento
está lleno y cuándo se ha completado el seguimiento.
Si se especificó un valor para la frecuencia de exploración, el eje x especificará el tiempo del valor
trazado. El tiempo se asigna al valor rastreado "más antiguo". En el ejemplo, por ejemplo, se indican los
valores de los últimos 25 segundos.
El eje Y se inscribe con valores en el tipo de datos adecuado. La escala se presenta de manera que permita
que el valor más bajo y el más alto quepan en el área de visualización. En el ejemplo, Var 0 ha tomado el
valor más bajo de 6 y el valor más alto de 100: de ahí el ajuste de la escala en el borde izquierdo.
Si se cumple el requisito de activación, se muestra una línea de puntos vertical en la interfaz entre los
valores antes y después de la aparición del requisito de activación.
hacia la derecha o hacia la izquierda con las teclas de flecha. Al presionar <Ctrl>+<izquierda> o
<Ctrl>+<derecha> la velocidad del movimiento se puede aumentar en un factor de 10.
Si adicionalmente se presiona la tecla <Shift>, se puede mover la segunda línea, mostrando la
diferencia con la primera.
'Extras' 'Multicanal'
Con este comando puede alternar entre la visualización de un solo canal y multicanal de la traza de muestreo. En
el caso de una visualización multicanal, hay una marca de verificación ( ) delante de la opción de menú.
'Extras' 'Stretch'
Símbolo:
Con este comando puede estirar (hacer zoom) los valores de la Traza de muestreo que se muestran. La posición
inicial se establece con la barra de ajuste de imagen horizontal. Con estiramientos repetidos que se suceden uno
tras otro, la sección de seguimiento que se muestra en la ventana se reducirá cada vez más de tamaño.
'Extras' 'Comprimir'
Símbolo:
Con este comando se comprimen los valores mostrados para la traza de muestreo; es decir, después
de este comando, puede ver la progresión de las variables de seguimiento dentro de un período de
tiempo más amplio. Es posible una ejecución múltiple del comando.
Este comando es la contraparte de 'Extras' 'Stretch'.
'Guardar valores'
Con este comando se puede guardar una traza de muestreo (valores + datos de configuración). Se
abre el cuadro de diálogo para guardar un archivo. El nombre del archivo recibe la extensión "*.trc".
Tenga en cuenta que aquí se guardan los valores trazados, así como la configuración de seguimiento, mientras
que Guardar seguimiento en el cuadro de diálogo de configuración solo se refiere a los datos de configuración.
La traza de muestreo guardada se puede volver a cargar con 'Extras' 'Load Trace'.
'Valores de carga'
Con este comando se puede volver a cargar una traza de muestreo guardada (valores trazados + datos de
configuración). Se abre el cuadro de diálogo para abrir un archivo. Seleccione el archivo deseado con la extensión "*.trc".
'Guardar en archivo'
Con este comando se puede guardar un rastro (configuración + valores) en un archivo en formato XML.
Para ello, se abre el cuadro de diálogo estándar para guardar un archivo. Automáticamente se utilizará
la extensión de archivo *.mon.
A archivo *.mon se puede volver a cargar en un proyecto con el comando 'Cargar desde archivo'.
Nota: Considere la forma alternativa de guardar una traza utilizando los comandos del menú 'Extras' 'Guardar valores de traza'.
"Guardar en el objetivo"
Con este comando en modo en línea, se puede cargar en el controlador (destino) una configuración de
seguimiento, que está disponible en un archivo en formato XML (*.mon).
Estará disponible el cuadro de diálogo estándar para abrir un archivo, donde por defecto se mostrarán
los archivos con extensión *.mon. Con respecto a esto se refiere a la posibilidad de guardar
configuraciones de seguimiento en archivos *.mon (formato XML) 'Guardar en archivo'.
Ver también: ' Cargar desde el destino'
Cada parámetro se identifica mediante un determinado conjunto de atributos como, por ejemplo, 'valor
predeterminado', 'derechos de acceso' y, especialmente, mediante una clave de acceso única
('Índice', ' Subíndice', 'Nombre'), que se puede direccionar para leer o escribir datos desde/hacia la
lista de parámetros. Este intercambio de datos se puede realizar a través de servicios de comunicación
y no es necesario conocer ninguna dirección de variables ni proporcionar funciones adicionales. Por lo
tanto, el uso de la funcionalidad del Administrador de parámetros es una alternativa al uso de variables
de red.
¿Qué son las listas de parámetros?:
Las listas de parámetros se utilizan para organizar los parámetros y pueden guardarse con el proyecto
y cargarse en el sistema de destino local que está controlado por el programa IEC correspondiente.
Para cada tipo de parámetros, hay un tipo correspondiente de lista de parámetros.
Cada entrada de parámetro está representada por una línea en la lista de parámetros. Cada columna
de la lista representa uno de los atributos del parámetro. Además de un determinado conjunto de
atributos estándar, también se pueden utilizar atributos específicos del fabricante para la descripción de
un parámetro en el Administrador de parámetros.
Depende de las definiciones de un archivo de descripción específico de destino qué atributos
(columnas) serán visibles y editables en el Administrador de parámetros y de qué manera se
organizarán en una lista de parámetros. Si falta el archivo de descripción, se mostrará el conjunto
estándar completo de atributos, cada uno de los cuales muestra el valor predeterminado.
Editor del Administrador de Parámetros en CoDeSys
Además de las listas de variables de proyecto y constantes de proyecto, el Administrador de parámetros también
puede manejar listas de parámetros del sistema. Esos son parámetros que son dados por el sistema de destino.
Más adelante, puede crear listas para instancias de bloques de funciones o variables de estructura que se basan
en plantillas definidas por el usuario también creadas en el Administrador de parámetros.
Debido al hecho de que los datos se almacenan independientemente del programa IEC, se puede
utilizar una lista de parámetros, por ejemplo, para guardar 'recetas', que se conservan incluso si el
programa se reemplaza por otra versión. Más adelante, un PLC en funcionamiento puede ser
"alimentado" con diferentes recetas sin necesidad de volver a descargar el programa.
La ventana del editor es bipartita. La parte izquierda se utiliza para la navegación, muestra una lista de
todas las listas de parámetros cargadas actualmente en el Administrador de parámetros. La parte
derecha contiene un editor de tablas, las columnas tituladas con los nombres de los atributos.
En la ventana de navegación se insertan, eliminan, reorganizan o renombran listas de parámetros de
diferentes tipos (Variables, Parámetros constantes, Plantilla, Instancia, Parámetros del sistema).
En el editor de tablas, las listas se rellenan con entradas de parámetros. Cada tipo de lista mostrará una
selección especial de columnas de atributos que se pueden editar o simplemente son visibles. Esto se define
mediante un archivo de descripción específico de destino o se tomará la configuración predeterminada.
En el modo en línea, puede cargar las listas que ha creado anteriormente en el sistema de destino conectado
actualmente. También puede utilizar las funciones del Administrador de parámetros para acceder a ellas con el fin de
intercambiar datos con otros sistemas (escribir valores, cargar). Más adelante, en la ventana Administrador de
parámetros, puede monitorear los valores actuales de los parámetros. Si actualmente no se establece ninguna
conexión en línea, las listas de parámetros solo se pueden crear localmente y guardar con el proyecto.
Parámetros: Las entradas de las listas de parámetros de este tipo representan parámetros cuyos
valores no están vinculados por el proceso.
Parámetros del sistema: Las entradas de las listas de parámetros de este tipo representan datos que
no están adjuntos por el proceso y que están determinados por el sistema de destino. Las listas de
parámetros del sistema no se pueden eliminar ni cambiar de nombre.
Plantilla: Una plantilla no contiene entradas de parámetros a las que se pueda acceder directamente
con el fin de intercambiar datos. De hecho, las entradas proporcionan una "configuración básica de
atributos" para los componentes de un bloque de funciones o una estructura. Por lo tanto, se puede
utilizar una plantilla en listas de parámetros de tipo 'Instancia'.
Instancia: Las entradas en las listas de parámetros de este tipo representan entradas de parámetros
para variables que son del tipo de un bloque de función o estructura, es decir, que son instancias o
variables de estructura. Para facilitar la introducción de los parámetros, se utiliza una plantilla, que
también se ha creado anteriormente en el Administrador de parámetros.
Asignaciones: Este tipo de lista solo está disponible si es compatible con el sistema de destino. Las entradas
representan variables de proceso que están destinadas a ser utilizadas en la asignación de PDO de un
dispositivo CAN. Por lo tanto, las listas de mapeo son básicamente listas de variables, pero están trabajando en
un rango de índice/subíndice separado. Este rango debe definirse en la configuración de destino, categoría
Funcionalidad de red. En este caso, un dispositivo CAN, que se configura en la configuración del PLC, solo
utilizará las entradas del tipo de lista 'Mapping', mientras que de lo contrario, todas las entradas de las listas de
variables o instancias estarán disponibles en el cuadro de diálogo de mapeo de PDO.
Cada tipo de lista se mostrará en el Editor del Administrador de parámetros de acuerdo con los atributos definidos por
a archivo de descripción en formato XML. Si falta un archivo de este tipo, se utilizará la configuración predeterminada.
Instancias y plantillas
Una lista de parámetros de "Instance" ...
... Maneja las entradas de parámetros, que representan un bloque de funciones, una variable de estructura o una matriz.
Cada una de las listas de instancias para un bloque de funciones o una estructura se basa en una plantilla
que también debe definirse en el Administrador de parámetros para el bloque de funciones o la estructura
respectiva. Las listas de instancias para matrices no pueden usar una plantilla creada en el Administrador de
parámetros, sino que hacen referencia directamente a la matriz que se usa en el proyecto.
Si se activa la opción Acciones síncronas, todos los accesos de lectura/escritura en otras POU definidas para cualquier
entrada de la lista, serán ejecutados por el sistema de destino de forma sincrónica con la llamada de la entrada respectiva.
Para crear listas de parámetros de instancia para matrices, no es necesario crear una plantilla en el
Administrador de parámetros. La plantilla ARRAY estará disponible implícitamente.
Creación de una lista de parámetros de instancia:
Edite una plantilla de la lista de selección debajo de la tabla. Esta lista ofrece todas las plantillas disponibles
actualmente para bloques de funciones o estructuras en el Administrador de parámetros, además de la
opción ARRAY, que puede seleccionar, si desea hacer referencia directamente a una matriz utilizada en su
proyecto. Pulse Aplicar para insertar los componentes predefinidos en la tabla de la lista de parámetros.
En el campo de edición Variable base, introduzca exactamente la variable de proyecto (debe ser del
tipo del bloque de funciones o de la estructura o de la matriz descrita por la plantilla elegida), para los
componentes de los que desea crear entradas de parámetros.
Introduzca un índice base y un subíndice base para la instancia. Los índices y subíndices de los componentes
particulares se calcularán automáticamente sumando los valores de índice o subíndice que se definen en la
plantilla para cada componente (en el caso de las matrices, la base será 0). Se rellenarán automáticamente en los
campos de atributos respectivos. Ejemplo: Si introduce un índice base "3" para un componente, para el que se ha
definido un desplazamiento de índice "3000" en la plantilla, el componente se establecerá en el índice 3003.
Para la opción Acciones síncronas, consulte más arriba: Creación de una lista de parámetros de plantilla.
El comando Insertar entradas faltantes en el menú contextual o en el menú 'Extras' provocará una
actualización de las entradas de acuerdo con la versión actual de la plantilla utilizada. Esto puede ser
útil después de haber eliminado entradas o después de que se haya modificado la plantilla.
Ejemplo:
Cree un bloque de funciones fubo con variables de entrada o salida: a, b, c. En PLC_PRG defina las
siguientes instancias de FB-: inst1_fubo:fubo; inst2_fubo:Fubo. Compilar el proyecto.
Ahora abra el Administrador de parámetros para crear listas de parámetros para las variables inst1_fubo.a,
inst1_fubo.b, inst1_fubo.c y inst2_fubo.a, inst2_fubo.b, inst2_fubo. En primer lugar, inserte una lista de parámetros de
tipo "Plantilla" y asígnele el nombre "fubo_template". Defina la POU base: "fubo". Presione Aplicar y defina algunos
atributos para los componentes a,b,c: te. Entre otras cosas, introduzcan los desplazamientos del índice: para a: 16#1,
para b: 16#2, para c: 16#3. También los desplazamientos del Subíndice, por ejemplo, a: 16#2, b: 16#3, c: 16#4.
Ahora inserte una nueva lista de parámetros que sea de tipo 'Instancia'. Elija la plantilla "fubo_template". Inserte
la variable Base "inst1_fubo". Defina un índice base de, por ejemplo, 16#2300 y un subíndice base de 30 (debe
tener en cuenta los rangos definidos en la configuración de destino en la pestaña Funcionalidad de red !). Ahora
presione Aplicar para que se muestren los índices que se calculan para los componentes a, b, c mediante la
adición de desplazamientos base y desplazamientos definidos por plantilla: Índices: 16 # 2301, 16 # 2302, 16 #
2303; Subíndices: 16#23, 16#33, 16#43.
Basándose en estas entradas creadas automáticamente, ahora puede continuar editando la lista de parámetros.
Insertar lista
Atajo: Ins
Para insertar una nueva lista de parámetros en la Gestión de parámetros, utilice el comando 'Insertar
lista...', o 'Insertar nueva lista' en el menú contextual o 'Insertar'. Los comandos están disponibles
cuando el foco está en la ventana de navegación vacía o en una entrada ya existente en el árbol de
navegación. Se abrirá el cuadro de diálogo 'Insertar lista'.
Inserte un nombre para la nueva lista de parámetros (debe ser único dentro del tipo de lista) y elija uno
de los siguientes tipos de lista:
Después de confirmar la configuración y cerrar el cuadro de diálogo con OK, la nueva lista de parámetros
aparecerá como una entrada en la ventana de navegación, el tipo de lista indicado por el icono. En el editor
de tablas, los atributos apropiados se mostrarán como títulos de columna. La selección y el orden de las
columnas se definen mediante un archivo de descripción específico de destino, de lo contrario, se utiliza la
configuración predeterminada. Ahora puede editar la tabla, introduciendo una línea para cada parámetro
deseado (consulte el Capítulo 6.11.4, Edición de una lista de parámetros).
Cambiar el nombre de la lista
La lista de parámetros, que actualmente está marcada en la ventana de navegación, se puede cambiar
de nombre utilizando el comando 'Renombrar lista' que está disponible en el menú 'Extras' o en el
menú contextual. Se abrirá un campo de edición, que también se obtiene al hacer doble clic con el
ratón sobre el nombre de la lista.
Lista de cortar / copiar / pegar
Atajo: <Ctrl> + <X>, <Ctrl> + <C>, <Ctrl> + <V>,
El comando 'Cortar' (menú Edición) o 'Lista de corte' (menú contextual) mueve la lista marcada actualmente de la
ventana de navegación a un búfer temporal, de modo que puede volver a insertarla con el comando 'Pegar' en
cualquier otra posición del árbol de navegación. Antes de volver a insertar, marque la lista sobre la que desea
insertar.
El comando 'Copiar' o 'Copiar lista' también utiliza el búfer temporal, pero se mantendrá la entrada
original del árbol de navegación y se agregará una copia mediante 'Pegar'.
Eliminar lista
Atajo: <Supr>
La lista seleccionada actualmente en la ventana de navegación se eliminará mediante el comando
'Eliminar' (menú 'Editar') o 'Eliminar lista' ('Extras' o menú contextual).
Tenga en cuenta: En el modo en línea, este comando eliminará la lista correspondiente en el sistema de tiempo de ejecución.
Esto significa que los valores de los atributos de cada parámetro en particular se mostrarán en una línea separada
De acuerdo con el orden específico del tipo de lista y la selección de columnas.
Inserción/eliminación de líneas:
Inserte la línea resp. Se insertará una nueva entrada (línea) antes de aquella en la que se
Nueva línea cursor está colocado actualmente.
Línea después de resp. Se insertará una nueva entrada (línea) después de aquella en la que el
Nueva línea después cursor está colocado actualmente. .
Acceso directo:<Ctrl><Enter>
online. Haga clic con el ratón en el campo que contiene el título de la columna del atributo deseado. Por lo
tanto, las líneas de la tabla se reordenarán y en el campo del título de la columna del atributo se mostrará el
símbolo de flecha am, que muestra la clasificación actual (apuntando hacia arriba = secuencia de
clasificación ascendente, apuntando hacia abajo = secuencia de clasificación descendente).
Depende del destino, si se utilizan Index y Subindex o RefID y Offset para supervisar los valores.
Los siguientes comandos están disponibles en el menú 'Extras' para manejar la transferencia de listas
entre el editor y el controlador:
Eliminar lista La lista marcada actualmente en la ventana de navegación se eliminará del PLC
sistema de tiempo de ejecución.
Lista de escritura Este comando abrirá el cuadro de diálogo 'Copiar objetos' donde puede seleccionar
Disponible enumera los que desea descargar en el sistema de tiempo de ejecución. El
la descarga se realizará tan pronto como confirme con OK. Depende de la
target, ya sea para enumeraciones solo numéricas o, además, simbólicas,
Los valores serán transferidos.
Lista de lectura Todas las listas de tipo 'Parámetros' se leerán desde el sistema de ejecución y se cargarán
en el Administrador de parámetros. La "carga" de listas de tipo 'Variables' será
solo se realiza si el destino lo admite explícitamente.
Valores de escritura Todos los valores definidos en la columna 'Valor' se escribirán en la lista de parámetros
del sistema de ejecución. Para escribir valores individuales, haga doble clic en el botón
campo respectivo en la columna para obtener el cuadro de diálogo 'Valor de
escritura', como se conoce de la función 'En línea' 'Valores de escritura'.
Escribir valores predeterminados Los valores definidos en la columna 'Predeterminado' se escribirán
en la lista de parámetros en el sistema de tiempo de ejecución.
Valores de toma de control Los valores actuales se leerán desde el sistema de tiempo de ejecución y
se cargarán en la columna 'Valor'.
El comando Format Dec/Hex también está disponible para alternar el formato de entrada entre
'decimal' y hexadecimal'.
'Extras' 'Export'
El comando 'Exportar' del menú 'Extras' se puede utilizar para exportar las listas del Administrador de
parámetros a un archivo XML. Este archivo, por ejemplo, se puede importar a otro proyecto mediante la
función de importación en el Administrador de parámetros de CoDeSys. Se abrirá el cuadro de diálogo
estándar para guardar un archivo, la extensión de archivo *.prm estará preestablecida. Todas las listas
disponibles en el Administrador de parámetros se escribirán en el archivo de exportación.
El contenido del Administrador de parámetros también se puede exportar utilizando la función general
de exportación de proyectos ('Exportación de proyectos').
'Extras' 'Import'
El comando 'Importar' del menú 'Extras' se puede utilizar para importar un archivo XML que describe
listas de parámetros. Este archivo, por ejemplo, se puede crear utilizando la función de exportación en
el Administrador de parámetros de CoDeSys.
Si el archivo de importación contiene una lista, cuyo nombre ya se utiliza en el Administrador de
parámetros, se abrirá un cuadro de diálogo preguntando al usuario si se debe sobrescribir la lista
existente.
Target-Support-Package (Paquete-de-Soporte-Objetivo)
Se debe instalar un paquete de soporte de destino (TSP) antes de comenzar con la ayuda del
programa de instalación InstallTarget, que podría ser parte de CoDeSys-Setup.
Un paquete de soporte de destino (TSP) contiene todos los archivos y la información de configuración necesaria para
controlar una plataforma estándar con un programa creado en CoDeSys. Lo que hay que configurar: generador de
código, disposición de la memoria, funcionalidad del PLC, módulos de E/S. Además, las bibliotecas, los controladores de
puerta de enlace, los archivos ini para mensajes de error y el navegador PLC deben estar vinculados. El componente
central de un TSP son uno o más archivos de destino. Un archivo de destino dirige a los archivos que, además, son
necesarios para configurar el destino. Es posible que varios archivos de destino compartan estos archivos adicionales.
La extensión predeterminada para un archivo de destino es *.trg, el formato es binario. Las definiciones
aditivas se adjuntan a las entradas del archivo de destino que determinan si el usuario puede ver y
editar la configuración en los cuadros de diálogo de CoDeSys.
Durante la instalación de un TSP, el archivo de destino para cada destino se coloca en un directorio separado y se
registra la ruta. Los archivos asociados se copian en la computadora de acuerdo con la información de un archivo
de información *.tnf . El nombre del directorio de destino es el mismo que el nombre de destino. Se recomienda
almacenar los archivos específicos de destino en un directorio que se nombre con el nombre del fabricante.
Los archivos que se instalan con un TSP se leen cuando se inicia CoDeSys. Los ajustes de destino
que se realizan en los diálogos de CoDeSys se guardarán con el proyecto.
Tenga en cuenta: Si utiliza un nuevo archivo de destino o si ha cambiado el existente, CoDeSys debe reiniciarse
para leer la versión actualizada.
¡Atención!: ¡Tenga en cuenta que cada modificación de la configuración de destino predefinida puede causar
cambios severos en el rendimiento y el comportamiento del objetivo!
Se puede proporcionar un texto de ayuda para cada comando estándar con ?<BLANK><KEYWORD>.
Esto se define de manera similar en el archivo ini.
Los siguientes comandos están firmemente integrados en el sistema de tiempo de ejecución y contenidos en el
archivo ini con las entradas correspondientes para ayuda de entrada, información sobre herramientas y ayuda:
Mandar Descripción
Tsk Mostrar la lista de tareas IEC, incluida la información de la tarea definida en el proyecto.
resetprgcold Restablecer el programa PLC en frío. Los datos remanentes también se inicializan. ('En línea', 'Restablecer (frío)').
resetprgorg Restablecer el programa PLC original. Se borra el programa de aplicación actual, así como
todos los datos (incluidos los remanentes y persistentes). ('En línea', 'Restablecer (origen)').
getprgstat Leer y mostrar el estado del programa (por ejemplo, "ejecutar", "detener", último error, indicadores).
filerename Cambie el nombre de los archivos en PLC [antiguo] [nuevo]. Ejemplo: filerename oldname.txt newname.txt".
Mandar Descripción
hacia adelante y hacia atrás en el historial , puede desplazarse hacia atrás y hacia adelante a través
de los resultados de la consulta ya realizados. La grabación del historial continúa hasta que abandona
el proyecto.
Con Guardar lista de historial puede guardar los resultados de la consulta realizada hasta ese
momento en un archivo de texto externo. Aparecerá el cuadro de diálogo 'Guardar archivo como', en el
que puede ingresar un nombre de archivo con la extensión ".bhl" (Lista de historial del navegador). El
comando Imprimir último comando abre el cuadro de diálogo estándar para imprimir. Se puede
imprimir la consulta actual más los datos de salida en la ventana de mensajes.
6.14 Herramientas
El objeto 'Herramientas' estará disponible en la pestaña 'Recursos' si la funcionalidad está habilitada para el
sistema de destino establecido actualmente. Muestra todos los accesos directos (conexiones) disponibles a
archivos ejecutables de herramientas externas, que se pueden activar con un doble clic para llamar a estos
programas externos desde CoDeSys. Está definido por el archivo de destino cuál y cuántos accesos directos están
permitidos. Dependiendo de esta definición, el usuario puede agregar o eliminar nuevos accesos directos en la
carpeta 'Herramientas'.
Por ejemplo, la carpeta Herramientas del Organizador de objetos podría tener el siguiente aspecto:
En este ejemplo se instalan cuatro accesos directos de herramientas. Uno sirve para iniciar otro sistema de
programación CoDeSys, otro para abrir la lista de ensambladores en un editor de texto y otros dos accesos
directos están disponibles para abrir archivos PDF. Los accesos directos marcados con un "<R>" no se
pueden modificar en CoDeSys. Los accesos directos pueden contener la conexión a un editor, por ejemplo,
notepad.exe, o a un determinado archivo PDF, de modo que al hacer doble clic en la entrada se abriría una
ventana de bloc de notas que muestra la lista de ensambladores respectivamente se abriría el Acrobat
Reader que muestra el archivo PDF.
Además, puede definir ciertos archivos que deben descargarse en el PLC tan pronto como se active el
acceso directo.
Puede ver las propiedades globales de la herramienta (válidas para todos los accesos directos
enumerados en 'Herramientas'), así como las propiedades de los accesos directos individuales.
1. Propiedades de la herramienta:
Si 'Herramientas' está marcado en el árbol de Recursos, encontrará el comando 'Propiedades del objeto' en el
menú contextual o en el menú 'Proyecto' 'Objeto', que abrirá el cuadro de diálogo 'Propiedades de la herramienta'.
Allí obtendrá una tabla que enumera todos los accesos directos de herramientas que se pueden usar para el
objetivo establecido actualmente. Se muestran los siguientes parámetros: el Id (número de identificación
único) de la herramienta, el nombre del acceso directo que se utiliza para hacer referencia al acceso directo
en el organizador de objetos y el nombre del archivo ejecutable de la herramienta. El botón Avanzado
expande el cuadro de diálogo o cierra la extensión del cuadro de diálogo:
El cuadro de diálogo expandido muestra las propiedades globales del acceso directo tal y como se
define en el archivo de destino. Más adelante está disponible un campo de edición donde se puede
definir un directorio (de trabajo) que debe usarse para las acciones del archivo ejecutable. La ruta se
guardará sin cerrar el cuadro de diálogo tan pronto como presione el botón Aplicar.
Propiedades de la herramienta:
Comando Llamando a la herramienta; rutas del archivo exe y del archivo que se nombra en 'Parámetro'
(predefinido por la 'Plantilla de parámetros', ver arriba) por ejemplo: C:\programas\notepad.exe
D:\listings\textfile.txt
Parámetro Ruta del archivo al que debe llamar la herramienta. Esto se define en el archivo de destino y se
puede editar aquí, si se ha activado la opción 'Editable' (ver más abajo).
En primer lugar, aquí encontrará los nombres de archivo definidos por el archivo de destino y que también se
descargan descritos en las propiedades de la herramienta (DownloadFileTemplate, ver arriba). Si la opción
'Editable' está activada en el cuadro de diálogo extendido (ver más abajo), puede modificar la lista. Para ello,
pulse el botón Nuevo para abrir el cuadro de diálogo 'Nombre de archivo', donde puede introducir otro archivo
o una ruta de archivo. Si ingresa un archivo sin ruta, se buscará en ese directorio, donde está el archivo
codesys-exe. El botón Eliminar eliminará la entrada de la lista marcada actualmente.
Botón Estándar restablece las entradas del cuadro de diálogo a los valores predeterminados definidos por el archivo de destino.
Botón Aplicar guarda la configuración realizada sin cerrar el cuadro de diálogo de propiedades.
El botón Avanzado expande el cuadro de diálogo para que tenga el siguiente aspecto:
Número de acceso Número corrido, empezando por 1. Los nuevos accesos directos de la herramienta actual
directo: obtendrán cada uno el siguiente número más alto. Si un acceso directo se elimina más
adelante, los números de los accesos directos restantes permanecerán sin cambios. El
número de acceso directo se puede insertar en otras definiciones utilizando la plantilla
$(INSTANCE_NUMBER) (por ejemplo, consulte más arriba, 'Plantilla de parámetros').
Para crear un acceso directo para una de las herramientas ofrecidas, seleccione esta herramienta
haciendo clic con el ratón en la columna 'ID'. A continuación, puede modificar el nombre
predeterminado del acceso directo en el campo de edición Nombre del acceso directo y confirmar
con OK. Esto solo funcionará si ingresa un nombre que aún no se usa.
OK cierra el diálogo y el nuevo acceso directo se insertará en el árbol de recursos, representado por el
nombre del acceso directo y un número de acceso directo que es 1 mayor que el más alto utilizado
para una instancia de esta herramienta hasta ahora.
En el área debajo del campo de nombre se mostrarán las sugerencias apropiadas sobre las entradas del usuario.
Abra la carpeta 'Herramientas' en el árbol 'Recursos' del Organizador de objetos haciendo doble clic en el
signo más. Verá qué herramientas ya están conectadas para el proyecto actual. Si acaba de configurar un
nuevo proyecto y aún no ha trabajado en la lista Herramientas, solo se mostrarán las entradas, que están
predefinidas inalterablemente por las definiciones en el archivo de destino. De lo contrario, es posible que
vea una lista de herramientas modificada específicamente por el proyecto. Para comprobar si la lista es
ampliable con nuevas entradas, seleccione el comando 'Añadir objeto'. Obtendrá un cuadro de diálogo que
ofrece todas las herramientas para las que se pueden crear accesos directos adicionales.
7 IEV
Actualmente, el ENI es compatible con los sistemas de base de datos 'Visual SourceSafe 6.0', 'MKS
Source Intergrity', 'PVCS Version Manager' V7.5 y superior y un sistema de archivos local. Los objetos
se pueden almacenar allí en diferentes 'carpetas' (categorías de bases de datos con diferentes
propiedades de acceso). Los objetos se pueden extraer para editarlos y, por lo tanto, se bloquearán
para otros usuarios. Se puede llamar a la última versión de un objeto desde la base de datos. Más
adelante, en paralelo, puede almacenar cualquier objeto localmente en el proyecto, como es habitual
para proyectos sin control de código fuente.
7.1.2 Condiciones previas para trabajar con una base de datos de proyectos de ENI
Por favor, tenga en cuenta: Para obtener una guía sobre la instalación y el uso del servidor ENI proporcionada
por 3S – Smart Software Solutions GmbH, consulte la documentación del servidor por separado o la ayuda en
línea. Allí también encontrará una guía de inicio rápido.
Considere también la posibilidad de utilizar el Explorador ENI que permite realizar acciones de base de
datos independientemente del sistema de base de datos utilizado actualmente.
Si se desea utilizar el ENI en el sistema de programación CoDeSys para gestionar los objetos del
proyecto en una base de datos externa, se deben cumplir las siguientes condiciones previas:
la comunicación entre CoDeSys y el servidor ENI requiere TCP/IP, ya que el servidor ENI utiliza el
protocolo HTTP.
un servidor ENI (ENI Server Suite) debe instalarse e iniciarse localmente o en un equipo remoto. Se
requiere una licencia para ejecutarlo con uno de los controladores de base de datos estándar que se ha
instalado con el servidor. Solo se puede usar el controlador para un sistema de archivos local con una
versión de ENI Server sin licencia.
en la herramienta de control de servicios del servidor ENI (ENI Control) la conexión a la base de datos
deseada debe configurarse correctamente (Base de datos). Se le pedirá automáticamente que haga
esto durante la instalación, pero puede modificar la configuración más adelante en ENI Control.
a debe instalar una base de datos de proyecto para la que esté disponible un controlador compatible con ENI. Es
razonable hacer esto en la misma computadora, donde se está ejecutando el servidor ENI . Alternativamente, se
puede utilizar un sistema de archivos local, para el que también se proporcionará un controlador de forma
predeterminada.
en la administración de la base de datos, posiblemente el usuario (Cliente) así como el Servidor ENI
deben estar registrados como usuarios válidos con derechos de acceso. De todos modos, esto es
necesario para 'Visual SourceSafe', si utiliza otro sistema de base de datos, consulte la documentación
correspondiente para obtener información sobre la configuración del usuario.
para el proyecto CoDeSys actual, la interfaz ENI debe estar activada (para hacerlo en el cuadro de
diálogo CoDeSys: 'Proyecto', 'Opciones', 'Base de datos del proyecto'). (Es posible cambiar una
definición de usuario en ENI, por ejemplo, con el fin de definir derechos de acceso más detallados,
como es posible en la administración de la base de datos. Pero, en general, basta con que el usuario
que quiera acceder a la base de datos a través de ENI, esté registrado en la base de datos.
para el proyecto CoDeSys actual, la conexión a la base de datos debe estar configurada correctamente;
esto debe hacerse en los diálogos de CoDeSys 'Proyecto' 'Opciones' 'Control de código fuente del proyecto.
en el proyecto actual, el usuario debe iniciar sesión en el servidor ENI con nombre de usuario y
contraseña; esto se debe hacer en el diálogo de inicio de sesión, que se puede abrir explícitamente con
el comando 'Proyecto', 'Enlace a la base de datos', 'Iniciar sesión' o que se abrirá automáticamente en
caso de que intente acceder a la base de datos sin haber iniciado sesión antes.
La asignación actual de un objeto a una categoría de base de datos se muestra en las Propiedades del
objeto y se puede modificar allí.
Las propiedades de las categorías de la base de datos (parámetros de comunicación, derechos de
acceso, comportamiento de entrada/salida) se pueden modificar en los diálogos de opciones de la base
de datos del proyecto ('Proyecto', 'Opciones', 'Control de código fuente del proyecto').
Cada categoría de objeto ENI se configurará por separado en los ajustes del 'Control de código fuente
del proyecto', que forman parte de las opciones del proyecto ('Proyecto', 'Opciones'). Esto significa que
cada categoría tiene sus propios parámetros definidos para la comunicación con la base de datos
(directorio, puerto, derecho de acceso, datos de acceso de usuario, etc.) y en cuanto al
comportamiento en la llamada a la última versión, check-out y check-in. Esta configuración será válida
para todos los objetos que pertenezcan a la categoría. Como resultado, tendrá que iniciar sesión en
cada categoría de base de datos por separado; esto se hará a través del cuadro de diálogo 'Iniciar
sesión'.
Es recomendable crear una carpeta separada para cada categoría de objetos en la base de datos, pero
también es posible almacenar todos los objetos en la misma carpeta. (La 'categoría' es una propiedad
de un objeto, no de una carpeta).
Véanse a continuación las tres categorías de objetos de ENI:
Objetos del proyecto: Objetos que contienen información de origen específica del proyecto, por ejemplo, POU
que se comparten en una operación multiusuario. El comando 'Obtener todas las últimas
versions' llamará automáticamente a todos los objetos de esta categoría desde los datos
base al proyecto local; incluso aquellos que no han estado allí hasta ahora.
Objetos compartidos: Objetos que no son específicos del proyecto, por ejemplo, bibliotecas POU que normalmente
se utilizan en varios proyectos.
Atención: El comando 'Obtener todas las últimas versiones' solo copiará esas
objetos de esta categoría de la carpeta del proyecto al proyecto local, que
ya forman parte del proyecto !
Compilar archivos: Compilar información (por ejemplo, archivos de símbolos) creada por CoDeSys para
el proyecto actual y que puede ser necesario para otros programas también.
Ejemplo: Una visualización externa puede necesitar no solo el proyecto
variables, sino también las direcciones asignadas. Esto último no se
conocerá hasta que se compile el proyecto.
Alternativamente, cualquier objeto del proyecto CoDeSys se puede excluir del control de código fuente
del proyecto y se puede asignar a la categoría 'Local', lo que significa que solo se almacenan con el
proyecto como de costumbre para proyectos sin ningún control de código fuente.
8 Interfaz DDE
Comunicación DDE con CoDeSys
CoDeSys tiene una interfaz DDE (intercambio dinámico de datos) para la lectura de datos. CoDeSys
utiliza esta interfaz para proporcionar a otras aplicaciones que también utilizan una interfaz DDE el
contenido de las variables de control y las direcciones IEC
Si se utiliza el GatewayDDEServer, que funciona con símbolos, no es necesario CoDeSys para leer
los valores de las variables del PLC y transferirlos a las aplicaciones con una interfaz DDE.
Atención: ¡Las direcciones directas no se pueden leer a través del servidor DDE! Para este caso, en CoDeSys se
deben declarar variables con la asignación de direcciones (AT) adecuada.
Atención: La interfaz DDE ha sido probada con Word 97 y Excel 97 en Windows NT 4.0. Si la comunicación DDE
falla debido a una falta de coincidencia de otras versiones o programas instalados adicionalmente en una
computadora, 3S – Smart Software Solutions no puede asumir ninguna responsabilidad.
Usando el comando 'Archivo' 'Abrir' puede llamar a un archivo ya existente que almacena un conjunto
de parámetros de configuración. Se abrirá el cuadro de diálogo estándar para seleccionar un archivo y
se ofrecerán los archivos disponibles con la extensión ".cfg". Si se selecciona un archivo de
configuración, se muestran los parámetros de configuración y el dispositivo de destino definido
Si la opción 'Archivo' 'Autoload' está activada, el servidor GatewayDDE se abre automáticamente con
esa configuración, que estaba activa antes de la última terminación del servidor.
Si el servidor se inicia sin ninguna configuración predefinida y sin el ajuste Autoload, en la ventana de
configuración se muestran 'Gateway:' y 'Device:'. A continuación, debe configurar una nueva
configuración.
El comando 'Archivo' 'Configuración' abre el cuadro de diálogo ' Configuración del servidor', en el
que se pueden configurar los siguientes parámetros:
Ejemplo:
Ejemplo:
Línea de comandos:
GATEWAYRIGHT /s=i /c="D:\DDE\conf_1.cfg"
Se iniciará el servidor GatewayDDE, aparecerá la ventana de diálogo como un icono, se cargará la
configuración almacenada en el archivo conf_1.cfg.
Ver también:
Documentación separada proporcionada con el 3S Licensing Manager
Creación de una biblioteca con licencia en CoDeSys, Capítulo 9.1.1.
Común:
Nombre: Introduzca un nombre para el módulo de biblioteca que se utiliza para representarlo en el
Administrador de licencias de 3S. Esta entrada es obligatoria.
Contacto:
Licencias por teléfono: / Licencias por correo: Inserte aquí el número de teléfono o la dirección de
correo electrónico del proveedor de licencias. Estas entradas son obligatorias.
Información opcional:
En la ventana de la derecha puede introducir un texto que haga referencia al artículo actualmente
marcado en la ventana de la izquierda: Descripción, Fabricante, Proveedor, Información de precios
Tenga en cuenta:
1. Es razonable proteger una biblioteca, a la que se le ha proporcionado información sobre licencias,
mediante una contraseña. Si va a guardar el proyecto sin contraseña, se le indicará mediante un
cuadro de mensaje.
2. La información de licencia de una biblioteca 3S se almacena internamente en la biblioteca y se registrará en la
computadora automáticamente tan pronto como la biblioteca se incluya en un proyecto. Pero la información de
licencia de los módulos que no son proporcionados por 3S debe proporcionarse en un archivo de descripción
separado en formato XML compatible, que puede ser leído por el Administrador de licencias de 3S. Para ello,
consulte también la documentación separada sobre el Administrador de licencias 3S.
10 APÉNDICE
Operadores aritméticos
Operadores de cadena de bits
Operadores de desplazamiento de bits
Operadores de selección
Operadores de comparación
Operadores de direcciones
Operadores de llamadas
Conversiones de tipo
Operadores numéricos
Ejemplo en ST:
var1 := 7+2+4+7;
Ejemplo en FBD:
MUL
Multiplicación de variables de los tipos: BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
UDINT, REAL y LREAL.
Ejemplo en IL:
LD 7 MUL 2,4,7 ST Var1
Ejemplo en ST:
var1 := 7*2*4*7;
Ejemplo en FBD:
SUB
Resta de una variable de otra de los tipos: BYTE, WORD, DWORD, SINT, USINT, INT,
UINT, DINT, UDINT, REAL y LREAL.
Una variable TIME también se puede restar de otra variable TIME, lo que da como resultado una
tercera variable de tipo TIME. Tenga en cuenta que los valores negativos de TIME no están definidos.
Ejemplo en IL:
LD 7 SUB 2 ST Var1
Ejemplo en ST:
var1 := 7-2;
Ejemplo en FBD:
DIV
División de una variable por otra de los tipos: BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, REAL y LREAL.
Ejemplo en IL:
LD 8 DIV 2 ST Var1 (* El resultado es 4 *)
Ejemplo en ST:
var1 := 8/2;
Ejemplo en FBD:
el operador DIV, por ejemplo, para evitar una división por 0. Las funciones deben tener los nombres
indicados anteriormente.
Atención: ¡Tenga en cuenta que los diferentes sistemas de destino pueden comportarse de manera diferente con respecto a una división por cero!
divisor:REAL;
END_VAR
IF divisor = 0 THEN CheckDivReal:=1;
MÁS
CheckDivReal:=divisor;
END_IF;
El operador DIV utiliza la salida de la función CheckDivReal como divisor. En un programa como el que
se muestra en el siguiente ejemplo, esto evita una división por 0, el divisor (d) se establece de 0 a 1.
Así que el resultado de la división es 799.
PROGRAMA PLC_PRG
VAR erg:REAL; v1:REAL:=799; d:REAL; END_VAR erg:= v1/d;
Atención: ¡Las funciones CheckDiv proporcionadas por la biblioteca Check.Lib son solo soluciones de ejemplo!
Antes de usar esos módulos de biblioteca, verifique si están funcionando en su sentido o implemente las funciones
apropiadas directamente como una POU en su proyecto.
MOD
Módulo División de una variable por otra de los tipos: BYTE, WORD, DWORD, SINT, USINT, INT,
UINT, DINT, UDINT. El resultado de esta función será el resto de la división. Este resultado será un
número entero.
Ejemplo en IL:
LD 9 MOD 2 ST Var1 (* El resultado es 1 *)
Ejemplo en ST:
var1 := 9 MOD 2;
Ejemplo en FBD:
MOVER
Asignación de una variable a otra variable de un tipo apropiado. Como MOVE está disponible como
caja en los editores gráficos LD, CFC, también se puede aplicar la funcionalidad (de desbloqueo)
EN/EN0 en una asignación de variables. Sin embargo, en el editor FBD esto no es posible.
Ejemplo en CFC junto con la función EN/EN0:
Solo si en_i es TRUE, var1 se asignará a var2.
Ejemplo en IL:
LD ivar1
MOVER
ST ivar2 (* Resultado: a ivar2 se le asigna el valor de ivar1 *)
( ! se obtiene el mismo resultado con:
LD ivar1 ST ivar2 )
Ejemplo en ST:
ivar2 := MOVER(ivar1);
( ! se obtiene el mismo resultado con: ivar2 := ivar1; )
ÍNDICE DE
Esta función no está prescrita por la norma IEC61131-3.
Realice esta función para encontrar el índice interno de una POU.
Ejemplo en ST:
var1 := INDEXOF(POU2);
TAMAÑODE
Esta función no está prescrita por la norma IEC61131-3.
Realice esta función para determinar el número de bytes requeridos por la variable dada.
Ejemplo en IL:
arr1:ARRAY[0..4] OF INT; Var1 INT LD arr1
TAMAÑODE
ST Var1 (* El resultado es 10 *)
Ejemplo en ST:
var1 := TAMAÑODE(arr1);
Ejemplo en ST:
var1 := 2#1001_0011 Y 2#1000_1010
Ejemplo en FBD:
y si utiliza generadores 68xxx, tenga en cuenta lo siguiente: ¡La asignación del valor de la segunda
variable de entrada en el módulo de operador AND a la variable z no se ejecutará! Esto se debe al
procesamiento optimizado en el SFC en caso de valor FALSE en la variable de entrada.
O
OR bit a bit de los operandos de bits. Los operandos deben ser del tipo BOOL, BYTE, WORD o DWORD.
Ejemplo en IL:
var1 :BYTE;
LD 2#1001_0011 O 2#1000_1010 ST var1 (* El resultado es 2#1001_1011 *)
Ejemplo en ST:
Var1 := 2#1001_0011 O 2#1000_1010
Ejemplo en FBD:
y si utiliza generadores 68xxx, tenga en cuenta lo siguiente: ¡La asignación del valor de la segunda
variable de entrada en el módulo de operador OR a la variable z no se ejecutará! Esto se debe al
procesamiento optimizado en el SFC en caso de valor FALSE en la variable de entrada.
XOR
XOR bit a bit de operandos de bits. Los operandos deben ser del tipo BOOL, BYTE, WORD o DWORD.
Nota: Considere el comportamiento de la función XOR en forma extendida, es decir, si hay más de 2 entradas. Las
entradas se comprobarán en pares y los resultados particulares se compararán de nuevo en pares (esto cumple
con el estándar, pero puede que el usuario no lo espere).
Ejemplo en IL:
Var1 :BYTE; LD 2#1001_0011 XOR 2#1000_1010 ST Var1 (* El resultado es 2#0001_1001 *)
Ejemplo en ST:
Var1 := 2#1001_0011 XOR 2#1000_1010
Ejemplo en FBD:
NO
Bit a bit NO de un operando de bits. El operando debe ser del tipo BOOL, BYTE, WORD o DWORD.
Ejemplo en IL:
Var1 :BYTE; LD 2#1001_0011 NOT ST Var1 (* El resultado es 2#0110_1100 *)
Ejemplo en ST:
Var1 := NO 2#1001_0011
Ejemplo en FBD:
SHL
Desplazamiento bit a bit a la izquierda de un operando : erg:= SHL (in, n)
in se desplaza a la izquierda en n bits. Si n > ancho de tipo de datos, para BYTE, WORD y DWORD se
rellenarán con ceros. Pero si se utilizan tipos de datos con signo, como por ejemplo INT, entonces se ejecutará
un desplazamiento aritmético en tales casos, lo que significa que se rellenará con el valor del bit superior.
Nota: Vea en el siguiente ejemplo en notación hexadecimal que obtiene resultados diferentes para erg_byte y
erg_word dependiendo del tipo de datos de la variable de entrada (BYTE o WORD), aunque los valores de las
variables de entrada in_byte y in_word son los mismos.
Ejemplo en ST:
PROGRAMA shl_st VAR in_byte : BYTE:=16#45; in_word : PALABRA:=16#45; erg_byte : BYTE; erg_word : PALABRA; n:
BYTE :=2; END_VAR erg_byte:=SHL(in_byte,n); (* El resultado es 16#14 *) erg_word:=SHL(in_word,n); (* El resultado es
16#01141 *)
Ejemplo en FBD:
Ejemplo en IL:
LD 16#45 SHL 2 ST erg_byte
SHR
Desplazamiento bit a la derecha de un operando: erg:= SHR (in, n)
in se desplaza a la derecha en n bits. Si n > ancho de tipo de datos, para BYTE, WORD y DWORD se rellenarán
con ceros. Pero si se utilizan tipos de datos con signo, como por ejemplo INT, entonces se ejecutará un
desplazamiento aritmético en tales casos, lo que significa que se rellenará con el valor del bit superior.
Consulte el siguiente ejemplo en notación hexadecimal para observar los resultados de la operación
aritmética en función del tipo de variable de entrada (BYTE o WORD).
Ejemplo en ST:
PROGRAMA shr_st VAR in_byte : BYTE:=16#45; in_word : PALABRA:=16#45; erg_byte : BYTE; erg_word :
PALABRA; n: BYTE :=2; END_VAR erg_byte:=SHR(in_byte,n); (* El resultado es 11 *) erg_word:=SHR(in_word,n);
(* El resultado es 0011 *)
Ejemplo en FBD:
Ejemplo en IL:
LD 16#45 SHR 2 ST erg_byte
ROL
Rotación bit a bit de un operando hacia la izquierda: erg:= ROL (in, n)
erg, in y n deben ser del tipo BYTE, WORD o DWORD. in se desplazará una posición de bit a la izquierda n
veces, mientras que el bit que esté más a la izquierda se volverá a insertar desde la derecha.
Vea en el siguiente ejemplo en notación hexadecimal que obtiene resultados diferentes para erg_byte y
erg_word dependiendo del tipo de datos de la variable de entrada (BYTE o WORD), aunque los valores
de las variables de entrada in_byte y in_word son los mismos.
Ejemplo en ST:
PROGRAMA rol_st VAR in_byte : BYTE:=16#45; in_word : CONVERTIRSE:=16#45; erg_byte : BYTE; erg_word :
LLEGAR A SER; n: BYTE :=2; END_VAR erg_byte:=ROL(in_byte,n); (* El resultado es 16#15 *)
erg_word:=ROL(in_word,n); (*El resultado es 16#0114*)
Ejemplo en FBD:
Ejemplo en IL:
LD 16#45
ROL 2 ST
erg_byte
ROR
Rotación bit a bit de un operando hacia la derecha: erg = ROR (in, n)
erg, in y n deben ser del tipo BYTE, WORD o DWORD. in se desplazará una posición de bit a la derecha n
veces, mientras que el bit que esté más a la izquierda se volverá a insertar desde la izquierda.
Vea en el siguiente ejemplo en notación hexadecimal que obtiene resultados diferentes para erg_byte y
erg_word dependiendo del tipo de datos de la variable de entrada (BYTE o WORD), aunque los valores
de las variables de entrada in_byte y in_word son los mismos.
Ejemplo en ST:
PROGRAMA ror_st VAR in_byte : BYTE:=16#45; in_word : PALABRA:=16#45; erg_byte : BYTE; erg_word : PALABRA; n:
BYTE :=2; END_VAR erg_byte:=ROR(in_byte,n); (* El resultado es 16#51 *) erg_word:=ROR(in_word,n); (* El resultado
es16#4011 *)
Ejemplo en FBD:
Ejemplo en IL:
LD 16#45 ROR 2 ST erg_byte
SEL
Selección binaria.
OUT := SEL(G, IN0, IN1) significa:
OUT := IN0 si G=FALSE; OUT := IN1 si G=TRUE.
IN0, IN1 y OUT pueden ser cualquier tipo de variable, G debe ser BOOL. El resultado de la selección
es IN0 si G es FALSE, IN1 si G es TRUE.
Ejemplo en IL:
LD TRUE SEL 3,4 (* IN0 = 3, IN1 =4 *) ST
Var1 (* El resultado es 4 *)
Ejemplo en ST:
Var1:=SEL(VERDADERO,3,4); (* El resultado es 4 *)
Ejemplo en FBD:
Nota: Tenga en cuenta que una expresión que se produce antes de IN1 o IN2 no se procesará si IN0 es TRUE.
MÁXIMO
Función máxima. Devuelve el mayor de los dos valores.
SALIDA := MÁX. (ENTRADA0, ENTRADA1)
IN0, IN1 y OUT pueden ser cualquier tipo de variable.
Ejemplo en IL:
LD 90 MAX 30 MAY 40 MAX 77 ST Var1 (* El resultado es 90 *)
Ejemplo en ST:
Var1:=MAX(30,40); (* El resultado es 40 *)
Var1:=MAX(40,MAX(90,30)); (* El resultado es 90 *)
Ejemplo en FBD:
MIN
Función mínima. Devuelve el menor de los dos valores.
SALIDA := MIN(IN0, IN1)
IN0, IN1 y OUT pueden ser cualquier tipo de variable.
Ejemplo en IL:
LD 90 MIN 30 MIN 40 MIN 77 ST Var1 (* El resultado es 30 *)
Ejemplo en ST:
Var1:=MIN(90,30); (* El resultado es 30 *);
Var1:=MIN(MIN(90,30),40); (* El resultado es 30 *);
Ejemplo en FBD:
LÍMITE
Restrictivo
OUT := LIMIT(Min, IN, Max) significa:
SALIDA := MIN (MAX (IN, Min), Max)
Max es el límite superior y Min el límite inferior del resultado. Si el valor IN supera el límite superior
Max, LIMIT devolverá Max. Si IN cae por debajo de Min, el resultado será Min.
IN y OUT pueden ser cualquier tipo de variable.
Ejemplo en IL:
LD 90 LÍMITE 30,80 ST Var1 (* El resultado es 80 *)
Ejemplo en ST:
Var1:=LÍMITE(30,90,80); (* El resultado es 80 *);
Ejemplo en FBD:
MUX
Multiplexor
OUT := MUX(K, IN0,...,INn) significa:
SALIDA := TINTA.
IN0, ..., INn y OUT pueden ser cualquier tipo de variable. K debe ser BYTE, WORD, DWORD, SINT,
USINT, INT, UINT, DINT o UDINT. MUX selecciona el valor K-ésimo de entre un grupo de valores.
Ejemplo en IL:
LD 0 MUX 30,40,50,60,70,80 ST Var1 (* El resultado es 30 *)
Ejemplo en ST:
Var1:=MUX(0,30,40,50,60,70,80); (* El resultado es 30 *);
Tenga en cuenta: Una expresión que se produzca antes de una entrada que no sea INK no se procesará para
ahorrar tiempo de ejecución. Solo en el modo de simulación se ejecutarán todas las expresiones.
Ejemplo en ST:
VAR1 := 20 > 30 > 40 > 50 > 60 > 70;
Ejemplo en FBD:
LT
Menos que
Operador booleano que devuelve el valor TRUE cuando el valor del primer operando es menor que el del
segundo. Los operandos pueden ser BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME y STRING.
Ejemplo en IL:
LD 20 LT 30 ST Var1 (* El resultado es VERDADERO *)
Ejemplo en ST:
VAR1 := 20 < 30;
Ejemplo en FBD:
LE
Menor o igual que
Operador booleano que devuelve el valor TRUE cuando el valor del primer operando es menor o igual
que el del segundo. Los operandos pueden ser BOOL, BYTE, WORD, DWORD, SINT, USINT, INT,
UINT, DINT, UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME y STRING.
Ejemplo en IL:
LD 20 LE 30 ST Var1 (* El resultado es VERDADERO *)
Ejemplo en ST:
VAR1 := 20 <= 30;
Ejemplo en FBD:
GE
Mayor o igual que
Operador booleano que devuelve el valor TRUE cuando el valor del primer operando es mayor o igual
que el del segundo. Los operandos pueden ser BOOL, BYTE, WORD, DWORD, SINT, USINT, INT,
UINT, DINT, UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME y STRING.
Ejemplo en IL:
LD 60 GE 40 ST Var1 (* El resultado es VERDADERO *)
Ejemplo en ST:
VAR1 := 60 >= 40;
Ejemplo en FBD:
EQ
Igual a
Operador booleano que devuelve el valor TRUE cuando los operandos son iguales. Los operandos pueden ser
BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL, LREAL, TIME, DATE,
TIME_OF_DAY, DATE_AND_TIME y STRING.
Ejemplo en IL:
LD 40 EQ 40 ST Var1 (* El resultado es VERDADERO *)
Ejemplo en ST:
VAR1 := 40 = 40;
Ejemplo en FBD:
NE
No es igual a
Operador booleano que devuelve ese valor TRUE cuando los operandos no son iguales. Los operandos pueden
ser BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL, LREAL, TIME,
DATE, TIME_OF_DAY, DATE_AND_TIME y STRING.
Ejemplo en IL:
LD 40 NE 40 ST Var1 (* El resultado es FALSO *)
Ejemplo en ST:
VAR1 := 40 <> 40;
Ejemplo en FBD:
ADR
Función de dirección no prescrita por la norma IEC61131-3.
ADR devuelve la dirección de su argumento en un DWORD. Esta dirección se puede enviar a las funciones de
fabricación para que se trate como un puntero o se puede asignar a un puntero dentro del proyecto.
dwVar:=ADR(bVAR);
Ejemplo en IL:
LD bVar ADR ST dwVar man_fun1
ADRINST
Función de dirección, no prescrita por la norma IEC61131-3.
ADRINST dentro de una instancia de bloque de funciones devuelve la dirección de la instancia en un
DWORD. Esta dirección se puede enviar a funciones y tratarse allí como un puntero o se puede
asignar a un puntero dentro del proyecto.
Ejemplos en ST (dentro de una instancia de bloque de funciones):
dvar:=ADRINST(); (* Escriba la dirección de la instancia en la variable dvar *) fun(a:=ADRINST()); (*
Dar la dirección de la instancia para introducir una de la función fun *)
Ejemplos en IL:
ADRINST
ST dvar
ADRINST
diversión
BITADR
Función de dirección, no prescrita por la norma IEC61131-3.
BITADR devuelve el desplazamiento de bits dentro del segmento en un DWORD. Tenga en cuenta que el valor de
desplazamiento depende de si la opción de direccionamiento de bytes en la configuración de destino está activada o no.
VAR
var1 EN %IX2.3:BOOL; bitoffset: DWORD;
END_VAR
Ejemplo en ST:
bitoffset:=BITADR(var1); (* Resultado si el direccionamiento de bytes = TRUE: 19, si el direccionamiento de bytes = FALSO: 35 *)
Ejemplo en IL:
LD Var1
BITADR
ST Var2
Operador de contenido
Se puede desreferenciar un puntero agregando el operador de contenido "^" después del identificador del puntero.
Ejemplo en ST:
pt:PUNTERO A INT;
var_int1:INT; var_int2:INT; pt := ADR(var_int1); var_int2:=pt^;
Ejemplo:
Llamar a la instancia Inst desde un bloque de funciones donde las variables de entrada Par1 y Par2
son 0 y TRUE respectivamente.
CAL INST(PAR1 := 0, PAR2 := VERDADERO)
BOOL_TO Conversiones
Conversión de tipo BOOL a cualquier otro tipo:
Para los tipos de número, el resultado es 1, cuando el operando es TRUE y 0, cuando el operando es FALSE.
Para el tipo STRING, el resultado es 'TRUE' o 'FALSE'.
Ejemplos en IL:
Ejemplos en ST:
i:=BOOL_TO_INT(VERDADERO); (* El resultado es 1 *)
dandt:=BOOL_TO_DT(VERDADERO); (* El resultado es
DT#1970-01-01-00:00:01 *)
Ejemplos en FBD:
(*El resultado es 1 *)
TO_BOOL Conversiones
Conversión de otro tipo de variable a BOOL:
El resultado es TRUE cuando el operando no es igual a 0. El resultado es FALSE cuando el operando
es igual a 0.
El resultado es verdadero para las variables de tipo STRING cuando el operando es "TRUE", de lo contrario, el resultado es
FALSO.
Ejemplos en IL:
Ejemplos en FBD:
Ejemplos en St:
Ejemplo en FBD:
Ejemplo en ST:
i := REAL_TO_INT(1,5); (* El resultado es 2 *)
j := REAL_TO_INT(1.4); (* El resultado es 1 *)
i := REAL_TO_INT(-1,5); (* El resultado es -2 *)
j := REAL_TO_INT(-1.4); (* El resultado es -1 *)
Ejemplo en IL:
LD 2.7 REAL_TO_INT GE %MW8
Ejemplo en FBD:
Conversiones TIME_TO/TIME_OF_DAY
Conversión del tipo de variable TIME o TIME_OF_DAY a un tipo diferente:
La hora se almacenará internamente en un DWORD en milisegundos (a partir de las 12:00 a.m. para la
variable TIME_OF_DAY). A continuación, se convertirá este valor.
Al realizar una conversión de tipo de un tipo más grande a uno más pequeño, corre el riesgo de perder parte de la información
Ejemplos en ST:
si:=TOD_TO_SINT(TOD#00:00:00.012); (* El resultado es 12 *)
Ejemplos en FBD:
Conversiones DATE_TO/DT_TO
Conversión del tipo de variable FECHA o DATE_AND_TIME a un tipo diferente:
La fecha se almacenará internamente en un DWORD en segundos desde el 1 de enero de 1970. A
continuación, se convertirá este valor.
Al realizar una conversión de tipo de un tipo más grande a uno más pequeño, corre el riesgo de perder parte de la información
Ejemplos en ST:
str:=DT_TO_STRING(DT#1998-02-13-14:20); (* El resultado es
'DT#1998-02-13-14:20' *)
Ejemplos en FBD:
STRING_TO Conversiones
Conversión del tipo de variable STRING a un tipo diferente:
El operando de la variable de tipo STRING debe contener un valor que sea válido en el tipo de variable
de destino, de lo contrario el resultado será 0.
Ejemplos en IL:
LD 'abc34' (* El resultado es 0 *)
STRING_TO_WORD
ST w
Ejemplos en ST:
w :=STRING_TO_WORD('abc34'); (* El resultado es 0 *)
Ejemplos en FBD:
TRUNC
Conversión de REAL a INT. Se utilizará la parte del número entero del valor.
Al realizar una conversión de tipo de un tipo más grande a uno más pequeño, se corre el riesgo de perder parte de la información.
Ejemplo en IL:
LD 2.7 TRUNC GE %MW8
Ejemplos en ST:
i:=TRUNC(1.9); (* El resultado es 1 *)
i:=TRUNC(-1.4); (* El resultado es -1 *).
EN FUERA
Ejemplo en IL:
LD -2 ABS ST i (* El resultado es 2 *)
Ejemplo en ST:
i:=ABS(-2);
Ejemplo en FBD:
SQRT
Devuelve la raíz cuadrada de un número.
IN puede ser de tipo BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT, OUT
debe ser de tipo REAL.
Ejemplo en IL:
LD 16 SQRT ST q (* El resultado es 4 *)
Ejemplo en ST:
q:=SQRT(16);
Ejemplo en FBD:
EN
Devuelve el logaritmo neperiano de un número.
IN puede ser de tipo BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT, OUT
debe ser de tipo REAL.
Ejemplo en IL:
LD 45 LN ST q (* El resultado es 3.80666 *)
Ejemplo en ST:
q:=LN(45);
Ejemplo en FBD:
REGISTRO
Devuelve el logaritmo de un número en base 10.
IN puede ser de tipo BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT, OUT
debe ser de tipo REAL.
Ejemplo en IL:
LD 314.5 LOG ST q (* El resultado es 2.49762 *)
Ejemplo en ST:
q:=LOG(314.5);
Ejemplo en FBD:
EXP
Devuelve la función exponencial.
IN puede ser de tipo BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT, OUT
debe ser de tipo REAL.
Ejemplo en IL:
LD 2 EXP ST q (* El resultado es 7.389056099 *)
Ejemplo en ST:
q:=EXP(2);
Ejemplo en FBD:
PECADO
Devuelve el seno de un número.
El valor de entrada IN se calcula en minutos de arco. Puede ser de tipo BYTE, WORD, DWORD, INT, DINT,
REAL, SINT, USINT, UINT, UDINT. OUT debe ser de tipo REAL.
Ejemplo en IL:
LD 0.5 SIN ST q (* El resultado es 0.479426 *)
Ejemplo en ST:
q:=SIN(0.5);
Ejemplo en FBD:
COS
Devuelve el coseno de número. El resultado se calcula en minutos de arco.
IN puede ser de tipo BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT, OUT
debe ser de tipo Typ REAL.
Ejemplo en IL:
LD 0.5 COS ST q (* El resultado es 0.877583 *)
Ejemplo en ST:
q:=COS(0.5);
Ejemplo en FBD:
BRONCEADO
Devuelve la tangente de un número. El valor se calcula en minutos de arco. IN puede ser de tipo BYTE,
WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT, OUT debe ser de tipo REAL.
Ejemplo en IL:
LD 0.5 TAN ST q (* El resultado es 0.546302 *)
Ejemplo en ST:
q: = TAN(0.5);
Ejemplo en FBD:
ASIN
Devuelve el seno de arco (función inversa del seno) de un número. .
IN puede ser de tipo BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT, OUT
debe ser de tipo REAL.
Ejemplo en IL:
LD 0.5 ASIN ST q (* El resultado es 0.523599 *)
Ejemplo en ST:
q:=ASIN(0,5);
Ejemplo en FBD:
ACOS
Devuelve el coseno de arco (función inversa del coseno) de un número. El valor se calcula en minutos
de arco.
IN puede ser de tipo BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT, OUT
debe ser de tipo REAL.
Ejemplo en IL:
LD 0.5 ACOS ST q (* El resultado es 1.0472 *)
Ejemplo en ST:
q:=ACOS(0.5);
Ejemplo en FBD:
ATAN
Devuelve la tangente de arco (función inversa de la tangente) de un número. IN puede ser de tipo
BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT. El resultado OUT se calcula
en minutos de arco y debe ser de tipo REAL.
Ejemplo en IL:
LD 0.5 ATAN ST q (* El resultado es 0.463648 *)
Ejemplo en ST:
q:=ATAN(0.5);
Ejemplo en FBD:
EXPT
Exponenciación de una variable con otra variable:
SALIDA = ENTRADA1ENTRADA2.
IN1 e IN2 pueden ser de tipo BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,
OUT debe ser de tipo REAL.
Ejemplo en IL:
LD 7 EXPT 2 ST var1 (* El resultado es 49 *)
Ejemplo en ST:
var1 := EXPT(7,2);
Ejemplo en FBD:
Declaración en POU:
fbinst:fb; b:bool;
Parte de implementación:
b := INI(fbinst, VERDADERO); ivar:=fbinst.retvar (* => retvar se inicializa
*)
Ejemplo de llamada de operador en IL:
LD fbinst
INI TRUE ST b
10.11 Constantes
Constantes BOOL
Las constantes BOOL son los valores lógicos TRUE y FALSE.
Constantes de tiempo
Las constantes de tiempo se pueden declarar en CoDeSys. Por lo general, se utilizan para operar el
temporizador en la biblioteca estándar. Una constante TIME siempre se compone de una "t" o "T" inicial
(o "time" o "TIME" deletreado) y un signo numérico "#".
A esto le sigue la declaración de tiempo real, que puede incluir días (identificados con "d"), horas
(identificadas con "h"), minutos (identificados con "m"), segundos (identificados con "s") y milisegundos
(identificados con "ms"). Tenga en cuenta que las entradas de tiempo deben darse en este orden de acuerdo
con la longitud (d antes de h antes de m antes de s antes de m antes de ms), pero no es necesario que
incluya todos los incrementos de tiempo.
Ejemplos de constantes TIME correctas en una asignación ST:
TIEMPO1 := T#14ms;
TIEMPO1 := T#100S12ms; (*Se puede permitir que el componente más alto exceda su límite*)
TIEMPO1 := t#12h34m15s;
Constantes DATE
Estas constantes se pueden utilizar para introducir fechas. Se declara una constante DATE que comienza con "d",
"D", "DATE" o "date" seguido de "#". A continuación, puede introducir cualquier fecha con el formato Año-Mes-Día.
Ejemplos:
FECHA#1996-05-06
d#1972-03-29
(consulte también el Capítulo 10.15 Tipos de datos, Tipos de datos de tiempo)
TIME_OF_DAY Constantes
Utilice este tipo de constante para almacenar las horas del día. Una declaración TIME_OF_DAY comienza con
"tod#", "TOD#", "TIME_OF_DAY#" o "time_of_day#" seguido de una hora con el formato: Hora:Minuto:Segundo.
Puede introducir segundos como números reales o puede introducir fracciones de segundo.
Ejemplos:
TIME_OF_DAY#15:36:30.123
tod#00:00:00
(consulte también el Capítulo 10.15 Tipos de datos, Tipos de datos de tiempo)
DATE_AND_TIME Constantes
Las constantes de fecha y la hora del día también se pueden combinar para formar las llamadas constantes DATE_AND_TIME. DATE_AND_TIME constantes comienzan con "dt#", "DT#", "date_and_time#". Coloque un guión después de la fecha seguida de la hora.
"DATE_AND_TIME#" o
Ejemplos:
DATE_AND_TIME#1996-05-06-15:36:30
dt#1972-03-29-00:00:00
(consulte también el Capítulo 10.15 Tipos de datos, Tipos de datos de tiempo)
Constantes numéricas
Los valores numéricos pueden aparecer como números binarios, números octales, números decimales
y números hexadecimales. Si un valor entero no es un número decimal, debe escribir su base seguido
del signo de número (#) delante de la constante entera. Los valores de los números 10-15 en números
hexadecimales se representarán como siempre con las letras A-F.
Puede incluir el carácter de subrayado dentro del número.
Ejemplos:
14 (número decimal)
2#1001_0011 (número doble)
8#67 (número octal)
16#A (número hexadecimal)
Estos valores numéricos pueden ser de los tipos de variables BYTE, WORD, DWORD, SINT, USINT, INT,
UINT, DINT, UDINT, REAL o LREAL.
No se permiten conversiones implícitas de tipos de variables "más grandes" a "más pequeñas". Esto
significa que una variable DINT no se puede utilizar simplemente como una variable INT. Debe utilizar
la conversión de tipos.
Constantes REAL/LREAL
Las constantes REAL y LREAL se pueden dar como fracciones decimales y representarse
exponencialmente. Para ello, utilice el formato americano estándar con el punto decimal.
Ejemplo:
7.4 en lugar de 7,4 1.64e+009 en lugar
de 1,64e+009
Constantes STRING
Una cadena es una secuencia de caracteres. Las constantes STRING van precedidas y seguidas de
comillas simples. También puede introducir espacios en blanco y caracteres especiales (diéresis, por
ejemplo). Serán tratados como todos los demás personajes.
En las secuencias de caracteres, la combinación del signo de dólar ($) seguido de dos números
hexadecimales se interpreta como una representación hexadecimal del código de caracteres de ocho
bits. Además, la combinación de dos caracteres que comienzan con el signo de dólar se interpreta
como se muestra a continuación cuando aparecen en una secuencia de caracteres:
$$ Signos de dólar
$' Comillas simples
$L o $l Avance de línea
$N o $n Nueva línea
$P o $p Feed de página
$R o $r
Salto de línea
$T o $t Pestaña
Ejemplos:
'w1Wüß?'
' Abby y Craig ' ':-)'
10.12 Variables
Las variables se pueden declarar localmente en la parte de declaración de una POU o en una lista de variables globales.
Tenga en cuenta: En un proyecto puede definir una variable local que tenga el mismo nombre que una variable
global. En este caso, dentro de una POU se utilizará la variable definida localmente. Sin embargo, no está
permitido nombrar dos variables globales de forma idéntica. Por ejemplo, obtendrá un error del compilador, si ha
definido una variable "var1" en la configuración del PLC, así como en una lista global de variables.
Se puede acceder al bloque de funciones y a las variables de programa mediante la siguiente sintaxis:
<functionblockname>.<variablename>
Ejemplo:
a : INT;
b : BOOL; ...
a. := b;
El tercer bit de la variable a se establecerá en el valor de la variable b.
Si el índice es mayor que el ancho de bits de la variable, se emite el siguiente mensaje de error: Índice
'<n>' fuera del rango válido para la variable '<var>'!
El direccionamiento de bits es posible con los siguientes tipos de variables: SINT, INT, DINT, USINT, UINT, UDINT,
BYTE, BECOME, DWORD.
Si el tipo de variable no lo permite, se emite el siguiente mensaje de error: "Tipo de datos no válido
'<type>' para la indexación directa"
¡No se debe asignar un acceso de bits a una variable VAR_IN_OUT!
Tenga en cuenta: ¡La opción del proyecto 'Reemplazar constantes' (categoría Construir) debe estar activada!
Consulte en los siguientes ejemplos un acceso a bits en una variable o una variable de estructura:
Declaración en la lista de variables globales para ambos ejemplos:
Declaración en POU:
VAR xxx:tú;
END_VAR
Acceso a bits:
bvar:BOOL;
rvar:REAL;
wvar:PALABRA;
Declaración en POU:
VAR x:stru1;
END_VAR
Acceso a bits:
x.enable:=true;
Esto establecerá VERDADERO el 42. bit en la variable x. Dado que bvar tiene 8 bits y rvar tiene 32 bits, el
bitaccess se realizará en el segundo bit de la variable wvar, que como resultado obtendrá el valor 4.
Atención: Si una variable, que realiza un acceso de bits en una variable de estructura con la ayuda de una
constante global, debe mostrarse correctamente en el asistente de entrada, en la supervisión en la ventana de
declaración y en la "función Intellisense", utilice pragma {bitaccess} como se muestra en el ejemplo. A
continuación, además, se muestra la constante global más allá de la variable de estructura respectiva durante la
supervisión en la ventana de declaración:
10.13 Direcciones
Dirección
La visualización directa de las ubicaciones de memoria individuales se realiza mediante el uso de secuencias
de caracteres especiales. Estas secuencias son una concatenación del signo de porcentaje "%", un prefijo de
rango, un prefijo para el tamaño y uno o más números naturales separados por espacios en blanco.
Yo asumo
Q Q
M Ubicación de la memoria
X Un solo bit
Ninguno Un solo bit
B Byte (8 Bits)
W Word (16 Bits)
D Palabra doble (32 bits)
Ejemplos:
La configuración actual del PLC para el programa determina si una dirección es válida o no.
Nota: Los valores booleanos se asignarán bytewise, si no se especifica una dirección explícita de un solo bit.
Ejemplo: Un cambio en el valor de varbool1 AT %QW0 afecta al rango de QX0.0 a QX0.7.
Ubicación de la memoria
Puede utilizar cualquier tamaño admitido para acceder a la ubicación de la memoria.
Por ejemplo, la dirección %MD48 se dirigiría a los números de bytes 192, 193, 194 y 195 en el área de
ubicación de memoria (48 * 4 = 192). El número del primer byte es 0.
Puede acceder a palabras, bytes e incluso bits de la misma manera: la dirección %MX5.0 le permite
acceder al primer bit de la quinta palabra (los bits generalmente se guardan por palabra).
véase también Apéndice A: Operadores IEC y funciones adicionales de extensión de normas, operadores de direcciones
10.14 Funciones
En ST, una llamada de función también puede aparecer como un operando.
Ejemplo:
Resultado := Fct(7) + 3;
Función TIME()
Esta función devuelve el tiempo (basado en milisegundos) que se ha pasado desde que se inició el
sistema.
El tipo de datos es TIME.
Ejemplo en IL:
HORA
ST systime (* Resultado, por ejemplo: T#35m11s342ms *)
Ejemplo en ST:
systime:=TIEMPO();
Ejemplo en FBD:
BOOL
A las variables de tipo BOOL se les pueden asignar los valores TRUE y FALSE. Se reservarán 8 bits
de espacio de memoria.
consulte también el capítulo 10.11, Operandos en CoDeSys, constantes BOOL
REAL / LREAL
REAL y LREAL son los llamados tipos de punto flotante. Deben representar números racionales. Se
reservan 32 bits de espacio de memoria para REAL y 64 bits para LREAL.
Valores válidos para REAL: 1.175494351e-38 a 3.402823466e+38
Valores válidos para LREAL: 2.2250738585072014e-308 a 1.7976931348623158e+308
véase también el Capítulo 10.11, Constantes REAL-/LREAL
CUERDA
Una variable de tipo STRING puede contener cualquier cadena de caracteres. La entrada size de la
declaración determina cuánto espacio de memoria se debe reservar para la variable. Se refiere al
número de caracteres de la cadena y se puede colocar entre paréntesis o corchetes. Si no se
especifica el tamaño, se utilizará el tamaño predeterminado de 80 caracteres.
Básicamente, la longitud de la cadena no está limitada en CoDeSys, pero las funciones de cadena solo
pueden procesar cadenas de 1 a 255 caracteres.
Constantes de TIEMPO:
siempre compuesto por una "t" o "T" inicial (o "tiempo" o "TIEMPO" deletreado) y un signo numérico "#".
A esto le sigue la declaración de tiempo real, que puede incluir días (identificados con "d"), horas (identificadas con
"h"), minutos (identificados con "m"), segundos (identificados con "s") y milisegundos (identificados con "ms").
Tenga en cuenta que las entradas de tiempo deben darse en este orden de acuerdo con la longitud (d antes de h
antes de m antes de s antes de m antes de ms), pero no es necesario que incluya todos los incrementos de
tiempo.
Valor máximo: 49d17h2m47s295ms (4194967295 ms)
Ejemplos de constantes TIME correctas en una asignación ST:
TIEMPO1 := T#14ms;
TIEMPO1 := T#100S12ms; (*Se puede permitir que el componente más alto exceda su límite*)
TIEMPO1 := t#12h34m15s;
Constantes DATE:
comenzando con una "d", "D", "FECHA" o "fecha" seguida de "#". A continuación, puede introducir
cualquier fecha con el formato Año-Mes-Día. Valores posibles: 1970-00-00 a 2106-02-06.
Ejemplos:
FECHA#1996-05-06
d#1972-03-29
Inicialización de matrices:
Ejemplo de inicialización completa de una matriz:
arr1 : ARRAY [1..5] OF INT := 1,2,3,4,5; arr2 : ARRAY [1..2,3..4] DE INT := 1,3(7); (*
abreviatura de 1,7,7,7 *)
arr3 : ARRAY [1..2,2..3,3..4] OF INT := 2(0),4(4),2,3; (* abreviatura de
0,0,4,4,4,4,2,3 *)
Ejemplo de inicialización de un array de una estructura:
TIPO STRUCT1 ESTRUCTURA
END_STRUCT
MATRIC[1..3] DE STRUCT1:= (p1:=1,p2:=10,p3:=4723),(p1:=2,p2:=0,p3:=299), (p1:=14,p2:=5,p3:=112);
Nota: Si define una función en su proyecto con el nombre CheckBounds, puede usarla para verificar si hay
desbordamientos de rango en su proyecto (consulte el capítulo '2.1, Qué es qué en CoDeSys',
'Componentes de un proyecto', 'Función')
Atención: La función CheckBounds proporcionada por la biblioteca Check.Lib es solo una solución de ejemplo.
Antes de usar ese módulo de biblioteca, verifique si la función funciona según lo solicitado para su proyecto o
implemente una función adecuada directamente como una POU en su proyecto.
Puntero
Las direcciones de variables o bloques de funciones se guardan en punteros mientras se ejecuta un programa.
Las declaraciones de puntero tienen la siguiente sintaxis:
<Identificador>: PUNTERO A <Tipo de datos/Bloque de funciones>;
A puntero puede apuntar a cualquier tipo de datos o bloque de funciones, incluso a tipos definidos por el usuario.
La función del ADR del operador de direcciones es asignar la dirección de una variable o bloque de
funciones al puntero.
A puede desreferenciar un puntero agregando el operador de contenido "^" después del identificador del puntero.
Tenga en cuenta: ¡Un puntero se cuenta byte! Puede contarlo como es habitual en el compilador de C utilizando la
instrucción p=p+SIZEOF(p^);.
Ejemplo:
pt:PUNTERO A INT;
var_int1:INT := 5; var_int2:INT; pt := ADR(var_int1); var_int2:= pt^; (* var_int2 ahora es 5 *)
Enumeración
La enumeración es un tipo de datos definido por el usuario que se compone de una serie de constantes
de cadena. Estas constantes se denominan valores de enumeración.
Los valores de enumeración se reconocen en todas las áreas del proyecto, incluso si se declararon dentro de
una POU. Es mejor crear las enumeraciones como objetos en el Organizador de objetos en la tarjeta de registro
Tipos de datos. Comienzan con la palabra clave TYPE y terminan con END_TYPE.
Sintaxis:
TIPO <Identificador>:(<Enum_0> ,<Enum_1>, ...,<Enum_n>); END_TYPE
Una variable del tipo <Identifier> puede tomar uno de los valores de enumeración y se inicializará con
el primero. Estos valores son compatibles con números enteros, lo que significa que puede realizar
operaciones con ellos tal como lo haría con INT. Puede asignar un número x a la variable. Si los
valores de enumeración no se inicializan, el recuento comenzará con 0. Al inicializar, asegúrese de que
los valores iniciales estén aumentando. La validez del número se revisará en el momento en que se
ejecute.
Ejemplo:
TIPO TRAFFIC_SIGNAL: (Rojo, Amarillo, Verde:=10); (*El valor inicial para cada uno de los colores es rojo 0, amarillo 1, verde
10*) END_TYPE TRAFFIC_SIGNAL1 : TRAFFIC_SIGNAL; TRAFFIC_SIGNAL1:=0; (* El valor del semáforo es rojo*) PARA i:=
Rojo A Verde DO i := i + 1; END_FOR;
El mismo valor de enumeración no se puede usar dos veces dentro de una enumeración o dentro de
todas las enumeraciones utilizadas en la misma POU.
Ejemplo:
TRAFFIC_SIGNAL: (rojo, amarillo, verde); COLOR: (azul, blanco, rojo); Error: es
posible que el rojo no se utilice tanto para TRAFFIC_SIGNAL como para COLOR.
Estructuras
Las estructuras se crean como objetos en el Organizador de objetos en la tarjeta de registro Tipos de datos.
Comienzan con las palabras clave TYPE y STRUCT y terminan con END_STRUCT y END_TYPE.
La sintaxis de las declaraciones de estructura es la siguiente:
TIPO <Nombre de la estructura>: STRUCT
<Structurename> es un tipo que se reconoce en todo el proyecto y se puede usar como un tipo de
datos estándar.
Se permiten estructuras entrelazadas. La única restricción es que las variables no se pueden colocar
en las direcciones (¡la declaración AT no está permitida!).
Ejemplo de una definición de estructura denominada Polygonline:
TYPE Polygonline: STRUCT
Start:ARRAY [1..2] OF INT;
Point1:ARRAY [1..2] OF INT;
Point2:ARRAY [1..2] OF INT;
Point3:ARRAY [1..2] OF INT;
Point4:ARRAY [1..2] OF INT;
Fin:ARRAY [1..2] DE INT;
END_STRUCT END_TYPE
Las inicializaciones con variables no son posibles. Vea un ejemplo de la inicialización de una matriz de
una estructura en 'Matrices'.
Acceso a los componentes de la estructura:
Puede obtener acceso a los componentes de la estructura mediante la siguiente sintaxis:
<Structure_Name>.<nombre del componente>
Referencias
Puede utilizar el tipo de datos de referencia definido por el usuario para crear un nombre alternativo
para una variable, una constante o un bloque de funciones.
Cree sus referencias como objetos en el Organizador de objetos en la tarjeta de registro Tipos de datos.
Comienzan con la palabra clave TYPE y terminan con END_TYPE.
Sintaxis:
TIPO < Identificador>: <Plazo de asignación>; END_TYPE
Ejemplo:
TYPE message:STRING[50];
END_TYPE;
Tipos de subrangos
Un tipo de subrango es un tipo cuyo intervalo de valores es solo un subconjunto del del tipo básico. La
declaración se puede realizar en el registro de tipos de datos, pero también se puede declarar
directamente una variable con un tipo de subrango:
Sintaxis de la declaración en el registro 'Tipos de datos':
TYPE <Name> : <Inttype> (<ug>.. <og>) END_TYPE;
Ejemplos:
TIPO
SubInt : INT (-4095..4095);
END_TYPE
Declaración directa de una variable con un tipo de subrango:
VAR
y : INT (-4095..4095); ui : UINT
(0..10000); END_VAR
En el caso de una variable que pertenezca a un tipo de subrango con signo (como i, arriba), se llama a la función
CheckRangeSigned; Podría programarse de la siguiente manera para recortar un valor al rango permitido:
FUNCTION CheckRangeSigned : valor de
VAR_INPUT DINT inferior, superior: DINT;
END_VAR IF (valor < inferior) THEN
CheckRangeSigned := inferior;
ELSIF(valor > superior) THEN
CheckRangeSigned := superior;
ELSE CheckRangeSigned := valor;
END_IF
Atención: La función CheckRangeSigned-function proporcionada con la biblioteca Check.Lib es solo una solución
de ejemplo. Antes de usar el módulo de biblioteca, compruebe si la función funciona según lo solicitado para su
proyecto, o implemente una función CheckRange adecuada directamente como una POU en el proyecto.
Ejemplo:
VAR ui : UINT (0..10000);
END_VAR
END_FOR
El bucle FOR nunca terminará, porque ui no puede ser mayor que 10000.
¡También tenga cuidado con la definición de las funciones CheckRange cuando defina el valor
incremental de un bucle FOR!
LEN
Devuelve la longitud de una cadena. El STR de entrada es de tipo STRING, el valor devuelto de la función es de tipo
INT.
Ejemplo en IL:
LD 'SUSI' LEN ST VarINT1 (* El resultado es 4 *)
Ejemplo en FBD:
Ejemplo en ST:
VarSTRING1 := LEN ('SUSI');
IZQUIERDA
Left devuelve la cadena inicial izquierda de una cadena determinada. El STR de entrada es de tipo
STRING, SIZE es de tipo INT, el valor devuelto de la función es de tipo STRING.
LEFT (STR, SIZE) significa: Tome el primer carácter SIZE de la derecha en la cadena STR.
Ejemplo en IL:
LD 'SUSI' LEFT 3 ST VarSTRING1 (* El resultado es 'SUS' *)
Ejemplo en FBD:
Ejemplo en ST:
VarSTRING1 := IZQUIERDA('SUSI',3);
DERECHA
Right devuelve la cadena inicial derecha de una cadena determinada.
RIGHT (STR, SIZE) significa: Tome el primer carácter SIZE de la derecha en la cadena STR.
El STR de entrada es de tipo STRING, SIZE es de tipo INT, el valor devuelto de la función es de tipo STRING.
Ejemplo en IL:
LD 'SUSI'
Ejemplo en FBD:
Ejemplo en ST:
VARSTRING1 := DERECHA ('SUSI',3);
MEDIO
Mid devuelve una cadena parcial desde dentro de una cadena.
El STR de entrada es de tipo STRING, LEN y POS son de tipo INT, el valor devuelto de la función es de tipo
CUERDA.
MID (STR, LEN, POS) significa: Recupera caracteres LEN de la cadena STR que comienza con el
carácter en la posición POS.
Ejemplo en IL:
LD 'SUSI' MID 2,2 ST VarSTRING1 (* El resultado es 'US' *)
Ejemplo en FBD:
Ejemplo en ST:
VarSTRING1 := MID ('SUSI',2,2);
CONCAT
Concatenación (combinación) de dos cadenas.
Las variables de entrada STR1 y STR2, así como el valor devuelto de la función, son de tipo STRING.
Ejemplo en IL:
LD 'SUSI' CONCAT 'WILLI' ST VarSTRING1 (* El resultado es 'SUSIWILLI' *)
Ejemplo en FBD:
Ejemplo en ST:
VarSTRING1 := CONCAT ('SUSI','WILLI');
Tenga en cuenta: La función CONCAT no funciona si está anidada en más de cinco niveles.
INSERTAR
INSERT inserta una cadena en otra cadena en un punto definido.
Las variables de entrada STR1 y STR2 son de tipo STRING, POS es de tipo INT y el valor de retorno
de la función es de tipo STRING.
INSERTAR (STR1, STR2, POS) significa: inserte STR2 en STR1 después de la posición POS.
Ejemplo en IL:
LD 'SUSI' INSERTA 'XY',2 ST VarSTRING1 (* El resultado es 'SUXYSI' *)
Ejemplo en FBD:
Ejemplo en ST:
VarSTRING1 := INSERTAR ('SUSI','XY',2);
BORRAR
DELETE quita una cadena parcial de una cadena más grande en una posición definida.
La variable de entrada STR es de tipo STRING, LEN y POS son de tipo INT, el valor de retorno de la
función es de tipo STRING.
DELETE(STR, L, P) significa: Eliminar caracteres L de STR comenzando con el carácter en la posición
P.
Ejemplo en IL:
LD 'SUXYSI' DELETE 2,3 ST Var1 (* El resultado es 'SUSI' *)
Ejemplo en FBD:
Ejemplo en ST:
var1 := ELIMINAR ('SUXYSI',2,3);
REEMPLAZAR
REPLACE reemplaza una cadena parcial de una cadena más grande por una tercera cadena.
Las variables de entrada STR1 y STR2 son de tipo STRING, LEN y POS son de tipo INT, el valor de
retorno de la función es de tipo STRING.
REPLACE(STR1, STR2, L, P) significa: Reemplace los caracteres L de STR1 con STR2 comenzando
con el carácter en la posición P.
Ejemplo en IL:
LD 'SUXYSI' REEMPLAZA 'K',2,2 ST VarSTRING1 (* El resultado es 'SKYSI' *)
Ejemplo en FBD:
Ejemplo en ST:
VarSTRING1: = REPLACE (SUXYSI,'K,2,2);
ENCONTRAR
FIND busca una cadena parcial dentro de una cadena.
Las variables de entrada STR1 y STR2 son de tipo STRING, el valor de retorno de la función es de tipo STRING.
FIND(STR1, STR2) significa: Encuentre la posición del primer carácter donde STR2 aparece en STR1
por primera vez. Si STR2 no se encuentra en STR1, entonces OUT:=0.
Ejemplo en IL:
LD 'abcdef' FIND 'de' ST VarINT1 (* El resultado es '4' *)
Ejemplo en FBD:
Ejemplo en ST:
VarINT1 := FIND('abcdef','de');
SR
Hacer que los bloques de funciones biestables sean dominantes:
Q1 = SR (SET1, RESET) significa:
Q1 = (NO SE RESTABLECE Y Q1) O SET1
Las variables de entrada SET1 y RESET, así como la variable de salida Q1 son de tipo BOOL.
Ejemplo de declaración:
SRInst : SR ;
Ejemplo en IL:
CAL SRInst(SET1 := VarBOOL1, RESET := VarBOOL2) LD SRInst.Q1 ST VarBOOL3
Ejemplo en FBD:
Ejemplo en ST:
SRInst(SET1:= VarBOOL1 , RESET:=VarBOOL2 ); VarBOOL3 := SRInst.Q1 ;
RS
Restablecimiento de bloques de función biestables
Q1 = RS (SET, RESET1) significa:
Q1 = NO RESET1 Y (Q1 O SET)
Las variables de entrada SET y RESET1, así como la variable de salida Q1 son de tipo BOOL.
Ejemplo de declaración:
RSInst : RS ;
Ejemplo en IL:
CAL RSInst(SET:= VarBOOL1,RESET1:=VarBOOL2) LD RSInst.Q1 ST VarBOOL3
Ejemplo en FBD:
Ejemplo en ST:
RSInst(SET:= VarBOOL1 , RESET1:=VarBOOL2 ); VarBOOL3 := RSInst.Q1 ;
SEMA
Un semáforo de software (interrumpible)
OCUPADO = SEMA(RECLAMO, LIBERACIÓN) significa:
OCUPADO := X; IF CLAIM THEN X:=TRUE; DE LO CONTRARIO, SI SE LIBERA, ENTONCES OCUPADO :=
FALSE; X:= FALSO; END_IF
X es una variable BOOL interna que es FALSE cuando se inicializa. Las variables de entrada CLAIM y
RELEASE, así como la variable de salida BUSY son de tipo BOOL.
Si BUSY es TRUE cuando se llama a SEMA, esto significa que ya se ha asignado un valor a SEMA
(SEMA se llamó con CLAIM = TRUE). Si BUSY es FALSE, SEMA aún no se ha llamado o se ha
liberado (se ha llamado con RELEASE = TRUE).
Ejemplo de declaración:
EMAInst: SEMA;
Ejemplo en IL:
CAL SEMAInst(CLAIM:=VarBOOL1,RELEASE:=VarBOOL2) LD SEMAInst.BUSY ST VarBOOL3
Ejemplo en FBD:
Ejemplo en ST:
SEMAInst(CLAIM:= VarBOOL1 , RELEASE:=VarBOOL2 );
VarBOOL3 := SEMAInst.BUSY;
10.17.3 Disparador...
R_TRIG
El bloque de función R_TRIG detecta un flanco ascendente.
FUNCTION_BLOCK R_TRIG VAR_INPUT CLK : BOOL; END_VAR VAR_OUTPUT
Q:= CLK Y NO M;
M:= CLK;
La salida Q y la variable de ayuda M permanecerán FALSE mientras la variable de entrada CLK sea
FALSE. Tan pronto como CLK devuelva TRUE, Q devolverá primero TRUE, luego M se establecerá en
TRUE. Esto significa que cada vez que se llama a la función, Q devolverá FALSE hasta que CLK tenga
flanco descendente seguido de un flanco ascendente.
Ejemplo de declaración:
RTRIGInst : R_TRIG ;
Ejemplo en IL:
CAL RTRIGInst(CLK := VarBOOL1) LD RTRIGInst.Q ST VarBOOL2
Ejemplo en FBD:
Ejemplo en ST:
RTRIGInst(CLK:= VarBOOL1);
VarBOOL2 := RTRIGInst.Q;
F_TRIG
El bloque de función F_TRIG un flanco descendente.
FUNCTION_BLOCK F_TRIG VAR_INPUT CLK: BOOL; END_VAR VAR_OUTPUT P: BOOL; END_VAR
VAR
Q:= NO CLK Y NO M;
M:= NO CLK;
La salida Q y la variable de ayuda M permanecerán FALSE mientras la variable de entrada CLK
devuelva TRUE. Tan pronto como CLK devuelva FALSE, Q devolverá primero TRUE, luego M se
establecerá en TRUE. Esto significa que cada vez que se llama a la función, Q devolverá FALSE hasta
que CLK tenga un flanco ascendente seguido de un flanco descendente.
Ejemplo de declaración:
FTRIGInst : F_TRIG ;
Ejemplo en IL:
CAL FTRIGInst(CLK := VarBOOL1) LD FTRIGInst.Q ST VarBOOL2
Ejemplo en FBD:
Ejemplo en ST:
FTRIGInst(CLK:= VarBOOL1);
VarBOOL2 := FTRIGInst.Q;
10.17.4 Contador...
CTU
Incrementador de bloque de funciones:
Las variables de entrada CU y RESET, así como la variable de salida Q son de tipo BOOL, la variable
de entrada PV y la variable de salida CV son de tipo WORD.
La variable de contador CV se inicializará con 0 si RESET es TRUE. Si CU tiene un flanco ascendente
de FALSO a VERDADERO, CV se elevará en 1.Q devolverá VERDADERO cuando CV sea mayor o
igual que el límite superior PV.
Ejemplo de declaración:
CTUInst : CTU ;
Ejemplo en IL:
CAL CTUInst(CU := VarBOOL1, RESET := VarBOOL2, PV := VarINT1) LD CTUInst.Q ST VarBOOL3 LD
CTUInst.CV ST VarINT2
Ejemplo en FBD:
Ejemplo en ST:
CTUInst(CU:= VarBOOL1, RESET:=VarBOOL2 , PV:= VarINT1);
VarBOOL3 := CTUInst.Q ; VarINT2 := CTUInst.CV;
CTD
Decimetre de bloque de funciones:
Las variables de entrada CD y LOAD, así como la variable de salida Q son de tipo BOOL, la variable de
entrada PV y la variable de salida CV son de tipo WORD.
Cuando LOAD_ es TRUE, la variable de contador CV se inicializará con el límite superior PV. Si CD
tiene un flanco ascendente de FALSO a VERDADERO, CV se reducirá en 1 siempre que CV sea
mayor que 0 (es decir, no haga que el valor caiga por debajo de 0).
Q devuelve TRUE cuando CVes igual a 0.
Ejemplo de declaración:
CTDInst : CTD ;
Ejemplo en IL:
CAL CTDInst(CD := VarBOOL1, LOAD := VarBOOL2, PV := VarINT1) LD CTDInst.Q ST VarBOOL3 LD CTDInst.CV ST
VarINT2
Ejemplo en FBD:
Ejemplo en ST:
CTDInst(CD:= VarBOOL1, CARGA:=VarBOOL2 , PV:= VarINT1);
VarBOOL3 := CTDInst.Q ; VarINT2 := CTDInst.CV;
Ejemplo en FBD:
Ejemplo en ST:
CTUDInst(CU := VarBOOL1, CU:= VarBOOL2, RESET := VarBOOL3, LOAD:=VarBOOL4 , PV:= VarINT1);
VarBOOL5 := CTUDInst.QU ; VarBOOL6 := CTUDInst.QD ;
VarINT2 := CTUDInst.CV;
10.17.5 Temporizador...
Papel higiénico
El bloque de funciones Temporizador es un disparador. TP(IN, PT, Q, ET) significa:
IN y PT son variables de entrada de los tipos BOOL y TIME respectivamente. Q y ET son variables de
salida de los tipos BOOL y TIME, respectivamente. Si IN es FALSE, Q es FALSE y ET es 0.
Tan pronto como IN se convierta en TRUE, el tiempo comenzará a contarse en milisegundos en ET
hasta que su valor sea igual a PT. A continuación, se mantendrá constante.
Q es VERDADERO ya que desde IN tiene VERDADERO y ET es menor o igual que PT. De lo contrario, es FALSO.
Ejemplo de declaración:
La camiseta;
Ejemplo en IL:
CAL TPInst(IN := VarBOOL1, PT := T#5s) LD TPInst.Q ST VarBOOL2
Ejemplo en FBD:
Ejemplo en ST:
TPInst(IN := VarBOOL1, PT:= T#5s); VarBOOL2 :=TPInst.Q;
TONELADA
El bloque de funciones Timer On Delay implementa un retardo de encendido.
TON(IN, PT, Q, ET) significa:
IN y PT son variables de entrada de los tipos BOOL y TIME respectivamente. Q y ET son variables de
salida de los tipos BOOL y TIME, respectivamente. Si IN es FALSE, Q es FALSE y ET es 0.
Tan pronto como IN se convierta en TRUE, el tiempo comenzará a contarse en milisegundos en ET
hasta que su valor sea igual a PT. A continuación, se mantendrá constante.
Q es VERDADERO cuando IN es VERDADERO y ET es igual a PT. De lo contrario, es FALSO.
Por lo tanto, Q tiene un flanco ascendente cuando se ha agotado el tiempo indicado en PT en milisegundos.
Representación gráfica del comportamiento de TON a lo largo del tiempo:
Ejemplo de declaración:
TONInst : TONELADA ;
Ejemplo en IL:
CAL TONInst(IN := VarBOOL1, PT := T#5s) LD TONInst.Q ST VarBOOL2
Ejemplo en FBD:
Ejemplo en ST:
TONInst(IN := VarBOOL1, PT:= T#5s);
TOF
El bloque de función TOF implementa un retardo de desconexión.
TOF(IN, PT, Q, ET) significa:
IN y PT son variables de entrada de tipo BOOL respectivamente TIME. Q y E son variables de salida
de tipo BOOL respectivamente TIME. Si IN es TRUE, las salidas son TRU respectivamente 0.
Tan pronto como IN se convierta en FALSE, en ET el tiempo comenzará a contarse en milisegundos en
ET hasta que su valor sea igual a PT. A continuación, se mantendrá constante.
Q es FALSO cuando IN es FALSO y ET igual a PT. De lo contrario, es VERDADERO.
Por lo tanto, Q tiene un flanco descendente cuando se ha agotado el tiempo indicado en PT en milisegundos.
Representación gráfica del comportamiento de TOF a lo largo del tiempo:
Ejemplo de declaración:
TOFInst : GENIAL ;
Ejemplo en IL:
CAL TOFInst(IN := VarBOOL1, PT := T#5s) LD TOFInst.Q ST VarBOOL2
Ejemplo en FBD:
Ejemplo en ST:
TOFInst(IN := VarBOOL1, PT:= T#5s); VarBOOL2 :=TOFInst.Q;
RTC
El bloque de funciones Runtime Clock devuelve, a partir de una hora determinada, la fecha y la hora actuales.
Tan pronto como EN se convierte en TRUE, se establece el tiempo de PDT, se cuenta en segundos y
se devuelve en CDT siempre que EN sea TRUE (vea el ejemplo en la imagen de arriba). Tan pronto
como EN se restablece a FALSE, CDT se restablece al valor inicial DT#1970-01-01-00:00:00. Tenga en
cuenta que el tiempo en PDT solo se establece mediante un flanco ascendente.
BCD_TO_INT
Esta función convierte un byte en formato BCD en un valor INT:
El valor de entrada de la función es de tipo BYTE y el de salida es de tipo INT.
Cuando se debe convertir un byte que no está en formato BCD, la salida es -1.
Ejemplos en ST:
i:=BCD_TO_INT(73); (* El resultado es 49 *) k:=BCD_TO_INT(151); (* El resultado es 97 *)
l:=BCD_TO_INT(15); (* Salida -1, porque no está en formato BCD *)
INT_TO_BCD
Esta función convierte un valor INTEGER en un byte en formato BCD:
El valor de entrada de la función es de tipo INT, la salida es de tipo BYTE.
El número 255 se mostrará donde se debe convertir un valor INTEGER que no se puede convertir en
un byte BCD.
Ejemplos en ST:
i:=INT_TO_BCD(49); (* El resultado es 73 *)
k:=INT_TO_BCD(97); (* El resultado es 151 *)
l:=INT_TO_BCD(100); (* ¡Error! Salida: 255 *)
EXTRAER
Las entradas para esta función son un DWORD X, así como un BYTE N. La salida es un valor BOOL,
que contiene el contenido del enésimo bit de la entrada X, por lo que la función comienza a contar
desde el bit cero.
Ejemplos en ST:
BANDERA:=EXTRACTO(X:=81, N:=4); (* Resultado: VERDADERO, porque 81 es binario 1010001, por lo que el
4º bit es 1 *) BANDERA:=EXTRACTO(X:=33, N:=0); (* Resultado: VERDADERO, porque 33 es 100001 binario,
por lo que el bit '0' es 1 *)
EMPAQUETAR
Esta función es capaz de devolver ocho bits de entrada B0, B1, ..., B7 del tipo BOOL como BYTE.
El bloque de función UNPACK está estrechamente relacionado con esta función.
PUTBIT
La entrada de esta función consiste en un DWORD X, un BYTE N y un valor BOOLean B. PUTBIT
establece el N-ésimo bit desde X en el valor B, por lo que comienza a contar desde el bit cero.
Ejemplo en ST:
R:=38; (* binario 100110 *) B:=PUTBIT(A,4,TRUE); (* Resultado: 54
= 2#110110 *) C:=PUTBIT(A,1,FALSE); (* Resultado : 36 =
2#100100 *)
DESEMPAQUETAR
UNPACK convierte la entrada B del tipo BYTE en 8 variables de salida B0,...,B7 del tipo BOOL, y esto
es lo contrario a PACK.
Ejemplo en FBD: Salida:
DERIVADO
Este bloque de funciones determina aproximadamente la derivación local.
El valor de la función se entrega como una variable REAL mediante IN. TM contiene el tiempo que ha
pasado en mseg en un DWORD y la entrada de RESET del tipo BOOL permite que el bloque de
función comience de nuevo a través de la entrega del valor TRUE.
La salida OUT es del tipo REAL.
Con el fin de obtener el mejor resultado posible, DERIVATIVE aproxima utilizando los últimos cuatro valores, con
el fin de mantener los errores producidos por imprecisiones en los parámetros de entrada lo más bajo posible.
Bloque en FBD:99990101000000+00'00'
INTEGRAL
Este bloque de función determina aproximadamente la integral de la función.
De forma análoga a DERIVATIVE, el valor de la función se entrega como una variable REAL mediante
el uso de IN. TM contiene el tiempo que ha transcurrido en mseg en un DWORD y la entrada de
RESET del tipo BOOL permite que el bloque de función comience de nuevo con el valor TRUE.
La salida OUT es del tipo REAL.
La integral se aproxima mediante funciones de dos pasos. El promedio de estos se entrega como la
integral aproximada.
Bloque en FBD:99990101000000+00'00' Ejemplo: Integración de una función lineal:
LIN_TRAFO
Este bloque de funciones (util.lib. transforma un valor REAL, que se encuentra en un rango de valores
definido por un valor límite inferior y superior, en un valor REAL correspondiente que se encuentra en otro
rango también definido por un límite inferior y superior. La siguiente ecuación es la base de la conversión:
Variables de entrada:
Variables de salida:
Ejemplo de aplicación:
Un sensor de temperatura proporciona valores de voltios (entrada IN). Estos deben convertirse en valores de
temperatura en grados centígrados (salida OUT). El rango de valores de entrada (voltios) está definido por los límites
IN_MIN=0 y IN_MAX=10. El rango de valores de salida (grados centígrados) está definido por los límites
OUT_MIN=-20 y OUT_MAX=40.
Por lo tanto, para una entrada de 5 voltios, se producirá una temperatura de 10 grados centígrados.
STATISTICS_INT
Este bloque de funciones calcula algunos valores estadísticos estándar:
La entrada IN es del tipo INT. Todos los valores se inicializan de nuevo cuando la entrada BOOLean RESET es
VERDADERO.
La salida MN contiene el valor mínimo, MX del valor máximo de IN. AVG describe el promedio, es
decir, el valor esperado de IN. Las tres salidas son del tipo INT.
Bloque en FBD:99990101000000+00'00'
STATISTICS_REAL
Este bloque de función corresponde a STATISTICS_INT, excepto que la entrada IN es del tipo REAL
como las salidas MN, MX, AVG.
VARIANZA
VARIANCE calcula la varianza de los valores introducidos.
La entrada IN es del tipo REAL, RESET es del tipo BOOL y la salida OUT es de nuevo del tipo
REAL.
Este bloque calcula la varianza de los valores introducidos. VARIANCE se puede restablecer con
RESET=TRUE.
La desviación estándar se puede calcular fácilmente como la raíz cuadrada de la VARIANZA.
10.18.4 Controladores
PD
La biblioteca util.lib proporciona el siguiente bloque de funciones del controlador PD:
PID
La biblioteca util.lib proporciona el siguiente bloque de funciones del controlador PID:
A diferencia del controlador PD, este bloque de función contiene una entrada REAL TN adicional para
el tiempo de reajuste en segundos (por ejemplo, "0,5" para 500 mseg).
Entradas del bloque de funciones:
Y REAL Valor manipulado, calculado por el bloque de funciones (ver más abajo)
LIMITS_ACTIVE BOOL TRUE indica que Y ha superado los límites dados (Y_MIN,
Y_MAX).
DESBORDAMIENTO BOOL TRUE indica un desbordamiento (ver más abajo)
Y_OFFSET, Y_MIN und Y_MAX sirven para la transformación de la variable manipulada dentro de un
rango prescrito.
MANUAL se puede utilizar para cambiar a la operación manual; RESET se puede utilizar para reiniciar
el controlador.
En funcionamiento normal (MANUAL = RESET = LIMITS_ACTIVE = FALSE) el controlador calcula el
error del controlador e como diferencia de SET_POINT – REAL, genera la derivación con respecto al
tiempo e/ t y almacena estos valores internamente.
La salida, es decir, la variable manipulada Y, a diferencia del controlador PD, contiene una parte
integral adicional y se calcula de la siguiente manera:
Y = KP ( + 1/TN edt + TV / t) + Y_OFFSET
Por lo tanto, además de la parte P, también el cambio actual del error del controlador (parte D) y el
historial del error del controlador (parte I) influyen en la variable manipulada.
El controlador PID se puede convertir fácilmente en un controlador PI configurando TV=0.
Debido a la parte integral adicional, puede producirse un desbordamiento por una parametrización incorrecta
del controlador, si la integral del error llega a ser demasiado grande. Por lo tanto, en aras de la seguridad,
está presente una salida BOOLean llamada OVERFLOW, que en este caso tendría el valor TRUE. Esto solo
sucederá si el sistema de control es inestable debido a una parametrización incorrecta. Al mismo tiempo, el
controlador se suspenderá y solo se activará de nuevo mediante la reinicialización.
PID_FIXCYCLE
La biblioteca util.lib proporciona el siguiente bloque de función de controlador PID_FIXCYCLE:
Este bloque de función se corresponde funcionalmente con el controlador PID, con la excepción de que
el tiempo de ciclo no se mide automáticamente mediante una función interna, sino que se ajusta
mediante la entrada CYCLE (en segundos).
PARPADEAR
El bloque de función BLINK genera una señal pulsante. La entrada consta de ENABLE del tipo BOOL,
así como de TIMELOW y TIMEHIGH del tipo TIME. La salida OUT es del tipo BOOL.
Si ENABLE se establece en TRUE, BLINK comienza, para establecer la salida para el período de tiempo
TIMEHIGH en TRUE y, a continuación, para establecerla para el período de tiempo TIMELOW en FALSE.
Cuando ENABLE se restablece a FALSE, la salida OUT no se cambiará, es decir, no se generará ningún
otro pulso. Si también desea explícitamente obtener OUT FALSE cuando ENABLE se restablece a FALSE,
puede usar "OUT AND ENABLE" (es decir, agregar un cuadro AND con el parámetro ENABLE) en la salida.
Ejemplo en CFC:
FREQ_MEASURE
Este bloque de funciones mide la frecuencia (media) (Hz) de una señal de entrada booleana. Puede
especificar durante cuántos períodos se debe promediar. Un período es el tiempo entre dos flancos
ascendentes de la señal de entrada.
Variables de entrada:
Variables de salida:
GEN
El generador de funciones genera funciones periódicas típicas:
Las entradas son una composición que consta de MODE del tipo de conteo predefinido GEN_MODE,
BASE del tipo BOOL, PERIOD del tipo TIME, de dos valores INT CYCLES y AMPLITUDE y de la
entrada BOOLean RESET.
El MODE describe la función que debe generarse, por lo que los valores de enumeración TRIANGLE y
TRIANGLE_POS entregan dos funciones triangulares, SAWTOOTH_RISE un diente de sierra
TRIÁNGULO: TRIANGLE_POS:
SAWTOOTH_RISE: SAWTOOTH_FALL:
RECTÁNGULO: SENO:
COSINUS:
BASE define si el período de ciclo está realmente relacionado con un tiempo definido (BASE=TRUE) o
si está relacionado con un número particular de ciclos, es decir, el número de llamadas del bloque de
funciones (BASE=FALSE).
PERIOD o CYCLES define el período de ciclo correspondiente.
AMPLITUD define, de manera trivial, la amplitud de la función a generar.
El generador de funciones se vuelve a poner en 0 tan pronto como RESET=TRUE.
Ejemplo en FBD:
CURVA DE CARACTERES
Este bloque de funciones sirve para representar valores, pieza por pieza, en una función lineal:
IN del tipo INT se alimenta con el valor que se va a manipular. El BYTE N designa el número de puntos
que define la función de presentación. Esta línea característica se genera en un ARRAY P[0..10] con P
del tipo POINT, que es una estructura basada en dos valores INT (X e Y).
La salida consta de OUT del tipo INT, el valor manipulado y BYTE ERR, que indicará un error si es
necesario.
Los puntos P[0].. P[N-1] en el ARRAY debe ordenarse de acuerdo con sus valores X, de lo contrario
ERR recibe el valor 1. Si la entrada IN no está entre P[0]. X y P[N-1]. X, ERR=2 y OUT contiene el valor
límite correspondiente P[0]. Y o P[N-1].Y.
Si N se encuentra fuera de los valores permitidos que están entre 2 y 11, entonces ERR=4.
Ejemplo en ST:
En primer lugar, se debe definir ARRAY P en el encabezado:
VAR...
CHARACTERISTIC_LINE:CHARCURVE; KL:ARRAY[0..10] DE
PUNTO:=(X:=0,Y:=0),(X:=250,Y:=50),
(X:=500,Y:=150),(X:=750,Y:=400),7(((X:=1000,Y:=1000));
CONTADOR:INT; ...
END_VAR
A continuación, suministramos a CHARCURVE, por ejemplo, un valor en constante aumento:
CONTADOR:=CONTADOR+10;
CHARACTERISTIC_LINE(IN:=CONTADOR,N:=5,P:=KL);
El calco posterior ilustra el efecto:
RAMP_INT
RAMP_INT sirve para limitar el ascenso o descenso de la función que se alimenta:
La entrada consiste, por un lado, en tres valores INT: IN, la entrada de función, y ASCEND y
DESCEND, el aumento o disminución máximo para un intervalo de tiempo dado, que está definido por
TIMEBASE del tipo TIME. Establecer RESET en TRUE hace que RAMP_INT se inicialice de nuevo.
La salida OUT del tipo INT contiene el valor de función limitada ascender y descender.
Cuando TIMEBASE se establece en t#0s, ASCEND y DESCEND no están relacionados con el intervalo
de tiempo, pero siguen siendo los mismos.
Ejemplo en CFC:
RAMP_REAL
RAMP_REAL funciona de la misma manera que RAMP_INT, con la simple diferencia de que las entradas IN,
ASCEND, DESCEND y la salida OUT son del tipo REAL.
HISTÉRESIS
La entrada a este bloque de funciones consta de tres valores INT IN, HIGH y LOW. La salida OUT es de
el tipo BOOL.
Si IN cae por debajo del valor límite LOW, OUT se convierte en TRUE. Si IN supera el límite superior HIGH,
FALSE se entrega.
Un ejemplo ilustrativo:
LIMITALARM
Este bloque de función especifica si el valor de entrada está dentro de un rango establecido y qué
límites ha violado si lo ha hecho.
Los valores de entrada IN, HIGH y LOW son de tipo INT, mientras que las salidas O, U e IL son de tipo
BOOL.
Si el límite superior HIGH se excede en IN, O se convierte en TRUE, y cuando IN está por debajo de
LOW, U se convierte en TRUE. IL es VERDADERO si IN se encuentra entre LOW y HIGH.
Ejemplo en FBD: Resultado:
Por favor, obtenga una descripción detallada del uso en los Apéndices correspondientes relativos a los
operadores IEC integrados en CoDeSys o en las bibliotecas.
<Fctname>(vx, tú,..) <Fctname> vx, CN Llame a la función fctname y transmita las variables vx, vy
NO NO Bitweise NO
+ AGREGAR ( Adición
- SUB ( Resta
* MUL ( Multiplicación
/ DIV ( División
= EQ ( Igual
<> NE ( No es igual
< LT ( Menos de
SEL (G, in0, in1) SEL Selección binaria entre 2 operandos in0 (G es
FALSE) e in1 (G es TRUE)
LÍMITE (MIN, IN, Max) LÍMITE Limita el rango de valores (in se vuelve a establecer
en MIN o MAX en caso de exceder el rango)
BOOL_TO_<tipo>(pulgadas)
BOOL_TO_<tipo> Conversión de tipos del operando booleano
en ST en AWL Mod.
PUNZÓN
Descripción
STRING_TO_<tipo>(pulgadas)
STRING_TO_<tipo> Conversión de tipos de un operando de cadena a
otro tipo elemental, en debe contener un valor
válido del tipo deseado
IZQUIERDA (str, tamaño) IZQUIERDA Cadena inicial izquierda del tamaño dado de la cadena str
DERECHA (str, tamaño) DERECHA Cadena inicial derecha del tamaño dado de la cadena str
MID(str, tamaño, pos) MEDIO Cadena parcial de str de tamaño dado en la posición pos
INSERT('str1','str2',pos) INSERTAR 'str2',p Inserte la cadena str1 en la cadena str2 en la posición pos
DELETE('str1',len,pos) DELETE len,pos Eliminar la cadena parcial (longitud len), comenzar en la posición pos de str1
RS RS El FB biestable se retrasa
CTUD (en inglés) CTUD (en inglés) FB: Cuenta hacia arriba y hacia abajo
INTEGRAL Integral
VARIANZA Varianza
PD Controlador PD
HISTÉRESIS Histéresis
/en línea Inmediatamente después del inicio, CoDeSys intenta conectarse con el proyecto actual.
/lote CoDeSys se inicia sin interfaz de usuario y devuelve el código de error del primer
error o el valor devuelto del primer comando que se termina con una advertencia.
CoDeSys finalizará inmediatamente después de que se haya procesado el archivo
de comandos. El procesamiento del archivo de comandos se cancelará tan pronto
como se procese el primer comando con un error. Las advertencias no finalizan el
procesamiento. Si no se producen errores ni advertencias, el valor devuelto es
S_OK. El valor devuelto siempre se codifica como HRESULT.
/password <contraseña> Introducción directa de la contraseña del grupo de usuarios (por ejemplo, "/password abc")
El proyecto ampel.pro se abre, pero no se abre ninguna ventana. Se ejecutarán los comandos incluidos
en el archivo de comandos command.cmd. Coloque comillas dobles alrededor de un trazado.
"D:\dir1\codesys" "C:\projects\ampel.pro" /show hide /cmd command.cmd
Todos los signos después de un punto y coma (;) serán ignorados (comentario). Los parámetros que contienen
espacios en blanco deben ir entre comillas. Las diéresis solo se pueden usar si el archivo de comandos se crea en
código ANSI. Las palabras clave se pueden utilizar en los parámetros del comando. Una lista de las palabras clave
que encontrará después de las siguientes tablas de descripciones de comandos.
Inicio de sesión en línea Inicie sesión con el proyecto cargado ('Inicio de sesión en línea')
Cierre de sesión en línea Cerrar sesión ('En línea', 'Cerrar sesión')
Carrera en línea Inicio del programa de aplicación ('En línea', 'Ejecutar')
Parada en línea Programa de aplicación de parada ('En línea', 'Detener')
Proyecto de arranque en línea Creación de un proyecto de arranque. ¡Este comando se puede aplicar
en modo fuera de línea y en línea! (Véase también el capítulo 4.6
descripción sobre el comando 'Online' 'Create Bootproject'!)
Código fuente en líneaDescargar Descarga del código fuente del proyecto al PLC ('Online' 'Descarga del
código fuente')
En línea Sí Activar el modo de simulación ('Online', 'Simulation')
SIM en línea desactivada Desactivar el modo de simulación ('Online', 'Simulation')
Archivo Savecomo <ProjectFile> El proyecto actual se guardará con el nombre de archivo <projectfile>
('Archivo', 'Guardar como')
file printersetup <filename>.dfr Defina un archivo de marco de documento ('Archivo' Configuración de la
Opcionalmente, agregue: impresora') y, opcionalmente, defina una de las opciones de impresión
'Nueva página por objeto' o 'Nueva página por subobjeto'; Estos ajustes
pageperobject o
afectan a la impresión del documento (documentación del proyecto,
pagepersubject véase más abajo)
archivo de archivo <nombre de El proyecto se archivará en un archivo zip con el nombre de archivo
archivo>.zip dado ('Archivo' Guardar/Archivo de correo')
Cierre de archivo CoDeSys se cerrará ('Archivo', 'Salir')
Comandos para el control de reemplazo de objetos respectivamente para el control de archivos para
importación, exportación, copia:
Consulta desactivada No Todos los diálogos responden como si el usuario hubiera hecho clic en el botón "No"
Consulta desactivada Cancelar Todos los diálogos responden como si el usuario hubiera hecho clic en el botón "Cancelar"
Configuración de los directorios utilizados por CoDeSys (-> diálogo de opciones del proyecto, categoría
'Directorios', subcategoría 'General'): Si se definen varios directorios con uno de los siguientes
comandos, estos deben estar separados por un punto y coma + espacio vacío y toda la fila de
directorios debe estar abrazada por comillas dobles. Ejemplo, dos rutas:
dir lib "D:\codesys\Libraries\Standard; D:\codesys\Libraries\NetVar"
Y los < de enebro están cubiertos con una densa mandíbula de >
Establece <libdir> como el directorio de la biblioteca
dir compile <compiledir> Establece <compiledir> como directorio para los archivos de compilación
dir config <configdir> Establece < > configdir como directorio para los archivos de configuración
dir upload <uploaddir> Establece < uploaddir > como directorio para los archivos de carga
Lista de seguimiento establecida <texto> La lista de seguimiento se activa (corresponde a la selección de una lista
en la parte izquierda de la ventana Administrador de relojes y recetas)
Lista de seguimiento Leer Actualiza los valores de las variables Watch ('Extras', 'Leer receta')
Lista de seguimiento Escribir Rellena las variables de inspección con los valores que se encuentran
en la lista de inspección ('Extras', 'Escribir receta')
Vinculación de bibliotecas:
bókasafn bæta við Adjunta el archivo de biblioteca especificado a la lista de bibliotecas del proyecto
<bókasafnsskrá1> abierto actualmente. Si la ruta de acceso del archivo es una ruta relativa, el directorio
<bókasafnsskrá2> .. <bókasafn de biblioteca introducido en el proyecto se utiliza como raíz de la ruta de acceso.
fileN>
bókasafn eyða Elimina las bibliotecas especificadas de la lista de bibliotecas del
[<biblioteca1> <biblioteca2>
.. <bibliotecaN>]
proyecto abierto actualmente.
Copia de objetos:
Copia de objetos <archivo Copia objetos de la ruta especificada del archivo de proyecto de
de proyecto de origen> origen a la ruta de destino del proyecto ya abierto.
<ruta de acceso de origen>
<ruta de destino>
Si la ruta de origen es el nombre de un objeto, se copiará. Si se trata de
una carpeta, se copiarán todos los objetos que se encuentren debajo de
esta carpeta. En este caso, se duplicará la estructura de carpetas debajo
de la carpeta de origen. Si la ruta de destino aún no existe, se creará.
Objeto SetReadOnly Establece el acceso de solo lectura a un objeto; Defina el tipo de objeto y, en caso de que
<VERDADERO|Tipo de objeto FALSE> <> |
de los tipos de objeto pou, dut, gvl, vis también el nombre del objeto. Tipos
<nombre del objeto>
de objetos posibles: pou, dut (tipo de datos), gvl (lista de variables globales),
vis (visualización), cnc (objeto CNC), liblist (bibliotecas), targetsettings,
toolinstanceobject (instancia particular de Tools), toolmanagerobject (todas
las instancias en el árbol de herramientas), customplconfig (configuración de
PLC), projectinfo (información del proyecto), taskconfig (configuración de
tareas), trace, watchentrylist (Administrador de alertas y recetas),
alarmconfig (configuración de alarmas), por ejemplo, "object setreadonly
TRUE pou plc_prg" establecerá el PLC_PRG al acceso de solo lectura
Puerta de enlace local Establece la puerta de enlace en el equipo local como la puerta de enlace actual.
Llamada al sistema:
<Id> de destino Establece la plataforma de destino para el proyecto actual. Si CoDeSys está
comenzando con la opción de línea de comandos "/notargetchange" (consulte el
Capítulo 10.24), solo mediante este comando se puede establecer un objetivo.
Estado fuera de línea Devuelve "S_OK", si actualmente no hay conexión entre el sistema de
programación y el sistema de destino (modo fuera de línea), de lo
contrario "HRESULT[0x800441f0)" (modo en línea).
Estado en línea Devuelve "S_OK", si actualmente hay una conexión entre el sistema
de programación y el sistema de destino (modo en línea), de lo
contrario "HRESULT[0x800441f0)" (modo fuera de línea).
Configuración de visualización:
... set languagefile <archivo de Especificación del archivo de idioma que se utilizará (.tlt o
idioma de ruta de archivo> .vis). Ejemplo: "configuración visual set languagefile proj1.tlt.
Comandos relativos a la gestión del proyecto en la base de datos del proyecto ENI:
A continuación, en la descripción de los comandos, se utilizan marcadores de posición:
<categoría>: Reemplácese por "proyecto" o "compartido" o "compilar" dependiendo de cuál de las siguientes
categorías de bases de datos se trate: Objetos de proyecto, Objetos compartidos, Archivos de compilación
<POUname>: Nombre del objeto, corresponde al nombre del objeto que se utiliza en CoDeSys.
<Objecttype>: Reemplácelo por el acceso directo, que se agrega como una extensión al nombre POU
del objeto en la base de datos, y que refleja el tipo de objeto (definido por la lista de tipos de objeto,
consulte Administración de ENI, 'Tipos de objeto').
Ejemplo: Objeto "GLOBAL_1.GVL" -> el nombre de la POU es "GLOBAL_1", el tipo de objeto es "GVL"
(lista de variables globales)
<comentario>: Reemplácelo por un texto de comentario (entre comillas simples), que se almacenará
en el historial de versiones con la acción en particular.
Comandos para configurar el enlace de la base de datos del proyecto a través del servidor ENI:
Eni en La opción 'Usar control de código fuente (ENI)' se activará o desactivará (Cuadro de
Eni Off diálogo 'Proyecto', 'Opciones', 'Control de código fuente del proyecto')
Proyecto ENI ReadOnly La opción 'Solo lectura' para la categoría de base de datos 'Objetos de
activado Proyecto ENI proyecto' se activará o desactivará (Diálogo 'Proyecto', 'Opciones',
ReadOnly desactivado 'Objetos de proyecto')
ENI Shared ReadOnly La opción 'Solo lectura' para la categoría de base de datos 'Objetos
on Eni Shared fragmentados' se activará o desactivará (Diálogo 'Proyecto', 'Opciones',
Readonly Off 'Objetos compartidos')
eni set local <POUname> El objeto se asignará a la categoría 'Local', es decir, no se almacenará
en la base de datos del proyecto (Diálogo 'Proyecto', 'Objeto',
'Propiedades', 'Conexión a la base de datos')
eni set shared <POUname> El objeto se asignará a la categoría 'Objetos compartidos' (Diálogo,
'Proyecto', 'Objeto', 'Propiedades', 'Conexión a la base de datos')
eni set project <POUname> El objeto se asignará a la categoría 'Objetos del proyecto'
Comandos del menú 'Proyecto' 'Enlace a la base de datos' para trabajar con la base de datos:
Conjunto de ENI <categoría> El objeto se asigna a la categoría de base de datos nombrada ('Definir')
'eni set <category>set Los objetos que se enumeran separados por espacios se asignarán a la
<Objecttype>:<POUname> categoría de base de datos nombrada. ('Definición múltiple') Ejemplo:
<Objecttype>:<POUname> "eni set project pou:as_fub pou:st_prg" -> los objetos (pou) as_fub y
st_prg se asignan a la categoría 'Objetos del proyecto'
ENI <Categoría> Getall La última versión de todos los objetos de la categoría nombrada se
llamará desde la base de datos ('Obtener todas las últimas versiones')
'eni <category>get Los objetos de la categoría nombrada, que se enumeran separados por
<Objecttype>:<POUname> espacios, se llamarán desde la base de datos. ('Definición múltiple').
<Objecttype>:<POUname> ('Obtener la última versión') Ejemplo: "eni project get pou:as_fub
gvl:global_1" -> se llamará a la POU as_fub.pou y a la lista de variables
globales global_1.gvl desde la base de datos
•
eni <category>checkinall Todos los objetos del proyecto, que están bajo control de código fuente
"<comentario>" en la base de datos del proyecto, serán protegidos. El comentario
definido se almacenará con el check-in-action.
eni <category> checkin Todos los objetos (Objecttype:POUname) que se enumeran separados
"<comment>" por espacios se registrarán en la base de datos. El comentario definido
<Objecttype>:<POUname> se almacenará con la acción de registro en el historial de versiones de
<Objecttype>:<POUname> cada objeto en particular. (ver arriba: echa un vistazo) El comentario
definido se almacenará con la acción de registro en el historial de
versiones de cada objeto en particular.
$PROJECT_NOMBRE$ Nombre del proyecto CoDeSys actual (nombre de archivo sin extensión
".pro", por ejemplo, "project_2.pro")
Este archivo de comandos abrirá el ampel.pro del proyecto, cargará una lista de observación existente w.wtc,
iniciará el programa de aplicación, después de 1 segundo escribirá los valores de las variables en la lista de
observación w_update.wtc, que se guardará en el directorio "C:\projects\CoDeSys_test" y luego cerrará el proyecto
nuevamente.
Se llama a un archivo de comandos en una línea de comandos como se muestra aquí:
"<ruta de codesys.exe>" /cmd "<ruta del archivo cmd>"
Recomendamos que el proyecto de CoDeSys en el que está importando esté vacío. Por supuesto,
debe asegurarse de que la biblioteca standard.lib esté vinculada a su proyecto, de lo contrario no podrá
importar el contador y el temporizador.
Las unidades organizativas del programa STEP5/7 se pueden importar una vez que se ha realizado la
importación del SEQ. También puede agregar las entradas y salidas que se utilizarán en la
configuración del PLC. Estos no son necesarios para la importación de STEP5/7, pero las direcciones
se comprobarán y pueden aparecer como errores cuando se reconstruya el proyecto.
En primer lugar, seleccione el archivo S5D en un cuadro de diálogo estándar de Windows. Aparece otro
cuadro que contiene la lista de POU entre los que puede seleccionar. Lo mejor es seleccionarlos todos.
También se puede seleccionar dejar las POU en el idioma IL de STEP5 o convertirlas a IL, LD o FBD.
Los nombres de símbolos se utilizarán en lugar de los nombres absolutos en la medida de lo posible. Si CoDeSys
encuentra la instrucción "U M12.0" durante la importación, buscará una variable global establecida en la ubicación
de memoria M12.0. Se tomará la primera declaración que se ajuste a esta descripción y la instrucción se importará
como "U-Name" en lugar de "U M12.0" (el nombre del identificador de la ubicación de memoria es M12.0).
A veces, es posible que se necesiten variables adicionales durante una importación o conversión de
código. Estas variables adicionales se declararán globalmente. Por ejemplo, se necesitan instancias
R_TRIG para reproducir entradas activadas por bordes (por ejemplo, en un contador S5).
La lista de comandos principales que se pueden convertir a IEC 61131-3 contiene todos los comandos que se
pueden convertir a LD o FBD en un sistema de programación STEP5 y también todos los comandos que se
permiten en un STEP5-PB (Program Block). Además, de los comandos de STEP5 permitidos solo en IL o en FB
(bloques de función), los comandos que se pueden convertir a IEC son principalmente los que están disponibles
en todas las CPU S5 (por ejemplo, saltos absolutos y condicionales, comandos de desplazamiento, etc.)
O, O(, U(, )
L con los siguientes formatos constantes: DH, KB, KF, KH, KM, KT, KZ, KY, KG, KC
!=, ><, >, <, >=, <= con los siguientes operandos: F, D, G
SPA, SPB con los siguientes operandos: PB, FB (con la mayoría de los tipos de parámetros), SB
SPA=, SPB=
TAK
D, I
La mayoría de los comandos formales de operando
Comandos no convertibles
U, UN, O, ON, S, R, = con los siguientes operandos de bits: Bits de temporizador y contador (T0.0, C0.0)
Todos los comandos con operandos de los rangos BA, BB, BS, BT (datos del sistema operativo).
SPA, SPB con los siguientes operandos: OB (funciona solo con ciertos S5 y ciertos OB)
SVW, SVD
ENTE
SES, SEF
MBR, ABR
TSG
LB, TB, LW, TW con los siguientes operandos: GB, GW, GD, CB, CW, CD
ACR, TSC
BI
SIM, LIM
Si examina los comandos que no se pueden convertir, verá que generalmente son comandos
especiales que solo están disponibles en ciertas CPU. Los comandos estándar que no se pueden
convertir a IEC son: carga de valores de temporizador o contador codificados BCD (LC T, LC C), tipos
de temporizador SV y SS y restablecimiento de temporizadores.
Bloques de datos
Los bloques de datos de STEP5 se convierten en POU (unidades de organización del programa) que
tienen un encabezado pero no código. Esto es conveniente si los bloques de datos se utilizan como
rangos de variables normales, pero es conveniente si se han intentado implementar manualmente
conceptos como bloques de datos de instancia en el programa STEP5.
Otros problemas al importar desde STEP5
La importación de STEP5 se puede mejorar manualmente de las siguientes maneras.
1. Valores de tiempo en variables de palabra
En el STEP5 se permite un valor de tiempo en cada dirección de palabra, ya sea en el área de ubicación de
memoria o en un bloque de datos. Esto no está permitido en IEC 61131-3, las variables o constantes de
tiempo no son compatibles con las direcciones WORD. Esto puede dar lugar a la creación de secuencias de
comandos erróneas al importar desde el STEP5. Esto no sucederá si abre un bloque de datos y selecciona
el formato de hora (KT) para la dirección en cuestión. En otras palabras, este error solo ocurre cuando el
programa STEP5 vale la pena el esfuerzo de mejorarlo. Cuando ocurra, verá el mensaje "Tipos
incompatibles: no se puede convertir WORD a HORA" o "Tipos incompatibles: no se puede convertir HORA
a WORD". A continuación, debe modificar la declaración de la variable WORD (si está disponible) y
convertirla en una variable TIME.
2. Falta de acceso a los bloques de datos
No hay bloques de datos en IEC 61131-3 y es imposible recrearlos completamente en IEC. En STEP5 se utilizan
como rangos de variables normales (casi como rangos de ubicación de memoria), y también en forma de matrices (B
DW), punteros (B MW100 A DB 0) o uniones (acceso de bytes, palabras o palabras dobles en las bases de datos). La
conversión de STEP5 solo puede convertir el acceso a la base de datos si está algo estructurado. Al intentar acceder
a las bases de datos, debe saber qué base de datos está abierta (una base de datos). Debe tener esto en cuenta
cuando la operación A DB está más cerca del principio en la misma POU o cuando el número de DB se incluye con la
POU como parámetro formal. Si no se encuentra una base de datos delante del primer acceso a la base de datos, la
POU no se puede convertir. La advertencia "No hay bloque de datos abiertos (inserte una base de datos A)" le notifica
que este es el caso. En la POU convertida, verá acceso a una variable indefinida denominada "ErrorDW0" (por
ejemplo) que hará que se genere un mensaje de error cuando se compile la POU recién convertida. A continuación,
puede reemplazar las variables con acceso a la base de datos correcta (por ejemplo, reemplazar "ErrorDW0" por
"DB10. DW0"). La otra opción es descartar la POU convertida e insertar una base de datos A al principio de la POU
en
PASO 5.
Una POU de STEP5 que accede a palabras de datos (bytes de datos, etc.) siempre debe abrir primero
el bloque de datos. Si es necesario, la POU debe mejorarse antes de importarla insertando el comando
A DB apropiado, preferiblemente al principio de la POU. De lo contrario, la POU convertida tendrá que
editarse a posteriori.
Si hay más de una operación A BD que debe omitirse parcialmente, la conversión puede tener un error,
es decir, se puede generar código que acceda a la BD incorrecta.
3. Conceptos superiores relacionados con el acceso a bloques de datos
En el STEP5 tiene la opción de crear algo similar a las instancias haciendo que el bloque Code abra
una versión indexada de un bloque de datos. Esto se puede hacer con la siguiente secuencia de código
de ejemplo:
L KF +5
T MW 44
B MW 44
A DB 0
El DB5 se abre al final de esta secuencia (en general, se abrirá el DB cuyo número se encuentra en la
palabra de ubicación de memoria %MW44). Este tipo de acceso no se reconoce en la conversión, lo
que significa que se deben realizar los siguientes cambios después de la conversión:
En primer lugar, se deben importar todas las bases de datos que actúen como bases de datos de instancia, por
ejemplo, DB5 y DB6. Se importarán como POU IL, LD o FBD normales, lo que prefiera. Las POU no tienen un
código, sino un encabezado con definiciones de variables locales. Ahora se pueden crear instancias de tipo a
partir de estas POU. Cree un tipo definido por el usuario (por ejemplo, denominado DBType) e inserte las
variables locales y las bases de datos convertidas como componentes. A continuación, cree instancias globales
de este tipo escribiendo en una lista de variables globales:
VAR_GLOBAL
END_VAR
Ahora puede eliminar las bases de datos convertidas de su proyecto.
A continuación, debe crear una copia de la versión indexada de las bases de datos dando a la POU
correspondiente otro parámetro VAR_INPUT del tipo DBType. El acceso a los datos dentro de la POU
ahora debe redirigirse a esta instancia. A continuación, debe incluir una de las bases de datos de
instancia como parámetro real al abrirla.
4. Los llamados bloques de función integrados S5 que tienen una interfaz de acceso STEP5 tienen una
función especial, pero su implementación no está escrita en STEP5 (o MC5) o está protegida por un
mecanismo especial. Las POU de este tipo son generalmente firmware y solo se pueden "importar
como una interfaz". La parte de implementación de este tipo de POU está vacía. Por lo general, estas
POU deben reprogramarse después de convertirse.
5. También hay OBs de firmware que no tienen interfaz pero cuyo código está en 805xx Assembler (por
ejemplo) y no en STEP5. Esto afecta principalmente al regulador PID listado como OB251 que obtiene
sus parámetros y variables locales a través de un bloque (de datos) separado que puede seleccionar.
Ni el regulador PID, ni el bloque de datos correspondiente ni otras POU que utilicen reguladores para
acceder al bloque de datos se pueden convertir a IEC. El código IEC que se crea para los bloques de
datos y otras POU durante la conversión no tiene sentido sin el regulador PID. El significado de las
partes individuales del programa se puede encontrar en el manual de programación de la CPU.
6. Los bloques de datos de configuración (como DB1 [S5-95U], DX0 y DX2) se utilizan a veces para configurar
CPU S5 y otros conjuntos que se convirtieron en POU IEC inútiles. El significado de gran parte de este tipo de
datos se puede encontrar en el manual de programación de la CPU. Para el resto se debe utilizar un sistema de
programación S5 que pueda evaluar las bases de datos de configuración. La configuración afecta a los ajustes de
comunicación, procesamiento de valores analógicos, multiprocesamiento, etc. Por lo tanto, es inútil siquiera pensar
en trabajar con estas POU en un SPS que no sea de Siemens.
Una vez completada la importación, debe encontrar los errores que se muestran y luego corregir,
agregar y reescribir los puntos afectados. Estos lugares están marcados con comentarios como:
(*¡Advertencia! El código STEP5/7 no convertible se muestra como comentario:*)
A esto le sigue el código unconvertible que también se muestra como comentario.
Por último, debes comprobar las direcciones. Las direcciones originales de Siemens se crean durante
la importación. Estas direcciones tienen el siguiente formato:
Bits: Byte-Offset.Bit-Nummer
No-Bits:Byte-Offset
Además, las direcciones de palabras que se suceden en secuencia se superpondrán (simplemente
debido al hecho de que los números en las direcciones son desplazamientos de bytes). Esto significa
que %MW32 y %MW33 tienen un byte superpuesto que es %MB33 (solo en un SPS de Siemens). En
su SPS, %MW32 y %MW33 normalmente no tendrían nada que ver entre sí.
Su PLC puede tener más jerarquías. Por ejemplo, los que no son bits tienen varios niveles de enclavamiento
("%MW10.0.0" como WORD). Puede realizar cambios en las direcciones para hacerlas compatibles con su
PLC o puede intentar omitirlas por completo. ¡Proceda con mucha cautela! En el programa original de
Siemens, es bastante común que el acceso a palabras y el acceso a bits o bytes se realicen en la misma
ubicación de memoria. Cuando se importan a CoDeSys, los accesos de este tipo solo se compilarán
correctamente para los bloques de datos. En este caso, CoDeSys crea variables WORD para las palabras
de las bases de datos. Entonces, cuando WORD accede a la palabra x en DB y, no hay problemas. Los
intentos de acceder al byte izquierdo o derecho de la palabra x, una palabra doble o un bit se compilarán en
expresiones más complejas. Esto no se puede hacer con ubicaciones de memoria, entradas o salidas, ya
que esto no se puede hacer con un método de acceso estándar (por ejemplo, acceso a palabras). Si está
trabajando con %MX33.3 y con %MB33 o %MW32 o %MD30, debe hacer el esfuerzo de convertirlos
manualmente. El programa IEC generado por la importación de CoDeSys definitivamente no funcionará
correctamente.
Abra una lista de referencias cruzadas que contenga todas las entradas, salidas y ubicaciones de
memoria para averiguar qué accesos son importantes. Elimine el mixto al que se accede manualmente.
10.29.1 Sistema de destino compatible con Intel 386, Categoría Plataforma de destino
Configuración de destino del cuadro de diálogo "Compatible con Intel386", plataforma de destino
Depuración en un entorno Si se activa: se genera código adicional, lo que permite la depuración en entornos
multitarea multitarea
Saltos optimizados si está activado: saltos condicionales optimizados después de las operaciones de
comparación; más rápido + menos código (especialmente en 386/486); Las líneas
que contienen condiciones antes de los saltos se mostrarán en color gris en el
modo de control de flujo
Operaciones optimizadas Operaciones optimizadas con constantes (A = A + 1, A < 500, etc.); Más rápido +
con constantes menos código (especialmente en 386/486); Las constantes se monitorearán en
color gris en el modo de control de flujo
Significado de las operaciones de carga No se ejecutarán operaciones de carga en acceso múltiple en una
variable/constante; Más rápido + menos código
Permitir estructuras Si está activado: solo direccionar direcciones pares si no está activado:
alineadas con bytes también es posible el direccionamiento de direcciones impares
Init. Funciones si está activado: Las funciones contienen el código de inicialización de las variables locales
Archivo HEXADECIMAL de salida si está activado: Salida de un volcado hexadecimal del código
Archivo BIN de salida si está activado: Salida de un archivo binario del código
10.29.4 Sistemas de destino Intel StrongARM y Power PC, Categoría Plataforma de destino
Los elementos de diálogo de estos dos sistemas de destino son idénticos.
Configuración de destino del cuadro de diálogo 'PowerPC', plataforma de destino
Primer parámetro Registro Registro donde se transmite el primer parámetro entero de las llamadas a la función C (rango
(entero) dependiendo del sistema operativo)
Registro del último parámetro Registro donde se transmite el último parámetro entero de las llamadas a la función C (rango
(Entero) dependiendo del sistema operativo)
Regístrese para los valores devueltos Registre donde se devuelven los parámetros enteros de las llamadas a la función C (rango
(Entero) dependiendo del sistema operativo)
Primer parámetro Registro Registro donde se transmite el primer parámetro flotante de las llamadas a la función C (rango
(Flotar): dependiendo del sistema operativo)
Registro del último parámetro Registro donde se transmite el último parámetro flotante de las llamadas a la función C (rango
(Flotar): dependiendo del sistema operativo)
Regístrese para obtener el valor de devolución Registro en el que se devuelven los parámetros flotantes de las llamadas a la función C (rango
(Flotar): dependiendo del sistema operativo)
Orden de bytes de Intel si está activado: Direccionamiento según el esquema de direcciones de Intel
Espacio máx. en la pila Tamaño de la pila de argumentos (en bytes). Predeterminado: 40
for argumentos (Byte)
Primer parámetro Registro donde se transmite el primer parámetro flotante de las llamadas a la función
Registro (Float): C (el rango depende del sistema operativo)
Registro del último Registro donde se transmite el último parámetro flotante de las llamadas a la función
parámetro (Float): C (el rango depende del sistema operativo)
Regístrese para el valor Registre dónde se devuelven los parámetros flotantes de las llamadas a la función C
devuelto (flotante): (el rango depende del sistema operativo)
Orden de bytes de Intel Se utiliza el modo de dirección de bytes de Intel
Actitud Significado
Plataforma=Tricore Tipo de sistema de destino
Primer registro de parámetros (entero) = 4 Registre donde es el primer parámetro entero de las llamadas a la función C
transmitida
(el rango depende del sistema operativo)
Último registro de parámetros (entero) = 7 Registre dónde es el último parámetro entero de las llamadas a la función C
transmitida
(el rango depende del sistema operativo)
Regístrese para valores devueltos (entero) = 2 Registre dónde es el último parámetro entero de las llamadas a la función C
transmitida
(el rango depende del sistema operativo)
Otros: - Llamada a función no utilizada para la implementación de puntos de interrupción
Base (Global) Activación automática: Los segmentos de datos (datos globales) se asignan
automáticamente al área en cuestión Desactivado automático: El segmento de
datos (datos globales) se encuentra en la dirección absoluta dada
Base (Memoria) Activado automático: las banderas se asignan automáticamente al área en cuestión
Desactivado automático: el segmento de la bandera se encuentra en la dirección absoluta dada
Movimiento suave si está activada: La funcionalidad SoftMotion está activada, es decir, disponible
en la pestaña Recursos (lista de programas CNC, CAM)
Mantener el forzamiento si está activado: La lista de fuerza se mantendrá en el sistema de tiempo de ejecución
incluso cuando se cierre la sesión. En este caso, al cerrar la sesión, el usuario
obtendrá un cuadro de diálogo donde puede decidir si realmente se debe mantener el
forzamiento. (actualmente soportado por los sistemas de tiempo de ejecución
CoDeSys SP 32bit full, V2.4, Patch 4 y CoDeSys SP 32bit).
Salvar si está activado: El sistema de tiempo de ejecución sigue forzando incluso en un
reinicio. Esta opción solo está disponible si el objetivo lo permite y si la opción
'Retener forzamiento' (ver arriba) está activada.
Forzamiento independiente del ciclo Si está activado: El forzado no solo se realizará al principio y al final de un ciclo,
sino que se desactivarán todos los accesos de escritura durante el
procesamiento del programa
Variables de red de soporte Si se selecciona esta opción, se pueden utilizar variables de red, que permiten el
intercambio automático de datos en la red
Nombres de Lista de los sistemas de red compatibles, por ejemplo: CAN; UDP; DP
interfaces de red
admitidas
Rangos de índice para Rango de índice para listas de parámetros de tipo 'Parámetros' (consulte
parámetros Recursos, 'Administrador de parámetros')
Rangos de índice para Rango de índice para listas de parámetros de tipo 'Variables' (consulte Recursos,
variables 'Administrador de parámetros')
Rangos de índice para Rango de índice para listas de parámetros de tipo 'Asignaciones' (consulte
asignaciones Recursos, 'Administrador de parámetros') Atención: Si este rango se define aquí,
CanDevice solo tendrá en cuenta este rango para la asignación; Esto significa
que si además se define un rango de índice para los parámetros (ver arriba), ¡no
se tendrá en cuenta!
Rango de subíndice Rango de subíndice dentro de los rangos de índice mencionados anteriormente
para diccionarios de objetos de parámetros y variables (consulte Recursos,
'Administrador de parámetros')
Anchura de la pantalla Se mostrará un área de la anchura y la altura dadas en la ventana del editor al
en píxeles Altura de la editar una visualización. Así, por ejemplo, el tamaño de la pantalla en la que se
ejecutará la visualización de destino más adelante, se puede tener en cuenta a
pantalla en píxeles
la hora de posicionar los elementos de visualización.
Usar el formato de archivo 8.3 Los nombres de los mapas de bits y los archivos de idioma que se utilizan en
la visualización de CoDeSys se acortarán al formato de notación 8.3 y se
cargarán en el PLC en este formato.
Manejo de alarmas en el PLC El ALARM_TASK de la tarea se insertará automáticamente en la configuración
de la tarea. Procesará un código ST creado implícitamente evaluando el
estado de las alarmas particulares y, si corresponde, ejecutando las acciones
asociadas.
El código ST necesita funciones auxiliares de la biblioteca
SysLibAlarmTrend.lib. Esta biblioteca se cargará automáticamente. (Además,
se cargan las bibliotecas implícitamente necesarias SysLibSockets.lib,
SysLibMem.lib, SysLibTime.lib, SysLibFile.lib. Estas bibliotecas deben ser
compatibles con el sistema de destino !) Si la opción está desactivada y la
visualización de destino está activada, se volcará un error de compilación.
Sugerencia: La "Gestión de alarmas en el PLC" se puede utilizar incluso si no
se ha activado la visualización de destino o web. Incluso entonces se generará
el código ST requerido.
Almacenar datos de tendencias en el PLC
Se activará la gestión de tendencias en el PLC. El TREND_TASK de la tarea
se insertará automáticamente en la configuración de la tarea Procesará un
código ST creado implícitamente para registrar los datos de la tendencia en un
búfer de anillo y, si la opción Historial está activada en el elemento de
tendencia, para almacenar los valores en un sistema de archivos.
El código ST necesita funciones auxiliares de la biblioteca
SysLibAlarmTrend.lib. Esta biblioteca se cargará automáticamente. (Además,
se cargan las bibliotecas implícitamente necesarias SysLibSockets.lib,
SysLibMem.lib,SysLibTime.lib, SysLibFile.lib. Estas bibliotecas deben ser
compatibles con el sistema de destino !) Si la opción está desactivada y la
visualización de destino está activada, se volcará un error de compilación.
Activar la variable de La variable de sistema CurrentVisu se puede utilizar para cambiar entre
sistema 'CurrentVisu' visualizaciones.
Fuentes admitidas en el destino Lista de fuentes compatibles con el sistema de destino.
Manejo simplificado de Si está activado: En el modo en línea, el manejo de la entrada se simplifica: las
entradas teclas <Tab> y <Espacio> no son necesarias para pasar de un campo de entrada
al siguiente. La selección se reenvía automáticamente al siguiente campo después
de haber terminado una entrada con la tecla <Retorno>. También se puede
acceder a un campo de entrada a través de las teclas de flecha o <Tab> e
inmediatamente se puede ingresar una entrada. Si no está activado: se deben
utilizar las teclas <Tab> y <Espacio> para llegar al siguiente campo de entrada y
seleccionar este campo para hacer posible una entrada.
Visualización web Si está activado: Todos los objetos de visualización del proyecto se compilan
para su uso como objetos de visualización web.
Compresión Si está activado: Los siguientes archivos para la visualización web, que deben
transferirse de Codesys al servidor web/PLC, se transferirán en un formato
empaquetado (formato zip); De lo contrario, en formato original:
- Archivos de visualización XML
- archivos de imagen (solo *.bmp, porque con otros no hay efecto de compresión)
- Archivos de idioma (*.xml para textos dinámicos, *.tlt, *.vis) Los archivos adicionales al
nombre de archivo existente obtienen la extensión ".zip". El punto en el nombre
existente será reemplazado por un guión bajo (ejemplo: "PLC_VISU.xml" será
renombrado a "PLC_VISU_xml.zip") No se realiza ninguna compresión para los
archivos Java (minml.jar, webvisu.jar) y la página principal webvisu.htm.
Impedir la descarga Si está activado: Cuando se descarga el proyecto, todos los archivos que se
de archivos de utilizan en la visualización actual no se descargarán en el sistema de destino.
visualización Los archivos de visualización solo se descargan para la visualización de
destino o web y pueden ser mapas de bits, archivos de idioma y, para la
visualización web, también archivos de descripción XML.
Uso del teclado para tablas Si esta opción está activada, en el modo en línea es posible el uso del teclado
de las tablas en la visualización (CoDeSys HMI, Web-Visualization,
Target-Visualization). Si se desactiva esta opción, no se generará ningún
código para las funciones clave, lo que podría ser razonable por motivos de
rendimiento cuando se utiliza Target-Visualization.
Visualización de objetivos si está activado: Todos los objetos de visualización del proyecto se compilan
para su uso como objetos de visualización de destino.
Usar VISU_INPUT_TASK solo se puede activar si la visualización de destino está activada, ver arriba) Si se activa y
se desactiva 'Desactivar generación de tareas' (ver más abajo), se crearán
automáticamente dos tareas para controlar la visualización de destino: VISU_INPUT_TASK
controla el procesamiento de las entradas de usuario por medio de la POU implícitamente
disponible MAINTARGETVISU_INPUT _CODE VISU_TASK controla el repintado de los
elementos de visualización por medio de la POU implícitamente disponible
MAINTARGETVISU_PAINT _CODE. Si la opción está desactivada, solo se creará
VISU_TASK y solo se utilizará POU MAINTARGETVISU_PAINT_CODE, que en este caso
incluirá adicionalmente la funcionalidad de MAINTARGETVISU_INPUT_ CODE.
Desactivar la generación de (solo se puede activar si la visualización de objetivos está activada, ver arriba) Si la
opción está activada, las tareas VISU_INPUT_TASK y VISU_TASK (véase más arriba
en 'Usar VISU_INPUT_TASK') no se generarán automáticamente. Por lo tanto, las
POU mencionadas anteriormente, o - si la opción Usar VISU_INPUT_TASK' no está
activada - solo se puede llamar a la POU MAINTARGETVISU_PAINT_CODE en el
programa de aplicación y, si se desea, se puede controlar mediante cualquier tarea,
según lo definido por el programador. En referencia a esto, consulte la descripción en la
visualización de destino (en el manual de usuario de la visualización de CoDeSys).
Funciones generales
Comandos Generales
Comandos de LD Editor
Antes del nombre base, correspondiente al tipo de datos de la variable, se añaden prefijos en letras
minúsculas.
REAL 32 bits r
LREAL 64 bits Lr
CUERDA s
HORA Tim
TIME_OF_DAY Tod
FECHA HORA Despegue
FECHA fecha
ENUMERACIÓN 16 bits e
PUNTERO p
ARREGLO un
* Para BOOLean, se elige x como prefijo, para diferenciarlo de BYTE y también para acomodar la percepción de un
programador IEC (ver direccionamiento %IX0.0).
Ejemplos:
bySubIndex: BYTE; sFileName: CADENA; udiCounter: UDINT;
En las declaraciones anidadas, los prefijos se adjuntan entre sí en el orden de las declaraciones:
Ejemplo:
pabyTelegramData: PUNTERO A LA MATRIZ [0..7] DE BYTE;
Las instancias de bloque de funciones y las variables de tipos de datos definidos por el usuario
como prefijo obtienen un acceso directo para el nombre del tipo de datos FB- o de datos (ejemplo: sdo).
Ejemplo:
cansdoReceivedTelegram: CAN_SDOTelegram; TIPO
CAN_SDOTelegram : (* prefijo: sdo *)
ESTRUCTURA
wÍndice:PALABRA; bySubIndex:BYTE; porLen:BYTE;
Las constantes locales (c) comienzan con el prefijo c y un guión bajo adjunto, seguido del tipo prefijo
y el nombre de la variable.
Ejemplo:
VAR CONSTANTE c_uiSyncID: UINT :=
16#80; END_VAR
Para las variables globales (g) y las constantes globales (gc), se adjunta un prefijo adicional + guión
bajo al prefijo de la biblioteca:
Ejemplos:
VAR_GLOBAL
CAN_g_iTest: INT;
END_VAR VAR_GLOBAL CONSTANTE
CAN_gc_dwExample: DWORD;
END_VAR
Ejemplo:
TYPE CAN_SDOTelegram : (* prefijo: sdo *) STRUCT wIndex:WORD; bySubIndex:BYTE; porLen:BYTE;
abyData: MATRIZ [0..3] DE BYTE; END_STRUCT END_TYPE
Las enumeraciones comienzan con el prefijo de biblioteca (Ejemplo: CAL), seguido de un guión bajo y
el identificador en mayúsculas.
Tenga en cuenta que en versiones anteriores de CoDeSys los valores ENUM > 16#7FFF han causado
errores, porque no se convertían automáticamente en valores INT. Por esta razón, los ENUM siempre
deben definirse con valores INT correctos.
Ejemplo:
TIPO CAL_Day :( CAL_MONDAY, CAL_TUESDAY, CAL_WEDNESDAY, CAL_THIRSDAY, CAL_FRIDAY,
CAL_SATURDAY, CAL_SUNDAY);
Declaración:
eToday: CAL_Day;
Ejemplo:
FUNCTION_BLOCK CAN_SendTelegram (* prefijo: canst *)
En la parte de la declaración debe proporcionarse una breve descripción de la POU a modo de comentario. Más
adelante, todas las entradas y salidas deben ir acompañadas de comentarios. En el caso de los bloques de
funciones, el prefijo asociado para las instancias de configuración debe seguir directamente después del nombre.
Las acciones no tienen prefijo; solo las acciones que deben llamarse solo internamente, es decir, por
la propia POU, comienzan con "prv_".
Cada función, por razones de compatibilidad con versiones anteriores de CoDeSys, debe tener al
menos un parámetro. Las funciones externas no deben utilizar estructuras como valores devueltos.
10.41 Advertencias
1100
"Función desconocida '<nombre>' en la biblioteca."
Se utiliza una biblioteca externa. Compruebe si todas las funciones que se definen en el archivo .hex
también se definen en el archivo .lib.
1101
"Símbolo no resuelto '<Símbolo>'".
El generador de código espera una POU con el nombre <Símbolo>. No está definido en el proyecto.
Defina una función/programa con este nombre.
1102
"Interfaz no válida para el símbolo '<Símbolo>'."
El generador de código espera una función con el nombre <Symbol> y exactamente una entrada
escalar, o un programa con el nombre <Symbol> y sin entrada ni salida.
1103
"La constante '<name>' en la dirección de código '<address>' sobrescribe un límite de página de 16K!"
Una constante de cadena supera el límite de página de 16K. El sistema no puede manejar esto.
Depende del sistema de tiempo de ejecución si el problema podría evitarse mediante una entrada en el
archivo de destino. Póngase en contacto con el fabricante del PLC.
1200
"Las variables de acceso de la tarea '<nombre>', llamada de '<nombre>' en la lista de parámetros no se actualizan"
Las variables, que solo se utilizan en una llamada a un bloque de funciones en la configuración de
tareas, no se enumerarán en la lista de referencias cruzadas.
1300
"Archivo no encontrado '<nombre>'"
El archivo, al que apunta el objeto de variable global, no existe. Por favor, compruebe la ruta.
1301
"¡No se encontró la biblioteca de análisis! No se generará código para el análisis".
Se utiliza la función analyze, pero falta la biblioteca analyzation.lib. Agregue la biblioteca en el
administrador de bibliotecas.
1302
"Se han insertado nuevas funciones con referencia externa. Por lo tanto, el cambio en línea ya no es posible".
Desde la última descarga, ha vinculado una biblioteca que contiene funciones a las que aún no se hace
referencia en el sistema de ejecución. Por esta razón tienes que descargar el proyecto completo.
Este pragma no es compatible con el compilador. Consulte la palabra clave 'pragma' para ver las directivas admitidas.
La estructura no contiene ningún elemento, pero las variables de este tipo asignan 1 byte de memoria.
Las variables remanentes que se definen localmente en las funciones se manejan como variables locales normales.
Una llamada no hace referencia a la instancia de nivel superior de la variable en ninguna tarea. Por lo
tanto, no se copiará de la imagen de proceso.
Ejemplo:
Configuración de variables:
VAR_CONFIG
plc_prg.aprg.ainst.in AT %IB0 : INT;
END_VAR
plc_prg: índice :=
INDEXOF(aprg);
Se hace referencia al programa aprg, pero no se llama. Por lo tanto, plc_prg.aprg.ainst.in nunca
obtendrá el valor real de %IB0.
Está utilizando un pragma que no está escrito correctamente o que no se puede usar en esta
ubicación. Consulte la palabra clave 'pragma' en la Ayuda en línea de CoDeSys o en la Guía del
usuario para obtener ayuda para una corrección.
1413 "'<Name>' no es una clave válida para la lista '<Name>'. La clave será ignorada"
El Pragma contiene más definiciones (entre corchetes) que elementos en la matriz, bloque de
funciones o estructura correspondiente.
No se utiliza el resultado de esta expresión. Por esta razón, no se genera ningún código para toda la
expresión.
Es posible que la constante no se escriba dentro de la POU, ya que no es posible comprobar el tamaño.
1502 "La variable '<Name>' tiene el mismo nombre que una POU. ¡No se llamará al POU!".
Se utiliza una variable, que tiene el mismo nombre que una POU.
Ejemplo:
PROGRAMA a ...
1503 "El POU '<name>' no tiene salidas. El resultado del cuadro se establece en 'TRUE'".
El pin de salida de una POU que no tiene salidas, está conectado en FBD o KOP. La asignación
obtiene automáticamente el valor TRUE.
La primera entrada de la POU es FALSE, por esta razón la rama lateral, que puede entrar en la
segunda entrada, no se ejecutará.
1506 "La variable '<name>' tiene el mismo nombre que una acción local. ¡La acción no será convocada!"
1507 "La instancia '<name>' tiene el mismo nombre que una función. No se llamará a la instancia".
Se llama en ST a una instancia que tiene el mismo nombre que una función. La función se llamará !
Usa diferentes nombres.
1509 "'<name>' ('<number>'): Las funciones que se registrarán como devoluciones de llamada deben
comenzar con 'Callback'."
Está utilizando una función de devolución de llamada, cuyo nombre no comienza con "devolución de
llamada". Esto puede causar efectos inesperados en RISC o en el RISC. ¡Controladores Motorola 68K!
1510 "El operando que se va a rotar no tiene ningún tipo explícito. Por favor, utilice un literal escrito, como
'DWORD#1'".
Para la constante utilizada en la operación ROL o ROR debe haber una definición de tipo de datos.
Para obtener información sobre las constantes con tipo, consulte AQUÍ.
1511 "El operando que se va a desplazar no tiene ningún tipo explícito. Por favor, utilice un literal escrito, como
'DWORD#1'".
Para la constante utilizada en la operación SHL o SHR, debe haber una definición de tipo de datos.
Para obtener información sobre las constantes con tipo, consulte AQUÍ.
1550 "Múltiples llamadas de la POU '<Nombre>' en una red pueden provocar efectos secundarios no deseados"
Compruebe si la llamada múltiple de esta POU es realmente necesaria. Por una llamada múltiple
pueden producirse sobrestrikes de valores no deseados.
1600 "La base de datos abierta no está clara (el código generado puede ser erróneo)."
En CFC se utiliza un cuadro de entrada que no tiene asignación. Para ello no se generará ningún código.
1750 "Paso '<Nombre>': ¡el tiempo mínimo es mayor que el tiempo máximo!"
Abra el cuadro de diálogo 'Atributos de paso' para este paso y corrija las definiciones de tiempo.
Asegúrese de que haya un archivo de mapa de bits externo disponible en esa ruta que se define en el
cuadro de diálogo de configuración de visualización.
1803 "'<name>'('<number>'): "La acción de impresión no sería compatible con la visualización web y de destino"
Se asigna una acción de impresión a una alarma configurada en la visualización. Esto no se tendrá en
cuenta en la visualización web o de destino.
En la visualización, está utilizando una fuente que no es compatible con el sistema de destino. Consulte
en la configuración de destino, la categoría "Visualización" para conocer las fuentes compatibles.
1807 "<name> (<number>): No hay ventana de mensaje para alarmas para la visualización de destinos"
De forma predeterminada, se permiten un máximo de 512 puntos, es posible que se defina otro número
máximo específico de destino. Al abrir el cuadro de diálogo de configuración, el elemento se optimizará
al número permitido de puntos.
1850 "La variable de entrada en %IB<number> se utiliza en la tarea '<name>' pero se actualiza en otra tarea"
Compruebe qué tareas están utilizando esta variable y si la programación actual no está causando
efectos indeseables. Por lo general, la actualización del valor de la variable se realiza en la tarea con
mayor prioridad.
1851 "La variable de salida en %IQ<number> se utiliza en la tarea '<name>' pero se actualiza en otra tarea"
Compruebe qué tareas están utilizando esta variable y si la programación actual no está causando
efectos indeseables. Por lo general, la actualización del valor de la variable se realiza en la tarea con
mayor prioridad.
1852 "¡Es posible que CanOpenMaster no se llame cíclicamente en la tarea de evento '<nombre>'!
¡Establezca el parámetro de módulo UpdateTask!"
Actualmente, la tarea de evento con nombre llama a CanOpen Master. Si desea que se llame
cíclicamente, especifique una tarea apropiada a través del parámetro UpdateTask en la configuración
del PLC en el cuadro de diálogo 'Parámetros del módulo'.
1853 "Es posible que una DOP (índice: '<número>') no se actualice cíclicamente en la tarea de evento
'<nombre>'"
Actualmente, el PDO nombrado se controla a través de la tarea de evento nombrada. Pero si desea
que se llame cíclicamente, debe asignar una tarea adecuada a la PDO cambiando las referencias de
E/S a esta tarea.
1900 "POU '<name>' (rutina principal) no está disponible en la biblioteca"
La POU de inicio (por ejemplo, PLC_PRG) no estará disponible cuando el proyecto se utilice como biblioteca.
1901 "¡Las variables de acceso y las configuraciones de variables no se guardan en una biblioteca!"
1904 "La constante '<Nombre>' esconde una constante del mismo nombre en una biblioteca"
En el proyecto, ha definido una constante que tiene el mismo nombre que una que se define en una
biblioteca vinculada. ¡La variable de biblioteca se sobrescribirá!
1970 "Administrador de parámetros: Lista '<Nombre>', Columna '<Nombre>', Valor '<Nombre>' no se pudo importar!"
Compruebe el archivo de importación *.prm para ver si hay entradas que no coincidan con la
configuración actual (valores estándar resp. XML archivo de descripción) del Administrador de
parámetros.
1980 Variables de red global '<Nombre>' '<Nombre>': ¡la lectura y escritura simultáneas pueden provocar la pérdida
de datos!"
2500 "Tarea '<nombre de tarea>': no se ha especificado ningún tiempo de ciclo para la tarea cíclica"
En la configuración de la tarea se ha creado una tarea cíclica, para la que no se ha definido ningún
tiempo de ciclo. Introduzca un intervalo de tiempo adecuado en el cuadro de diálogo 'Atributos de tarea'
en "Intervalo".
4710 "'<name>' ('<number>'): No se ha configurado una expresión necesaria"
4714 "'<name>'('<number>'): El tipo de la variable de selección tiene que ser un tipo con signo compatible con
INT""
4715 "El destino actual no admite la visualización formateada de valores de fecha y hora"
En la configuración de destino, en la categoría 'Visualización' está activada la opción 'Manejo simplificado de entradas'. Tal vez no sea compatible con el SysLibTargetvisu.lib que se utiliza.
10.42 Errores
3100 "Código demasiado grande. Tamaño máximo: '<número>' Byte (<número>K)"
3101 "Datos totales demasiado grandes. Tamaño máximo: '<número>' Byte (<número>K)"
El archivo .hex contiene una instrucción que no se puede reubicar. El código de la biblioteca no se puede vincular.
3115 "No se puede asignar una constante a VAR_IN_OUT. Tipos de datos incompatibles".
El formato de puntero interno para las constantes de cadena no se puede convertir al formato de
puntero interno de VAR_IN_OUT, porque los datos se establecen "cerca" pero las constantes de
cadena se establecen "enormes" o "lejanas". Si es posible, cambie esta configuración de destino.
Código 166x: La biblioteca externa no se puede utilizar con la configuración de destino actual. Estos
deben adaptarse o la biblioteca debe reconstruirse con la configuración adecuada.
3117 "<Nombre> (<Zahl>): Expresión demasiado compleja. No hay más registros disponibles"
La expresión nombrada es demasiado compleja para ser manejada por los registros disponibles.
Intente reducir la expresión mediante el uso de variables provisionales.
El código generado actualmente es mayor que 64K. Con el tiempo, se crea mucho código de inicialización.
El código de inicialización de una POU de función o estructura no puede superar los 64K.
3123 "Segmento de datos demasiado grande: segmento '<Número>%s', tamaño <tamaño> bytes (máximo <número>
bytes)"
3124 "Constante de cadena demasiado grande: <recuento> caracteres (máximo 253 caracteres)"
3130 "Pila de usuarios demasiado pequeña: se necesita DWORD de '<número>, DWORD de '<número>' disponible".
3132 "System-Stack demasiado pequeño: se necesita la palabra '<número>, se necesita la palabra '<número>'
disponible."
Póngase en contacto con el fabricante del PLC.
3150 "Parámetro <número> de la función '<nombre>': No se puede pasar el resultado de una función IEC
como parámetro de cadena a una función C."
Se incluye una biblioteca <nombre> en el administrador de bibliotecas para este proyecto, pero el
archivo de biblioteca no existe en la ruta de acceso dada.
Un archivo .obj de una biblioteca debe contener al menos una función C. Inserte una función ficticia en
el archivo .obj, que no está definida en el archivo .lib.
3162 "No se pudo resolver la referencia en la biblioteca '<nombre>'(Símbolo '<nombre>', Clase '<nombre>',
Tipo '<nombre>')"
El archivo .obj contiene una referencia no resoluble a otro símbolo. Por favor, compruebe la configuración de la
C-Compilador.
3163 "Tipo de referencia desconocido en la biblioteca '<nombre>' (Símbolo '<nombre>' , Clase '<nombre>' ,
Tipo '<nombre>')"
El archivo .obj contiene un tipo de referencia, que el generador de código no puede resolver. Por favor,
compruebe la configuración del C-Compiler.
La memoria temporal del sistema de destino es insuficiente para el tamaño de la expresión. Divida la
expresión en varias expresiones parciales, utilizando así asignaciones a variables intermedias.
3201 "<nombre> (<red>): Una red no debe dar lugar a más de 512 bytes de código"
Los saltos internos no se pueden resolver. Active la opción "Usar desplazamientos de salto de 16 bits" en la configuración de destino de 68k.
Se utiliza una llamada de función anidada CONCAT(x, f(i)). Esto puede provocar la pérdida de datos.
Divida la llamada en dos expresiones.
La optimización de los accesos a la matriz ha fallado porque durante el cálculo del índice se ha llamado
a una función.
A utiliza una función de conversión, que no se implementa para el generador de código real.
Se utiliza un operador, que no se implementa para este tipo de datos y el generador de código real.
MIN (cadena1, cadena2).
A variable de tipo string se puede usar en una expresión 10 veces como máximo.
El orden de las bibliotecas de esta POU no coincide con el del archivo cslib.hex. Corrija el pedido en
consecuencia. (solo para destinos de 68K, si la opción de verificación está activada en el archivo de
destino).
3250 "Real no compatible con el controlador de 8 bits"
3251 "los tipos de fecha del día no son compatibles con el controlador de 8 bits"
3260 "La función '<name>' tiene demasiados argumentos: Aumente el tamaño de la pila de argumentos en
la configuración de destino."
La sección de la POU SFC en el archivo .exp contiene dos pasos con nombres iguales. Cambie el
nombre de uno de los pasos del archivo de exportación.
En el archivo .exp falta una transición, que requiere el paso <nombre> como paso anterior.
En el archivo .exp falta un paso que requiere la transición <name> como condición previa.
Ha importado un archivo de exportación (*.exp) que contiene información errónea sobre una CAM.
Compruebe el archivo de exportación.
Ha importado un archivo de exportación (*.exp) que contiene información errónea sobre un programa
CNC. Compruebe el archivo de exportación.
Haga clic en el botón 'Propiedades' en el cuadro de diálogo de configuración del PLC para el módulo e
introduzca un ID COB para la PDO <Nombre de la DOP>.
3451 "Error durante la carga: No se pudo encontrar el archivo EDS '<name>', pero se hace referencia a él en la
configuración de hardware".
La opción "Comprobar si hay direcciones superpuestas" está activada en el cuadro de diálogo "Ajustes"
de la configuración del PLC y se ha detectado una superposición. En este sentido, la comprobación del
área se basa en el tamaño resultante de los tipos de datos de los módulos, no en el tamaño que da la
entrada 'size' en el archivo de configuración.
3455 "Error durante la carga: No se pudo encontrar el archivo GSD '<name>', pero se hace referencia a él en
la configuración de hardware.
3458 "¡No se ha podido crear la configuración del PLC! Compruebe los archivos de configuración".
Compruebe si todos los archivos de configuración y dispositivo necesarios están disponibles en la ruta
correcta (consulte el directorio de compilación definido en 'Proyecto', 'Opciones' /Directorios)
En las listas de parámetros utilizadas por CanDevice, los subíndices deben numerarse
secuencialmente y sin interrupción. Compruebe la lista correspondiente en el Administrador de
parámetros.
3466 "Variables de red CAN: No se encontró ningún controlador CAN en la configuración del PLC"
Hay variables de red configuradas para una red CAN (Recursos, Variables Globales), pero en la
Configuración del PLC no hay ningún controlador CAN disponible.
La tarea de actualización (utilizada para llamar al dispositivo CAN), que se define en el cuadro de
diálogo Configuración base del dispositivo CAN en la Configuración del PLC, debe configurarse en la
Configuración de tareas del proyecto.
3469 "No se puede llamar al CanOpenMaster. Por favor, asigne una tarea manualmente".
Asigne una tarea, que debe llamar al maestro, a través del parámetro UpdateTask en el cuadro de
diálogo Parámetros del módulo en la configuración del PLC.
Abra el cuadro de diálogo de parámetros del módulo CanMasters en la configuración del PLC.
Compruebe el parámetro UpdateTask. La tarea especificada debe estar disponible en el proyecto. Si no
puede establecer una tarea adecuada aquí, se debe comprobar el archivo de dispositivo para ver si hay
definiciones de valor correspondientes para UpdateTask.
3500
"No hay 'VAR_CONFIG' para '<Nombre>'"
Inserte una declaración para esta variable en el global variable lista cuál Contiene el
'Variable_Configuration'.
Asigne una dirección a esta variable en el global variable lista cuál Contiene el
'Variable_Configuration'.
En la lista de variables globales que contiene el 'Variable_Configuration', la variable se declara con una
dirección diferente a la de la POU.
Se declara una variable de la 'Variable_Configuration' con la dirección y el valor inicial. Pero solo se
puede definir un valor inicial para las variables de entrada sin asignación de direcciones.
En la lista global de variables de Variables de acceso, la ruta de acceso de una variable no es correcta.
Correcto: <Identifier>:'<Ruta de acceso>':<Tipo> <Modo de acceso>.
La lista global de variables para las variables de acceso contiene una asignación de direcciones para
una variable. Esto no está permitido.
Definición de variable válida: <Identifier>:'<Ruta de acceso>':<Tipo> <Modo de acceso>
Hay dos tareas que se definen con un mismo nombre idéntico. Cambie el nombre de uno de ellos.
3551 "La tarea '<name>' debe contener al menos una llamada de programa"
Hay una variable de evento establecida en el campo "Único" del cuadro de diálogo de propiedades de
la tarea que no se declara globalmente en el proyecto. Utilice otra variable o defina la variable
globalmente.
3553 "La variable de evento '<name>' en la tarea '<name>' debe ser de tipo 'BOOL'"
Utilice una variable de tipo BOOL como variable de evento en el campo "Único" del cuadro de diálogo de propiedades de la tarea.
3554 "La entrada de tarea '<name>' debe ser una instancia de programa o bloque de funciones global"
En el campo 'Llamada de programa' se introduce una función o una POU no definida. Introduzca un nombre de programa válido.
En el campo 'Anexar llamada de programa' se utilizan parámetros que no cumplen con la declaración
de la POU del programa.
El número de tareas definido actualmente supera el número máximo permitido para el sistema de
destino establecido actualmente. Cambie el destino o modifique la configuración de la tarea según
corresponda. Atención: ¡No edite el archivo de descripción XML de la configuración de la tarea!
3558 "La prioridad de la tarea '<nombre>' está fuera del rango válido entre '<límite inferior>' y
'<límite superior>'" 3559
La prioridad definida actualmente para la tarea no es válida para el sistema de destino establecido
actualmente. Cambie el destino o modifique la configuración de la tarea según corresponda.
"Tarea '<name>': Las tareas de intervalo no son compatibles con el destino actual"
La configuración actual de la tarea contiene una tarea de intervalo. Esto no está permitido por el
sistema de destino establecido actualmente. Cambie el destino o modifique la configuración de la tarea
según corresponda.
3560
"Tarea '<name>': las tareas de rueda libre no son compatibles con el objetivo actual"
La configuración actual de la tarea contiene una tarea de rueda libre. Esto no está permitido por el
sistema de destino establecido actualmente. Cambie el destino o modifique la configuración de la tarea
según corresponda.
3561
"Tarea '<name>': las tareas de evento no son compatibles con el destino actual"
La configuración de tareas actual contiene tareas de eventos que no son compatibles con el sistema de
destino establecido actualmente. Cambie el destino o modifique la configuración de la tarea según
corresponda.
3562
"Tarea '<name>': las tareas de eventos externos no son compatibles con el destino actual"
La configuración de tareas actual contiene tareas de eventos externos que no son compatibles con el
sistema de destino establecido actualmente. Cambie el destino o modifique la configuración de la tarea
según corresponda.
3563
"El intervalo de la tarea '<nombre>' está fuera del rango válido entre '<límite inferior>' y '<límite superior>'"
Cambie el valor del intervalo en el cuadro de diálogo de configuración de la tarea.
3564
"El evento externo '<name>' de la tarea '<name>' no es compatible con el destino actual"
El sistema de destino establecido actualmente no admite el evento externo que se define en la
configuración de la tarea para esta tarea. Cambie el destino o modifique la configuración de la tarea
según corresponda.
3565
"Se ha superado el número máximo de tareas de eventos ('<número>') superado"
El sistema de destino establecido actualmente no permite tantas tareas de eventos como las definidas
en este momento. Cambie el destino o modifique la configuración de la tarea según corresponda.
3566
"Se ha superado el número máximo de tareas de intervalo ('número> <')"
El sistema de destino establecido actualmente no permite tantas tareas de intervalo como las definidas
en este momento. Cambie el destino o modifique la configuración según corresponda.
3567
"Se ha superado el número máximo de tareas de rueda libre ('<número>')"
El sistema de objetivos establecido actualmente no permite tantas tareas de rueda libre como las
definidas en este momento. Cambie el destino o modifique la configuración según corresponda.
3568
"Se ha superado el número máximo de tareas de intervalo externo ('<número>')"
El sistema de destino establecido actualmente no permite tantas tareas de intervalo externo como las
definidas en este momento. Cambie el destino o modifique la configuración según corresponda.
La POU a la que debe llamar el evento del sistema con nombre, tal como se define en la configuración
de la tarea, no está disponible en el proyecto. Modifique la configuración de la tarea en consecuencia o
asegúrese de que la POU esté disponible en el proyecto.
Modifique la configuración de la tarea para que cada tarea tenga una prioridad diferente.
3571 "La biblioteca 'SysLibCallback' no está incluida en el proyecto. No se pueden generar eventos del
sistema".
Para crear tareas de eventos, se necesita SysLibCallback.lib. Vincule esta biblioteca al proyecto en el
administrador de bibliotecas o modifique la configuración de la tarea (atributos de tarea) de tal manera
que no haya ninguna tarea desencadenada por un evento.
3575 "Tarea <'nombre>': el tiempo de ciclo tiene que ser un múltiplo de <número> μ s".
Corrija el tiempo de ciclo en consecuencia en el cuadro de diálogo Atributos de tarea para esta tarea. El
sistema de destino define un tiempo base y prescribe que el tiempo de ciclo debe ser igual o ser un
múltiplo de este tiempo base.
3600 "¡Variables implícitas no encontradas!"
Utilice el comando 'Reconstruir todo'. Si, a pesar de todo, vuelve a recibir el mensaje de error, póngase
en contacto con el fabricante del PLC.
La variable dada se declara en el proyecto, aunque está reservada para el generador de código.
Cambie el nombre de la variable.
Hay un directorio no válido dado en el 'Proyecto', 'Opciones', 'Directorios' para los archivos de compilación.
Se utilizan demasiadas POU y tipos de datos en el proyecto. Modifique el número máximo de POU en
la configuración de destino / diseño de memoria.
3614 "El proyecto debe contener una POU denominada '<name>' (rutina principal) o una configuración de tareas"
Cree una POU de inicio de tipo Programa (por ejemplo, PLC_PRG) o configure una configuración de tarea.
En el proyecto se utiliza una POU de inicio (por ejemplo, PLC_PRG) que no es de tipo Program.
El proyecto, que debe guardarse como una biblioteca externa, contiene un programa. Esto no estará
disponible cuando se utilice la biblioteca.
El generador de código para el sistema de destino establecido actualmente no admite el acceso a bits en variables.
3619 "El archivo de objeto '<name>' y la biblioteca '<name>' tienen versiones diferentes!"
Asegúrese de que para la biblioteca haya versiones coincidentes disponibles de archivos *.lib y *.obj o
*.hex. Estos archivos deben tener la misma marca de tiempo.
3620 "El POU '<nombre>' no debe estar presente dentro de una biblioteca"
Desea guardar el proyecto como una biblioteca de la versión 2.1. En esta versión, una biblioteca no
puede contener un objeto PLC_PRG. Utilice un nombre de POU diferente.
Probablemente en la ruta que se especifica para el archivo de compilación ya hay un archivo con el
mismo nombre, que es de "solo lectura". Elimine ese archivo o cambie los derechos de acceso.
Probablemente en la ruta que se especifica para el archivo de símbolos (generalmente el directorio del
proyecto) ya hay un archivo con el mismo nombre, que es de "solo lectura". Elimine ese archivo o
cambie los derechos de acceso.
3623 "No se puede escribir el archivo de proyecto de arranque '<name>'"
Probablemente en la ruta que se especifica para el archivo de símbolos (específico del objetivo) ya hay
un archivo con el mismo nombre, que es de "solo lectura". Elimine ese archivo o cambie los derechos
de acceso.
3624 "Ajuste de destino <targetsetting1>=<valor establecido> no compatible con <targetsetting2>=<valor
establecido>"
Compruebe y corrija esta configuración en los cuadros de diálogo Targetsettings (pestaña Recursos).
Si los ajustes no son visibles o editables allí, póngase en contacto con el fabricante del PLC.
En el proyecto se utiliza un nombre de POU, que ya se utiliza para una POU de biblioteca. Cambie el nombre de la POU.
Utilice el comando 'Proyecto' 'Cambiar nombre de objeto' para cambiar el nombre de la POU en el organizador de objetos,
o cambie el nombre de la POU en la ventana de declaración. Allí, el nombre de la POU debe colocarse junto a uno de los
palabras clave PROGRAMA, FUNCIÓN o FUNCIÓN.
Tenga en cuenta que solo haya un identificador con el nombre de pila en la parte de declaración de la POU.
3704"" recursividad de datos: "<PARA 0> -> <PARA 1> -> .. "-> <PARA 0>"""
3705 "<Nombre>: VAR_IN_OUT en POU de nivel superior no se permite, si no hay configuración de tareas"
Agregue una dirección válida después de la palabra clave AT o modifique la palabra clave.
Esta dirección no es compatible con la configuración del PLC. Compruebe la configuración del PLC o
modifique la dirección.
El tipo de esta variable no se puede colocar en la dirección dada. Ejemplo: Para un sistema de destino
que trabaja con 'alineación 2', la siguiente declaración no es válida: var1 AT %IB1:WORD; Este
mensaje de error también puede indicar que se ha asignado una matriz a la dirección de una variable
directa, lo que no está permitido.
En la definición del tipo de enumeración falta un identificador después del corchete de apertura o
después de una coma entre corchetes.
Los tipos de subrango solo se pueden definir en función de los tipos de datos enteros.
Uno de los límites establecidos para el rango del tipo de subrango está fuera del rango que es válido
para el tipo base.
Hay una constante no válida que se utiliza para la definición de la longitud de la cadena.
En la definición de una matriz se dan más de las tres dimensiones permitidas. Si corresponde, use un
MATRIZ DE MATRIZ.
Hay una constante no definida que se utiliza para definir el límite inferior de un subrango o tipo de matriz.
Hay una constante no definida que se utiliza para definir el límite superior de un subrango o tipo de matriz.
La longitud de cadena definida aquí supera el valor máximo definido para el sistema de destino
establecido actualmente.
Una matriz puede ser de 1, 2 o 3 dimensiones. El número máximo de dimensiones alcanzadas por el
anidamiento de matrices (por ejemplo, "arr: ARRAY [0..2,0..2,0..2] OF ARRAY [0..2,0..2,0..2] OF
ARRAY [0..2,0..2,0..2, 0..2] OF DINT" puede ser 9 y se excede en el caso de error actual. Reduzca
adecuadamente a un máximo de 9 dimensiones.
Utilice un valor inicial que corresponda a la definición de tipo. Para cambiar la declaración, puede usar
el diálogo de declaración para variables (Shift/F2 o 'Editar''Autodeclare').
3780
"Se espera 'VAR', 'VAR_INPUT', 'VAR_OUTPUT' o 'VAR_IN_OUT'"
La primera línea que sigue al nombre de una POU debe contener una de estas palabras clave.
El sistema de destino no admite este tipo de variables (por ejemplo, RETAIN, PERSISTENT)
3800 "Las variables globales necesitan demasiada memoria. Aumente la memoria disponible en las opciones del
proyecto".
Aumente el número de segmentos dados en la configuración en el cuadro de diálogo 'Proyecto', 'Opciones', 'Construir'.
La variable utiliza un tipo que es mayor que 1 segmento de datos. El tamaño del segmento es un
parámetro específico del destino y se puede modificar en la configuración del destino/diseño de la
memoria. Si no lo encuentra en la configuración de destino actual, póngase en contacto con el
fabricante de su PLC.
3802 "Fuera de la memoria. Variable '<nombre>', <número> bytes."
Se agota el espacio de memoria disponible para las variables de retención. El tamaño del área de
memoria se puede establecer específico del destino en la configuración de destino /diseño de memoria.
Si no encuentra el campo de configuración en el cuadro de diálogo, póngase en contacto con el
fabricante de su PLC. (Tenga en cuenta: Si se utilizan variables de retención en una instancia de bloque
de funciones, la POU de instancia completa se almacenará en el área de retención de memoria).
3803 "Fuera de la memoria global de datos. Variable '<nombre>', '<número>' bytes."
Se agota el espacio de memoria disponible para las variables globales. El tamaño del área de memoria
se puede establecer específico del destino en la configuración de destino /diseño de memoria. Si no
encuentra el campo de configuración en el cuadro de diálogo, póngase en contacto con su fabricante
de PLC.
3804 "El tamaño actual de la descripción de datos perceptibles es de <'número'> bytes y excede el máximo de
<'número'> bytes".
En la POU se utiliza una variable VAR_EXTERNAL, para la que no se declara ninguna variable global.
3850 "No se permite la declaración de una estructura desempaquetada '<name>' dentro de una estructura
empaquetada '<name>'!"
Esta definición de la estructura conduce a una desalineación en la memoria. Modifique la definición de forma adecuada.
Hay una asignación directa a una dirección que tiene más de cuatro niveles. (por ejemplo, %QB0.1.1.0.1).
Utilice letras mayúsculas para la palabra clave o active la opción 'Autoformatear' en 'Proyecto' 'Opciones'.
El valor utilizado para la constante de tiempo no se puede representar en el formato interno. El valor
máximo que está presentable es t#49d17h2m47s295ms.
Compruebe qué tipo de datos espera el operador (Busque en la Ayuda en línea el nombre del
operador) y cambie el tipo de la variable que ha causado el error, o seleccione otra variable.
Se asigna un valor con el tipo no válido <Typ2> a la variable de salida '<Name>'. Reemplace la variable
o constante por una de tipo <Typ1> o use una conversión de tipos, respectivamente, una constante con
prefijo de tipo.
4014 "Literal escrito: No se puede convertir '<nombre>' en '<nombre>'"
4015 "El tipo de datos '<name>' no es válido para el acceso directo a bits"
El direccionamiento directo de bits solo se permite para los tipos de datos Integer- Bitstring y no para
las variables directas. Está utilizando una variable var1 de tipo Typ REAL/LREAL o una constante en el
acceso a bits <var1>.<bit>, o está probando un acceso a bits en una variable directa.
4016 "Índice de bits '<número>' fuera de rango para la variable de tipo '<nombre>'"
Está intentando acceder a un bit que no está definido para el tipo de datos de la variable.
El operador MOD solo se puede utilizar para tipos de datos enteros y de cadena de bits.
4020 "Variable con acceso de escritura o dirección directa requerida para 'ST', 'STN', 'S', 'R'"
Introduzca un dígito.
4026 "'BITADR' espera una dirección de bits o una variable en una dirección de bits"
4028 "El operador 'INI' necesita una instancia de bloque de función o una instancia de tipo de unidad de
datos"
Compruebe el tipo de datos de la variable para la que se utiliza el operador INI.
Utilice BITADR. Tenga en cuenta: La función BITADR no devuelve una dirección de memoria física.
4032 Los operandos "'<número>' son demasiado pocos para '<nombre>'. Al menos se necesitan '<número>'
Compruebe cuántos operandos requiere el operador con nombre y agregue los operandos que faltan.
4033 Los operandos "'<número>' son demasiados para '<nombre>'. Al menos se necesitan '<número>'
Compruebe cuántos operandos requiere el operador con nombre y elimine los operandos sobrantes.
Está utilizando una división por 0 en una expresión constante. Si desea provocar un error en tiempo de
ejecución, utilice, si corresponde, una variable con el valor 0.
4035 "El ADR no debe aplicarse en la 'CONSTANTE VAR' si se activan las 'constantes reemplazadas'"
No es posible un acceso a la dirección en las constantes para las que se utilizan los valores directos. Si
corresponde, desactive la opción 'Reemplazar constantes' en 'Proyecto', 'Opciones', 'Construir'.
Defina una etiqueta con el nombre <LabelName> o cambie el nombre <LabelName> por el de una
etiqueta definida.
La etiqueta '<Nombre>' está definida varias veces en la POU. Cambie el nombre de la etiqueta o elimine una de las definiciones.
El número de etiquetas de salto está limitado a '<Anzahl>'. Inserte una instrucción ficticia.
4043 "El formato de la etiqueta no es válido. Una etiqueta debe ser un nombre seguido opcionalmente de dos puntos.
Defina una POU con el nombre '<Name>' usando el comando 'Project', 'Add Object ' o cambie
'<Name>' por el nombre de una POU definida.
Utilice en lugar de <Name> un nombre de función que esté definido en el proyecto o en las bibliotecas.
Utilice una instancia del tipo de datos '<Name>' que se define en el proyecto o cambie el tipo de
<Nombre de instancia> a '<Name>'.
4060 "'VAR_IN_OUT' parámetro '<name>' de '<name>' necesita una variable con acceso de escritura como
entrada"
Para VAR_IN_OUT parámetros, las variables con acceso de escritura deben ser entregadas, ya que un
VAR_IN_OUT puede ser modificado dentro de la POU.
Un parámetro VAR_IN_OUT debe recibir una variable con acceso de escritura, ya que un
VAR_IN_OUT se puede modificar dentro de la POU.
VAR_IN_OUT solo se pueden escribir o leer parámetros dentro de la POU, ya que se entregan por
referencia.
4063 "El parámetro 'VAR_IN_OUT' '<nombre>' de '<nombre>' no debe usarse con direcciones de bits."
Una dirección de bits no es una dirección física válida. Entregue una variable o una dirección directa que no sea bit.
Elimine los parámetros establecidos para la variable VAR_IN_OUT en la llamada a la acción local.
Se han definido dos acciones de un bloque de funciones fb: por ejemplo, a1 y a2, pero en la llamada de
una de las acciones en el FBD se está utilizando un tipo (cadena dentro de la caja, por ejemplo, fb.a1
diferente a la utilizada en el nombre de la instancia (por ejemplo, inst.a2, arriba de la caja). Corrija el
nombre correspondientemente en el nombre de la acción deseada.
4100 "'^' necesita un tipo de puntero"
Está intentando desreferenciar una variable que no está declarada como puntero.
[<index>] se utiliza para una variable que no se declara como una matriz con ARRAY OF.
4111 "La expresión de índice de una matriz debe ser de tipo 'INT'"
Compruebe el número de índices (1, 2 o 3) para los que se declara la matriz y elimine el excedente.
Compruebe el número de índices (1, 2 o 3) para los que se declara la matriz y sume los que faltan.
4114 "Uno de los indizes constantes no está dentro del rango de la matriz"
Asegúrese de que los índices utilizados estén dentro de los límites de la matriz.
El identificador a la izquierda del punto debe ser una variable de tipo STRUCT o FUNCTION_BLOCK o
el nombre de una FUNCIÓN o un PROGRAMA.
El componente '<Name>' no está incluido en la definición del objeto <nombre del objeto>.
Compruebe las variables de entrada del bloque de funciones llamado y cambie '<name>' por una de ellas.
El modificador N requiere un tipo de datos, para el cual se puede ejecutar una negación booleana.
4210 "'CAL', 'CALC' y 'CALN' requieren una instancia de bloque de función como operando"
El accu no está definido. Esto sucede si una instrucción es anterior y no envía un resultado (por
ejemplo, 'CAL').
Asegúrese de que la variable de contador sea de un tipo de datos entero o de cadena de bits (por ejemplo, DINT, DWORD).
4258 "La expresión en la instrucción 'FOR' no es una variable con acceso de escritura"
4259 "El valor inicial en la instrucción 'FOR' no es ninguna variable con acceso de escritura"
El valor inicial de la instrucción 'FOR' debe ser compatible con el tipo de variable de contador.
4260 "El valor final de la instrucción 'FOR' debe ser de tipo 'INT'"
El valor final de la instrucción 'FOR' debe ser compatible con el tipo de variable de contador.
4261 "El valor de incremento de la instrucción 'FOR' debe ser de tipo 'INT'"
El valor incremental de la instrucción 'FOR' debe ser compatible con el tipo de variable de contador.
Dentro de una expresión 'CASE' solo se puede utilizar un número o una instrucción 'ELSE' o la
instrucción final 'END_CASE'.
Asegúrese de que el selector sea de un tipo de datos entero o de cadena de bits (por ejemplo, DINT, DWORD).
En la enumeración de los selectores CASE debe insertarse un selector adicional después de una coma.
4267 "La llamada al bloque de funciones requiere una instancia de bloque de funciones"
El identificador de la llamada al bloque de funciones no es ninguna instancia. Declare una instancia del
bloque de funciones deseado o utilice el nombre de una instancia ya definida.
Un selector 'CASE' solo se puede usar una vez dentro de una instrucción 'CASE'.
4271 "El borde inferior del rango es mayor que el borde superior".
Modifique los límites de área de los selectores para que el borde inferior no sea más alto que el borde superior.
Puede editar una llamada de función de esa manera, que también se contengan los nombres de los
parámetros, no solo los valores de los parámetros. Sin embargo, la posición (secuencia) de los
parámetros debe ser la misma que en la definición de la función.
Asegúrese de que las áreas de los selectores que se utilizan en la instrucción CASE no se superpongan.
Asegúrese de que la entrada para el salto o la instrucción RETURN sea una expresión booleana.
Asigne una expresión booleana a la entrada del salto. Si esto es TRUE, se ejecutará el salto.
Asigne una expresión booleana a la entrada de la instrucción RETURN. Si esto es TRUE, se ejecutará
el salto.
A ninguna de las entradas del operador POU '<Name>' se asigna una expresión válida.
Inserte una expresión booleana válida después de la instrucción Set resp. Reset.
4345 "Tipo no válido para el parámetro '<nombre>' de '<nombre>': No se puede convertir '<tipo>' en
'<tipo>'."
Se asigna una expresión a la entrada '<Name>' del POU box '<Name>' que no es compatible con el tipo.
Solo puede asignar una salida a una variable o a una dirección directa con acceso de escritura.
4347 "El parámetro 'VAR_IN_OUT' necesita una variable con acceso de escritura como entrada"
A VAR_IN_OUT parámetros solo se pueden entregar variables con acceso de escritura, ya que se
pueden modificar dentro de la POU.
4348 "Nombre de programa no válido '<nombre>'. Ya existe una variable con el mismo nombre".
Ha insertado un cuadro de programa en el editor CFC, que tiene el mismo nombre que una variable
(global) ya existente en su proyecto. Debe cambiar el nombre en consecuencia.
4349 "Se ha eliminado la entrada o salida en POU <nombre>: Marque todas las conexiones a la caja. Este mensaje de
error desaparece solo después de que se editó el CFC"
Las acciones SFC solo se pueden llamar dentro de la POU SFC en la que se definen. Pero este error
también se volcará si llama a una acción desde una POU SFC, lo cual está permitido, pero no está
utilizando pasos IEC mientras iecsfc.lib aún está incluido en su proyecto. En este caso, elimine la
biblioteca en el administrador de bibliotecas y reconstruya el proyecto.
Cambie el nombre del paso o elija un identificador válido como nombre del paso.
Elija un nombre de paso existente como objetivo del salto o inserte un paso con el nombre '<nombre>'.
4355 "Una transición no debe tener ningún efecto secundario (Asignaciones, FB-Calls, etc.)"
Asegúrese de que en el organizador de objetos la acción del paso IEC esté insertada debajo de la POU
SFC y que en el editor el nombre de la acción esté insertado en el cuadro de la derecha del calificador.
En el cuadro de la izquierda del nombre de la acción, escriba un calificador para la acción IEC.
Introduzca junto al cuadro de la izquierda del nombre de la acción una constante de tiempo detrás del calificador.
Introduzca junto a la casilla de la derecha del calificador el nombre de una acción o el nombre de una
variable definida en el proyecto.
Abra el cuadro de diálogo 'atributos de paso' para el paso '<Nombre>' e introduzca una variable de tiempo o una constante de tiempo válida.
Ya hay una etiqueta de salto o un paso con este nombre. Por favor, cambie el nombre correspondiente.
4368 "La acción '<nombre>' se utiliza en cadenas de varios pasos, donde una contiene a la otra.
La acción '<Nombre>' se utiliza en la POU, así como en una o varias acciones de la POU.
Se utilizan varias redes FBD o LD para una transición. Por favor, reduzca a 1 red.
Defina los límites de tiempo del paso en los atributos del paso utilizando una variable de tipo TIME o
mediante una definición de tiempo en el formato correcto (por ejemplo, "t#200ms").
Hay una acción asignada a una POU que no es SFC (ver en el Organizador de objetos), que está
programada en SFC y que contiene acciones IEC. Reemplace esta acción por una que no contenga
acciones IEC.
4374 "Paso esperado en lugar de transición '<nombre>'"
La POU de SFC está dañada, posiblemente debido a cualquier acción de exportación e importación.
La POU de SFC está dañada, posiblemente debido a cualquier acción de exportación e importación.
La POU de SFC está dañada, posiblemente debido a cualquier acción de exportación e importación.
La POU de SFC está dañada, posiblemente debido a cualquier acción de exportación e importación.
4401 "La constante de tiempo S5 <número> segundos es demasiado grande (máx. 9990s)."
Asegúrese de que solo accede a las variables que se definen como entrada o salida.
Algunos comandos de STEP5/7 no son convertibles a IEC 61131-3, por ejemplo, comandos de CPU como MAS.
Algunos operandos de STEP5/7 no son convertibles a IEC 61131-3 respectivamente, falta un operando.
Algunas instrucciones de STEP5/7 no se pueden convertir a IEC 61131-3, por ejemplo, DUF.
Un comando, que conecta los dos accus, no se puede convertir, porque los valores de accu no están
definidos.
4424 "Advertencia: Falta FB/FX para la llamada o los parámetros no son válidos o tienen parámetros '0'"
La POU llamada aún no se ha importado o no es correcta o no tiene parámetros (en este último caso,
puede ignorar el mensaje de error).
4426 "POU no tiene un nombre de bloque de STEP 5 válido, por ejemplo, PB10"
En IEC 61131-3 El temporizador, el contador y las POU no se pueden convertir como parámetros formales.
En IEC 61131-3, las etiquetas de salto no se pueden insertar en ninguna posición deseada.
El comando que utiliza VKE no se puede convertir, porque no se conoce el valor de VKE.
La variable watch no se declara dentro del proyecto. Al presionar <F2> obtiene el asistente de entrada
que enumera las variables declaradas.
Das Pragma no se puede usar en esta ubicación. Consulte la Ayuda en línea de CoDeSys o la Guía del
usuario, palabra clave 'pragma' para el uso correcto de pragmas.
4550 "Índice fuera de rango definido : Variable OD "número>, línea <número de línea>."
Asegúrese de que el índice esté dentro del área definida en la configuración de destino/funcionalidad de red.
4551 "Subíndice fuera de rango definido : Variable OD "número>, línea <número de línea>."
Asegúrese de que el subíndice esté dentro del área definida en la configuración de destino/funcionalidad de red.
4552 "Índice fuera de rango definido : Parámetro OD "número>, línea <número de línea>."
Asegúrese de que el índice esté dentro del área definida en la configuración de destino/funcionalidad de red.
4553 "Subíndice fuera del rango definido : Parámetro OD "número>, Línea <número de línea>."
Asegúrese de que el subíndice esté dentro del área definida en la configuración de destino/funcionalidad de red.
Introduzca una variable de proyecto válida en la 'variable' archivada. Utilice la sintaxis <nombre de
POU>.<nombre de variable> o para variables globales .<nombre de variable>
4555 "Entrada de tabla vacía, entrada no opcional: Parámetro OD <número>, línea <número de línea>
4556 "Entrada de tabla vacía, entrada no opcional: OD variable <número>, línea <número>"
Se ha superado el tamaño máximo de los datos que se pueden cargar en el controlador a través de
listas de parámetros de tipo Parámetros. Este tamaño está definido por el sistema de destino. La
información sobre el tamaño de los datos se muestra en la ventana de mensajes en la compilación.
Reduzca el tamaño de las listas de parámetros.
4558 "La memoria variable requerida es demasiado grande"
Se ha superado el tamaño máximo de los datos que se pueden cargar en el controlador a través de
listas de parámetros de tipo Variables. Este tamaño está definido por el sistema de destino. La
información sobre el tamaño de los datos se muestra en la ventana de mensajes en la compilación.
Reduzca el tamaño de las listas de parámetros.
4560
"Valor no válido: Diccionario '<Nombre>', columna '<Nombre>', línea '<número de línea>'"
Revisa esta entrada. Depende de la definición de columna (atributo) utilizada actualmente qué entradas
son válidas para este campo. Esta definición viene dada por el fichero de descripción XML específico
del destino del Gestor de parámetros o por la parametrización estándar que se utilizará si no hay
fichero descriptivo.
4561
"Columna no definida: '<Nombre>'"
Las entradas de una columna de la lista de parámetros hacen referencia a otra columna, que sin
embargo no está definida. Las definiciones de columna vienen dadas por el archivo de descripción
(XML) del Administrador de parámetros para el destino actual. Si no se dispone de un archivo de
descripción, se utiliza la configuración estándar.
4562
"Índice/subíndice ya utilizado: Diccionario '<Nombre>', línea '<Número de línea>'"
La combinación Índice/Subíndice debe ser única en todas las listas de parámetros, ya que se puede
utilizar para el acceso a los parámetros. Corrija los índices en consecuencia.
4563
"Identificador '<Nombre>' ya utilizado: Diccionario '<Nombre>', línea '<Número de línea>'"
El nombre debe ser único en todas las listas de parámetros, ya que se puede utilizar para el acceso a
los parámetros.
4564
"El índice '<Nombre>' está fuera de rango: Diccionario '<Nombre>', línea '<Número de línea>' "
Introduzca un índice que esté dentro del rango definido en la configuración de destino, categoría
funcionalidad de red en el campo 'Rango de índice...' para los tipos de lista respectivos (Variables,
Parámetros, Asignaciones).
4565
"El subíndice '<Nombre>' está fuera de rango: Diccionario '<Nombre>', línea '<Número de línea>' "
Introduzca un subíndice que esté dentro del rango definido en la configuración de destino, categoría
funcionalidad de red en el campo 'Rango de subíndice'.
4566
"Se ha producido un error durante la importación del gestor de parámetros"
Ha importado un archivo de exportación que contiene información errónea en el Administrador de
parámetros. Compruebe el archivo *.exp.
4600
"Networkvariables: la expresión '<name>' no es de tipo bool!"
Asegúrese de que la variable definida en el cuadro de diálogo de propiedades de la lista de variables
de red en la opción 'Transmitir en evento', sea de tipo BOOL.
4601
"Variables de red '<name>': No se ha encontrado ninguna tarea cíclica o libre para el
intercambio de variables de red"
No hay ninguna tarea cíclica o libre PLC_PRG en el proyecto en la que se utilicen las variables de red
de tipo CAN o UDP de la lista dada (¡solo la declaración no es suficiente!). Debe tener cuidado de que
las variables se utilicen en una tarea adecuada o en PLC_PRG. Si desea utilizarlos en varias tareas,
tenga en cuenta que en el intercambio de datos se considerará la tarea con la prioridad más alta.
4602
"'<nombre de la lista de variables de red>': El objeto utiliza el puerto UDP '<número de puerto>'
en lugar de '<número de puerto>'"
En la configuración de la lista de variables de red con nombre se utiliza un número de puerto que no es
el mismo que se utiliza en la primera lista de variables de red que se encuentra en la carpeta de
variables globales. ¡Tenga cuidado de que todas las listas de variables de red estén usando el mismo
puerto!
4604
"Variables de red '<nombre>': El identificador base se ha utilizado más de una vez".
El mismo COB-ID se utiliza en los ajustes de configuración ('Objeto', 'Propiedades') de varias listas de
variables de red. Asigne identificadores únicos.
4605
"Variables de red '<name>': ID de CAN COB duplicado".
En la configuración de una lista de variables de red ('Objeto', 'Propiedades') se utiliza un COB-ID, que
también se especifica en la configuración del PLC CAN. Asigne identificadores únicos.
4620
Se han encontrado variables no utilizadas en el proyecto. Consulte el Capítulo 4.3 para obtener la
descripción del comando 'Proyecto' 'Verificar' las variables no utilizadas.
4621
Hay superposiciones en la asignación de variables a áreas de memoria a través de la declaración "AT".
Véase el Capítulo 4.3 para la descripción del comando 'Proyecto', 'Comprobar', 'Superposición de áreas
de memoria'.
4622
Se hace referencia a las direcciones IEC asignadas a la misma área de memoria en más de una tarea.
Consulte el Capítulo 4.3 para la descripción del comando 'Proyecto', 'Verificar', 'Acceso concurrente'.
4623
El proyecto obtiene acceso de escritura a la misma área de memoria en más de un lugar. Consulte el
Capítulo 4.3 para la descripción del comando 'Proyecto', 'Verificar', 'Múltiples escrituras en la salida'.
En la configuración del PLC, en la definición del grupo de ejes (cuadro de diálogo 'Parámetros del
módulo', columna 'Valor') hay un nombre definido para la tarea que controla la transferencia de datos
de este grupo de ejes, que no se conoce en la configuración de la tarea. Corregir la configuración de la
tarea o la configuración del PLC en consecuencia.
4651
"AxisGroup '<Name>': Cycletime (dwCycle) not set."
En el cuadro de diálogo "Parámetros del módulo" del grupo de ejes, introduzca un valor para el tiempo de ciclo (dwCycle).
4656
"Unidad '<name>': el factor de escala no debe ser 0.
Abra la configuración del PLC y compruebe las entradas de escala en el cuadro de diálogo de
configuración del accionamiento. Todos los campos deben tener entradas que no sean iguales a "0".
4670
"Programa CNC '<Nombre>': No se ha encontrado la variable global '<Nombre>'".
En el programa CNC se utiliza una variable global (por ejemplo, $glob_var$), que no está definida en el
proyecto. Agregue la declaración apropiada o corrija la asignación a la variable en el programa CNC.
Hay una variable asignada en una instrucción del programa CNC, que se declara de un tipo de datos
que no es válido en este lugar. Utilice otra variable o corrija la especificación de tipo.
Marque el tipo de datos que se especifica en el cuadro de diálogo del Editor CAM ''Opciones de
compilación..' para la tabla de puntos equidistante o optimizada para elementos.
En este CAM se utilizan puntos que están fuera del rango de datos especificado para la tabla de
puntos. Para la definición del rango actual, consulte el cuadro de diálogo 'Opciones de compilación..' en
el editor CAM.
4700 "'<Number>' ('<Name>'): La expresión de observación '<Name>' no es una variable numérica."
La visualización contiene una variable que no es de tipo STRING, aunque esto es necesario en este
lugar (por ejemplo, en la configuración de la información sobre herramientas).
En esta lista de observación, utilizada en una visualización (comando INTERN en la categoría Entrada),
hay un valor inicial erróneo. Revisa la lista de usados.
4705 "'<Nombre>' ('<Número>'): No hay grupo de alarma válido asignado a la tabla de alarmas."
Introduzca un grupo de alarmas válido en el cuadro de diálogo de configuración de la tabla de alarmas (categoría Tabla de alarmas).
4706 "'<Name>' ('<Number>'): El uso de tablas de alarmas requiere que se active el ajuste de destino
'Manejo de alarmas en el controlador'.."
4707 "'<Name>' ('<Number>'): Las tablas de alarmas no son compatibles con el objetivo actual. Elimine estos
elementos de la visualización de destino".
La salida de texto en el elemento de visualización está configurada para funcionar a través de textos
dinámicos o textos Unicode. Además, la opción "Oculto" está activada en la categoría "Entrada". Esto
no es compatible con Target-Visualization.
Está utilizando una conversión de tipos que no es compatible con el generador de código elegido actualmente.
Los límites de la matriz son demasiado grandes para una variable de 32 bits. Reduzca el intervalo de índice de
matriz.
11 Índice
8
ALARM_TASK 10-97
8.3 Formato de Manejo de alarmas en el PLC
archivo 10-97 8051 10-97 Alarmas 6-9
10-91 ALIAS 10-37
Un Alineación en accesos de puntero
10-35 Rama alternativa 2-21 Rama
Aceptar derechos de acceso 4-42 Aceptar alternativa en SFC 2-21, 5-42 Análisis
cambio 4-41 Aceptar artículo modificado 4-41 de expresiones 10-61 AnálisisNew.lib
Aceptar propiedades 4-41 Conflicto de acceso 10-61
4-45 Protección de acceso 4-24, 4-46 Derecho Y 10-4 Y Operador en AWL
de acceso 4-46 Derecho de acceso del 2-9 Anexar programa
parámetro DeviceNet-Slave 6-49 Derechos de Llamar 6-54 Anexar tarea
acceso 4-58 Acuse de recibo 6-10 Acuse de 6-51, 6-52 Coseno de arco
recibo de alarmas 6-9 Acción Asociado en SFC 10-23 Seno de arco 10-26
5-47 Acción 2-7, 2-16, 4-59 Acción en SFC 10-23 Tangente de arco
Agregar 5-43 Zoom 5-44 Acción en el error de 10-23 Archivo 10-72
tiempo de espera 6-48 Acciones ocultar Archivo postal 4-25
programas 4-12 Activar consumidor de latidos Argumento 2-1, 2-3
6-43 Activar consumidor de latidos 6-39 Activar la Argumentos 2-5 Organizar
generación de latidos 6-43 Activar el productor de símbolos 4-83 Cuadro de
latidos 6-39 Activar la variable del sistema diálogo Declaración de
CurrentVisu 10-97 Activación 6-33 Activo paso matriz 5-8
2-17
MATRIZ 10-33
Matriz\Acceso 10-33
Matriz\Inicialización 10-33 Matrices en
el administrador de parámetros 6-73
Información sobre herramientas de AS
para atributos de paso 5-45, 5-46
Formato ASCII para traza 6-69 Archivo
ASD 4-4
ASIN 10-23
ADD 10-1 Agregar archivo de configuración Solicite información sobre el
6-24 Agregar etiqueta a la rama paralela proyecto 4-5 archivo asl \*
5-43 Agregar objeto 4-54, 4-55 ADD MERGEFORMAT 4-5 Tarea
Operador en AWL 2-9 Agregar objetos 2-11, 5-33 Asignación Combs
compartidos 4-52 Agregar a la lista de 5-33 Asignación en FBD 5-31
seguimiento 6-61 Características Operador de asignación 2-13
adicionales de CoDeSys 1-2 Funciones AT 5-6 AT
adicionales en línea 1-1 Dirección Declaración 5-6
DeviceNet-Master 6-45 DeviceNet-Slave ATAN 10-23
6-46 Comprobación de direcciones para la Adjuntar reloj variable 6-61
configuración del PLC 10-94 Direcciones Modo de borrado automático
10-29 6-30 Eliminación automática
6-48 Carga automática 4-5
Restablecimiento automático
ADR 10-13 Dirección de una 6-48 Guardado automático
instancia 10-13 4-4 Guardado automático
ADRINST 10-13 antes de compilar 4-5
Acuse de recibo de alarma 6-10 Clase de Declaración automática 4-6,
alarma 6-13 Clases de alarma 6-10 5-8 Formato automático 4-6
Configuración de alarma 6-10, 6-13 Inicio automático 6-43 Inicio
Ajustes de configuración de alarma 6-16 automático 6-30 Conexiones
Configuración de alarma\Ajustes en línea disponibles DeviceNet-Slave
6-16 Desactivación de alarma 6-13 6-49
Desactivación de evaluación de alarmas
6-16 Evento de alarma 6-9 Grupo de B
alarma 6-13 Mensaje de alarma 6-13 Volver un nivel de macro
Prioridad de alarma 6-9, 6-13 Ahorro de 5-59 Copia de seguridad
alarma 6-15 Estado de alarma 6-9 Tipo automática 4-4 Archivo de
de alarma 6-13 horneado 4-4 Parámetro
base DeviceNet-Master
BITADR 10-13
Canal de bits 6-29
Funciones de bits 10-50
Valores de bits 4-7
PARPADEO 10-57
Bloque 5-39
BOOL 10-31
Constantes BOOL 10-25 BOOL_TO Conversiones
10-14 Proyecto de arranque 4-5, 4-7, 4-12, 4-71,
4-82, 10-76, 10-94 Caja 5-32 Caja con entrada EN
en LD 5-38 Punto de interrupción Eliminar 5-24
Conjunto 5-23 Punto de interrupción 1-1, 2-24, 5-22
Punto de interrupción 5-24 Cuadro de diálogo Punto
de interrupción 4-73 Posición del punto de CASO 2-14
interrupción 4-72 Posiciones del punto de Instrucción CASE 2-14
interrupción en el editor de texto 5-23 Difusión 6-3 CASEFOR bucle 2-11 CFC
Archivo ini del navegador 6-81 Compilación 4-11, Volver uno/todos Nivel macro
4-30, 4-69, 10-71 Identificador de bus 6-42 5-59 Cambio de conexiones 5-54
Parámetros de bus Maestro DP 6-31 BusDiag.lib Marcador de conexión 5-54
6-26 Diagnóstico de bus 6-26 POR 2-14 BYTES Copiar elementos 5-53 Crear
10-31 Alineación de bytes 10-86 Constantes de macro 5-58 Creación de
BYTES 10-26 Modo de direccionamiento de bytes conexiones 5-53 Posiciones del
10-94 Funciones de bytes 10-50 cursor 5-49 Eliminación de
conexiones 5-54 Orden de
visualización 5-55 Editar macro
5-58 EN/ENO 5-52 Expandir
macro 5-59 Rutas de
retroalimentación 5-59 Insertar
caja 5-50 Insertar comentario
5-51 Insertar in-pin 5-51 Insertar
entrada 5-50 Insertar entrada de
la caja 5-51 Insertar
entradas/salidas 5-55 Insertar
salto 5-50 Insertar etiqueta 5-51
Insertar el pasador de salida 5-51
Salida de inserción 5-50 Retorno
C de inserción 5-51 Elementos
C C en AWL 2-9 móviles 5-53 Negación 5-51
CAL 10-14
Orden – Uno al revés 5-56 Orden – Uno hacia Contacto 2-22, 5-37 Operador de contenido
adelante 5-56 Orden – Al principio 5-56 10-14, 10-34 Menú contextual 4-3 Ayuda
Orden – Hasta el final 5-56 Orden según flujo de contextual 4-84 Editor de gráficos de
datos 5-56 Orden de ejecución 5-55 Orden funciones continuas 2-21 Editor de gráficos de
topológicamente 5-55 Propiedades de las POU funciones continuas (CFC) 5-49 Variable
5-52 Seleccionar elementos 5-53 controlada 10-54, 10-55 Índice del controlador
Establecer/Restablecer 5-51 CFC 2-21 CFC en 6-4 Estado del controlador 4-82 Conversión de
modo en línea 5-59 Archivo CFG 6-24 Cambio de tipos de números enteros 10-16 Conversiones
estado 6-48 Cambiar valores en línea 2-24 Canal de Tipos 10-14 Convertir objeto 4-56
6-28 Parámetros de canal 6-29 Parámetros Conversión de configuraciones de PLC
personalizados 6-29 Canal 6-28 ID de canal 6-28 antiguas 6-24 Conversión de S5 a IEC 1131-3
Parámetro de canal 6-29 CURVA DE 10-80 Copia 4-62 Copiar objeto 4-56, 10-73
CARACTERES 10-59 Comprobación 10-71 Copiar elementos en CFC 5-53 Copiar en FBD
Comprobación al iniciar sesión 4-8 5-34 COS 10-22 Coseno 10-22 Crear copia de
Comprobación automática 4-13 Comprobación seguridad 4-4 Crear archivo binario de la
de direcciones superpuestas 6-23 Entrada 4-19 aplicación \* MERGEFORMAT 4-12 Crear
Entrada 4-49 Salida 4-18 Salida 4-49 Comprobar información de símbolo binario 4-20 Crear
el código de producto de DeviceNet-Slave 6-46 proyecto de arranque 4-20, 10-76 Crear
Comprobar la versión del producto para proyecto de arranque 4-82 Crear macro en
DeviceNet-Slave 6-46 Comprobar el proyecto CFC 5-58 Crear archivo de traducción 4-32
Acceso simultáneo 4-45 Acceso de escritura CreateBasicSDOs 6-39 CreateCommSDOs
múltiple en la salida 4-45 Áreas de memoria 6-39 CreateMappingSDOs 6-39 Lista de
superpuestas 4-44 Variables no utilizadas 4-44 referencias cruzadas 4-60 Lista de referencias
Comprobar proyecto 4-44 Comprobar el cruzadas 4-59, 6-59 Lista de referencias
identificador de proveedor de DeviceNet-Slave cruzadas 5-2 CTD 10-46 CTU 10-45 CTUD
6-46 CheckBounds 10-34 CheckDivReal 10-2 10-46 CurrentVisu 10-97 Posiciones del cursor
Función CheckPointer 10-35 Función en FBD 5-30 Posiciones del cursor en el CFC
CheckPointerAligned 10-35 CheckRangeSigned 5-49 Posiciones del cursor en el LD Editor
10-37 CheckRangeUnsigned 10-37 Comprueba 5-36 Ajuste del cursor en FBD 5-31
si DeviceNet-Slave 6-46 Suma de comprobación Parámetros personalizados Módulo de E/S
4-82 Archivo CI 4-25 Limpiar 10-71 Limpiar todo 6-28 Parámetros personalizados 6-24, 6-29
4-31 Cerrar todo 4-83 Cerrar archivo 4-23 CMS Corte 4-61 Corte en FBD 5-34 Forzamiento
Grupo de prioridad 6-39 COB-ID 6-36, 6-39 independiente del ciclo) 10-94 Cíclico 6-48
COB-ID 6-4 CoDeSys 1-1 Bobina 2-22, 5-38 Tarea cíclica 6-53
Colores 4-9 Entrada de comandos en el
PLC-Browser 6-81 Archivo de comandos 10-70
Línea de comandos 10-69 Comentario anidado
4-11 Comentario Módulo de E/S 6-25 Comentario
5-1, 5-9, 5-27 Comentario en CFC 5-51
Comunicación DDE 8-1 Interfaz simbólica 4-15
Comunicación 4-15 Ciclo de comunicación
Período 6-36 Parámetros de comunicación
Comprobación al iniciar sesión 4-8 Diálogo 4-81,
4-82 No guardar en el proyecto 4-8
Comprobación rápida 4-82 Guardar con el
proyecto 4-8 Parámetros de comunicación 4-78
Tiempo de espera de las comunicaciones 4-8
Tiempo de espera de las comunicaciones para la
descarga 4-8 Comparar 4-38 Comparar Proyecto
Trabajar en Comparar Modo 4-41 Comparar
proyecto 4-41 Comparar proyectos 4-38, 4-39
Comparar con ENI-Proyecto 4-38 Comparación
de proyectos 4-38 Resultado de la comparación
4-39 Compilación 4-69 Compilar 10-71 Compilar
opciones de archivo 4-19 Compilar archivos
directorio 4-10 Compilador versión 4-12
Comprimir 6-68 Compresión 10-98 CONCAT
10-40 Concatenación 10-40 Acceso simultáneo
4-45 Archivo de configuración 6-24 Directorio de
archivos de configuración 4-10 Configuración de
módulos CAN 6-36 Configuración de módulos
Profibus 6-29 Configurar ENI 4-17 Configurar el
archivo de símbolos 4-15 Conexiones de entrada
configuradas DeviceNet-Slave 6-49 Marcador de
conexión en CFC 5-54 Conexiones 5-54
Conexiones en CFC 5-53, 5-54 CONSTANTE 5-5
EXPT 10-24
Ajustes ampliados para un DeviceNet-Slave 6-48
Ajustes ampliados para DeviceNet-Slave 6-46
EXTERNO 5-5
Evento externo 6-53 Biblioteca
externa 4-23, 6-17 Configuración de
seguimiento externo Cargar desde EN/ONE y CFC 5-52
el archivo 6-66, 6-70 Cargar desde Extras Propiedades en CFC 5-52 Extras
el PLC 6-66 Cargar desde el destino Seleccionar todo en CFC 5-53 Extras Marcador
6-70 Guardar en el archivo 6-66, de conexión en CFC 5-54 Extras Orden de
6-69 Guardar en el destino 6-70 visualización en CFC 5-55 Extras Orden
Establecer como configuración de topológico en CFC 5-55 Extras Orden - Uno
proyecto 6-70 Variable externa 5-5 hacia adelante 5-56 Extras Orden - Uno al revés
5-56 Extras Orden – Al principio 5-56 Extras
EXTRACTO 10-50 Orden – Hasta el final 5-56 Extras Ordene todo
Extras Mostrar referencias de acuerdo con el flujo de datos 5-56 Extras
cruzadas 5-2 Extras Aceptar Crear macro en CFC 5-58 Extras Editar macro
derechos de acceso 4-42 en CFC 5-58 Extras Expandir macro en CFC
Aceptar cambio 4-41 Aceptar 5-59 Extras Atrás un nivel macro 5-59 Extras
artículo modificado 4-41 Zoom a POU en CFC 5-61 Extras Hacer archivo
Aceptar propiedades 4-41 Docuframe 6-8 Extras Hacer archivo Docuframe
Siguiente diferencia 4-41 6-8 Extras Vincular archivo Docu 6-8 Extras
Instancia abierta 5-2 Ajustes para la configuración de alarmas 6-16
Diferencia anterior 4-41 Zoom Extras Propiedades de una biblioteca 6-18
a POU 5-2 Extras Opciones de Extras Reemplazar elemento 6-22 Extras
monitoreo 5-22 Extras Calcular direcciones 6-24 Extras Agregar archivo
Opciones 5-27 Extras Negar de configuración 6-24 Extras Configuración
en FBD 5-33 Extras Set/Reset estándar 6-24 Extras Convertir 6-24 Extras
en FBD 5-33 Extras Ver en Establecer tarea de depuración 6-57 Extras
FBD 5-34 Extras Abrir Habilitar/deshabilitar tarea 6-57 Extras Pila de
instancia en FBD 5-34 Extras llamadas... 6-57 Extras Añadir a la lista de
Pegar después en LD 5-40 seguimiento 6-61 Extras En la nueva lista de
Extras Pegar abajo en LD 5-40 seguimiento 6-62 Extras Cambiar el nombre de
G HISTÉRESIS 10-60
L
Etiqueta 5-43 Etiqueta para redes
5-27 Etiqueta en CFC 5-51 Versión de
la etiqueta 4-52 Comentario de
inserción de escalera 5-28 Diagrama
de escalera 2-22 Diagrama de
escalera (LD) 2-22 Diagrama de
escalera en modo en línea 5-41 Editor
de escaleras 5-35 Idioma 10-75
LÍMITE 10-10
Idioma 'Mostrar proyecto traducido'
LÍMITEALARMA 10-61
4-35 'Alternar traducción' 4-36 LIN_TRAFO 10-52
Campo de número de línea 4-77
Campo de número de línea en editores
de texto 5-23 Número de línea en
IDIOMA 6-16 editores de texto 5-24 Números de
Archivo de idioma 10-74 Archivo de línea en el editor de declaraciones 5-9
idioma activado / desactivado 10-74 Archivo de documentos de enlace 6-8
Idioma en visualización 10-75 Cambio Enlace Pragma 5-13 Vinculación de
de idioma 4-32 Idiomas 2-9 Posición POU 5-13 Vinculación de variables
del cursor LD 5-36 Insertar en bloques mediante EXCEL 8-4 Componentes de
5-39 Insertar caja con entrada EN la lista 4-6 Identificador de la lista 6-4
5-38, 5-39 Insertar bobina 5-38 Insertar Tipos de lista 6-73
contacto 5-37 Insertar bloque de LN 10-21 Cargar y guardar 4-4
función 5-38 Insertar salto 5-40 Insertar Cargar Descargar información
contacto paralelo 5-37 Insertar retorno 4-31 Cargar archivo desde el
5-40 Pegar por encima de 5-40 Pegar controlador 4-83 Descripción del
después en LD 5-40 Pegar por debajo módulo de carga 6-25 Estado del
de 5-40 módulo de carga 6-50 Valores de
carga 6-69 Lista de vigilancia de
carga 6-62 Variable local 5-4
Tiempo de bloqueo para el envío
6-48 Registro 6-18 REGISTRO
Almacenamiento 6-20
LD 2-22 LD como FBD
2-23 LD Editor 5-35 LD
Operador en AWL 2-9 REGISTRO 2-25, 4-10
REGISTRO 10-21 Archivo
EL 10-11 EL Operator in de registro para el proyecto
AWL 2-9 lecsfc.lib 2-17 6-18 Menú de registro 6-19
Logaritmo 10-21 Inicio de
IZQUIERDA sesión 10-71 Inicio de sesión
10-39 LENTE 4-69, 10-70 Iniciar sesión en
10-39
Longitud en bytes 6-49 Longitud de conexión la base de datos 4-48 Iniciar
para DeviceNet-Slave 6-49 Directorio de sesión en la base de datos
bibliotecas 4-10 Análisis de bibliotecasNew.lib ENI 4-17 Cerrar sesión 4-71,
10-61 Definir 6-17 Externo 4-23, 6-17 Insertar 10-70, 10-71 Bucle 2-11
6-17 Interno 4-23, 6-17 Licencias 4-25 LREAL 10-31 LREAL
Vinculación 10-73 Propiedades 6-18 Eliminar como REALES 4-12
6-18 Standard.lib 6-17 Definido por el usuario Constantes LREAL 10-26
LREAL_TO Conversiones 10-17
LT 10-11 LT Operador
en AWL 2-9
M JUGADA 10-3
Macro 4-13, 4-20 Macro después Elementos móviles en CFC 5-53
de compilar 4-13 Macro antes de MUL 10-2 Operador MUL en AWL
compilar 4-13 Macro en CFC 5-58 2-9 Multicanal 6-68 Encuesta de
Biblioteca de macros 4-21 Macros multidifusión 6-48 Registro múltiple
4-67 Macros en PLC-Browser 6-83 4-51 Salida múltiple 4-51 Definición
Programa principal 2-7 Crear múltiple 4-51 Deshacer múltiple
archivo docuframe 4-28 Hacer Salida 4-51 Acceso de escritura
archivo Docuframe 6-8 Gestión de múltiple en la salida 4-45 Entorno
proyectos 4-22 Variable multitarea 10-85 Operación
manipulada 10-54, 10-55 Rango de multiusuario 7-1
índice de mapeo 6-44
Asignaciones 6-73, 10-96 Marca
4-7 Bloques de marcado en SFC MUX 10-10
5-41 Maquetación maestra 4-57
N
N Modificador en AWL 2-9 Nombre de
una visualización 10-106 Nomenclatura
MAX 10-9 Límite máximo de reintentos 6-31 de identificadores 10-103
Retardo máximo de la estación 6-31 Tamaño
máximo de comentario 5-27 Número máximo de NE 10-12 NE Operador en
segmentos de datos globales 10-92 Número AWL 2-9 Negar en CFC
máximo de POU 10-92 Representación MDI 4-8 5-51 Negación en FBD
Diseño de memoria 10-92 Ubicación de la 5-33 Negación en LD 5-40
memoria 10-30 Registro de menús 6-19 Menú en Comentarios anidados 4-11
línea 4-67 Combinar archivo de mensajes 4-42 NetVarUdp_lib_V23.lib 6-5
10-71 Ventana de mensajes 4-2, 4-43, 4-83 Comentario de red 5-27
Mensajes 10-71 Mensajes 4-83 Red 5-27 Red 5-30 Red
(después) 5-29 Red (antes)
5-29 Comentarios de red
5-27 Editor de red Modo en
línea 5-29 Funcionalidad de
red 6-2 Red en FBD 2-21
Red en LD 2-22 Red en
MID 10-40 MIN 10-9 Min. Intervalo Esclavo 6-31 SFC 2-16 Número de red
Min./Max. valor del parámetro DeviceNet-Slave 6-49 5-27 Campo de número de
Min.Retardo de la estación 6-31 Tamaño mínimo del red 4-77 Tipo de red 6-4
comentario 5-27 Edición de variables de red
6-5 Variables de red 6-2,
6-3 Variables de red 6-6
MIPS 10-89 Variables de red 10-96
MOD 10-3 Funcionalidad de red 10-96
Modificador 2-9 Modificadores y Nueva declaración 5-9
operadores en IL 2-9 ID de módulo Nueva declaración 5-10
6-37 Diagnóstico del módulo 6-50 ID Nuevo de la plantilla 4-22
del módulo 6-25 Parámetros del Nueva lista de vigilancia
módulo DeviceNet-Slave 6-49 6-61 Siguiente error 4-67
Maestro DP 6-30 Esclavo DP 6-36 Sin inicialización 6-38 ID de
Módulo de E/S 6-28 Parámetros del nodo 6-42 Número de nodo
módulo CAN Master 6-37 6-25 Telegrama de
DeviceNet-Master 6-46 Estado del protección de nodos 6-43
módulo 6-50 Supervisión Editor de Protección de nodos 6-39
declaraciones 5-10 Pragma 5-11 ID de nodo 6-38 ID de nodo
Editor de texto 5-22 Gestor de relojes 6-36 no persistente 5-18
y recetas 6-63 Supervisión 2-24
Monitoreo activo 6-62 Monitoreo de
tipos complejos 4-7 Opciones de
monitoreo 5-22 Más configuraciones
para un DeviceNet-Slave 6-48
Motorola 68K 10-86
NOT 10-6
P
PAQUETE 10-51
Pack variables 6-4
Ramal paralela 2-21
Ramal paralela en SFC 5-43 Ramal PID_FIXCYCLE 10-56 Marcadores de posición para
paralelo en SFC 2-21, 5-42, 5-43 Contacto mensajes de alarma 6-10 Configuración del PLC Añadir
paralelo 5-37 Contactos paralelos 2-22 archivo de configuración 6-24 Comprobación de
Asignación de parámetros en la llamada al dirección activada/desactivada 10-94 Bitchannel 6-29
programa 2-5 Lista de parámetros Configuración CAN 6-36 CanDevice \* MERGEFORMAT
Descargar con el proyecto 6-76 Tipo 6-73 6-41 CANopen-Slave 6-41 Canal 6-28 PLC programable
Matriz del administrador de parámetros CoDeSys como CANopen-Slave 6-
6-73 Copiar lista 6-76 Lista de corte 6-76
Cortar/Copiar/Pegar línea 6-76 Eliminar
línea 6-76 Eliminar lista 6-76 Exportar 6-79
Fundido de salida y fundido de entrada
Líneas 6-76 Formato Dec/Hex 6-76 Bloque 41 Compatibilidad 6-20 Convertir
de funciones 6-73 Importar 6-79 Insertar configuraciones antiguas 6-24 Diálogo
línea 6-76 Insertar lista 6-75, 6-76, 6-77 de parámetros personalizados 6-24
Instancia 6-73 Lista de instancias 6-73 DeviceNet 6-45 Diagnóstico 6-50
Línea después de 6-76 Tipos de lista 6-73 Descargar como archivo 10-94 Módulo
Asignaciones 6-73 Valores de supervisión de exportación 6-23 Ajustes generales
6-78 Modo en línea 6-78 Parámetros 6-73 6-23 Escaneo de hardware 6-50
Pegar lista 6-76 Cambiar el nombre de la Módulo de E/S 6-25 Módulo de
lista 6-76 Ordenar listas 6-77 Variable de importación 6-23 Insertar/Anexar
estructura 6-73 Parámetros del sistema elementos 6-22 Modo en línea 6-49
6-73 Plantilla 6-73 Carga y descarga 6-78 Módulos Profibus 6-29
Variables 6-73 Valores de escritura 6-78 Sustitución/conmutación de elementos
Administrador de parámetros 5-14 Editor 6-22 Selección de objetos de datos de
de parámetros 6-72 Parámetros servicio 6-22 6-41 Configuración
DeviceNet-Slave 6-49 Administrador de estándar 6-24 Nombres simbólicos
parámetros 6-73 Configuración de destino 6-22 Trabajando en 6-21, 6-22
10-96 Parámetros para la tarea 6-54 Configuración del PLC V2.1 6-21
Contraseña 4-13, 10-70 Contraseña a
través del archivo de comandos 10-74
Contraseñas 4-46 Pegar arriba en LD 5-40
Pegar después en LD 5-40 Pegar después
en SFC 5-44 Pegar abajo en LD 5-40
Pegar rama paralela 5-43 Pegar 4-62 PLC_PRG 2-7
Pegar FBD 5-34 Controlador P 10-55 Comando de cancelación de PLC-Browser 6-84
Comandos 6-81 Función 6-80 Historia 6-84
Archivo INI 6-81 Macros 6-83 Imprimir el último
comando 6-84 Guardar lista de historial 6-84
Navegador PLC 6-80 Navegador PLC 10-94
Opciones de PLC-Browser 6-83 Comprobación
de la dirección del puntero 10-35 Comprobación
de alineación 10-35 Puntero 10-34 Sondeo 6-48
Tiempo de espera del sondeo 6-31 POU
(Unidad de Organización del Programa) 1-1,
2-1, 4-2 Nombre de POU 10-105 Power PC
10-88 Pragma Bitaccess 5-13 Enlace 5-13 no
persistente 5-18 símbolo 5-12 Pragma 5-11
Pragma 5-13 Pragma 5-14 Instrucciones de
Pragma 5-11 Pragmas para las partes de
declaración de biblioteca 5-13 Pragmas para
tipos de datos no persistentes 5-18 Pragmas
para el administrador de parámetros 5-14
Multitarea preventiva 10-94 Diferencia anterior
4-41 Error anterior 4-67 Imprimir 4-28 Márgenes
de impresión 5-1 Rango de impresión 4-8
Configuración de la impresora 4-28
Configuración de la impresora 10-71
PD 10-54 PDO 6-39 Mapeo PDO 6-43 Archivo-PRM 6-79 Direcciones Profibus 6-30
Mapeo PDO de un módulo CAN 6-39 Modo 6-30 Canal Profibus 6-34 Parámetros del
bus maestro Profibus 6-31 Parámetros DP 6-30
Parámetros del módulo 6-30 Parámetros de la
PERSISTENTE 5-4 base del esclavo Profibus 6-32 Parámetros DP
Variables globales persistentes 6-33 Asignación de grupos 6-35 Entrada/Salida
6-6 Variables persistentes 5-4 6-34 Parámetros del módulo 6-36 Propiedades
Variables persistentes 6-6 6-36 Parámetros de usuario 6-35 Programa 2-5
PI-controller 10-56 Llamada al programa 2-5 Nombre del programa
PID 10-55 10-105 Proyecto Agregar acción 4-59 Agregar
S
S S en AWL 2-9 SFC 2-16 Editor SFC 5-41
S5 10-80 Traza de muestreo 6-64 Banderas SFC 2-19
Guardar (forzamiento) 10-94 Guardar Biblioteca SFC 2-17
como 4-23 Guardar como plantilla 4-55 SFCActionType 2-19
Guardar archivos de configuración en SFCCurrentStep 2-19
el proyecto 6-23 Guardar credenciales SFCEnableLimit 2-19
ENI 4-5 Guardar archivo 4-23 Guardar SFCError 2-19
correo/Archivo 4-25 Guardar valores de SFCErrorAnalyzation 2-19
seguimiento Valores en el archivo SFCErrorPOU 2-19
ASCII 6-69 Guardar valores de SFCErrorStep 2-19 SFCInit
seguimiento 6-69 Guardar lista de 2-19 SFCPause 2-19
seguimiento 6-62 Guardar alarmas SFCQuitError 2-19
6-15 Guardar con el proyecto 4-8 SFCReset 2-19
Configuración del módulo de escaneo SFCStepType 2-19 SFCTip
6-50 Divisor de pantalla 4-2 Archivo 2-19 SFCTipMode 2-19
SDB 4-20 SFCTrans 2-19 Objetos
compartidos 4-16 Opciones
de objetos compartidos 4-19
Turnos 10-6
SDO 6-38, 6-41 Creación de SDO suprimida 6-39
Modo de seguridad 4-7 Seleccionar directorio de
configuración 6-24 Seleccionar archivo de
configuración 6-24 Conexión de E/S SHL 10-6 Acceso directo en
seleccionada 6-48 Selección de elementos en herramientas Crear nuevo 6-87
CFC 5-53 Selección de elementos en la Acceso directo en herramientas
configuración del PLC 6-22 Sensibilidad para el 6-87 Modo de acceso directo 5-7
Accesos directos de herramientas
guardián de tareas 6-54 Gráfico de funciones
6-84 Mostrar pila de llamadas 4-77
secuenciales 2-16 Editor de gráficos de
Mostrar referencias cruzadas 5-2
funciones secuenciales 5-41 Gráfico de Mostrar mensajes de diagnóstico
funciones secuenciales en modo en línea 5-47 6-50 Mostrar diferencias 4-49
Objetos de datos de servicio 6-41 Establecer en Mostrar cuadrícula 6-68 Mostrar
FBD 5-33 Establecer archivo de idioma 10-75 símbolos POU 4-7 Mostrar
Establecer salida en LD 5-40 márgenes de área de impresión
Establecer/Restablecer bobinas 2-23 Set/Reset 4-8 Mostrar proyecto traducido
en CFC 5-51 setreadonly 10-73 Ajustes 4-35 Mostrar historial de versiones
Configuración de alarma 6-16 Ajustes para 4-49
visualización 10-74 Ajustes en la configuración
del PLC 6-23 SFC Añadir acción de entrada 5-43 SHR 10-7 Siemens Import 4-37,
Añadir salida- Acción 5-43 Añadir etiqueta a la 10-79 Manejo simplificado de
rama paralela 5-43 Rama alternativa (izquierda) entradas 10-98 Simulación 2-25,
5-42 Rama alternativa (derecha) 5-42 Acción de 4-67, 4-78, 10-70
asociación 5-47 Borrar acción/transición 5-44 SIN 10-22 Sinusoidal
Eliminar etiqueta de salto 5-44 Eliminar paso y 10-22 Ciclo único 2-24,
tareas en modo en línea 6-55 Estado de una tarea Seguimiento de lectura 6-66 Guardar valores
6-55 Flujo de tiempo 6-55 Plantilla 4-22, 6-73 6-69 Selección de variables de seguimiento
Plantilla para archivo EDS 6-42 Plantilla para 6-66 Mostrar cuadrícula 6-68 Trazar de inicio
objetos 4-55 Editor de texto Punto de interrupción 6-66 Detener el rastro 6-67 Estiramiento 6-68
5-23 Editor de texto 5-23 Texto en visualización Búfer de seguimiento 6-67 Valores en el archivo
4-32 El Editor de Gráficos de Funciones Continuas ASCII 6-69 Escala en Y 6-68 Variable de traza
(CFC) 2-21 El estándar 2-26 Transformación 6-66 10-52 Condición de
transición 5-44 Condición de transición 2-17
Transición en SFC Zoom 5-44 Transición en
SFC 2-17 Nombre de transición 5-42 Transición
para agotar el tiempo de espera 6-48
Transición-Salto 5-43 Traducir a otro idioma
4-31 Traducir proyecto (a otro idioma) 4-35
Archivo de traducción 4-32 Creación del archivo
de traducción 4-32 Edición 4-34 Archivo de
traducción 4-31 Tipo de transmisión 6-40 Tratar
LREAL como REAL 4-12 Datos de tendencia
10-97 TREND_TASK 10-97 TriCore 10-91
Disparador variable 6-15 TRUNC 10-19 TSDR
LUEGO 2-13 6-33 TSP 6-79 Retardo de apagado 10-49
Azulejo Horizontal 4-83 Retardo de encendido 10-48 Tipo de parámetro
Azulejo Vertical 4-83 DeviceNet-Slave 6-49 Tipo 5-7 TIPO 10-35,
TIEMPO 10-32 10-36, 10-37 Conversiones de tipo 10-14 Literal
Constantes de tiempo 10-25 Tiempo con tipo 5-5
para el guardián de tareas 6-54
Gestión del tiempo en SFC 5-45
Escaneo de tiempo en SFC 2-19
TIME_OF_DAY 10-32 Constantes
de TIME_OF_DAY 10-25 TIME_TO
Conversiones 10-17 TIME-Function
10-30 Tiempo de espera 4-8 Tiempo
de espera DeviceNet-Slave 6-48,
6-49 Temporizador 10-47
Temporizador en LD 5-39 Archivo-tlt
4-32 Archivo-TNF 6-79 A 2-14
TO_BOOL Conversiones 10-15 TOD
10-32 TOD_TO Conversiones 10-17
TOF 10-49 Alternar punto de
interrupción 4-72 Alternar traducción
4-36 TON 10-48 TON en LD 5-39
Barra de herramientas 4-7
Herramientas Creación de nuevos
accesos directos 6-87 Ejecución de
accesos directos 6-88 Preguntas
frecuentes 6-88 Propiedades de los
objetos 6-84 Guardar atajos de
herramientas 6-88 Atajo 6-84
Herramientas 6-84 Información
sobre herramientas SFC 5-47
Información sobre herramientas
4-53, 5-22, 5-29, 5-35, 5-41
Información sobre herramientas para
comentarios 5-1 Información sobre
herramientas para identificadores
5-2 TP 10-47 Traza Cargar desde el
archivo 6-70 Cargar desde el destino
U
6-70 Guardar en el archivo 6-69 UCMM 6-46
Guardar en el destino 6-70 Guardar UDINT 10-31
valores de seguimiento 6-69 Constantes UDINT 10-26 Configuración
Establecer como configuración del UDP para la lista de variables de red 6-4
proyecto 6-70 Seguimiento 10-94 UINT 10-31 Constantes UINT 10-26
Búfer de seguimiento 6-64, 6-67 Deshacer 4-61 Deshacer Salida 4-49
Configuración de seguimiento DESEMPACAR 10-51 HASTA 2-15
Archivo ASCII 6-69 Comprimir 6-68 Variables no utilizadas 4-44 Tarea de
Modo de cursor 6-67 Valores de actualización 6-42 Cargar archivos
carga 6-69 Multicanal 6-68 Directorio 4-10 Carga de listas de
parámetros 6-78 Usar el bit de salida 6-49
VARIANZA 10-53
ID de proveedor 9-1
Ver en FBD 5-34
X
VISU_INPUT_TASK 10-97 XE 1-1 Codificación XML
VISU_TASK 10-97 4-8 Operador XOR en
Ajustes visuales 10-74 Activación de la AWL 2-9
web visual activada/desactivada 10-75
Visualización 10-97 Nombre de la
visualización 10-106 Texto de
Y
visualización 4-32 Visualización sin Y Scaling 6-68
diseño maestro 4-57
Z
W
archivos zip para la visualización
Administrador de relojes y recetas web 10-98 Acción de zoom en SFC
Agregar a la lista de seguimiento 5-44 Zoom en editores gráficos 5-26
6-61 Adjuntar variable de reloj Zoom a POU 5-2 Zoom a POU 5-2
6-61 Crear lista de seguimiento Zoom a POU en CFC 5-61
6-59 Lista de referencias cruzadas Transición de zoom 5-44
6-59 Eliminar la variable de reloj
6-61 Forzar y escribir valores 6-64
Symbolic names in CoDeSys configuration files allow users to define human-readable identifiers for modules and channels, replacing direct IEC addresses. These symbolic names can be configured and edited in the PLC Configuration Editor, enhancing code readability and system manageability .
CoDeSys recalculates module addresses automatically when a new module is inserted, based on previous module addresses. The 'Compute addresses' command ensures that any removal or addition of modules keeps addresses aligned without overlaps and maintains a consistent addressing scheme throughout the PLC configuration .
Enabling the 'Ask for Object Category' option prompts users to assign new objects to one of the three categories ('Project Objects', 'Shared Objects', or 'Local') each time an object is added. This allows overwriting the default settings and ensures precision in categorizing and storing objects within the project .
If a CoDeSys project is reopened and the standard configuration restoration is enabled, all user-configured settings will be lost, reverting the project to the default configuration as defined in the configuration file. This means any customizations made by the user will not carry over into the reopened project .
Post-creation, the assignments to ENI object categories in CoDeSys can be modified through the object properties dialogue. This feature provides flexibility in managing the database by allowing changes to the default or initially assigned categories, such as 'Project Objects', 'Shared Objects', and 'Local' .
Settings for 'Project Objects' and 'Shared Objects' differ from 'Compile Files' as the latter are objects not created until the project is compiled, making them irrelevant for current configuration. 'Project Objects' and 'Shared Objects' involve setting predefined storage folders and adjusting database functions' presets, while 'Compile Files' do not require such configurations until compilation .
The 'Get Latest Version' function in the CoDeSys ENI project database management copies the latest version of the POU from the defined database folder to the currently open project. It overwrites the local version of the objects if the version in the database differs from the project's version .
When establishing a CoDeSys ENI connection, standard configuration steps include defining the TCP/IP address and port, selecting the project name for database folder assignment, and potentially entering read-only credentials. These steps are essential for setting communication parameters and ensuring proper access to the database .
CoDeSys offers the CheckDivDWord and CheckDivReal functions to avoid division by zero. Users can define these functions in their projects to verify divisor values, ensuring that calculations proceed only if divisors are non-zero. This prevents runtime errors associated with division by zero .
The tree structure in ENI's database configuration allows users to browse existing project base data folders. This structure helps users select wanted folders during configuration, easing the data management process within the database .