Skip to main content

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:

  1. Seleccione la entrada Application y seleccione el comando en el menú contextual Agregar objeto → Lista de variables globales. Cambiar el nombre ingresado automáticamente GVL a Glob_Var y confirme con añadir.

    El _cds_icon_gvl.png Glob_Var el objeto se muestra a continuación _cds_icon_application.png Application. El editor GVL se abre a la derecha del árbol de dispositivos

  2. Cuando se abre la vista textual, ya contiene las palabras clave VAR_GLOBAL y END_VAR. Para ver nuestro ejemplo, haga clic en _cds_img_button_decl_editor_tabular.png 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.

  3. Seleccione el comando en el menú contextual Insertar.

    Se abre un campo de entrada. Al mismo tiempo, la línea muestra automáticamente el alcanceVAR_GLOBAL y el tipo de datosBOOL registrado.

  4. grifo rTempActual en el campo Apellido una.

  5. Haga doble clic en el campo de la columna tipo de datos.

    Ahora el campo se puede editar y cds_icon_open_input_asisstant.png se muestra el botón.

  6. Haga clic en el cds_icon_open_input_asisstant.png botón y, a continuación, seleccione Asistente de entrada.

    El diálogo ayuda de entrada se abre

  7. Elija el tipo de datos REAL y haga clic en el botón OK.

  8. 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

rTempActual

REAL

8.0

temperatura real

rTempSet

REAL

8.0

temperatura objetivo

xDoorOpen

BOOL

FALSE

puerta de estado

timAlarmThreshold

TIME

T#30S

Tiempo de funcionamiento del compresor después del cual suena una señal

timDoorOpenThreshold

TIME

T#10S

Tiempo desde la apertura de la puerta después del cual suena una señal

xCompressor

BOOL

FALSE

Señal de control

xSignal

BOOL

FALSE

Señal de control

xLamp

BOOL

FALSE

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:

  1. 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.

  2. 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.

  3. En el editor de CFC, haga clic en ??? en la entrada y, a continuación, haga clic _cds_icon_input_assistent.png para abrir el Asistente de entrada. En el Variables categoría, seleccione la rTempActual variable a continuación Aplicación → Glob_Var. Así es como se hace referencia a la variable global rTempActual aquí.

    El nombre de entrada es Glob_Var.rTempActual.

  4. Como en el paso 3, cree otra entrada con el nombre de la variable global Glob_Var.rTempSet.

  5. 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.

  6. Rellene los campos en el cuadro de diálogo declarar variables con el tipo de datosREAL y el valor de inicialización1 fuera. Clic en el botón OK.

    La variable rHysteresis aparece en el editor de declaraciones.

  7. 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.

  8. Reemplazar ??? Con ADD.

    El bloque suma todas las entradas que están conectadas a él.

  9. Conectar la entrada Glob_Var.rTempSet con 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.

  10. Conecte la entrada de la misma manera rHysteresis con la entrada inferior del bloque ADD.

    las dos entradas rHysteresis y Glob_Var.rTempSet son ahora de ADD adicional.

  11. 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.

  12. Coloque otro bloque de construcción a la derecha del bloque de construcción ADD sobre. Él debería Glob_Var.rTempActual con la suma fuera Glob_Var.rTempSet + rHysteresis comparar. 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;

  13. Conectar la entrada Glob_Var.rTempActual con la entrada superior del bloque GT.

  14. Conectar la salida del bloque. ADD con la entrada inferior del bloque GT.

  15. 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 nombre SR 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

  16. Declarar la variable con el nombre SR_0 y el tipo de datos SR. Clic en el botón OK.

    el bloque de construcción SR de la biblioteca Standard se instancia. SR sirve para definir la THEN a la salida del bloque GT. las entradas SET1 y RESET a aparecer.

  17. Conecte la conexión de salida en el lado derecho del bloque GT con la entrada SET1 del bloque de construcción SR_0.

    SR puede ser una variable booleana de FALSE sobre TRUE y volver a poner. Si la condición en la entrada SET1 es cierto, la variable booleana está activada TRUE colocar. Cumple con la condición RESET a , la variable se restablece de nuevo. La variable booleana (global) está en nuestro ejemplo Glob_Var.xCompressor.

  18. Insertar un elemento Salida y asignarle la variable global Glob_Var.xCompressor a. Dibujar una línea de conexión entre Glob_Var.xCompressor y conexión de salida Q1 desde 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:

_cds_img_tutorial_refrigerator_plcprg_cfc_diagram.png

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.

  1. 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 a PLC_PRG. El editor de diagramas de escalera se abre en el Signals 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.

  2. 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 booleana TRUE después de un tiempo especificado.

  3. 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.

  4. Haga doble clic en los tres signos de interrogación (???) en el bloque y haga clic en _ld_icon_input_assistant.png símbolo en el editor de líneas.

    El Asistente de entrada Se abre el cuadro de diálogo.

  5. 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.

  6. 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.

  7. Para eliminar el EN entrada y la ENO salida, seleccione el bloque y haga clic en el ES/ESNOES en el menú contextual.

    Ahora el bloque solo tiene el IN y PT entradas y la Q y ET Salidas.

  8. 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

  9. Confirme el diálogo con OK.

    Ahora el insertado TON POU se instancia con el nombre TON_0.

  10. 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 al IN 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 (_ld_icon_input_assistant.png). 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.

  11. 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 del TON bloquear. Especifique el nombre Glob_Var.xSignal para la bobina.

  12. 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 variable Glob_Var.timAlarmThreshold, que se inserta con este fin en la entrada PT de 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

  13. Presiona la tecla Enter.

    El Declaración automática se abre el cuadro de diálogo.

  14. Haga clic OK para confirmar el diálogo.

    La variable recién declarada se muestra en la parte de declaración.

  15. 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.

  16. 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

  17. 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 global Glob_Var.xDoorOpen en la entrada IN. En la entrada PT, añada la variable global Glob_Var.timDoorOpenThreshold.

  18. Desde el Util biblioteca, agrega un BLINK POU en la salida Q del TON POU en esta red y cree una instancia con el nombre Blink_0.

  19. el bloque de construcción BLINK_0 registra el reenvío de la señal Q y por lo tanto Glob_Var.xSignal.

    Primero, arrastra dos Contacto elementos del Caja de herramientas vista a la OUT salida de la POU. Asigne la variable TON_1.Q al contacto que está justo después de la salida Q y la variable global Glob_Var.xDoorOpen al segundo contacto.

  20. Agregar un elemento después de los dos contactos Fregadero y asignarle la variable global Glob_Var.xSignal a.

  21. Declarar la variable local timSignalTime : TIME := T#1S; y agregue esta variable a las entradas TIMELOW y TIMEHIGH una; el tiempo de ciclo es por lo tanto 1 segundo para cada TRUE y 1 segundo para FALSE.

  22. 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.

  23. 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.

  24. 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.

  25. 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.

  26. Haga doble clic en los tres signos de interrogación [???] y haga clic en el icono del editor de líneas (_ld_icon_input_assistant.png). 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í:

_cds_img_first_cds_program_ld_signals.png

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.

  1. Haga doble clic en el árbol de dispositivos PLC_PRG.

    El programa PLC_PRG se abre en el Bloc de notas.

  2. En el Caja de herramientas ver, arrastrar un Bloquear elemento para el editor de PLC_PRG.

  3. Haga doble clic en los tres signos de interrogación [???] y haga clic en _ld_icon_input_assistant.png 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.

  1. 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.

  2. 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.

  1. En el árbol de dispositivos, arrastre la entrada Simulation arriba con el raton MainTask bajo la configuración de tareas.

    El programa Simulation se inserta en la configuración de la tarea.

  2. 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 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 Ver → Mensajes. 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.