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 - Applicationy seleccione el comando en el menú contextual . Cambiar el nombre ingresado automáticamente- GVLa- Glob_Vary confirme con añadir.- El   - Glob_Varel objeto se muestra a continuación  - Application. El editor GVL se abre a la derecha del árbol de dispositivos
- Cuando se abre la vista textual, ya contiene las palabras clave - VAR_GLOBALy- END_VAR. Para ver nuestro ejemplo, haga clic en botón en la barra lateral derecha del editor para activar la vista tabular. botó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_GLOBALy el tipo de datos- BOOLregistrado.
- grifo - rTempActualen 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. se muestra el botón.
- Haga clic en el  botón y, a continuación, seleccione Asistente de entrada. botón y, a continuación, seleccione Asistente de entrada.- El diálogo ayuda de entrada se abre 
- Elija el tipo de datos - REALy 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_PRGen el árbol de dispositivos.- El editor de CFC se abre en - PLC_PRGpestañ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_PRGpestaña.- La entrada sin nombre - ???fue insertado.
- En el editor de CFC, haga clic en - ???en la entrada y, a continuación, haga clic para abrir el Asistente de entrada. En el Variables categoría, seleccione la para abrir el Asistente de entrada. En el Variables categoría, seleccione la- rTempActualvariable a continuación . Así es como se hace referencia a la variable global- rTempActualaquí.- 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 nombre- rHysteresis.- 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 - REALy el valor de inicialización- 1fuera. Clic en el botón OK.- La variable - rHysteresisaparece 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 - ???Con- ADD.- El bloque suma todas las entradas que están conectadas a él. 
- Conectar la entrada - Glob_Var.rTempSetcon el bloque de construcción- ADD. Para hacer esto, haga clic en el pin de salida de la entrada y arrástrelo al pin de entrada superior del bloque- ADD.
- Conecte la entrada de la misma manera - rHysteresiscon la entrada inferior del bloque- ADD.- las dos entradas - rHysteresisy- Glob_Var.rTempSetson ahora de- ADDadicional.
- 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 - ADDsobre. Él debería- Glob_Var.rTempActualcon la suma fuera- Glob_Var.rTempSet+- rHysteresiscomparar. Dale al bloque la función.- GT(Mas grande que).- el - GTbloque funciona de la siguiente manera:- IF (oberer Eingang > unterer Eingang) THEN Ausgang := TRUE;
- Conectar la entrada - Glob_Var.rTempActualcon la entrada superior del bloque- GT.
- Conectar la salida del bloque. - ADDcon la entrada inferior del bloque- GT.
- Ahora usa el elemento block para crear un bloque de funciones a la derecha del - GTPOU que arranca y detiene el compresor en función de las condiciones de entrada (Set — Reset). Especifique el nombre- SRen 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_0y el tipo de datos- SR. Clic en el botón OK.- el bloque de construcción - SRde la biblioteca- Standardse instancia.- SRsirve para definir la- THENa la salida del bloque GT. las entradas- SET1y- RESETa aparecer.
- Conecte la conexión de salida en el lado derecho del bloque - GTcon la entrada- SET1del bloque de construcción- SR_0.- SRpuede ser una variable booleana de- FALSEsobre- TRUEy volver a poner. Si la condición en la entrada- SET1es cierto, la variable booleana está activada- TRUEcolocar. Cumple con la condición- RESETa , la variable se restablece de nuevo. La variable booleana (global) está en nuestro ejemplo- Glob_Var.xCompressor.
- Insertar un elemento Salida y asignarle la variable global - Glob_Var.xCompressora. Dibujar una línea de conexión entre- Glob_Var.xCompressory conexión de salida- Q1desde- SR.
Ahora especifique la condición bajo la cual el compresor debe apagarse nuevamente, es decir, el RESETentrada 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 - Applicationobjetar y agregar un objeto POU del tipo Programa con el Escalera (LD2) lenguaje de implementación.- Nombre el programa como - Signals.- El - Signalsel programa aparece en el árbol de dispositivos junto a- PLC_PRG. El editor de diagramas de escalera se abre en el- Signalspestañ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 - TONtimer POU en los siguientes pasos. Cambia una señal booleana- TRUEdespué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 en símbolo en el editor de líneas. sí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 - TONtemporizador 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 - TONPOU se muestra con sus entradas y salidas.
- Para eliminar el - ENentrada y la- ENOsalida, seleccione el bloque y haga clic en el ES/ESNO → ES en el menú contextual.- Ahora el bloque solo tiene el - INy- PTentradas y la- Qy- ETSalidas.
- Haga doble clic en los tres signos de interrogación [???] directamente encima del bloque, escriba - TON_0como 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 - TONPOU se instancia con el nombre- TON_0.
- Programa el bloque para que se active tan pronto como el compresor comience a funcionar. Primero arrastra el - Contactelemento de escalera del Caja de herramientas vista frente al- INentrada 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. ). En el Asistente de entrada, seleccione ahora la variable global ya declarada Compresor y haga clic OK.- El nombre de la variable - Glob_Var.xCompressorSe 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 - Qsalida del- TONbloquear. Especifique el nombre- Glob_Var.xSignalpara la bobina.
- Defina el período de tiempo desde la activación de la POU - TON_0hasta que suene la señal. Esta definición se lleva a cabo mediante la variable- Glob_Var.timAlarmThreshold, que se inserta con este fin en la entrada- PTde- TON_0. Para hacer esto, mueva el puntero del mouse hacia el extremo izquierdo del pin de entrada- PT. 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 variable
- Presiona 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 - TONPOU y haga clic Elimine los pines no utilizados en el menú contextual.- La salida no utilizada - ETes 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 - TONPOU para la activación controlada de la señal. Esta vez es activada por la variable global- Glob_Var.xDoorOpenen la entrada- IN. En la entrada- PT, añada la variable global- Glob_Var.timDoorOpenThreshold.
- Desde el - Utilbiblioteca, agrega un- BLINKPOU en la salida- Qdel- TONPOU en esta red y cree una instancia con el nombre- Blink_0.
- el bloque de construcción - BLINK_0registra el reenvío de la señal- Qy por lo tanto- Glob_Var.xSignal.- Primero, arrastra dos Contacto elementos del Caja de herramientas vista a la - OUTsalida de la POU. Asigne la variable- TON_1.Qal contacto que está justo después de la salida- Qy la variable global- Glob_Var.xDoorOpenal segundo contacto.
- Agregar un elemento después de los dos contactos Fregadero y asignarle la variable global - Glob_Var.xSignala.
- Declarar la variable local - timSignalTime : TIME := T#1S;y agregue esta variable a las entradas- TIMELOWy- TIMEHIGHuna; el tiempo de ciclo es por lo tanto 1 segundo para cada- TRUEy 1 segundo para- FALSE.
- Haga clic derecho en el - TONPOU y haga clic Elimine los pines no utilizados en el menú contextual.- La salida no utilizada - ETse 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.xDoorOpenal contacto.
- El contacto insertado conduce directamente a una bobina. Agregue una bobina a la derecha del contacto y asigne la variable global - Glob_Var.xLampA 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.xSignalbobina.- 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 ). En el Asistente de entrada cuadro de diálogo, seleccione- DoorIsOpendesde 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_PRGse 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 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- Signalsprogramar 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 - Simulationarriba con el raton- MainTaskbajo la configuración de tareas.- El programa - Simulationse inserta en la configuración de la tarea.
- Si desea ver la configuración de la tarea, haga doble clic en la entrada - MainTaskpara 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) y- Simulation. 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 - Applicationy 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.