Libro de texto -...

102
CoDeSys Introducción al sistema de programación IEC 61131-3 Festo Didactic Libro de texto

Transcript of Libro de texto -...

Page 1: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo

CoDeSys

Introducción al sistema de

programación IEC 61131-3

Festo Didactic

Libro de texto

Page 2: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo

Versión: 1.01

Autor: Gabriel Vento

Edición: Meissinger, Sergio Luciano

© 2013 Festo Didactic GmbH & Co. KG

Todos los derechos reservados. Ninguna parte de esta publicación puede ser reproducida, almacenada en

sistemas de recuperación o transmitida en cualquier forma o por cualquier medio, ya sea electrónica,

mecánica, fotocopia, grabación o cualquier otro, sin el permiso previo por escrito de la editorial.

Page 3: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 3

Contenidos

1 Introducción al estándar IEC 61131 -3 _________________________________________________________ 4

2 CoDeSys – Caracteristicas básicas, instalación y sistemas target __________________________________ 6

3 Estructura de proyectos y unidades de organización de programas _______________________________ 28

4 Tipos de datos ___________________________________________________________________________ 39

5 Operandos en CoDeSys ____________________________________________________________________ 46

6 Lenguajes de programación IEC 61131-3 _____________________________________________________ 53

7 Operadores IEC 61131-3 ___________________________________________________________________ 64

8 Librerias: La librería estándar _______________________________________________________________ 91

9 Apendice A: Atajos de teclado _____________________________________________________________ 100

10 Bibliografia ____________________________________________________________________________ 101

Page 4: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

4 © Festo Didactic Ar-Festo

1 Introducción al estándar IEC 61131 -3

IEC – Comisión Electrotécnica Internacional

La Comisión Electrotécnica Internacional (IEC) es la organización líder a nivel mundial en la preparación y

publicación de normas internacionales para todas las tecnologías eléctricas, electrónicas y afines.

Numerosas normas son desarrolladas conjuntamente entre IEC e ISO (normas ISO/IEC).

A la IEC se le debe el desarrollo y difusión de los estándares de algunas unidades de medida,

particularmente el gauss, el hercio y el weber. También fue responsable de la primera propuesta de un

sistema de unidades estándar, el sistema Giorgi, que con el tiempo se convertiría en el sistema

internacional de unidades (SI).

IEC 61131-3 – Estándar de programación en automatización industrial

En la actualidad aún siguen persistiendo sistemas de programación de dispositivos de control específicos

del fabricante, con programación dependiente y conexión compleja entre diferentes sistemas de control.

Esto significa para el usuario costos elevados, escasa flexibilidad y falta de normalización en las

implementaciones de control industrial.

El estándar IEC 61131-3 pretende ser la base en la estandarización de los lenguajes de programación en

automatización industrial. Fue publicado por primera vez en el año 1993 y actualmente se encuentra en

vigencia la segunda revisión (año 2003). El uso de IEC 61131-3 proporciona numerosos beneficios para los

programadores, algunos de los cuales se enumeran a continuación:

Construcción de un marco normativo para la programación de una gran variedad de sistemas de

control.

Integración de los bien conocidos y modernos lenguajes de programación, dando especificaciones de

sintaxis y semántica, y evitando particularidades distintivas entre empresas (dialectos).

Independencia de la plataforma de hardware, haciendo el trabajo independiente de cualquier

compañía.

Incremento de la reutilización de código, minimizando los gastos en recursos humanos

(entrenamiento, depuración, mantenimiento y consultoría entre otras).

Integración armoniosa de componentes de diferentes empresas en el sistema de control.

Page 5: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 5

Los elementos definidos en el estándar pueden ser claramente divididos en dos partes, a saber:

Elementos comunes:

o Tipos de datos.

o Variables y declaraciones de datos.

o Configuración (tareas y recursos).

o Unidades de organización de programas (POU).

Lenguajes de programación:

Textuales:

o Listado de instrucciones (IL).

o Texto estructurado (ST).

Gráficos:

o Diagrama de contactos (LD).

o Diagrama de bloques de funciones (FBD).

o Gráfico secuencial funcional (SFC).

En la actualidad existen numerosos entornos de programación IEC que ofrecen diferentes herramientas

tales como sintaxis coloreada, ayuda en línea y verificación en tiempo de diseño entre otras. Estas

características asociadas a la programación no están especificadas en la norma, por lo que los proveedores

de los entornos de programación las utilizan para tratar de diferenciar sus productos. No obstante, no existe

diferencia alguna en lo que respecta a los lenguajes de programación y las características asociadas a ellos.

Las implicaciones técnicas de la norma IEC 61131-3 son altas, dejando bastante espacio para el crecimiento

y la diferenciación. La norma IEC 61131-3 está teniendo un gran impacto en el mundo del control industrial y

éste no se restringe al mercado convencional de los PLC´s. Ahora mismo, se la puede ver adoptada en

aplicaciones para control de movimiento, sistemas distribuidos y sistemas de control basados en PC

(SoftPLC), incluyendo los paquetes SCADA. Y sus áreas de utilización siguen creciendo.

Page 6: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

6 © Festo Didactic Ar-Festo

2 CoDeSys – Caracteristicas básicas, instalación y sistemas target

CoDeSys

CoDeSys es un entorno de desarrollo completo (IDE –Integrated development system-) para PLC, compatible

con el estándar de programación IEC 61131-3. Su nombre es un acrónimo para Sistema de Desarrollo de

Controladores (Controller Develop System). Permite utilizar funciones de edición y depuración similares a

las ofrecidas por los más avanzados lenguajes de programación de la actualidad.

CoDeSys es desarrollado y distribuido por la empresa alemana de software 3S. La primera versión (1.0) fue

liberada en el año 1994. Actualmente se encuentra disponible la versión 3.0, aunque la más difundida y la

analizada en este documento es la versión 2.3.

Fig. 2.1: Estructura completa del sistema de desarrollo CoDeSys.

Page 7: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 7

CoDeSys puede ser básicamente dividido en dos partes:

o Desarrollo: Consiste en los editores, compiladores y depuradores para proyectos según IEC 61131-3.

Soporta los 5 lenguajes de programación y genera código objeto nativo para múltiples plataformas.

o Sistema en tiempo de ejecución (Runtime): Realiza El ciclo del control, actualiza las I/O, controla la

comunicación con el sistema de desarrollo y es responsable por la generación de proyectos

autoarrancables (Boot project).

CoDeSys SoftPLC (CoDeSys SP)

Un SoftPLC es un paquete de software diseñado para convertir cualquier sistema embebido o basado en PC

en un PLC. Los sistemas basados en SoftPLC se distinguen de los sistemas de desarrollos clásicos por la

utilización de lenguajes de programación propios del mundo del automatismo.

CoDeSys SP Runtime debe ser implementado para convertir cualquier dispositivo embebido o basado en PC

en un controlador compatible con IEC 61131-3 programable con CoDeSys. La implementación es realizada

por el fabricante del dispositivo en colaboración con 3S, y es totalmente transparente para el usuario final.

Fig. 2.2: Implementación de CoDeSys SP runtime.

Page 8: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

8 © Festo Didactic Ar-Festo

Entre las funciones principales de CoDeSys SP runtime se pueden mencionar las siguientes:

o Carga y ejecución de aplicaciones según IEC 61131-3.

o Monitor de depuración para aplicaciones IEC.

o Sistema de entradas/salidas.

o Comunicación de la plataforma con el sistema de desarrollo.

CoDeSys SP runtime es escalable, modular, y adaptable a múltiples plataformas de hardware tales como

ARM, PowerPC e Intel 80x86/Pentium entre otras. Se encuentra disponible para sistemas de 8, 16 y 32 bits,

simple o multitarea y para los sistemas operativos VxWorks, Windows CE, QNX y Linux entre otros. Soporta

también estándares tales como OPC y DDE, lo cual le provee una extensa capacidad de integración para

cualquier tipo de aplicación.

CoDeSys Provided by Festo

CoDeSys es la nueva plataforma de programación adoptada por festo para sus controladores, tales como

CECX, FED-CEC y CPX-CEC entre otros. La elección de este IDE como nueva plataforma de desarrollo tiene

relación con que 3S es uno de los fabricantes de software más importantes en la industria europea de la

automatización, su producto CoDeSys es líder en sistemas de programación independientes del hardware y

es compatible con IEC 61131-3.

CoDeSys provided by Festo se basa en la versión 2.3 de CoDeSys, y le agrega además algunas

funcionalidades específicas tales como:

Fig. 2.3: Splash Screen de CoDeSys provided by Festo.

Page 9: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 9

o Splash Screen de Festo.

o Ayuda online específica.

o Targets y librerías de Festo preinstaladas.

Tanto la instalación de CoDeSys de 3S como la instalación de CoDeSys provided by festo pueden coexistir

en una misma PC. A lo largo de este documento se utilizará el término CoDeSys para referirse

indistintamente a la versión original de 3S o a la versión de CoDeSys provided by festo.

Instalación de CoDeSys y sistemas targets

Instalando CoDeSys

La instalación de CoDeSys es similar a la instalación de cualquier otra aplicación para el sistema operativo

Windows. Al hacer doble clic sobre el instalador se abrirá un asistente que nos guiará a lo largo de todo el

proceso.

La figura 2.4 muestra la pantalla de selección de componentes del asistente de instalación. Es importante

mencionar que la opción CoDeSys Gateway Server quedará seleccionada por defecto, ya que es la

herramienta de comunicación que se utiliza no solo para la obtención de datos desde el controlador sino

también para la comunicación entre CoDeSys y los dispositivos de hardware o sistemas targets.

Fig. 2.4: Pantalla de selección de componentes del asistente de instalación de CoDeSys.

Page 10: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

10 © Festo Didactic Ar-Festo

Se presentan también algunas herramientas opcionales, entre las cuales se pueden destacar SoftMotion,

CoDeSys OPC Server y CoDeSys SP PLCWinNT. La última será analizada en capítulos posteriores, mientras

que las dos primeras serán analizadas en niveles avanzados.

Instalando sistemas targets

La plataforma de desarrollo CoDeSys puede ser utilizada para programar una gran variedad de

controladores. Pero para que CoDeSys soporte un determinado hardware, el mismo debe ser previamente

instalado. Esto se logra instalando un paquete de software llamado paquete de soporte de target (TSP o

simplemente target). Los TSP describen en detalles las configuraciones necesarias para controlar una

plataforma de hardware específica con un programa desarrollado en CoDeSys. Las características que se

definen en un TSP incluyen el generador de código (cross-compilador), el mapa de memoria y los módulos

de I/0 entre otros.

Si quiere instalarse un nuevo controlador, debe realizarse mediante su TSP, el cuál es siempre provisto por

el fabricante del hardware, utilizando el programa InstallTarget, el cual es parte integral de la suite de

desarrollo CoDeSys.

La extensión por defecto de un TSP es *.TRG. En caso de que ninguna TSP se encuentre disponible, solo se

dispondrá de la opción ‘None’, y se pasará automáticamente a modo simulación.

Fig. 2.5: Programa InstallTarget, incluido en la suite de desarrollo CoDeSys.

Page 11: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 11

Si se quiere agregar soporte para un nuevo controlador, simplemente se deben seguir los siguientes pasos:

o Inicia el programa InstallTarget el cuál se encuentra en la carpeta de instalación de CoDeSys.

o Presionar el botón Open y seleccionar el directorio conteniendo el archivo *.tnf, el cuál contiene

información sobre el archivo target (*.trg).

o En el panel de la izquierda seleccionar el sistema a instalar y presionar la tecla instalar.

o Cerrar el programa InstallTarget y reiniciar CoDeSys.

De esta manera, el nuevo dispositivo instalado puede ser utilizado tanto para nuevos proyectos como para

modificar la plataforma de hardware en un proyecto ya existente, sin necesidad de modificar la

programación.

Primer inicio con CoDeSys

Al iniciar CoDeSys por primera vez se presentará la ventana principal, la cual se encuentra dividida en

varias secciones, a saber:

o Barras de menú y herramientas: Similar a cualquier otra aplicación, contienen todas las herramientas

disponibles y los menús de configuración, tanto de la aplicación que se está programando como del

entorno de programación.

o Espacio de trabajo (Editor): Espacio principal de trabajo. Su contenido cambiará en función de la

tarea que se esté realizando. Cuando se está programando este espacio se convierte en el editor de

código; en ese caso se encontrará dividido en dos sub-secciones; en la parte superior la

declaración de variables y en la parte inferior el editor de código propiamente dicho.

o Organizador de objetos: Permite recorrer las diferentes secciones y objetos de un proyecto. Desde

este organizador se puede ir a los programas para su edición, pasar al modo de visualización,

definir tipos de variables y configurar los recursos.

o Ventana de mensajes: En esta ventana se muestran los mensajes de salida del compilador.

o Barra de estado: Permite ver en forma rápida el estado del sistema. Es de gran utilidad cuando se

trabaja en modo online.

Page 12: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

12 © Festo Didactic Ar-Festo

Barra de menú y estados

Espacio de trabajo

Organizador de objetos

Ventana de mensajes

Barra de estado

Fig. 2.6: Ventana principal del entorno de desarrollo CoDeSys

Características básicas de CoDeSys

Autodeclaración de variables

De acuerdo con el estándar de programación IEC 61131-3, cada variable utilizada en una aplicación de PLC

debe ser declarada. La declaración en CoDeSys debe realizarse manualmente en la parte superior de la

ventada del editor de código, ya sea ingresando la declaración en modo texto o con la ayuda de una tabla.

Fig. 2.7: Ventana de autodeclaración de variables.

Sin embargo, es también posible ingresar la variable en el editor de código sin declaración previa alguna. Al

realizar esto, se abrirá una ventana de diálogo (ver figura2.7) la cual permitirá al programador ingresar el

tipo de variable, la dirección IEC y comentarios asociados entre otros datos. Las variables ingresadas de

esta manera serán auto-declaradas y aparecerán automáticamente en la lista de declaración de variables,

en la parte superior del editor.

Page 13: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 13

Sintaxis coloreada

La sintaxis coloreada es una herramienta muy utilizada en los entornos de programación ya que simplifica

notablemente la lectura del código y la detección de errores de sintaxis. CoDeSys soporta sintaxis coloreada

tanto en el editor de código como en las declaraciones de variables, y los colores utilizados son los

siguientes:

Azul: Palabras claves (Keywords).

Rojo: Palabras escritas incorrectamente.

Verde: Comentarios.

Magenta: Constantes de tiempo, direcciones y expresiones booleanas fijas.

Fig. 2.8: Sintaxis coloreada.

Page 14: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

14 © Festo Didactic Ar-Festo

Asistente de entrada

El asistente de entrada puede ser considerado como una de las características más destacadas de la suite

de desarrollo CoDeSys. Al presionar F2 en cualquier situación en la cual se debe ingresar una variable o un

llamado a una función este asistente se abrirá automáticamente y dará acceso a una lista con todas las

posibles entradas, desde variables locales hasta bloque de funciones definidos por el usuario, pasando por

posibilidades tales como bloques de función estándar y variables globales. El árbol de posibilidades puede

ser presentado en forma plana o estar jerárquicamente estructurado.

Fig. 2.9: Ventana del asistente de entrada.

Page 15: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 15

Ayuda sensible al contexto

La ayuda sensible al contexto permite obtener asistencia en forma rápida acerca del objeto específico que

está siendo utilizado, ya sean un operador, una librería o incluso keywords.

Fig. 2.10: Ayuda sensible al contexto.

Seleccionando la expresión sobre la cual se desea obtener ayuda y presionando la tecla F1 se iniciará

automáticamente el asistente mostrando la ayuda específica de la expresión y, generalmente, brindando

ejemplos acerca de su uso. Presionando la tecla F1 sin haber seleccionado expresión alguna permitirá

acceder directamente a la ayuda global.

Page 16: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

16 © Festo Didactic Ar-Festo

Configurador de tareas

CoDeSys permite la generación y ejecución de múltiples tareas. Dependiendo del sistema operativo

ejecutado por el controlador, estas tareas pueden ser prioritarias o no-prioritarias. Debe notarse que las

tareas prioritarias solo pueden ser utilizadas en controladores que ejecutan sistemas operativos multitarea.

Fig. 2.11: Configurador de tareas.

El inicio de las tareas también puede ser configurado para que sean realizadas en forma cíclica o disparadas

por eventos.

El configurador de tareas se encuentra en la pestaña de recursos del organizador de objetos. Esta

característica en particular es muy utilizada y será analizada en profundidad en módulos avanzados de

CoDeSys.

Page 17: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 17

Configuración del controlador (PLC)

Para poder acceder a las entradas/salidas físicas del controlador es necesario configurar los módulos

disponibles en él. Para esta tarea, CoDeSys integra una herramienta de configuración la cual puede

encontrarse en la pestaña de recursos del organizador de tareas.

El resultado que se obtiene de la configuración es una imagen de proceso transparente al usuario, en la que

se encontrará disponible la información de las direcciones de las entradas y salidas, ya sea en formato

numérico o simbólico.

Como función adicional, si el PLC es un master CANopen o Profibus DP, puede configurarse el bus de campo

con los archivos EDS (CANopen) o GSD (Profibus). La configuración con AS-interface también es posible.

Fig. 2.12: Configurador del controlador.

Page 18: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

18 © Festo Didactic Ar-Festo

Características de funcionamiento en modo online

Cuando se trabaja en modo online la ventana de declaración de variables del editor de código muestra los

valores actuales de las variables del programa que está siendo ejecutado en el controlador y permite

modificarlos. En el caso de variables booleanas el valor es modificado inmediatamente al hacer doble clic

sobre ellas. Para el caso de variables analógicas se abrirá un cuadro de diálogo que permitirá ingresar el

nuevo valor. Sin embargo, con el fin de permitir modificar múltiples variables simultáneamente, los valores

ingresados no serán inmediatamente descargados al controlador hasta que sea ejecutada la orden ‚Escribir

valores‛ del menú online, o la combinación de teclas Ctrl+F7.

CoDeSys también dispone de numerosas opciones de depuración. Una de ellas es el forzado de variables.

Ejecutando el comando ‚Forzar valores‛ (F7) del menú Online, las variables serán reescritas con los valores a

los que sean forzadas en cada nuevo ciclo del PLC. Para liberar las variables debe utilizarse el comando

‚liberar forzado‛ (Shift+F7). Otras herramientas para la depuración del programa es la utilización de

breakpoints y modos de ejecución por pasos o ciclos, los que permiten interrumpir la ejecución del

programa en un punto determinado y ejecutarlo paso por paso, para de esta manera analizar su

funcionamiento.

Fig. 2.13: Opciones de escritura y forzado de variables en modo online.

Page 19: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 19

Si la opción ‚Display flow control‛ del menú online se encuentra activada las líneas de comando o redes

(dependiendo si se programó en modo texto o gráfico) ejecutadas en el último ciclo del PLC serán

coloreadas. Esto ayuda a detectar si determinada porción del código fue ejecutada o no y seguir el flujo del

programa. Además, los valores intermedios de los editores de FBD y CFC y el contenido del acumulador

también serán mostrados.

Para permitir que la aplicación se inicie automáticamente luego de haber iniciado el controlador, debe

utilizarse la opción ‚Crear proyecto de booteo‛ del menú online. Esto generará dos archivos binarios, con

extensión *.PRG y *.CHK respectivamente que serán descargados al controlador. Dichos archivos serán

también almacenados en el directorio del proyecto. CoDeSys no admite el desensamble de los proyectos

descargados, por lo que si se desea tener acceso al código fuente desde el controlador, el mismo debe ser

descargado explícitamente. Al descargar el código fuente se incluyen todos los comentarios y la información

gráfica, la cual se encontrará disponible desde el propio controlador en cualquier momento.

Otra característica importante es la posibilidad de descargar al controlador solo los cambios realizados en el

programa, sin necesidad de detener el controlador o perder el valor de las variables. Debe notarse que la

modificación de cambios no es posible cuando hubo modificación en las tareas, en la configuración de

entrada/salida, o si se incluyeron nuevas librerías en el proyecto.

Fig. 2.14: Modificación online del programa

Page 20: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

20 © Festo Didactic Ar-Festo

Simulación integrada

El modo de simulación permite depurar la aplicación sin necesidad de conectarse físicamente al

controlador. Dicho modo puede ser habilitado mediante la opción ‚Modo simulación‛ del menú online. Una

e mostraran automáticamente los valores de las

variables y se podrá trabajar tal y como si se tuviera el dispositivo target conectado. Las entradas y salidas

físicas del controlador también podrán ser simuladas mediante la herramienta de configuración del PLC (Ver

sección 2.4.6).

Graficar variables online

CoDeSys ofrece la posibilidad de graficar el progreso de las variables. Mediante esta funcionalidad pueden

ser capturados eventos de corta duración y luego visualizados como si se tratara de un osciloscopio con

memoria, permitiendo de esta manera una mejor observación y seguimiento de las variables.

Hasta 20 señales pueden ser muestreadas simultáneamente. Los datos muestreados serán luego

almacenados en el controlador hasta que la alimentación sea interrumpida, y pueden ser también

almacenados en la carpeta del proyecto. Esta funcionalidad puede ser utilizada desde la pestaña de

recursos del organizador de objetos.

Fig. 2.15: Pantalla del graficador de variables (Sampling trace).

Page 21: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 21

Seguridad de proyectos

CoDeSys ofrece dos posibilidades para proteger el proyecto contra acceso no autorizado. Seleccionando

‚opciones‛ del menú proyectos pueden definirse contraseñas que serán chequeadas antes de abrir o

guardar el proyecto.

Sin embargo, para tener una protección más específica, es posible definir grupos de usuario con permisos

específicos para tener acceso a determinadas partes del proyecto. De esta manera, puede por ejemplo

darse autorización a un usuario para hacer uso de la visualización pero no autorizarlo para alterar la

programación.

La ventana de configuración de contraseñas puede ser hallada con el nombre‚ contraseñas para grupos de

usuarios en el menú proyecto. Aquí se pueden determinar contraseñas para ocho diferentes niveles de

grupos de usuarios.

Fig. 2.16: Definiendo contraseñas para diferentes grupos de usuarios.

Luego de haber definido las contraseñas para cada uno de los grupos de usuarios, se debe determinar que

objetos pueden ser utilizados por cada uno de ellos, y definir si el acceso concedido será de solo lectura o

lectura/escritura. Ingresando en el menú proyecto Objeto Propiedades, se podrán definir los accesos

del objeto que se encuentre en primer plano, o de todos los objetos del proyecto.

Page 22: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

22 © Festo Didactic Ar-Festo

Fig. 2.17: Aplicando niveles de acceso.

Estableciendo comunicación con el controlador

Fundamentos de comunicación

Para poder comprender como se realiza la comunicación entre CoDeSys y un dispositivo target se debe

analizar el esquema de la figura 2.18, en el cuál se realiza una analogía entre el esquema de

comunicaciones de la suite de desarrollo CoDeSys y la ventana de configuración de los parámetros de

comunicación.

Fig. 2.18: Esquema del sistema de comunicación de CoDeSys Ventana de configuración de parámetros de

comunicación.

Page 23: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 23

En la figura se puede ver que el sistema target no se comunica en forma directa con el sistema de desarrollo

sino que se utiliza un Gateway para tal fin. Se deberán tener entonces dos comunicaciones configuradas,

una entre el sistema target y el Gateway, y otra entre dicho Gateway y el sistema de desarrollo.

Análogamente, se puede ver en la ventana de configuración de parámetros de comunicación que ambas

comunicaciones deben estar debidamente configuradas para conseguir el acceso al dispositivo target.

Configuración de la comunicación

Todos los parámetros de configuración pueden ser accedidos y modificados desde la opción Parámetros de

comunicación del menú Online. Esta ventana nos mostrará en el lado izquierdo el Gateway y los canales o

dispositivos configurados. En la parte media de la ventana se podrán modificar las opciones de

comunicación específicas de cada dispositivo o canal, mientras que en la parte derecha se podrán editar las

configuraciones ya existentes, eliminarlas o agregar nuevas.

Fig. 2.19: Ventana de configuración de parámetros de comunicación.

Configurando una conexión TCP/IP.

Para configurar la comunicación entre el sistema de desarrollo y el Gateway debe presionarse la tecla

Gateway en el lado derecho de la ventana. Aquí podrá seleccionarse el tipo de conexión que se utilizará para

acceder al Gateway, la dirección y el puerto correspondiente. Para una comunicación básica entre una PC y

un dispositivo target, debe seleccionarse conexión TCP/IP y la dirección localhost (o 127.0.0.1, dirección de

loop interno de la placa Ethernet) en el puerto TCP 1210 (puerto de escucha por defecto del Gateway

server). Existen muchas otras posibilidades de configuración para esta comunicación, pero las mismas

exceden ampliamente el objetivo de este trabajo y por lo tanto no serán tratadas.

La comunicación entre el Gateway y el sistema target es llamada Canal. Para cada dispositivo target que se

utilice se deberá configurar un nuevo canal de comunicación. Para esto se deberá presionar la tecla Nuevo.

Se abrirá un cuadro de diálogo en el cuál es posible seleccionar el nombre que se le asignará al canal y el

dispositivo que se utilizará, pudiendo el mismo ser RS232, TCP/IP, cliente OPC, etc.

Page 24: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

24 © Festo Didactic Ar-Festo

Una vez creado el canal, los parámetros de comunicación del mismo podrán ser configurados directamente

desde la parte central de la ventana principal de parámetros de configuración, y serán diferentes en

función del dispositivo utilizado. La figura 2.19 muestra la configuración de un canal de comunicación

TCP/IP, mientras que en la figura 2.20 puede verse la configuración de una canal RS232.

Fig. 2.20: Ventana de configuración de parámetros de comunicación.

Page 25: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 25

Configurando una conexión RS232.

Una vez configurada la comunicación y seleccionado el canal adecuado, deberá desmarcarse la opción

Modo Simulación del menú Online para poder comunicarse con el dispositivo target. La comunicación se

hará efectiva al seleccionar la opción login del mismo menú o mediante la combinación de teclas Alt+F8.

Descarga y recuperación de proyectos

Modo Online y modificación en línea

La primera vez que se realiza la conexión con el dispositivo target mediante la opción online del menú

online, pueden darse dos situaciones. Una de ellas es que el controlador no se encuentre ejecutando ningún

programa o se encuentre ejecutando un programa diferente, en cuyo caso CoDeSys dará un aviso y

solicitará autorización explícita para realizar la descarga del nuevo programa.

La otra posibilidad es que el controlador se encuentre ejecutando el mismo proyecto que se está tratando

de descargar, en cuyo caso la situación dependerá de si hay diferencias o no entre el proyecto visualizado

en la PC y el controlador.

Si no hay diferencias, el sistema pasara a modo Online sin más, pero en caso de haber diferencias lo

indicará y solicitará una descarga de los cambios, permitiendo de esta manera actualizar el programa que

está siendo ejecutado sin detener la ejecución del ciclo de control. Es importante remarcar que esta opción

no estará habilitada en los casos en los cuales hubo modificación en las tareas, en la configuración de los

módulos de entrada/salida, o si se incluyeron nuevas librerías en el proyecto. En estos casos, se deberá

descargar nuevamente el proyecto completo al controlador.

Otra manera de descargar los cambios realizados es mediante la opción ‚Download‛ del menú online,

la cual solo estará habilitada cuando el sistema se encuentre en modo online y haya modificaciones

disponibles.

Es importante remarcar que al descargar el proyecto de esta manera se está trabajando en la memoria RAM

del dispositivo target, por lo cual si se interrumpe la alimentación del controlador, el programa se borra. Por

otro lado, al descargar el programa mediante la opción Online se está descargando el código compilado, por

lo que no podrá recuperarse el código fuente del programa desde el controlador. La figura

2.23 (1) refleja esta situación.

Page 26: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

26 © Festo Didactic Ar-Festo

Creando proyectos autoarrancables

Como ya se menciono anteriormente el conectarse online con el controlador no garantiza que el proyecto

arranque automáticamente luego de alimentado el controlador. Para lograr esto, la opción ‚Crear proyecto

de booteo‛ del menú online debe ser utilizada en el modo online. Esto generará dos archivos binarios, con

extensión *.PRG y *.CHK respectivamente, los cuáles serán descargados al controlador y almacenados en

memoria EEPROM o Flash.

Fig. 2.21: Ventana de configuración de parámetros de comunicación.

Configurando una conexión RS232.

Al descargar el proyecto de esta manera, el mismo se iniciará automáticamente luego de una interrupción

en la alimentación. Sin embargo, al igual que lo que ocurría con la descarga en modo online, solo está

siendo descargado el código compilado, por lo que el código fuente aún no podrá ser recuperado desde el

controlador. La figura 2.23 (2) refleja esta situación.

Puede darse el caso que el dispositivo target soporte la creación automática de proyectos autoarrancables.

En este caso, cada vez que se realice una conexión online con el controlador, el código compilado se

descargará automáticamente a la memoria EEPROM o Flash del mismo.

Recuperación de proyectos

Como se pudo apreciar en los dos apartados anteriores, el código fuente no será en ningún caso descargado

automáticamente al descargar el programa, por lo que para poder recuperar el mismo desde el dispositivo

target, se lo debe descargar en forma explícita.

Para recuperar el código fuente desde un controlador en el cuál la descarga del mismo fue explícitamente

realizada, bastará con seleccionar la opción ‚abrir‛ del menú file y seleccionar la opción ‚Abrir proyecto

desde el PLC‛.

Page 27: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 27

Fig. 2.22: Cuadro de diálogo Abrir. En la parte inferior izquierda puede verse la opción de recuperación de

código fuente desde el controlador.

Seleccionada esta opción, se debe seleccionar el dispositivo target a utilizar y configurar las opciones de

comunicación. Si estos pasos son realizados correctamente, el código fuente será recuperado, junto con los

comentarios y todas las visualizaciones que formaban parte de proyecto original. En la figura 2.23 (3 y 4)

puede verse reflejada esta situación.

Fig. 2.23: Descarga/Recuperación del proyecto fuente y compilado.

Page 28: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

28 © Festo Didactic Ar-Festo

3 Estructura de proyectos y unidades de organización de programas

Estructura y características de un proyecto

Fig. 3.1: Estructura de un proyecto en CoDeSys.

Un proyecto CoDeSys contiene todos los objetos del programa del PLC. El proyecto completo es guardado

en un único archivo con extensión *.PRO y los objetos que contiene son las unidades de organización de

programas (POU), los tipos de datos, las visualizaciones y los recursos. Dentro de estas cuatro categorías se

pueden encontrar las variables (locales o globales), las librerías y el código fuente de los programas.

Fig. 3.2: Ventana principal de CoDeSys - Estructura de un proyecto.

Page 29: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 29

Tipos de datos

Los tipos de datos son una de las características definidas por el estándar IEC 61131-3. Además de los tipos

de datos estándar, el usuario tiene la posibilidad de definir sus propios tipos de datos. Este tema será

abordado en profundidad en el capítulo 4.

Visualizaciones

La visualización es una representación gráfica de las variables del proyecto que permite no solo ver la

evolución y estado de variables sino también enviar entradas al PLC en modo online utilizando el teclado o

el mouse de una PC. CoDeSys integra todas las herramientas necesarias para poder crear visualizaciones y

utilizarlas para ver y operar las variables del proyecto.

Fig. 3.3: Editor de visualizaciones en tiempo de desarrollo.

Page 30: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

30 © Festo Didactic Ar-Festo

Esta integración ofrece grandes ventajas para la generación de interfaces HMI (Hombre-Máquina). La

visualización integrada de CoDeSys no necesita una lista de tag’s y puede acceder directamente al

controlador. Tampoco se requiere ninguna capa extra de comunicación ya que utiliza el mismo

mecanismo utilizado por el sistema de programación (Ver apartado 2.5). De esta manera, la tarea de

generar la interfaz gráfica para la visualización se puede ver notablemente reducida y simplificada.

La visualización creada en el sistema de desarrollo es en muchos casos utilizada como la única interfaz de

usuario disponible para controlar y observar el programa de PLC asociado en modo online. Sin embargo, la

máscara de visualización creada puede ser ejecutada en cuatro modos diferentes sin sufrir modificación

alguna. Los posibles modos de visualización son los siguientes:

1 – Directamente en el sistema de programación: Para testear la máscara de visualización creada, pero

también por propósitos de servicio y diagnóstico en conexión directa con el controlador.

2 – CoDeSys HMI: CoDeSys HMI es un programa utilizado para mostrar visualizaciones de proyectos en

una PC sin utilizar el sistema de desarrollo completo, y sin necesidad de ninguna capa de comunicación

adicional. Este sistema permite al usuario crear una interfaz de software de bajo costo para la operación

del sistema utilizando las visualizaciones generadas en tiempo de desarrollo.

CoDeSys HMI es ejecutado desde la línea de comando. Por defecto mostrará la visualización llamada

PLC_VISU (Si existiera) en modo pantalla completa. El resto de los elementos de CoDeSys como menús,

organizador de objetos, etc. No se encontrarán disponibles.

Fig. 3.4: CoDeSys HMI siendo ejecutado.

Page 31: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 31

3 – Visualización Web: La visualización web permite operar el sistema a través de un navegador Web,

ya sea en la red local o a través de internet. CoDeSys puede generar una descripción en formato XML a partir

de las visualizaciones, la cual se cargará en el controlador junto con un applet Java que puede ser

visualizado en un navegador.

Para que las visualizaciones creadas en tiempo de desarrollo se encuentren disponibles como visualización

Web, el sistema target debe soportar esta funcionalidad y se deberá iniciar y configurar un servidor web en

el mismo. Esta función no se encuentra disponible en la actual línea de controladores programables con

CoDeSys de festo.

Fig. 3.5: Estructura del sistema de visualización Web.

4 – Visualización en sistema target: Si el sistema target tiene incorporado una interfaz de visualización,

algún periférico de entrada y soporta la funcionalidad ‚Target visualization‛, los datos de visualización

pueden ser descargados desde el sistema de programación junto con la aplicación al sistema target. La

visualización será presentada entonces directamente desde el sistema target.

Para implementar esta función de visualización debe incluirse en el proyecto la librería SysLibTargetVisu.lib.

Además, el sistema target debe ejecutar un sistema operativo Windows® (NT/2000/CE).

Page 32: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

32 © Festo Didactic Ar-Festo

Recursos

En la pestaña de recursos pueden encontrarse todos los objetos necesarios para configurar y organizar el

proyecto. A lo largo de este documento se presentan y detallan la gran mayoría de estos objetos, por lo que

solo se presentará aquí una breve descripción de los principales. Adicionalmente, otros recursos pueden

encontrarse disponibles dependiendo de la plataforma de hardware utilizada, tal como CNC Program list o

CamEditor entre otros.

Algunas de los objetos principales son los siguientes:

Fig. 3.6: Vista del administrador de recursos.

o Variables globales: Configuración de aquellas variables que pueden ser utilizadas a lo largo de todo

el proyecto.

o Configuración de alarmas: Para la configuración y el manejo de las alarmas en el proyecto.

o Administrador de librerías: Permite administrar las librerías que se incluyen en el proyecto.

o Log: Registra las actividades durante las sesiones online.

o Explorador de PLC: Terminal basada en texto para la comunicación con el sistema target a través de

comandos.

o Configuración del PLC: Para la configuración del dispositivo target.

o Graficar variables online: Para presentar la evolución de las variables en forma gráfica.

o Configuración de target: Para la selección y configuración de la plataforma de hardware.

o Configuración de tareas: Para controlar el programa a través de múltiples tareas.

o Administrador de recetas: Para indicar y pre-configurar los valores de las variables, dependiendo del

sistema target y de la configuración realizada.

o Espacio de trabajo: Permite acceder y modificar las opciones generales de configuración del

proyecto.

Page 33: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 33

POU - Unidades de organización de programas

Un programa CoDeSys según IEC 61131-3 se encontrará dividido en múltiples unidades denominadas POU.

Una POU es una unidad de organización de programa; cada una de ellas consistirá de una declaración de

variables locales y un cuerpo escrito en uno de los lenguajes de programación definidos por la norma IEC

61131-3.

El estándar especifica tres tipos de POU: funciones, bloques de funciones y programas. Una POU puede

llamar a otra POU, pero la recursión no está permitida.

La ejecución del proyecto se inicia con una POU especial llamada PLC_PRG (programa principal, similar al P0

de los controladores de la línea FEC de festo) y es ejecutado cíclicamente. Cada proyecto debe contener este

programa a menos que se configuren tareas que especifiquen un funcionamiento diferente.

Fig. 3.7: Programa principal PLC_PRG – Ciclo de ejecución.

Funciones

Una función es una POU que permite múltiples entradas y produce exactamente un elemento de salida al

ser procesada. Es importante notar que las funciones tienen un tipo, por lo cual debe especificarse el mismo

en la declaración. Además, el resultado debe ser asignado a la función, lo que implica que el nombre de la

misma es utilizado como variable de salida. La declaración de una función comienza siempre con la palabra

clave FUNCTION.

Fig. 3.8: Declaración y cuerpo de una función simple en IL(1).

Page 34: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

34 © Festo Didactic Ar-Festo

Las funciones no almacenan valores de la última llamada, y sus variables locales serán inicializadas en cada

llamado. Se utilizan en general para expresiones de cálculo complejas y repetitivas. Debe notarse que el uso

de variables globales en las funciones no cumple con el estándar IEC 61131-3 a pesar de que CoDeSys lo

permita.

o IL:

o ST:

o FBD:

Fig. 3.9: Ejemplos de llamado a una función en diferentes lenguajes.

Page 35: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 35

El llamado a la función en ST(2) puede aparecer como un operando en una expresión, mientras que en

SFC(3) la función solo puede tomar parte dentro de un STEP o en una transición.

Bloques de funciones

Un bloque de función es una POU que puede tener varios valores de entradas y que entrega uno o más

valores de salida. A diferencia de una función, un bloque de funciones retiene los valores hasta que se la

procesa nuevamente. La declaración de un bloque de funciones comienza con la palabra clave

FUNCTION_BLOCK.

Fig. 3.10: Declaración y cuerpo de un bloque de funciones simple en IL.

Page 36: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

36 © Festo Didactic Ar-Festo

Múltiples instancias o copias de bloques de funciones pueden ser creadas; cada instancia tendrá su propio

nombre y estructura de datos, conteniendo sus entradas, salidas y variables internas. Cada copia debe ser

declarada como una variable del tipo

‚Bloque de función‛. Por ejemplo, para declarar una copia llamada ‚copia1‛ del bloque de funciones

‚bloque1‛:

VAR

Copia1:bloque1;

END_VAR

(1) IL: Listado de instrucciones, lenguaje basado en texto definido por IEC 61131-3.

(2) ST: Texto estructurado, lenguaje basado en texto definido por IEC 61131-3.

(3) SFC: Gráfico de flujo secuencial, lenguaje gráfico definido por IEC 61131-3.

Solo los parámetros de entrada y salida pueden accederse desde fuera del bloque de funciones y el acceso

se restringe a la POU en la cual se declaro la instancia, a menos que sea declarada como variable global.

Para utilizar una variable de una copia específica del bloque de funciones se debe utilizar el operador punto

(.) de la siguiente manera:

Nombre_de_la_copia.Nombre_de_la_variable

Page 37: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 37

IL:

ST:

FBD:

Fig. 3.11: Ejemplos en varios lenguajes de llamados a una instancia de un bloque de funciones.

Cabe destacar también que si alguna variable del bloque de funciones es declarada como retentiva, la

instancia completa será luego almacenada en el área retentiva de la memoria del controlador.

Por último, analizando las llamadas a los bloques de funciones, se puede ver que difieren de los llamados a

funciones simples en que se puede obtener más de una variable de salida y que las mismas son retenidas

hasta un nuevo llamado, no siendo necesaria una asignación inmediata. La figura 3.11 muestra llamados al

bloque de funciones creado en la figura 3.10 en IL, ST y FBD4.

Page 38: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

38 © Festo Didactic Ar-Festo

Programas

Un programa es una POU que devuelve múltiples valores durante su ejecución. Los programas son

reconocidos globalmente a lo largo del proyecto y todos los valores son retenidos desde la última ejecución

hasta la siguiente.

No puede haber múltiples instancias de un programa y los programas no pueden ser llamados desde

funciones. Por otra parte, si un programa es llamado y se modifican sus valores, estos permanecerán de

esta manera hasta que el programa sea llamado nuevamente, incluso si se lo llama desde una POU

diferente. Esta es la diferencia con un bloque de funciones, en la cual los valores solo son modificados en la

instancia dada y solo son válidos cuando la misma instancia es llamada nuevamente. La declaración de un

programa comienza con la palabra clave PROGRAM.

Fig. 3.12: Declaración y cuerpo de un programa en IL.

Si se desea llamar al programa con parámetros de entrada/Salida, se lo puede hacer de la misma forma que

se haría en un bloque de funciones. Además, todas las variables de un programa pueden ser accedidas

desde la POU que lo ejecutó.

(4) FBD: Diagrama de bloque de funciones, lenguaje gráfico definido por IEC 61131-3.

Page 39: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 39

4 Tipos de datos

En CoDeSys pueden utilizarse tipos de datos estándar o definidos por el usuario. Cada nombre de variable o

identificador debe ser asignado a un tipo de dato, indicando de esta manera la cantidad de memoria que

será reservada y el tipo de valores que se podrá almacenar en dicha posición de memoria.

Tipos de datos estándar

Datos Booleanos

Las variables de tipo BOOL pueden tomar dos posibles valores: Verdadero o

Falso. Se reservan 8 bits de memoria para cada variable de este tipo.

Datos Enteros

En la tabla 4.1 se enumeran los posibles tipos de datos enteros, los rangos de valores que cubren y la

cantidad de memoria que es reservada para cada uno de ellos.

Tipo Límite inferior Límite superior Espacio de Memoria

BYTE 0 255 8 bit

WORD 0 65535 16 bit

DWORD 0 4294967295 32 bit

SINT -128 127 8 bit

USINT 0 255 8 bit

INT -32768 32767 16 bit

UINT 0 65535 16 bit

DINT -2147483648 2147483647 32 bit

UDINT 0 4294967295 32 bit

Tabla 4.1: Tipos de datos enteros.

Page 40: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

40 © Festo Didactic Ar-Festo

Datos Reales

También conocidos como variables de punto flotante, son utilizadas para la representación de números

racionales.

Tipo Límite inferior Límite superior Espacio de Memoria

REAL

1.175494351

x10-38

3.402823466

x1038

32 bit

LREAL 2.22507385850

72014x10-308

1.797693134862

3158x10308

64 bit

La tabla 4.2 resume los dos tipos de variables que pueden encontrarse dentro de esta clasificación.

Cadena de caracteres (strings)

Una variable de tipo STRING puede contener cualquier cadena de caracteres. Su tamaño se define en la

declaración, entre paréntesis y a continuación del tipo, y determina la cantidad de memoria a reservar. Sin

embargo, si no es definido al momento de la declaración, el tamaño por defecto que se utilizará será de

80 caracteres. La longitud máxima del string no está limitada en CoDeSys, pero es importante saber que las

funciones para tratamiento de cadenas solo pueden manejar hasta 255 caracteres.

Sintaxis de declaración:

<Identificador>: STRING (<Longitud_del_string>);

Tipos de datos de tiempo (Temporales)

Estos tipos de datos serán internamente tratados como variables del tipo DWORD (32 bits). Los posibles

tipos de datos temporales que pueden presentarse son mostrados en la tabla 4.3.

Tipo Límite

inferior

Límite superior Espacio de

Memoria

TIME 49d17h2m47s295ms 32 bit

TIME_OF_DAY

(TOD)

12:00:00 AM 23:59:59.999 PM 32 bit

DATE 01/01/1970 06/02/2016 aprox. 32 bit

DATE_AND_TIME

(DT)

01/01/1970,

12:00:00 AM

06/02/2016,

06:28:15 AM aprox.

32 bit

Tabla 4.3: Tipos de datos temporales.

Page 41: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 41

Tipos de datos definidos por el usuario

Arreglos

CoDeSys soporta arreglos de una, dos y hasta tres dimensiones, los cuales pueden ser declarados tanto en

la declaración de la POU como en la lista de variables globales.

Tiempo de desarrollo:

Tiempo de ejecución:

Fig. 4.1: Declaración de arreglos en tiempo de desarrollo y ejecución respectivamente.

Page 42: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

42 © Festo Didactic Ar-Festo

Sintaxis de declaración:

<Identificador>: ARRAY [<LI1>..<LS1>, <LI2>..<LS2>] OF <TIPO_DE_DATO>

Donde LI1, LI2 son los límites inferiores del rango del campo y LS1, LS2 serán los límites superiores. Estos

límites deben ser valores enteros y deben estar dentro del rango de valores de las variables de tipo DINT.

Cuando se trabaja con arreglos puede definirse una función llamada CheckBounds (Provista por la librería

Check.lib) que permitirá chequear y corregir errores de fuera de rango en los arreglos.

Punteros

Las variables de tipo puntero contienen las direcciones de otras variables o bloques de funciones. Un

puntero puede apuntar a cualquier tipo de datos o bloque de funciones, incluso tipos definidos por el

usuario. Para cargar una dirección al puntero se debe utilizar el operador ADR, mientras que para leer el

contenido de la variable apuntada por el puntero se debe agregar el operador ^ a continuación del nombre.

Sintaxis de declaración:

<Identificador>: POINTER TO <TIPO_DE_DATO/BLOQUE_DE_FUNCIONES>;

Fig. 4.2: Variable de tipo puntero en tiempo de ejecución.

Page 43: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 43

Enumeración

Se trata de un tipo de variable definida por el usuario, formada por una cantidad de constantes del tipo

strings. Dichas constantes son referenciadas luego como valores de una enumeración. Los valores de una

enumeración son reconocidos en todas las áreas del proyecto, incluso si fueron declaradas dentro de una

POU.

Fig. 4.3: Declaración de un tipo de variable enumeración definida por el usuario.

Page 44: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

44 © Festo Didactic Ar-Festo

Fig. 4.4: Ejemplo de uso en tiempo de ejecución de una variable de tipo enumeración.

Sintaxis de declaración:

TYPE <Identificador> : (<Enum_0>,<Enum_1>,…,<Enum_2>); END_TYPE

La forma correcta de crear enumeraciones es en el organizador de objetos, bajo la pestaña ‚Tipos de Datos‛.

Luego de ser declarada, las variables del tipo <Identificador> pueden tomar cualquiera de los valores de la

enumeración.

Estructuras

Las estructuras permiten declarar un tipo de variable definido por el usuario que contiene a la vez una

determinada cantidad de otras variables, cada una con su respectivo tipo. Son creadas en el organizador de

objetos bajo la pestaña ‚Tipos De Datos‛, y son reconocidas en todas las áreas del proyecto. Para acceder a

un elemento o variable específica dentro de una variable del tipo estructura se debe utilizar el operador

punto (.).

Fig. 4.5: Ejemplo de declaración de una estructura definida por el usuario.

Sintaxis de declaración:

TYPE <Nombre_de_la_estructura>: STRUCT

<Declaración_de_variable_1>

<Declaración_de_variable_2>

<Declaración_de_variable_2>

END_STRUCT

END_TYPE

Page 45: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 45

Fig. 4.6: Ejemplo de uso de una estructura de datos.

Page 46: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

46 © Festo Didactic Ar-Festo

5 Operandos en CoDeSys

Declaración de variables

Generalidades

Como ya se pudo observar en capítulos anteriores, todas las variables deben ser declaradas antes de poder

ser utilizadas. El editor de declaración es utilizado para declarar variables en cada POU, o un apartado

especial en la pestaña de recursos del organizador de objetos para declarar variables de uso global. Las

variables a ser declaradas pueden ser de entrada, salida, entrada/salida, locales, globales, retentivas o

remanentes. En general, la declaración de una variable presenta la siguiente sintaxis:

<Identificador> {AT <dirección>}:<tipo>{:=<valor_inicial>}; (Las partes entre llaves son opcionales)

El nombre de la variable no puede contener espacios, no puede estar duplicado en un mismo ámbito y no

puede ser igual a ninguna palabra clave. Por otra parte, mayúsculas/minúsculas son ignoradas y la longitud

del nombre no tiene limitaciones.

Todas las declaraciones de datos pueden ser inicializadas agregándole al final la cadena ‚:=‛ seguida del

valor inicial. Si las variables no son inicializadas, el valor inicial por defecto será siempre cero.

Fig. 5.1: Opciones de ayuda del editor de declaraciones, a través del menú insertar.

Por otro lado, para brindar mayor soporte al programador y simplificar la tarea de declaración de variables,

CoDeSys permite ver el listado completo de los tipos de datos soportados. Para esto, se debe ir al menú

‚insertar‛ y seleccionar la opción ‚tipo‛.

La declaración de variables puede también ser realizada en forma rápida con la ayuda de la función de auto-

declaración de variables, ya analizada en la sección anterior.

Page 47: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 47

Keywords

Las palabras claves o Keywords deben ser escritas en letras mayúsculas en todos los editores. Aparecerán

en color azul y no podrán ser utilizadas como variables. Mediante la opción ‚Palabras claves de declaración‛

del ‚menú insertar‛ puede obtenerse un completo listado de las palabras claves que pueden ser utilizadas

en la declaración de variables.

Fig. 5.2: Opciones de ayuda del editor de declaraciones, a través del menú insertar.

Sintaxis de direcciones

El acceso a ubicaciones de memoria individuales es realizado a través del uso de secuencias de caracteres

especiales. Estas secuencias consisten de una concatenación del signo porcentual (%), un prefijo de rango,

un prefijo de tamaño y uno o más números naturales separados por puntos. Las tablas 5.1 y 5.2 muestran

los posibles valores que pueden tomar ambos prefijos y su significado.

De esta manera, si se quiere hacer referencia a la entrada digital Y.Z del controlador se debería utilizar la

secuencia %IXY.Z.

Prefijo Significado

I Entrada

Q Salida

M Ubicación de memoria

Tabla 5.1: Prefijos de rango.

Page 48: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

48 © Festo Didactic Ar-Festo

Prefijo Significado

X Bit

none Bit

B Byte (8 bits)

W Word (16 bits)

D Double Word (32 bits)

Tabla 5.2: Prefijos de tamaño.

Para vincular una variable a una dirección, se debe utilizar en la declaración la palabra clave AT, asignando

de esta forma una etiqueta a la dirección. Luego, ante cualquier modificación en la dirección de las señales

de entrada o salida, solo deberá modificarse la línea de la declaración y no el programa completo.

Figura 5.3: Ejemplos de direcciones.

Tipos de variables

Variable de Entrada, Salida, Entrada/Salida

o Variables de Entrada: Son declaradas entre las palabras claves VAR_INPUT y END_VAR. Son

utilizadas como valores de entrada a la POU. Pueden ser accedidas desde fuera de la POU mediante

el operador punto (.).

o Variables de Salida: Son declaradas entre las palabras claves VAR_OUTPUT y END_VAR. Son

utilizadas como valores de salida de la POU. Pueden ser accedidas desde fuera de la POU mediante

el operador punto (.).

o Variables de Entrada/Salida: Son declaradas entre las palabras claves VAR_IN_OUT y END_VAR. Son

utilizadas como valores de entrada y salida de la POU. Pueden ser accedidas desde fuera de la POU

mediante el operador punto (.).

Page 49: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 49

Variables remanentes

Las variables remanentes son aquellas variables que pueden retener sus valores ante situaciones

anormales de la ejecución del programa. Las variables remanentes se pueden dividir en dos tipos:

o Variables Retentivas: Se identifican con la palabra clave RETAIN, y mantienen su valor incluso luego

de la desconexión del controlador. Sin embargo, estas variables son reinicializadas cuando se

realiza una nueva descarga del programa.

o Variables persistentes: Se las identifica con la palabra clave PERSISTENT. A diferencia de las

variables retentivas, las variables persistentes mantienen su valor solamente luego de una nueva

descarga del programa, pero no lo hacen ante una desconexión del controlador, ya que no son

almacenadas en el área retentiva de la memoria del controlador.

Fig. 5.4: Ejemplo de declaración de los diferentes tipos de variables remanentes.

Si es necesario que una variable sea conservada tanto ante una desconexión como ante una nueva

descarga del programa, se deberían utilizar ambas palabras claves en la declaración (RETAIN PERSISTENT).

Las variables de tipo retentivas son, como es de esperarse, almacenadas en el área retentiva de la memoria

del controlador. Debido a esto es importante destacar los siguientes puntos:

o Si una variable local en un programa es declarada como retentiva, dicha variable será almacenada en

el área retentiva de la memoria. Lo mismo ocurre con las variables globales.

o Si una variable local en un bloque de funciones es declarado como retentiva, la copia completa del

bloque de funciones será almacenado en el área retentiva de la memoria del controlador.

o Si una variable local en una función es declarada como retentiva, no tendrá efecto alguno. La variable

no será almacenada en el área retentiva de memoria. Lo mismo ocurre si es declarada como

persistente.

Page 50: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

50 © Festo Didactic Ar-Festo

Variables Locales y Globales

Las variables locales son declaradas entre las palabras claves VAR y END_VAR en el editor de declaración de

la POU a la cual pertenecen, y son solo válidas en el ámbito de dicha POU. Las variables locales no tienen

conexión externa, por lo que no podrán ser escritas desde fuera de la POU.

Por su parte, las variables globales son declaradas en un apartado especial en la pestaña de recursos del

organizador de objetos, entre las palabras VAR_GLOBAL y END_VAR. Este tipo de variables son reconocidas

a lo largo de todo el proyecto.

Fig. 5.5: Variables locales y globales.

Debe notarse que dos variables pueden ser nombradas con igual identificador en caso de tratarse de

diferentes ámbitos. En este caso, dentro de la POU en la cual se repitió el identificador, si no se detalla

mediante el operador punto (.), la variable local es la que tendrá validez por encima de cualquier otra. Esto

se explica gráficamente en la figura 5.5. Incluso en el caso de variables locales y globales, puede utilizarse

el mismo identificador. Sin embargo, dentro de la POU específica, la variable con validez será la local por

encima de la global, por lo que debe tenerse especial cuidado al repetir identificadores de variables.

Constantes

Constantes Binarias

Las constantes binarias son directamente los valores lógicos VERDADERO y FALSO.

Page 51: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 51

Constantes Temporales

Las constantes temporales son generalmente utilizadas para operar los temporizadores de la librería

estándar. Para utilizar una constante de tiempo se debe respetar el siguiente formato:

<Identificador>:= T#<xx>d<xx>h<xx>m<xx>s<xx>ms

Como puede notarse, en la declaración pueden ser incluidos días, horas, minutos, segundos y milésimas de

segundos. Las entradas temporales deben colocarse en orden de acuerdo con la longitud temporal de cada

uno de los campos (por ejemplo días debe ir antes de horas, a la vez que horas deben ir antes de minutos y

minutos antes de segundos). Sin embargo, no es necesario utilizar todos los campos. Por otra parte, deben

respetarse los rangos máximos permitidos de cada uno de los campos, los cuales pueden ser observados en

la tabla 5.3. Debe notarse que estos rangos no serán válidos para el primer campo utilizado en la constante

temporal. Esto se puede ver claramente en la figura 5.6, en la cual se muestran algunos ejemplos de

utilización de constantes temporales.

Campo Rango

Días (d) Ilimitado

Horas (h) 0 – 23

Minutos (m) 0 – 59

Segundos (s) 0 – 59

Milisegundos (ms) 0 – 999

Tabla 5.3: Rango de campos para constantes temporales.

Fig. 5.6: Ejemplo de utilización de constantes temporales.

Page 52: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

52 © Festo Didactic Ar-Festo

Constantes Numéricas enteras

Las constantes numéricas pueden ser expresadas en diferentes sistemas de representación, tales como

binario, octal, decimal y hexadecimal.

Fig. 5.7: Ejemplo de utilización de constantes numéricas enteras.

En el caso de valores enteros decimales, pueden ser utilizados directamente. En caso de enteros

expresados en una base diferente, debe precederse el valor por la base y el signo numeral, tal como puede

observarse a continuación:

o Número Decimal: 62

o Número Binario: 2#1001_0011 (El guión bajo puede ser utilizado o no)

o Número Octal: 8#67

o Número hexadecimal: 16#A46F

En la figura 5.7 pueden apreciarse ejemplos de constantes numéricas enteras expresados en diferentes

sistemas de representación.

Constantes Reales

Las constantes numéricas reales pueden ser expresadas en formato fraccionario decimal o exponencial.

Independientemente de esto, el símbolo decimal a utilizar sigue los lineamientos del estándar americano,

por lo que se utiliza el punto en lugar de la coma decimal. La figura 5.8 muestra algunos ejemplos de uso.

Fig. 5.8: Ejemplo de utilización de constantes Reales.

Page 53: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 53

6 Lenguajes de programación IEC 61131-3

CoDeSys soporta la totalidad de los lenguajes que se describen en el estándar IEC 61131-3, los cuáles

pueden ser divididos en dos grupos:

Textuales:

o Listado de instrucciones (IL).

o Texto estructurado (ST).

Gráficos:

o Diagrama de contactos (LD).

o Diagrama de bloques de funciones (FBD).

o Esquema secuencial de funciones (SFC).

Adicionalmente se encuentra disponible la posibilidad de programar en lenguaje gráfico secuencial

continuo (CFC), el cual no es tratado como un lenguaje independiente por ser básicamente una

representación gráfica diferente del lenguaje de diagrama de bloque de funciones (FBD).

Lenguajes de programación textuales

IL – Listado de instrucciones

La programación en listado de instrucciones consiste en una serie de instrucciones, cada una de las cuáles

comienza en una nueva línea y contiene un operador y uno o más operandos separados por comas. Este

lenguaje permite una programación rápida y simple cuando el programa es pequeño. Cada operación se

basa en el uso de un registro especial llamado acumulador, de forma similar al lenguaje assembler. Antes

de realizar alguna operación se debe cargar el valor o la variable con la que se quiere operar en el

acumulador. Luego de realizada la operación, el resultado quedará disponible nuevamente en el

acumulador. Antes de la instrucción puede colocarse una etiqueta seguida por dos puntos (:). Los

comentarios se deben encerrar entre asteriscos y paréntesis (Ver figura 6.2) y pueden ocupar una línea

completa o encontrarse al final de una línea de programa. Todos los operadores IEC 61131-3 son

soportados (este tema se profundizará en el módulo 7).

Debe notarse que el lenguaje de listado de instrucciones no soporta la programación estructurada.

Fig. 6.1: Uso del acumulador para operar en IL.

Page 54: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

54 © Festo Didactic Ar-Festo

Fig. 6.2: Ejemplo de programación en listado de instrucciones (IL).

También pueden utilizarse modificadores, los cuales modificarán la manera en que un determinado

operador es ejecutado. Los siguientes modificadores pueden ser utilizados en listado de instrucciones:

o C (Con JMP, CAL, RET): La instrucción es solamente ejecutada si el resultado de la expresión

anterior es VERDADERO.

o N (Con los operadores JMPC, CALC, RETC): La instrucción será solamente ejecutada si el resultado de

la expresión anterior es FALSO.

o N (En cualquier otro caso): Negación del operando (no del acumulador).

En la tabla 6.1 pueden verse los operadores que pueden ser afectados por modificadores en IL, y los

posibles modificadores. En el capítulo 7 se dará una explicación detallada de la función de cada uno de los

operadores.

Operador Modificadores

LD N

ST N

AND N

OR N

XOR N

JMP CN

CAL CN

RET CN

Tabla 6.1: Operadores afectados de modificadores en IL.

Page 55: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 55

Fig. 6.3: Ejemplo de programa en listado de instrucciones utilizando algunos modificadores.

ST – Texto Estructurado

La programación en texto estructurado es un lenguaje de alto nivel que permite la utilización de

condicionales y bucles (Conocidos generalmente por su nombre en inglés, loops). Este lenguaje es el ideal

para aquellos programadores con experiencia en lenguajes como C o Pascal, ya que pueden familiarizarse

con él casi de inmediato.

La programación en texto estructurado se basa en expresiones. Una expresión es una construcción que

retorna un valor luego de su evaluación, y se compone de operadores y operandos. Un operando puede ser

una constante, una variable, un llamado a una función u otra expresión. La evaluación de expresiones se

realiza a través del procesamiento de operadores de acuerdo a ciertas reglas de prioridad. El operador con

la mayor prioridad es procesado primero, luego el operador con el siguiente nivel de prioridad, y así

sucesivamente hasta que todos los operadores hayan sido procesados. Operadores con igual nivel de

prioridad son procesados de izquierda a derecha. La tabla 6.2 muestra la prioridad de los operadores en ST.

Operación Operador Nivel de Prioridad

Paréntesis (expresió

n)

Máxima prioridad

Llamado a una función Nombre de función (parámetros) .

Potenciación EXPT .

Negación NOT .

Multiplicación * .

División / .

Módulo MOD .

suma + .

Resta - .

Comparación <, >, <=, >= .

Igual = .

Distinto <> .

AND booleana AND .

XOR booleana XOR .

OR booleana OR Mínima prioridad

Tabla 6.2: Prioridad de operadores en ST.

Page 56: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

56 © Festo Didactic Ar-Festo

A continuación se enumeran los bucles condicionales y de control con lo que se puede trabajar en lenguaje

de texto estructurado:

o Condicional IF: Permite verificar una condición booleana y dependiendo de la misma ejecutar

instrucciones.

Sintaxis:

IF <Expresión_Booleana_1> THEN

<Instrucciones_1>

{ELSEIF <Expresión_Booleana_2> THEN

<Instrucciones_2>

.

.

ELSIF <Expresión_Booleana_n> THEN

<Instrucciones_n>

ELSE

<Instrucciones>}

END_IF;

(La parte entre llaves es opcional).

Si la expresión booleana de la condición IF es verdadera, se ejecutan el conjunto de instrucciones

correspondientes y se sale del lazo. Si la condición de IF es falsa, se evalúan las condiciones de ELSEIF en

orden hasta encontrar una verdadera, en cuyo caso se ejecuta el conjunto de instrucciones

correspondientes y se finaliza el lazo. Si ninguna de las expresiones ELSEIF son verdaderas, se ejecutan las

instrucciones correspondientes a la expresión ELSE.

o Instrucción CASE: Esta instrucción permite combinar múltiples instrucciones condicionales en función

de la misma variable y en una única construcción.

Sintaxis:

CASE <Variable> OF

<Valor_1>: <Instrucciones_ 1>

<Valor_2>: <Instrucciones_ 2>

<Valor_3,Valor_4,Valor_5>: <Instrucciones_ 3>

<Valor_6 .. Valor_10>: <Instrucciones_ 4>

...

<Valor_n>: <Instrucciones_n>

ELSE <Instrucciones_else>

END_CASE;

Page 57: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 57

La instrucción CASE es procesada de acuerdo al siguiente modelo: Si la variable de la condición tiene el

valor indicado en alguna de las líneas, las instrucciones correspondientes serán ejecutadas. Si la variable no

toma ninguno de los valores indicados, las instrucciones ELSE serán luego ejecutadas.

o Lazo FOR: Este bucle permite programar procesos repetitivos.

Sintaxis:

Variable :INT;

FOR <Variable> := <V_Inicial> TO <V_Final> {BY <Paso>} DO

<Instrucciones>

END_FOR;

(La parte entre llaves es opcional).

Las instrucciones serán ejecutadas hasta tanto el valor de variable sea mayor al valor V_Final. Esta

condición es verificada antes de ejecutar las instrucciones, por lo que las instrucciones del lazo no serán

nunca ejecutadas si V_Inicial es mayor a V_Final. La variable se incrementa automáticamente luego de cada

ciclo en el valor definido como Paso. Si Paso no se define, se toma 1 como valor por defecto.

o Lazo WHILE:

El lazo WHILE puede utilizarse de manera similar al FOR, con la diferencia de que la condición de salida

puede ser cualquier expresión booleana. Esto significa que mientras se cumpla la condición indicada el lazo

será ejecutado.

Sintaxis:

WHILE <Expresión_Booleana> DO

<Instrucciones>

END_WHILE;

Debe notarse que si la condición booleana es falsa en la primera evaluación, las instrucciones

correspondientes no se ejecutaran nunca. De igual manera, si la condición booleana no toma nunca el valor

falso, se entra en un bucle infinito.

o Lazo REPEAT:

Este bucle se diferencia del WHILE en que la condición de salida es chequeada luego de la ejecución

del lazo. De esta manera, el lazo será ejecutada al menos una vez antes de finalizar su ejecución sin

importar el valor de la condición booleana. Es este lazo las instrucciones se ejecutarán hasta que la

condición booleana retorne el valor VERDADERO. Si la condición booleana nunca toma ese valor, se

generará un bucle infinito.

Page 58: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

58 © Festo Didactic Ar-Festo

Sintaxis:

REPEAT

<Instrucciones>

UNTIL <Expresión_ Booleana>

END_REPEAT;

Las instrucciones WHILE y REPEAT tienen mejores prestaciones que la instrucción FOR dado que no es

necesario conocer de antemano la cantidad de ciclos a ejecutar. Sin embargo, en caso de conocerse dicho

valor es preferible trabajar con el lazo FOR, ya que de esta manera se evita el riesgo de caer en un bucle

infinito.

Fig. 6.4: Ejemplo de programación en texto estructurado (ST).

Lenguajes de programación gráficos

SFC – Esquema secuencial de funciones

El esquema secuencial de funciones (SFC) es un lenguaje de programación gráfico que permite describir el

orden cronológico de las diferentes acciones a llevar a cabo en un programa. Es una importante herramienta

para estructurar y ordenar el programa, aunque tiene la desventaja de no poder ser convertido a otro

lenguaje.

Cada una de los pasos tiene acciones asociadas que se llevan a cabo cuando el mismo se encuentra activo.

Dichas acciones son los verdaderos programas. Los pasos están separados por transiciones, las cuales

contienen las condiciones booleanas para la continuación del la secuencia. Si bien CoDeSys soporta una

versión de SFC que está en concordancia con el estándar IEC 61131-3, también ofrece un modo simplificado;

mientras que los pasos IEC contienen flags con calificadores y soportan hasta nueve acciones en un solo

paso, la versión simplificada solo muestra un triángulo negro en la esquina superior derecha del paso y

permite una sola acción en cada paso. Las acciones pueden programarse en cualquiera de los lenguajes IEC,

inclusive en SFC nuevamente.

Page 59: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 59

Fig. 6.5: Ejemplo de programación en esquema secuencial de funciones (SFC).

Para poder utilizar pasos IEC en lugar de pasos simplificados, la librería iecsfc.lib debe ser incluida en el

proyecto. Las acciones asociadas con pasos IEC son mostradas a la derecha del paso, en una caja de dos

partes. Del lado izquierdo se puede ver un calificador, mientras que del lado derecho se muestra el nombre

de la acción. La tabla 6.3 resume los posibles calificadores IEC y su implicancia.

Adicionalmente, es posible asociar a cada paso una acción de entrada y una acción de salida. Una acción de

entrada es ejecutada por única vez apenas el paso se hace activo. Una acción de salida es también

ejecutada una única vez apenas el paso es desactivado. Las acciones de entrada se identifican en cada paso

con una E en la esquina inferior izquierda, mientras que las acciones de salida se identifican con una X en la

esquina inferior derecha.

Page 60: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

60 © Festo Didactic Ar-Festo

Calificador Implicancia

N

No almacenar

La acción estará activa mientras el paso lo esté

R

Reset

La acción es desactivada

S

Set

La acción es activada y permanece activa hasta ser

específicamente desactivada.

L Limitado

temporalmente

La acción es activada por un determinado periodo de

tiempo, siendo como máximo el tiempo que el paso se

encuentre activo.

D

Retardada en tiempo

La acción se vuelve activa luego de un tiempo

determinado siempre y cuando el paso siga activo. Una

vez iniciada, permanece activa todo el tiempo que el paso

se encuentre activo. P

Pulso

La acción es ejecutada solo una vez si el paso se encuentra

activo.

SD

Almacenada y

retardada en tiempo

La acción se vuelve activa luego de un tiempo

determinado y permanece activa hasta ser

específicamente desactivada.

DS Retardada y

Almacenada

La acción se vuelve activa luego de un tiempo

determinado siempre y cuando el paso siga activo.

Permanecerá activa hasta ser específicamente

desactivada.

SL Almacenada y

limitada

t emporalmente

La acción es activada por un determinado tiempo.

Tabla 6.3: Calificadores de acciones IEC y sus implicancias.

Fig. 6.6: STEP en SFC con acción de entrada (E) y salida (X).

Page 61: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 61

Además de la configuración de las acciones, diferentes tipos de ramificaciones pueden ser generadas a lo

largo del programa, a saber:

o Ramas alternativas:

Dos o más ramas pueden ser alternativas. Esto significa que cada rama debe comenzar y finalizar con una

transición. Las ramas alternativas pueden contener ramas paralelas e incluso otras ramas alternativas. Una

rama alternativa siempre comienza y finaliza con una línea horizontal. Son evaluadas de izquierda a

derecha; la primera transición con un resultado verdadero habilita la ejecución de su respectiva rama en

detrimento del resto de ellas.

o Ramas paralelas:

Dos o más ramas pueden definirse como paralelas. Cada rama paralela debe comenzar y finalizar con un

paso. Las ramas paralelas pueden contener ramas alternativas y otras ramas paralelas. Una rama paralela

comienza con una doble línea y finaliza con una doble línea o un salto. Al hacerse verdadera la condición

previa a las ramas paralelas, todas las primeros pasos de las ramas paralelas entre sí son ejecutados en

simultaneo. El paso que sigue la línea final de las ramas paralelas se convierte en activo cuando todos los

pasos previos están activos y la condición de transición anterior produce un valor verdadero.

Fig. 6.7: Ejemplos de ramas alternativas, y saltos en SFC.

Page 62: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

62 © Festo Didactic Ar-Festo

o Salto (jump):

Un salto es una conexión a un paso no consecutivo al actual, cuyo nombre es indicado en la etiqueta del

salto. Los saltos son necesarios debido a que no se permiten conexiones hacia arriba o cruzadas.

Otra característica de la programación en SFC son las variables implícitas (flags) para consultar el estado de

los pasos, las acciones y la duración de los pasos activos. Estas variables son implementadas por la librería

iecsfc.lib para pasos IEC y directamente por CoDeSys para pasos no-IEC.

FBD – Diagrama de bloques de funciones

El lenguaje de programación de diagrama de bloques de funciones (FBD) es un lenguaje gráfico orientado a

redes y muy sencillo de comprender. Cada una de las redes contiene una estructura que representa ya sea

una expresión lógica, aritmética, el llamado a una función, el llamado a un bloque de funciones o un salto.

El editor FBD de CoDeSys permite agilizar notablemente la programación a través de la configuración

automática de bloques y conexiones.

Fig. 6.8: Ejemplo de programación en Diagrama de bloques de funciones (FBD).

CFC – Esquema continuo de funciones

El esquema continuo de funciones (CFC) no es un lenguaje de programación en si mismo sino que se trata

de un editor que realiza una implementación particular del editor de FBD, pero no orientado a redes. De esta

manera, la libre ubicación de bloques y conexiones es posible, permitiendo funciones tales como lazos de

realimentación.

Para controlar y modificar el orden de ejecución de los bloques, se utiliza un cuadro gris con un número que

se puede encontrar en la esquina superior derecha de cada uno de los bloques, en donde se muestra el

número de orden de ejecución en el ciclo de control.

Page 63: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 63

Fig. 6.9: Ejemplo de programación en esquema continuo de funciones (CFC).

LD – Diagrama de escalera

La programación en diagrama de escalera es un lenguaje de programación gráfico que permite combinar

contactos de relés y bobinas, simplificando notablemente la comprensión del programa por personal con

poca experiencia en programación. Es un lenguaje orientado a redes, y se encuentra disponible para la gran

mayoría de los PLC’s clásicos. Es muy simple para la programación de expresiones booleanas, pero su grado

de complejidad aumenta cuando se necesita trabajar con datos de otros tipos, como por ejemplo valores

analógicos.

Fig. 6.10: Ejemplo de programación en diagrama de escalera (LD).

Page 64: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

64 © Festo Didactic Ar-Festo

7 Operadores IEC 61131-3

La suite de desarrollo CoDeSys soporta todos los operadores especificados por el estándar IEC 61131-3. En

contraste con las funciones estándar, las cuáles son provistas por librerías (Ver capítulo 8 – librería

estándar), los operadores son reconocidos implícitamente a lo largo de todo el proyecto, y son utilizados en

las POU de la misma manera que las funciones. Además de los operadores IEC, CoDeSys también soporta

algunos otros operadores, los cuáles serán tratados en las secciones subsiguientes.

Es importante destacar que en operaciones con variables de punto flotante, los resultados dependen

directamente del sistema target que está siendo utilizado.

Operadores de asignación

Estos operadores tienen por finalidad la asignación de valores a las variables. Dichos valores pueden

provenir de direcciones, resultados de expresiones, constantes, etc. Este tipo de operadores pueden ser

utilizado para cualquier tipo de datos, ya sea estándar o definido por el usuario.

La forma de asignar variables difiere en función del lenguaje en el cuál se esté programando, si bien los

resultados finales serán siempre los mismos. Debe destacarse que para la programación en LD, la

asignación de variables es válida solamente si se utilizan variables de tipo booleanas.

LD / ST

LD /ST se trata de la asignación mas básica de variables. Su función es la de asignar un valor o el resultado

de una expresión a una variable. En la figura 7.1 se pueden apreciar ejemplos de su uso en los diferentes

lenguajes IEC.

LDN / ST

Con este operador, el valor a ser asignado debe ser en general de tipo booleano (Nótese que no se habla

solamente del tipo de variable BOOL sino que en algunos lenguajes se puede utilizar los tipos WORD, BYTE,

y todos aquellos tipos de datos que almacenen valores binarios o booleanos). El resultado será cargar la

inversa del valor de la primera variable en la segunda. La figura 7.2 muestra ejemplos de su uso en los

diferentes lenguajes IEC.

Page 65: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 65

FBD:

ST:

IL:

Figura 7.1: Ejemplos de asignación LD / ST en los diferentes lenguajes IEC.

FBD:

LD:

ST:

IL:

Figura 7.2: Ejemplos de asignación LDN / ST en los diferentes lenguajes IEC.

LD / S

El valor a ser asignado debe ser en general de tipo booleano. El resultado será cargar el valor verdadero en

la variable de salida si la variable de entrada es también verdadera. Ejemplos de su uso pueden verse en la

figura 7.3.

Page 66: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

66 © Festo Didactic Ar-Festo

FBD:

ST:

IL:

Figura 7.3: Ejemplos de asignación LD / S en los diferentes lenguajes IEC.

FBD:

ST:

IL:

Figura 7.4: Ejemplos de asignación LD / R en los diferentes lenguajes IEC.

Page 67: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 67

LD / R

Similar al caso anterior, el valor a ser asignado debe ser de tipo booleano. El resultado será cargar el valor

falso en la variable de salida si la variable de entrada es verdadera. La figura 7.4 muestra algunos ejemplos

de su uso en los diferentes lenguajes de programación IEC.

MOVE

El operador MOVE permite la asignación de una variable o una constante a otra variable del tipo adecuado.

Puede utilizarse en combinación con la función de habilitación de los editores de LD y CFC, aunque esta

combinación no es posible en FBD. En caso de utilizar dicha combinación, la asignación se hará efectiva

cuando la entrada de habilitación tenga el valor TRUE. La figura 7.5 muestra algunos ejemplos de su uso en

los diferentes lenguajes IEC.

CFC:

IL:

Figura 7.5: Ejemplos de uso del operador ADD en diferentes lenguajes IEC.

Operadores aritméticos

ADD

El operador ADD permite sumar variables de los tipos BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,

UDINT, REAL y LREAL. También permite sumar dos variables temporales, resultando en un nuevo valor de

tiempo. (Por ejemplo, t#45s + t#50s = t#1m35s). La figura 7.6 muestra algunos ejemplos de su uso en los

diferentes lenguajes de programación IEC.

Page 68: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

68 © Festo Didactic Ar-Festo

FBD:

ST:

IL:

Figura 7.6: Ejemplos de uso del operador ADD en diferentes lenguajes IEC.

MUL

El operador MUL permite multiplicar variables de los tipos BYTE, WORD, DWORD, SINT, USINT, INT,

UINT, DINT, UDINT, REAL and LREAL.

La figura 7.7 muestra algunos ejemplos de su uso en los diferentes lenguajes de programación IEC.

FBD:

ST:

IL:

Figura 7.7: Ejemplos de uso del operador MUL en diferentes lenguajes IEC.

Page 69: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 69

SUB

Permite sustraer una variable de otra de los tipos BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,

UDINT, REAL and LREAL. También permite sustraer una variable temporal de otra, resultando en un nuevo

valor de tiempo. (Por ejemplo, t#1m35s - t#50s = t#45s). La figura 7.8 muestra algunos ejemplos de su uso

en los diferentes lenguajes de programación IEC.

FBD:

ST:

IL:

Figura 7.8: Ejemplos de uso del operador SUB en diferentes lenguajes IEC.

DIV

FBD:

ST:

IL:

Figura 7.9: Ejemplos de uso del operador DIV en diferentes lenguajes IEC.

Permite la división entera de una variable en otra de los tipos BYTE, WORD, DWORD, SINT, USINT, INT, UINT,

DINT, UDINT, o la división entera y fraccionaria de los tipos de datos REAL and LREAL. La figura 7.9 muestra

algunos ejemplos de su uso en los diferentes lenguajes de programación IEC.

Page 70: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

70 © Festo Didactic Ar-Festo

MOD

Este operador permite obtener el resto de la división entera de dos variables de los tipos BYTE, WORD,

DWORD, SINT, USINT, INT, UINT, DINT, UDINT. La figura 7.10 muestra algunos ejemplos de su uso en los

diferentes lenguajes de programación IEC.

FBD:

ST:

IL:

Figura 7.10: Ejemplos de uso del operador MOD en diferentes lenguajes IEC.

Operadores de cadenas de bits

AND

FBD:

ST:

IL:

Figura 7.11: Ejemplos de uso del operador AND en diferentes lenguajes IEC.

Realiza la operación AND lógica bit a bit entre operandos binarios. Estos deben ser del los tipos BOOL,

BYTE, WORD o DWORD.

Page 71: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 71

OR

Realiza la operación OR lógica bit a bit entre operandos binarios. Estos deben ser del los tipos BOOL, BYTE,

WORD o DWORD.

FBD:

ST:

IL:

Figura 7.12: Ejemplos de uso del operador OR en diferentes lenguajes IEC.

XOR

Realiza la operación XOR lógica bit a bit entre operandos binarios. Estos deben ser del los tipos BOOL,

BYTE, WORD o DWORD. Para el caso de tener más de dos entradas, las entradas serán chequeadas en pares

y los resultados particulares comparados nuevamente en pares.

NOT

Realiza la operación NOT lógica bit a bit entre operandos binarios. Estos deben ser del los tipos BOOL, BYTE,

WORD o DWORD.

Operadores de desplazamiento (registros de desplazamiento)

SHL

Este operador realiza la operación de rotación a la izquierda del operando binario, el cual resulta

desplazado en n bits (ej.: SHL (in, n)). Los tipos de datos soportados son BYTE, WORD o DWORD. Los

espacios de la derecha serán completados con cero y los bits sobrantes a la izquierda serán descartados.

Figura 7.13: Funcionamiento del operador SHL.

Page 72: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

72 © Festo Didactic Ar-Festo

Figura 7.14: Ejemplo de uso del operador SHL en ST.

Como puede apreciarse en la figura 7.14, a iguales operaciones los resultados serán diferentes para

diferentes tipos de datos, a pesar que las variables de entradas tengan el mismo valor.

SHR

Este operador realiza la operación de rotación a la derecha del operando binario, el cual resulta desplazado

en n bits (ej.: SHR (in, n)). Los tipos de datos soportados son BYTE, WORD o DWORD. Los espacios de la

izquierda serán completados con cero y los bits sobrantes a la derecha serán descartados.

Figura 7.15: Funcionamiento del operador SHR.

Figura 7.16: Ejemplo de uso del operador SHR en FBD.

Page 73: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 73

ROL

Este operador realiza la operación de rotación a la izquierda del operando binario, el cual resulta

desplazado en n bits (ej.: ROL (in, n)). Los tipos de datos soportados son BYTE, WORD o DWORD. Los

espacios de la derecha serán completados con los bits sobrantes de la izquierda.

Figura 7.17: Ejemplo de uso del operador ROL en IL.

Figura 7.18: Funcionamiento del operador ROL.

ROR

Este operador realiza la operación de rotación a la derecha del operando binario, el cual resulta desplazado

en n bits (ej.: ROL (in, n)). Los tipos de datos soportados son BYTE, WORD o DWORD. Los espacios de la

izquierda serán completados con los bits sobrantes de la derecha.

Figura 7.19: Funcionamiento del operador ROR.

Page 74: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

74 © Festo Didactic Ar-Festo

Operadores de selección

SEL

FBD:

ST:

IL:

Figura 7.20: Ejemplos de uso del operador SEL.

El operador SEL permite la selección binaria, a través de la cuál una variable podrá tomar uno de los valores

previamente definidos en función del valor de otra variable del tipo binario. El siguiente ejemplo aclarará el

funcionamiento del mismo:

Vx := SEL(G, V1, V2) significa:

o Vx := V1 si G= Falso.

o Vx := V2 si G= Verdadero.

Las variables VX, V1 y V2 pueden ser de cualquier tipo, pero todas ellas deben ser del mismo tipo. La

variable G debe ser una variable binaria. El valor almacenado en la variable Vx será V1 cuando G sea falsa, o

V2 cuando G sea verdadera.

Page 75: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 75

MAX

Este operador retorna el valor máximo de entre dos valores. Puede ser utilizado con variables de cualquier

tipo.

Figura 7.21: Ejemplos de uso del operador MAX en ST.

MIN

Figura 7.22: Ejemplos de uso del operador MIN en IL.

Este operador retorna el valor mínimo de entre dos valores. Puede ser utilizado con variables de cualquier

tipo.

LIMIT

El operador LIMIT permite limitar el rango de variación de una variable entre un valor mínimo y un valor

máximo, tal como se muestra en la figura 7.23. Se puede trabajar con variables de cualquier tipo. El

siguiente ejemplo despejará dudas:

OUT := LIMIT(MIN, IN, MAX)

Donde Min es la variable o el valor límite inferior y MAX es el valor o variable superior. Si el valor de la

variable IN esta en el rango ( MIN < IN < MAX ) entonces la variable OUT tendrá el mismo valor que la variable

IN. Si IN está por encima de MAX, la variable OUT tomará el valor de MAX. Si IN está por debajo de MIN,

entonces la variable OUT tomará el valor de MIN.

Page 76: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

76 © Festo Didactic Ar-Festo

Figura 7.23: Relación entrada/Salida del operador LIMIT.

Figura 7.24: Ejemplos de uso del operador LIMIT en IL.

Operadores de comparación

GT

GT es un operador booleano que retorna verdadero si el valor del primer operando es mayor al valor del

segundo. Los operandos pueden ser de los tipos BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,

UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME y STRING.

Figura 7.25: Ejemplos de uso del operador GT en FBD.

Page 77: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 77

LT

LT es un operador booleano que retorna verdadero si el valor del primer operando es menor que el valor del

segundo. Los operandos pueden ser de los tipos BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,

UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME y STRING.

Figura 7.26: Ejemplos de uso del operador LT en IL.

LE

LE es un operador booleano que retorna verdadero si el valor del primer operando es menor o igual que el

valor del segundo. Los operandos pueden ser de los tipos BOOL, BYTE, WORD, DWORD, SINT, USINT, INT,

UINT, DINT, UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME y STRING.

Figura 7.27: Ejemplos de uso del operador LE en ST.

Page 78: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

78 © Festo Didactic Ar-Festo

GE

GE es un operador booleano que retorna verdadero si el valor del primer operando es mayor o igual al valor

del segundo. Los operandos pueden ser de los tipos BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT,

DINT, UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME y STRING.

EQ

EQ es un operador booleano que retorna verdadero si el valor del primer operando es igual al valor del

segundo. Los operandos pueden ser de los tipos BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,

UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME y STRING.

NE

NE es un operador booleano que retorna verdadero si el valor del primer operando es distinto del valor del

segundo. Los operandos pueden ser de los tipos BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,

UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME y STRING.

Operadores de direcciones

ADR

Este operador no está definido en el estándar IEC 61131-3. Su función es la de retornar la dirección de su

argumento. Su argumento puede ser una variable de cualquier tipo. Esta dirección puede ser utilizada para

implementar funciones para ser tratadas como punteros, o puede ser utilizada para almacenar su valor de

salida directamente en un puntero. La salida de este operador es siempre una variable del tipo DWORD.

Figura 7.28: Ejemplos de uso del operador ADR en IL.

Page 79: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 79

Operadores de ramificación

CAL

Este operador es válido para el lenguaje de listado de instrucciones solamente (IL). Permite llamar una

función, un bloque de funciones o un programa. Las variables de entrada de la POU que está siendo llamada

deben colocarse en paréntesis a continuación del nombre de la POU y separadas por comas.

Figura 7.29: Ejemplos de uso del operador CAL en IL.

JMP

Este operador puede ser utilizado en los lenguajes de programación IL, FBD y LD, aunque en diferentes

maneras en cada uno de ellos. Su función es la de generar un salto incondicional a una etiqueta dentro de la

misma POU. Las figuras 7.30 a 7.32 muestran ejemplos del uso de este operador en IL, LD y FBD

respectivamente.

RET (RETURN)

RET puede ser utilizado en los lenguajes de programación IL, FBD y LD. Su función es la de interrumpir

prematuramente el ciclo de ejecución. Las figuras 7.30 a 7.32 muestran ejemplos del uso de este operador

en IL, LD y FBD respectivamente.

Figura 7.30: Ejemplos de uso del operador JMP y RET (RETURN) en LD.

Page 80: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

80 © Festo Didactic Ar-Festo

Figura 7.31: Ejemplos de uso del operador JMP y RET en IL.

Figura 7.32: Ejemplos de uso del operador JMP y RET (RETURN) en FBD.

Page 81: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 81

Llamada a otras POU

Tabla 7.1: Llamado a otras unidades de programa.

La llamada a otras POU se debe realizar de manera diferente en cada uno de los lenguajes de programación

IEC 61131-3. En la tabla 7.1 puede verse de manera resumida y a través de ejemplos la manera en la cual se

debe realizar el llamado a otras POU, específicamente programas, funciones y bloques de funciones.

Operadores numéricos

ABS

El operador ABS tiene por función devolver el valor absoluto del operando de entrada. Las posibles

combinaciones de tipos de datos de entrada / Tipos de datos de salida pueden apreciarse en la tabla 7.2,

mientras que la figura 7.33 presenta un ejemplo de su utilización en lenguaje de texto estructurado.

Figura 7.33: Ejemplos de uso del operador ABS en ST.

Page 82: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

82 © Festo Didactic Ar-Festo

Variable de entrada Variable de Salida

INT INT, REAL, WORD, DWORD,

DINT

REAL REAL

BYTE INT, REAL, BYTE, WORD,

DWORD, DINT

WORD INT, REAL, WORD, DWORD,

DINT

DWORD REAL, DWORD, DINT

SINT REAL

USINT REAL

UINT INT, REAL, WORD, DWORD,

DINT, UDINT, UINT

DINT REAL, DWORD, DINT

UDINT REAL, DWORD, DINT, UDINT

Tabla 7.2: Posibles combinaciones de tipos de variable de entrada/salida para el operador ABS.

SQRT

Este operador retorna la raíz cuadrada de la variable de entrada. Dicha variable puede ser de los tipos BYTE,

WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT.

La variable de salida debe ser del tipo REAL.

Figura 7.34: Ejemplos de uso del operador SQRT en FBD.

Page 83: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 83

LN

Este operador retorna el logaritmo natural de la variable de entrada. Dicha variable puede ser de los tipos

BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT. La variable de salida debe ser del tipo

REAL.

Figura 7.35: Ejemplos de uso del operador LN en IL.

LOG

Este operador retorna el logaritmo base diez de la variable de entrada. Dicha variable puede ser de los tipos

BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT. La variable de salida debe ser del tipo

REAL.

Figura 7.36: Ejemplos de uso del operador LOG en ST.

EXP

Este operador retorna la función exponencial ex, donde X es la variable de entrada. Dicha variable puede ser

de los tipos BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT. La variable de salida debe ser

del tipo REAL.

Page 84: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

84 © Festo Didactic Ar-Festo

SIN

Este operador retorna el seno de la variable de entrada, la cual debe estar en radianes. Dicha variable puede

ser de los tipos BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT. La variable de salida debe

ser del tipo REAL.

COS

Este operador retorna el coseno de la variable de entrada, la cual debe estar en radianes. Dicha variable

puede ser de los tipos BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT. La variable de

salida debe ser del tipo REAL.

TAN

Este operador retorna la tangente de la variable de entrada, la cual debe estar en radianes. Dicha variable

puede ser de los tipos BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT. La variable de

salida debe ser del tipo REAL.

ASIN

Este operador retorna el arco-seno (función inversa del seno) de la variable de entrada, la cual debe estar en

radianes. Dicha variable puede ser de los tipos BYTE,

WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT. La variable de salida debe ser del tipo REAL.

ACOS

Este operador retorna el arco-coseno (función inversa del coseno) de la variable de entrada, la cual debe

estar en radianes. Dicha variable puede ser de los tipos BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT,

UINT, UDINT. La variable de salida debe ser del tipo REAL.

7. 9. 11 ATAN

Page 85: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 85

Este operador retorna el arco-tangente (función inversa de la tangente) de la variable de entrada, la cual

debe estar en radianes. Dicha variable puede ser de los tipos BYTE, WORD, DWORD, INT, DINT, REAL, SINT,

USINT, UINT, UDINT. La variable de salida

debe ser del tipo REAL.

7. 9. 12 EXPT

Este operador realiza la función potenciación, la exponenciación de una variable con otra variable. El valor

de salida es (variable_1)(variable_2). Las variables de entrada pueden ser de los tipos BYTE, WORD,

DWORD, INT, DINT, REAL, SINT, USINT, UINT,

UDINT. La variable de de salida debe ser del tipo REAL.

FBD:

ST:

IL:

Figura 7.37: Ejemplos de uso del operador EXPT.

Page 86: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

86 © Festo Didactic Ar-Festo

7. 10 Operadores de conversión de tipo

Este tipo de operadores tienen por finalidad convertir variables de un tipo de datos a otro.

Figura 7.38: Asistente de entrada. Listado de los operadores de conversión de tipo disponibles en CoDeSys.

Debe notarse que esta implícitamente prohibido convertir tipo ‚más grandes‛ en tipos ‚más pequeños‛

(como por ejemplo de tipo ENTERO a BYTE). Para estas conversiones se requieren ciertas consideraciones

especiales para no perder información.

Si bien las posibilidades de conversión son muchas, todas ellas utilizan la misma sintaxis y operan de forma

similar. El asistente de entrada será de gran ayuda para ver los tipos de conversiones permitidas. La sintaxis

a utilizar es la siguiente:

<Tipo_de_dato_Variable_1>_TO_< Tipo_de_dato_Variable_2>

7. 10. 1 BOOL_TO

Permite convertir de tipo booleano en cualquier otro tipo. Para tipos numéricos, el resultado será 1 cuando

el operando es VERDADERO y 0 cuando el operando es FALSO. Para tipos STRING, el resultado será la

cadena de caracteres TRUE o FALSE respectivamente.

Page 87: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 87

Figura 7.39: Ejemplo de conversión BOOL_TO en IL.

7. 10. 2 TO_BOOL

Permite convertir de cualquier tipo a tipo booleano. Para tipos numéricos, el resultado será VERDADERO

cuando el operando no es igual a 0. El resultado será falso cuando el operando es 0. Para tipos STRING, el

resultado será VERDADERO cuando el operando es ‘TRUE’, y será FALSO en cualquier otro caso.

Figura 7.40: Ejemplo de conversión TO_BOOL en ST.

Page 88: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

88 © Festo Didactic Ar-Festo

7. 10. 3 Conversiones entre tipos de números enteros

Permite convertir de cualquier tipo de número entero en otro tipo de número. Si se realiza una conversión

hacia un tipo de número ‚menor‛ (Menor tamaño del campo), puede perderse información; si el número que

se está convirtiendo excede el rango del tipo de dato de salida, los primeros bytes serán ignorados.

7. 10. 4 REAL_TO / LREAL_TO

Figura 7.41: Ejemplo de conversiones REAL_TO en ST.

Permite convertir de una variable de tipo REAL o LREAL en un tipo diferente. El valor será redondeado hacia

arriba o hacia abajo hacia el valor más cercano y convertido en el nuevo tipo de variable.

7. 10. 5 TIME_TO / TIME_OF_DAY

Page 89: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 89

Figura 7.42: Ejemplo de conversiones TIME_TO en IL.

Permite convertir de una variable de tipo TIME o TIME_OF_DAY en un tipo diferente. El tiempo será

almacenado internamente en una variable de tipo DWORD en milisegundos. Este es el valor que será

convertido.

7. 10. 6 STRING_TO

Permite convertir desde una variable del tipo STRING en un tipo de variable diferente. La variable de tipo

STRING debe contener un valor que sea válido en la variable de salida. En cualquier otro caso, el valor de

salida será 0.

Page 90: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

90 © Festo Didactic Ar-Festo

Figura 7.43: Ejemplo de conversiones STRING_TO en ST.

7. 10. 7 TRUNC

Este operador permite convertir de variables de tipo REAL en variables de tipo INT. La parte entera de la

variable de entrada será utilizada, descartando la parte irracional.

Page 91: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 91

8 Librerias: La librería estándar

Una librería es una lista de objetos los cuales pueden ser utilizados en diferentes proyectos. Las librerías

pueden ser generadas por el usuario o pueden ser propias de CoDeSys. También puede darse el caso de

que sean entregadas por el fabricante del hardware, en cuyo caso pueden estar encriptadas.

La librería por defecto que se incluye en todos los proyectos es la librería standard.lib. Esta librería es

propia de CoDeSys y provee funciones básicas tales como temporizadores y contadores entre otras. En este

capítulo se desarrollaran algunas de las funciones más destacadas de la librería standard.lib. Para mayor

información acerca de las funciones disponibles en esta librería debe consultarse la documentación oficial

de CoDeSys.

Otra librería de gran utilidad es la librería util.lib, la cual contiene funciones adicionales tales como

conversiones BCD, funciones matemáticas auxiliares, generadoras de señales y manipuladores para

procesamiento de valores analógicos entre otras. Esta librería no será tratada en este documento, pero

puede obtenerse mayor información en la documentación oficial.

Figura 8.1: El administrador de librerías. Funciones de la librería estándar.

Page 92: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

92 © Festo Didactic Ar-Festo

R_TRIG

R_TRIG es un bloque de funciones que permite detectar el flanco ascendente de una señal booleana. La

variable de salida será también una variable booleana, y permanecerá en estado FALSO mientras que la

variable de entrada sea falsa. Tan pronto como la señal de entrada pase de FALSO a VERDADERO, la salida

generará un pulso de corta duración indicando la detección del flanco ascendente, permaneciendo

nuevamente en estado FALSO hasta el próximo flanco ascendente de la señal de entrada.

Figura 8.2: Diagrama temporal del bloque de funciones R_TRIG.

Dado que se trata de un bloque de funciones, debe declararse una variable del tipo R_TRIG en la declaración

del programa, para de esta manera generar la instancia correspondiente.

Figura 8.3: Ejemplos de uso del bloque de funciones R_TRIG en IL.

F_TRIG

Figura 8.4: Diagrama temporal del bloque de funciones F_TRIG.

Page 93: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 93

F_TRIG es un bloque de funciones similar al caso anterior, cuya función es la de detectar el flanco

descendente de una señal booleana. La variable de salida será también una variable booleana, y

permanecerá en estado FALSO mientras que la variable de entrada sea verdadera. Tan pronto como la señal

de entrada pase de VERDADERO a FALSO, la salida generará un pulso de corta duración indicando la

detección del flanco descendente, permaneciendo nuevamente en estado FALSO hasta el próximo flanco

descendente de la señal de entrada.

Dado que se trata de un bloque de funciones, debe declararse una variable del tipo F_TRIG en la declaración

del programa, para de esta manera generar la instancia correspondiente.

Figura 8.5: Ejemplos de uso del bloque de funciones F_TRIG en ST.

Contadores

CTU

Se trata de un bloque de funciones incluido en la librería estándar para realizar cuentas ascendentes. Tanto

las variables de entrada CU y RESET como la variable de salida Q son del tipo BOOL. La variable de entrada

PV y la variable de salida CV son del tipo WORD.

Figura 8.6: Ejemplos de uso del bloque de funciones CTU en IL.

Page 94: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

94 © Festo Didactic Ar-Festo

La variable CV es la encargada de llevar la cuenta, y será inicializada con el valor 0 si la entrada RESET es

verdadera. Por cada flanco ascendente que presenta la variable de entrada CU, se incrementará la variable

de salida CV en una unidad.

La variable Q será verdadera cuando CV sea mayor o igual que la variable de entrada PV. La figura 8.6

ayudara a aclarar la forma de utilización de este bloque de funciones, mientras que la figura 8.7 muestra la

declaración del bloque de funciones CTU, en el administrador de librerías, en la pestaña recursos del

organizador de objetos.

Figura 8.7: Declaración del Bloque de funciones CTU en el administrador de librerías.

CTD

CTD es también un bloque de funciones incluido en la librería estándar para realizar cuentas descendentes.

Tanto las variables de entrada CD y LOAD como la variable de salida Q son del tipo BOOL, mientras que la

variable de entrada PV y la variable de salida CV son del tipo WORD.

La variable CV será la encargada de realizar la cuenta descendente, y será inicializada con el valor de la

entrada PV cuando LOAD es verdadera. Por cada flanco ascendente que presenta la variable de entrada CD,

se decrementará la variable de salida CV en una unidad. La variable Q será verdadera cuando CV haya

alcanzado el valor 0.

Page 95: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 95

Figura 8.8: Ejemplo de utilización del bloque de funciones CTD de la librería estándar en ST.

CTUD

El bloque de funciones CTUD permite realizar cuentas ascendentes y descendentes. Tanto las variables de

entrada CU, CD, RESET y LOAD como la variable de salida QU y QD son del tipo BOOL, mientras que la

variable de entrada PV y la variable de salida CV son del tipo WORD.

Figura 8.9: Ejemplo de utilización del bloque de funciones CTUD de la librería estándar en FBD.

Si la entrada RESET es verdadera, la variable CV será reinicializada a 0. En caso que LOAD este habilitada,

será reinicializada con el valor de la entrada PV. Igual que en el resto de los contadores, la variable que

llevará la cuenta es CV. Cuando LOAD y RESET tienen el valor FALSO, la variable CV será incrementada en 1

por cada flanco ascendente de la entrada CU (Count UP) y decrementada en 1 también por cada flanco

ascendente en la entrada CD (Count Down). La salida QU será verdadera cuando CV sea mayor o igual al

valor especificado en PV, mientras que QD será válida cuando CV será igual a 0.

Page 96: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

96 © Festo Didactic Ar-Festo

Temporizadores

TP

El bloque de funciones TP es un temporizador que permite generar un pulso de una amplitud definida. IN y

PT son variables de entrada de los tipos BOOL y TIME respectivamente, mientras que Q y ET son las

variables de salidas de los tipos BOOL y TIME respectivamente.

Si la entrada IN es falsa, la salida Q será falsa y ET será 0. Tan pronto como la entrada IN pase al estado

VERDADERO, ET comenzará a ser incrementada en milisegundos hasta alcanzar el valor predefinido en PT y

permanecerá constante luego de esto. La salida Q tomará el valor VERDADERO desde el momento en que IN

toma el valor VERDADERO y hasta que ET alcance el valor de PT. En cualquier otro momento, la salida Q

tomará el valor FALSO. De esta manera, la salida Q estará entregando una señal cuadrada cuyo tiempo en

estado alto será definido por el valor de entrada PT (en milisegundos). La figura 8.18 muestra la secuencia

temporal de funcionamiento del bloque de funciones PT.

Figura 8.10: Diagrama temporal del bloque de funciones TP.

Figura 8.11: Ejemplo de utilización del bloque de funciones TP en ST.

Page 97: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 97

TON

El bloque de funciones TON implementa un retardo a la conexión. Las variables IN y PT son variables de

entrada de los tipos BOOL y TIME respectivamente. Las variables Q y ET son variables de salida de los tipos

BOOL y TIME respectivamente. Si la entrada IN es falsa, tanto la salida Q como ET contienen el valor 0. Tan

pronto como IN pasa a estado VERADDERO, se comienza una cuenta de tiempo en milisegundos en la salida

ET hasta que el valor de dicha cuenta sea igual al ajustado en la entrada PT. De esta manera, la salida Q se

encuentra en estado verdadero cuando la entrada IN está en estado VERDADERO y Et es igual a PT. El

siguiente diagrama temporal ayuda a entender el funcionamiento de este temporizador.

Figura 8.12: Diagrama temporal del bloque de funciones TON.

Figura 8.13: Ejemplo de utilización del bloque de funciones TON en FBD.

Page 98: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

98 © Festo Didactic Ar-Festo

TOF

El bloque de funciones TOF implementa un retardo a la desconexión. Las variables IN y PT son variables de

entrada de los tipos BOOL y TIME respectivamente. Las variables Q y ET son variables de salida de los tipos

BOOL y TIME respectivamente. Si la entrada IN es verdadera, la salida Q se encontrara en estado

VERDADERO y ET contendrá el valor 0. Tan pronto como IN pasa a estado FALSO, se comienza una cuenta de

tiempo en milisegundos en la salida ET hasta que el valor de dicha cuenta sea igual al ajustado en la

entrada PT. De esta manera, la salida Q se encuentra en estado FALSO cuando la entrada IN está en estado

FALSO y ET es igual a PT. El siguiente diagrama temporal ayuda a entender el funcionamiento de este

temporizador.

Figura 8.14: Diagrama temporal del bloque de funciones TOF.

Figura 8.15: Ejemplo de utilización del bloque de funciones TOF en IL.

Page 99: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 99

Bloques de funciones biestable

SR

El bloque de funciones SR es básicamente un Flip-Flop con entrada de habilitación dominante. Tiene dos

entradas, SET1 y RESET, y una salida, Q1.EL valor de la salida responderá en todo momento a la siguiente

expresión:

Q1 := (RESET AND Q1) OR SET1

Este es, si la entrada SET1 se encuentra activa, la salida será TRUE independientemente del estado de la

entrada RESET. Si la entrada SET1 se encuentra en estado FALSE, el valor de la salida dependerá entonces

de la entrada RESET. Ambas entradas y la salida deben der del tipo BOOL.

RS

El bloque de funciones RS se trata al igual que el anterior de un Flip-Flop con entrada dominante. La

diferencia radica en que la entrada dominante es este caso la entrada de deshabilitación. Presenta dos

entradas, SET y RESET1, y una salida, Q1. EL valor de la salida responderá en todo momento a la siguiente

expresión:

Q1 := RESET AND (SET OR Q1)

Este es, si la entrada RESET1 se encuentra activa, la salida será FALSE

independientemente del estado de la entrada SET. Si la entrada RESET1 se encuentra en

estado FALSE, el valor de la salida dependerá de la entrada SET. Ambas entradas y la salida deben der del

tipo BOOL.

Page 100: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

100 © Festo Didactic Ar-Festo

9 Apendice A: Atajos de teclado

o CTRL + O: Abrir un proyecto (Desde un medio de

almacenamiento o directamente del controlador).

o CTRL + S: Guardar el proyecto actual.

o F2: Asistente de entrada.

o SHIFT + F2: Autodeclaración de variables.

o F1: Ayuda (Sensible al contexto).

o F2: Asistente de entrada.

o F11: Compilar.

o ALT + F8: Iniciar Modo Online.

o CTRL + F8: Terminar modo Online.

o F5: Activar programa.

o SHIFT + F8: Detener programa.

o F9: Colocar o quitar Breakpoint.

o CTRL + F7: Escribir valores al controlador.

o F7: Forzar valores.

Page 101: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

© Festo Didactic Ar-Festo 101

10 Bibliografia

o Base de datos SPIMS.

o CoDeSys provided by festo - Festo IPT.

o Welcome to the world of CoDeSys, CoDeSys pbf training – Dieter Staneker

o User Manual for PLC programming with CoDeSys 2.3– 3S-Smart Solution Software.

o CoDeSys Visualization. Supplement to the User Manualfor PLC Programming with CoDeSys 2.3 – 3S-Smartsoftware solution.

o Your license to success: CoDeSys and your controller – 3S CoDeSys training.

o Su licencia el éxito: CoDeSys y su controlador – 3SCoDeSys training. Traducción al español por festo-ME.

o http://www.infoplc.net/

o http://www.plcopen.org/

o http://www.3s-software.com/

o http://www.iec.ch

Page 102: Libro de texto - festodidacticargentina.comfestodidacticargentina.com/classroommanager/uploads/10000004/... · CoDeSys es la nueva plataforma de programación adoptada por festo para

102 © Festo Didactic Ar-Festo