Programar la aplicación de control en el proyecto
Declarar las variables globales
Primero declare las variables que desea utilizar en toda la aplicación. Para hacer esto, ponga bajo Solicitud una lista de variables globales:
Seleccione la entrada
Application
y seleccione el comando en el menú contextual . Cambiar el nombre ingresado automáticamenteGVL
aGlob_Var
y confirme con añadir.El
Glob_Var
el objeto se muestra a continuaciónApplication
. El editor GVL se abre a la derecha del árbol de dispositivosCuando se abre la vista textual, ya contiene las palabras clave
VAR_GLOBAL
yEND_VAR
. Para ver nuestro ejemplo, haga clic enbotón en la barra lateral derecha del editor para activar la vista tabular.
Aparece una línea vacía. El cursor está en la columna. Apellido.
Seleccione el comando en el menú contextual Insertar.
Se abre un campo de entrada. Al mismo tiempo, la línea muestra automáticamente el alcance
VAR_GLOBAL
y el tipo de datosBOOL
registrado.grifo
rTempActual
en el campo Apellido una.Haga doble clic en el campo de la columna tipo de datos.
Ahora el campo se puede editar y
se muestra el botón.
Haga clic en el
botón y, a continuación, seleccione Asistente de entrada.
El diálogo ayuda de entrada se abre
Elija el tipo de datos
REAL
y haga clic en el botón OK.Introduzca un valor numérico en la columna inicialización una, por ejemplo
8.0
.
Declare las siguientes variables de la misma manera:
Apellido | tipo de datos | inicialización | comentario |
---|---|---|---|
|
|
| temperatura real |
|
|
| temperatura objetivo |
|
|
| puerta de estado |
|
|
| Tiempo de funcionamiento del compresor después del cual suena una señal |
|
|
| Tiempo desde la apertura de la puerta después del cual suena una señal |
|
|
| Señal de control |
|
|
| Señal de control |
|
|
| mensaje de estado |
Cree el programa principal para el control de refrigeración en el editor CFC
Ahora describirá la función principal del programa de aplicación en la sección principal PLC_PRG
POU, que se crea de forma predeterminada. El compresor se activa y se enfría cuando la temperatura real es superior a la temperatura establecida más una histéresis. El compresor se apaga cuando la temperatura real es inferior a la temperatura establecida menos la histéresis
Para describir esta funcionalidad en el lenguaje de implementación CFC, lleve a cabo los siguientes pasos:
Haga doble clic
PLC_PRG
en el árbol de dispositivos.El editor de CFC se abre en
PLC_PRG
pestaña. El editor de declaraciones aparece sobre el área del editor gráfico en forma textual o tabular. Caja de herramientas la vista está en el lado derecho.En el Caja de herramientas vea, seleccione el Entrada elemento y arrástrelo al editor de CFC que se encuentra debajo del
PLC_PRG
pestaña.La entrada sin nombre
???
fue insertado.En el editor de CFC, haga clic en
???
en la entrada y, a continuación, haga clicpara abrir el Asistente de entrada. En el Variables categoría, seleccione la
rTempActual
variable a continuación . Así es como se hace referencia a la variable globalrTempActual
aquí.El nombre de entrada es
Glob_Var.rTempActual
.Como en el paso 3, cree otra entrada con el nombre de la variable global
Glob_Var.rTempSet
.Cree otra entrada, haga clic en los tres signos de interrogación
???
y reemplaza esto con el nombrerHysteresis
.Como este no es el nombre de una variable ya conocida, aparece el diálogo declarar variable. El nombre ya está incluido en el cuadro de diálogo.
Rellene los campos en el cuadro de diálogo declarar variables con el tipo de datos
REAL
y el valor de inicialización1
fuera. Clic en el botón OK.La variable
rHysteresis
aparece en el editor de declaraciones.En el Caja de herramientas ver, seleccionar Bloquear elemento y arrástrelo al editor de CFC situado debajo del PLC_PRG pestaña.
El bloque aparece en el editor CFC.
Reemplazar
???
ConADD
.El bloque suma todas las entradas que están conectadas a él.
Conectar la entrada
Glob_Var.rTempSet
con el bloque de construcciónADD
. Para hacer esto, haga clic en el pin de salida de la entrada y arrástrelo al pin de entrada superior del bloqueADD
.Conecte la entrada de la misma manera
rHysteresis
con la entrada inferior del bloqueADD
.las dos entradas
rHysteresis
yGlob_Var.rTempSet
son ahora deADD
adicional.Si desea mover un elemento en el editor, haga clic en un lugar libre en el elemento o en el marco para seleccionar el elemento (marco rojo, sombreado rojo). Mantenga presionado el botón del mouse y arrastre el elemento a la posición deseada.
Coloque otro bloque de construcción a la derecha del bloque de construcción
ADD
sobre. Él deberíaGlob_Var.rTempActual
con la suma fueraGlob_Var.rTempSet
+rHysteresis
comparar. Dale al bloque la función.GT
(Mas grande que).el
GT
bloque funciona de la siguiente manera:IF (oberer Eingang > unterer Eingang) THEN Ausgang := TRUE;
Conectar la entrada
Glob_Var.rTempActual
con la entrada superior del bloqueGT
.Conectar la salida del bloque.
ADD
con la entrada inferior del bloqueGT
.Ahora usa el elemento block para crear un bloque de funciones a la derecha del
GT
POU que arranca y detiene el compresor en función de las condiciones de entrada (Set — Reset). Especifique el nombreSR
en el???
campo. Pulse la tecla Intro para cerrar el campo de entrada abierto situado encima de la POU (SR_0
).El diálogo declarar variable aparece
Declarar la variable con el nombre
SR_0
y el tipo de datosSR
. Clic en el botón OK.el bloque de construcción
SR
de la bibliotecaStandard
se instancia.SR
sirve para definir laTHEN
a la salida del bloque GT. las entradasSET1
yRESET
a aparecer.Conecte la conexión de salida en el lado derecho del bloque
GT
con la entradaSET1
del bloque de construcciónSR_0
.SR
puede ser una variable booleana deFALSE
sobreTRUE
y volver a poner. Si la condición en la entradaSET1
es cierto, la variable booleana está activadaTRUE
colocar. Cumple con la condiciónRESET
a , la variable se restablece de nuevo. La variable booleana (global) está en nuestro ejemploGlob_Var.xCompressor
.Insertar un elemento Salida y asignarle la variable global
Glob_Var.xCompressor
a. Dibujar una línea de conexión entreGlob_Var.xCompressor
y conexión de salidaQ1
desdeSR
.
Ahora especifique la condición bajo la cual el compresor debe apagarse nuevamente, es decir, el RESET
entrada del bloque SR TRUE
-Señal recibida. Para hacer esto, formule la condición opuesta a la anterior. Use los bloques de construcción para esto SUB
(Restar) y LT
(Menos que).
En definitiva, se crea el siguiente plan CFC:

Creación de un bloque de programa para la gestión de señales en el editor de diagramas de contactos
Ahora implemente la gestión de señales para la sirena de alarma y para encender y apagar la lámpara en otro módulo de programa. El lenguaje de implementación Ladder Diagram (LAD) es adecuado para esto.
Trate las siguientes señales, cada una en su propia red:
Cuando el compresor funciona demasiado tiempo porque la temperatura es demasiado alta, suena una señal audible continua.
Si la puerta está abierta demasiado tiempo, una señal temporizada llama la atención sobre esto.
Mientras la puerta esté abierta, la luz estará encendida.
En el árbol de dispositivos, haga clic con el botón derecho en
Application
objetar y agregar un objeto POU del tipo Programa con el Escalera (LD2) lenguaje de implementación.Nombre el programa como
Signals
.El
Signals
el programa aparece en el árbol de dispositivos junto aPLC_PRG
. El editor de diagramas de escalera se abre en elSignals
pestaña. El editor de declaraciones aparece en la parte superior, el Caja de herramientas vista a la derecha. El diagrama de escalera contiene una red vacía.Cree un programa en la red para que suene una señal audible cuando el compresor funcione demasiado tiempo sin alcanzar la temperatura especificada. Para hacer esto, inserte un
TON
timer POU en los siguientes pasos. Cambia una señal booleanaTRUE
después de un tiempo especificado.En el Caja de herramientas vea, arrastre el Bloquear elemento y colóquelo en la red vacía en una posición de inserción disponible.
El bloque se muestra como una caja con entradas y salidas.
Haga doble clic en los tres signos de interrogación (
???
) en el bloque y haga clic ensímbolo en el editor de líneas.
El Asistente de entrada Se abre el cuadro de diálogo.
En el Asistente de entrada cuadro de diálogo, en el Bloques de funciones estándar categoría, en Estándar biblioteca, seleccione
TON
temporizador y haga clic OK.Ahora en el editor de líneas del bloque, que muestra el nombre del bloque de funciones
TON
, pulse la tecla Enter.El
TON
POU se muestra con sus entradas y salidas.Para eliminar el
EN
entrada y laENO
salida, seleccione el bloque y haga clic en el ES/ESNO → ES en el menú contextual.Ahora el bloque solo tiene el
IN
yPT
entradas y laQ
yET
Salidas.Haga doble clic en los tres signos de interrogación [???] directamente encima del bloque, escriba
TON_0
como nombre de la instancia y pulse la tecla Enter.Ha confirmado el nombre de la instancia y el cuadro de diálogo. declarar variables se abre
Confirme el diálogo con OK.
Ahora el insertado
TON
POU se instancia con el nombreTON_0
.Programa el bloque para que se active tan pronto como el compresor comience a funcionar. Primero arrastra el
Contact
elemento de escalera del Caja de herramientas vista frente alIN
entrada del bloque. Haga doble clic en los tres signos de interrogación y, a continuación, haga clic en el icono del editor de líneas (). En el Asistente de entrada, seleccione ahora la variable global ya declarada Compresor y haga clic OK.
El nombre de la variable
Glob_Var.xCompressor
Se muestra encima del contacto.Sugerencia
Cuando comienza a escribir un nombre de variable en la posición de entrada, siempre obtiene automáticamente una lista de todas las variables cuyos nombres comienzan con los caracteres que escribió y que se pueden usar en este punto. Este soporte es un estándar en el CODESYS-Opciones de codificación inteligente.
Introduzca la señal que se va a activar. Para ello, arrastre un Bobina desde el Caja de herramientas vista, Escalera categoría, a la
Q
salida delTON
bloquear. Especifique el nombreGlob_Var.xSignal
para la bobina.Defina el período de tiempo desde la activación de la POU
TON_0
hasta que suene la señal. Esta definición se lleva a cabo mediante la variableGlob_Var.timAlarmThreshold
, que se inserta con este fin en la entradaPT
deTON_0
. Para hacer esto, mueva el puntero del mouse hacia el extremo izquierdo del pin de entradaPT
. Haga clic en el cuadro de bordes finos que ahora se muestra a la izquierda del pin de entrada y especifique el nombre de la variablePresiona la tecla Enter.
El Declaración automática se abre el cuadro de diálogo.
Haga clic OK para confirmar el diálogo.
La variable recién declarada se muestra en la parte de declaración.
Haga clic derecho en el
TON
POU y haga clic Elimine los pines no utilizados en el menú contextual.La salida no utilizada
ET
es removido.En la segunda red del KOP, programa que la señal suene cíclicamente si la puerta está abierta demasiado tiempo.
Usa el ratón para arrastrar un Red elemento del Caja de herramientas vista del punto de inserción por debajo de la Red 1.
Una red vacía con número 2 aparece
Al igual que en la primera red, implemente un
TON
POU para la activación controlada de la señal. Esta vez es activada por la variable globalGlob_Var.xDoorOpen
en la entradaIN
. En la entradaPT
, añada la variable globalGlob_Var.timDoorOpenThreshold
.Desde el
Util
biblioteca, agrega unBLINK
POU en la salidaQ
delTON
POU en esta red y cree una instancia con el nombreBlink_0
.el bloque de construcción
BLINK_0
registra el reenvío de la señalQ
y por lo tantoGlob_Var.xSignal
.Primero, arrastra dos Contacto elementos del Caja de herramientas vista a la
OUT
salida de la POU. Asigne la variableTON_1.Q
al contacto que está justo después de la salidaQ
y la variable globalGlob_Var.xDoorOpen
al segundo contacto.Agregar un elemento después de los dos contactos Fregadero y asignarle la variable global
Glob_Var.xSignal
a.Declarar la variable local
timSignalTime : TIME := T#1S;
y agregue esta variable a las entradasTIMELOW
yTIMEHIGH
una; el tiempo de ciclo es por lo tanto 1 segundo para cadaTRUE
y 1 segundo paraFALSE
.Haga clic derecho en el
TON
POU y haga clic Elimine los pines no utilizados en el menú contextual.La salida no utilizada
ET
se elimina.En la tercera red, programe para que la lámpara se encienda mientras la puerta esté abierta. Agregue una red adicional y un contacto. Asigne la variable
GlobVar.xDoorOpen
al contacto.El contacto insertado conduce directamente a una bobina. Agregue una bobina a la derecha del contacto y asigne la variable global
Glob_Var.xLamp
A la bobina.CODESYS procesa las redes de un KOP una tras otra. Para asegurarse de que solo se ejecute la red 1 o solo la red 2, agregue un salto a la red 3 al final de la red 1:
When you hover the mouse pointer over the 3rd line in the top left-hand edge of the network, the information <insert jump here> is displayed. Double-click this position and enter DoorIsOpen: as the jump label in the line editor.
Seleccione la red 1. Desde el Caja de herramientas vista, Diagrama de escalera categoría, arrastra el Salta elemento a la posición de inserción marcada con un triángulo delante del
Glob_Var.xSignal
bobina.Aparece el elemento de salto. El objetivo de salto todavía está incluido.
???
especificado.Haga doble clic en los tres signos de interrogación [???] y haga clic en el icono del editor de líneas (
). En el Asistente de entrada cuadro de diálogo, seleccione
DoorIsOpen
desde los posibles identificadores de etiquetas y haga clic OK para confirmar.Se implementa la etiqueta de salto a la red 3.
El programa LD ahora se ve así:

Llamar al programa «Signals» en el programa principal
En nuestro programa de ejemplo, el programa principal PLC_PRG
el programa Signals
llamada para el procesamiento de la señal.
Haga doble clic en el árbol de dispositivos
PLC_PRG
.El programa
PLC_PRG
se abre en el Bloc de notas.En el Caja de herramientas ver, arrastrar un Bloquear elemento para el editor de
PLC_PRG
.Haga doble clic en los tres signos de interrogación [???] y haga clic en
símbolo en el editor de líneas. En el Asistente de entrada cuadro de diálogo, en el POU//Llamadas a programas y funciones categoría, seleccione la
Signals
programar y hacer clic OK para confirmar.
Creación de un bloque de programa ST para una simulación
Dado que la aplicación de este proyecto de muestra no está vinculada a sensores y actuadores reales, ahora escribe un programa para simular el aumento y la disminución de la temperatura. Luego puede usar esto para monitorear la operación del control del refrigerador en modo en línea.
El programa de simulación se crea en texto estructurado.
El programa aumenta la temperatura hasta el programa principal PLC_PRG
determina que se ha superado la temperatura establecida. A continuación, el programa activa el compresor. A continuación, el programa de simulación reduce la temperatura hasta que el programa principal vuelve a desactivar el compresor.
En el árbol de dispositivos, haga clic con el botón derecho en Aplicación objetar y agregar un objeto POU del tipo Programa con el Texto estructurado (ST) lenguaje de implementación. Nombre la POU como
Simulation
.Implemente el siguiente código en el editor ST:
Parte de la declaración:
PROGRAM Simulation VAR TON_1: TON; //The temperature is decreased on a time delay, when the comepressor has been activated P_Cooling: TIME:=T#500MS; xReduceTemp: BOOL; //Signal for dereasing the temperature TON_2: TON; //The temperature is increased on a time delay P_Environment: TIME:=T#2S; //Delay time when the door is closed P_EnvironmentDoorOpen: TIME:=T#1S; //Delay time when the door is open xRaiseTemp: BOOL; //Signal for increasing the temperature timTemp: TIME; //Delay time iCounter: INT; END_VAR
Parte de implementación:
iCounter := iCounter + 1; // No function, just for demonstration purposes. // After the compressor has been activated due to TempActual being too high, the temperature decreases. // The temperature is decremented by 0.1°C per cycle after a delay of P_Cooling IF Glob_VAR.xCompressor THEN TON_1(IN:= Glob_Var.xCompressor, PT:= P_Cooling, Q=>xReduceTemp); IF xReduceTemp THEN Glob_Var.rTempActual := Glob_Var.rTempActual-0.1; TON_1(IN:=FALSE); END_IF END_IF //If the door is open, the warming occurs faster; SEL selects P_EnvironmentDoorOpen timTemp:=SEL(Glob_Var.xDoorOpen, P_Environment, P_EnvironmentDoorOpen); //If the compressor is not in operation, then the cooling chamber becomes warmer. //The temperature is incremented by 0.1°C per cycle after a delay of tTemp TON_2(IN:= TRUE, PT:= timTemp, Q=>xRaiseTemp); IF xRaiseTemp THEN Glob_Var.rTempActual := Glob_Var.rTempActual + 0.1; TON_2(IN:=FALSE); END_IF
Sugerencia
Se recomienda el uso de una visualización para una operación y monitoreo convenientes de todo el programa de control. En el proyecto de ejemplo terminado para este tutorial, que se crea con el CODESYS-Instalación estándar (directorio Projekte
) se proporciona es uno con CODESYS Visualización incorporada. Puede cargar e iniciar este proyecto en el controlador para verlo funcionar junto con la visualización. Al inicio, el Live_Visu
Comenzó con una representación del refrigerador, que refleja el funcionamiento del programa de simulación sin que tenga que realizar ninguna entrada. Sin embargo, puede abrir y cerrar la puerta haciendo clic en el interruptor de encendido/apagado, y también puede ajustar la preselección de temperatura con la aguja del control giratorio. No entraremos en la creación de la visualización en este tutorial. Un tutorial correspondiente como parte de la ayuda. CODESYS La visualización está planificada.
Definición de los programas a ejecutar en la configuración de tareas
La configuración de tareas predeterminada contiene la llamada para el programa principal PLC_PRG
. Para nuestro proyecto de ejemplo todavía tiene que llamar al programa Simulation
Agregar.
En el árbol de dispositivos, arrastre la entrada
Simulation
arriba con el ratonMainTask
bajo la configuración de tareas.El programa
Simulation
se inserta en la configuración de la tarea.Si desea ver la configuración de la tarea, haga doble clic en la entrada
MainTask
para abrir el Bloc de notas.En la tabla de la parte inferior del editor se pueden ver las POUs que son llamadas por la tarea:
PLC_PRG
(ingresado por defecto) ySimulation
. El tipo de invocación de la tarea es cíclico a intervalos de 20 milisegundos. En modo en línea, la tarea procesará los dos bloques una vez por ciclo.
Definición de la "Aplicación Activa" para la comunicación con el PLC
El nombre de la aplicación Application
esta en la ventana equipo se muestra en negrita. Esto significa que esta aplicación se ha configurado como la "aplicación activa". La comunicación con el controlador entonces se refiere a esta aplicación.
Si solo hay una aplicación en un proyecto, se convierte automáticamente en la aplicación activa. Si su aplicación aún no está activa, actívela de la siguiente manera:
Botón derecho del ratón
Application
y seleccione el comando en el menú contextual Establecer aplicación activa.La aplicación Solicitud estará en la vista equipo ahora se muestra en negrita.
Comprobación del programa de aplicación en busca de errores.
Mientras se ingresa el código se le indica CODESYS Le alerta inmediatamente sobre errores de sintaxis con garabatos rojos. También puede ver los resultados de la verificación en la ventana del mensaje. Si es necesario, abra la ventana de mensajes con el comando . Los mensajes se asignan a la categoría de mensajes. precompilación desplegado. Puede seleccionar un mensaje y pulsar el botón F4 saltar al código correspondiente. Se realizan más comprobaciones del programa de aplicación cuando la aplicación se carga en el controlador.
Solo puede cargar una aplicación sin errores en el controlador después.