Vous êtes sur la page 1sur 102

Libro de texto

CoDeSys
Introduccin al sistema de
programacin IEC 61131-3

Festo Didactic

Festo Didactic Ar-Festo

Versin:

1.01

Autor:

Gabriel Vento

Edicin:

Meissinger, Sergio Luciano

2013 Festo Didactic GmbH & Co. KG

Todos los derechos reservados. Ninguna parte de esta publicacin puede ser reproducida, almacenada en
sistemas de recuperacin o transmitida en cualquier forma o por cualquier medio, ya sea electrnica,
mecnica, fotocopia, grabacin o cualquier otro, sin el permiso previo por escrito de la editorial.

Festo Didactic Ar-Festo

Contenidos
1 Introduccin al estndar IEC 61131 -3 _________________________________________________________ 4
2 CoDeSys Caracteristicas bsicas, instalacin y sistemas target __________________________________ 6
3 Estructura de proyectos y unidades de organizacin de programas _______________________________ 28
4 Tipos de datos ___________________________________________________________________________ 39
5 Operandos en CoDeSys ____________________________________________________________________ 46
6 Lenguajes de programacin IEC 61131-3 _____________________________________________________ 53
7 Operadores IEC 61131-3 ___________________________________________________________________ 64
8 Librerias: La librera estndar _______________________________________________________________ 91
9 Apendice A: Atajos de teclado _____________________________________________________________ 100
10 Bibliografia ____________________________________________________________________________ 101

Festo Didactic Ar-Festo

1 Introduccin al estndar IEC 61131 -3


IEC Comisin Electrotcnica Internacional
La Comisin Electrotcnica Internacional (IEC) es la organizacin lder a nivel mundial en la preparacin y
publicacin de normas internacionales para todas las tecnologas elctricas, electrnicas y afines.
Numerosas normas son desarrolladas conjuntamente entre IEC e ISO (normas ISO/IEC).
A la IEC se le debe el desarrollo y difusin de los estndares de algunas unidades de medida,
particularmente el gauss, el hercio y el weber. Tambin fue responsable de la primera propuesta de un
sistema de unidades estndar, el sistema Giorgi, que con el tiempo se convertira en el sistema
internacional de unidades (SI).

IEC 61131-3 Estndar de programacin en automatizacin industrial


En la actualidad an siguen persistiendo sistemas de programacin de dispositivos de control especficos
del fabricante, con programacin dependiente y conexin compleja entre diferentes sistemas de control.
Esto significa para el usuario costos elevados, escasa flexibilidad y falta de normalizacin en las
implementaciones de control industrial.
El estndar IEC 61131-3 pretende ser la base en la estandarizacin de los lenguajes de programacin en
automatizacin industrial. Fue publicado por primera vez en el ao 1993 y actualmente se encuentra en
vigencia la segunda revisin (ao 2003). El uso de IEC 61131-3 proporciona numerosos beneficios para los
programadores, algunos de los cuales se enumeran a continuacin:

Construccin de un marco normativo para la programacin de una gran variedad de sistemas de


control.
Integracin de los bien conocidos y modernos lenguajes de programacin, dando especificaciones de
sintaxis y semntica, y evitando particularidades distintivas entre empresas (dialectos).

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


compaa.
Incremento de la reutilizacin de cdigo, minimizando los gastos en recursos humanos
(entrenamiento, depuracin, mantenimiento y consultora entre otras).

Integracin armoniosa de componentes de diferentes empresas en el sistema de control.

Festo Didactic Ar-Festo

Los elementos definidos en el estndar pueden ser claramente divididos en dos partes, a saber:

Elementos comunes:
o Tipos de datos.
o Variables y declaraciones de datos.
o Configuracin (tareas y recursos).
o Unidades de organizacin de programas (POU).

Lenguajes de programacin:
Textuales:
o Listado de instrucciones (IL).
o Texto estructurado (ST).
Grficos:
o Diagrama de contactos (LD).
o Diagrama de bloques de funciones (FBD).
o Grfico secuencial funcional (SFC).

En la actualidad existen numerosos entornos de programacin IEC que ofrecen diferentes herramientas
tales como sintaxis coloreada, ayuda en lnea y verificacin en tiempo de diseo entre otras. Estas
caractersticas asociadas a la programacin no estn especificadas en la norma, por lo que los proveedores
de los entornos de programacin las utilizan para tratar de diferenciar sus productos. No obstante, no existe
diferencia alguna en lo que respecta a los lenguajes de programacin y las caractersticas asociadas a ellos.

Las implicaciones tcnicas de la norma IEC 61131-3 son altas, dejando bastante espacio para el crecimiento
y la diferenciacin. 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 PLCs. 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 utilizacin siguen creciendo.

Festo Didactic Ar-Festo

2 CoDeSys Caracteristicas bsicas, instalacin y sistemas target


CoDeSys
CoDeSys es un entorno de desarrollo completo (IDE Integrated development system-) para PLC, compatible
con el estndar de programacin IEC 61131-3. Su nombre es un acrnimo para Sistema de Desarrollo de
Controladores (Controller Develop System). Permite utilizar funciones de edicin y depuracin similares a
las ofrecidas por los ms avanzados lenguajes de programacin de la actualidad.
CoDeSys es desarrollado y distribuido por la empresa alemana de software 3S. La primera versin (1.0) fue
liberada en el ao 1994. Actualmente se encuentra disponible la versin 3.0, aunque la ms difundida y la
analizada en este documento es la versin 2.3.

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

Festo Didactic Ar-Festo

CoDeSys puede ser bsicamente dividido en dos partes:


o Desarrollo: Consiste en los editores, compiladores y depuradores para proyectos segn IEC 61131-3.
Soporta los 5 lenguajes de programacin y genera cdigo objeto nativo para mltiples plataformas.
o Sistema en tiempo de ejecucin (Runtime): Realiza El ciclo del control, actualiza las I/O, controla la
comunicacin con el sistema de desarrollo y es responsable por la generacin de proyectos
autoarrancables (Boot project).
CoDeSys SoftPLC (CoDeSys SP)

Un SoftPLC es un paquete de software diseado para convertir cualquier sistema embebido o basado en PC
en un PLC. Los sistemas basados en SoftPLC se distinguen de los sistemas de desarrollos clsicos por la
utilizacin de lenguajes de programacin 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 implementacin es realizada
por el fabricante del dispositivo en colaboracin con 3S, y es totalmente transparente para el usuario final.

Fig. 2.2: Implementacin de CoDeSys SP runtime.

Festo Didactic Ar-Festo

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

Carga y ejecucin de aplicaciones segn IEC 61131-3.

Monitor de depuracin para aplicaciones IEC.

Sistema de entradas/salidas.

Comunicacin de la plataforma con el sistema de desarrollo.

CoDeSys SP runtime es escalable, modular, y adaptable a mltiples 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
tambin estndares tales como OPC y DDE, lo cual le provee una extensa capacidad de integracin para
cualquier tipo de aplicacin.
CoDeSys Provided by Festo
CoDeSys es la nueva plataforma de programacin adoptada por festo para sus controladores, tales como
CECX, FED-CEC y CPX-CEC entre otros. La eleccin de este IDE como nueva plataforma de desarrollo tiene
relacin con que 3S es uno de los fabricantes de software ms importantes en la industria europea de la
automatizacin, su producto CoDeSys es lder en sistemas de programacin independientes del hardware y
es compatible con IEC 61131-3.
CoDeSys provided by Festo se basa en la versin 2.3 de CoDeSys, y le agrega adems algunas
funcionalidades especficas tales como:

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

Festo Didactic Ar-Festo

o Splash Screen de Festo.


o Ayuda online especfica.
o Targets y libreras de Festo preinstaladas.
Tanto la instalacin de CoDeSys de 3S como la instalacin de CoDeSys provided by festo pueden coexistir
en una misma PC. A lo largo de este documento se utilizar el trmino CoDeSys para referirse
indistintamente a la versin original de 3S o a la versin de CoDeSys provided by festo.
Instalacin de CoDeSys y sistemas targets

Instalando CoDeSys
La instalacin de CoDeSys es similar a la instalacin de cualquier otra aplicacin 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 seleccin de componentes del asistente de instalacin. Es importante
mencionar que la opcin CoDeSys Gateway Server quedar seleccionada por defecto, ya que es la
herramienta de comunicacin que se utiliza no solo para la obtencin de datos desde el controlador sino
tambin para la comunicacin entre CoDeSys y los dispositivos de hardware o sistemas targets.

Fig. 2.4: Pantalla de seleccin de componentes del asistente de instalacin de CoDeSys.

Festo Didactic Ar-Festo

Se presentan tambin algunas herramientas opcionales, entre las cuales se pueden destacar SoftMotion,
CoDeSys OPC Server y CoDeSys SP PLCWinNT. La ltima ser analizada en captulos posteriores, mientras
que las dos primeras sern 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 especfica con un programa desarrollado en CoDeSys. Las caractersticas que se
definen en un TSP incluyen el generador de cdigo (cross-compilador), el mapa de memoria y los mdulos
de I/0 entre otros.
Si quiere instalarse un nuevo controlador, debe realizarse mediante su TSP, el cul es siempre provisto por
el fabricante del hardware, utilizando el programa InstallTarget, el cual es parte integral de la suite de
desarrollo CoDeSys.
La extensin por defecto de un TSP es *.TRG. En caso de que ninguna TSP se encuentre disponible, solo se
dispondr de la opcin None, y se pasar automticamente a modo simulacin.

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

10

Festo Didactic Ar-Festo

Si se quiere agregar soporte para un nuevo controlador, simplemente se deben seguir los siguientes pasos:
o Inicia el programa InstallTarget el cul se encuentra en la carpeta de instalacin de CoDeSys.
o Presionar el botn Open y seleccionar el directorio conteniendo el archivo *.tnf, el cul contiene
informacin 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
programacin.
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 aplicacin, contienen todas las herramientas
disponibles y los mens de configuracin, tanto de la aplicacin que se est programando como del
entorno de programacin.
o Espacio de trabajo (Editor): Espacio principal de trabajo. Su contenido cambiar en funcin de la
tarea que se est realizando. Cuando se est programando este espacio se convierte en el editor de
cdigo; en ese caso se encontrar dividido en dos sub-secciones; en la parte superior la
declaracin de variables y en la parte inferior el editor de cdigo 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 edicin, pasar al modo de visualizacin,
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 rpida el estado del sistema. Es de gran utilidad cuando se
trabaja en modo online.

Festo Didactic Ar-Festo

11

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


Caractersticas bsicas de CoDeSys
Autodeclaracin de variables
De acuerdo con el estndar de programacin IEC 61131-3, cada variable utilizada en una aplicacin de PLC
debe ser declarada. La declaracin en CoDeSys debe realizarse manualmente en la parte superior de la
ventada del editor de cdigo, ya sea ingresando la declaracin en modo texto o con la ayuda de una tabla.

Fig. 2.7: Ventana de autodeclaracin de variables.


Sin embargo, es tambin posible ingresar la variable en el editor de cdigo sin declaracin previa alguna. Al
realizar esto, se abrir una ventana de dilogo (ver figura2.7) la cual permitir al programador ingresar el
tipo de variable, la direccin IEC y comentarios asociados entre otros datos. Las variables ingresadas de
esta manera sern auto-declaradas y aparecern automticamente en la lista de declaracin de variables,
en la parte superior del editor.

12

Festo Didactic Ar-Festo

Sintaxis coloreada
La sintaxis coloreada es una herramienta muy utilizada en los entornos de programacin ya que simplifica
notablemente la lectura del cdigo y la deteccin de errores de sintaxis. CoDeSys soporta sintaxis coloreada
tanto en el editor de cdigo 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.

Festo Didactic Ar-Festo

13

Asistente de entrada
El asistente de entrada puede ser considerado como una de las caractersticas ms destacadas de la suite
de desarrollo CoDeSys. Al presionar F2 en cualquier situacin en la cual se debe ingresar una variable o un
llamado a una funcin este asistente se abrir automticamente 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 funcin estndar y variables globales. El rbol de posibilidades puede
ser presentado en forma plana o

estar jerrquicamente estructurado.

Fig. 2.9: Ventana del asistente de entrada.

14

Festo Didactic Ar-Festo

Ayuda sensible al contexto


La ayuda sensible al contexto permite obtener asistencia en forma rpida acerca del objeto especfico que
est siendo utilizado, ya sean un operador, una librera o incluso keywords.

Fig. 2.10: Ayuda sensible al contexto.


Seleccionando la expresin sobre la cual se desea obtener ayuda y presionando la tecla F1 se iniciar
automticamente el asistente mostrando la ayuda especfica de la expresin y, generalmente, brindando
ejemplos acerca de su uso. Presionando la tecla F1 sin haber seleccionado expresin alguna permitir
acceder directamente a la ayuda global.

Festo Didactic Ar-Festo

15

Configurador de tareas
CoDeSys permite la generacin y ejecucin de mltiples 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 tambin puede ser configurado para que sean realizadas en forma cclica o disparadas
por eventos.
El configurador de tareas se encuentra en la pestaa de recursos del organizador de objetos. Esta
caracterstica en particular es muy utilizada y ser analizada en profundidad en mdulos avanzados de
CoDeSys.

16

Festo Didactic Ar-Festo

Configuracin del controlador (PLC)


Para poder acceder a las entradas/salidas fsicas del controlador es necesario configurar los mdulos
disponibles en l. Para esta tarea, CoDeSys integra una herramienta de configuracin la cual puede
encontrarse en la pestaa de recursos del organizador de tareas.
El resultado que se obtiene de la configuracin es una imagen de proceso transparente al usuario, en la que
se encontrar disponible la informacin de las direcciones de las entradas y salidas, ya sea en formato
numrico o simblico.
Como funcin 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 configuracin con AS-interface tambin es posible.

Fig. 2.12: Configurador del controlador.

Festo Didactic Ar-Festo

17

Caractersticas de funcionamiento en modo online


Cuando se trabaja en modo online la ventana de declaracin de variables del editor de cdigo 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 analgicas se abrir un cuadro de dilogo que permitir ingresar el
nuevo valor. Sin embargo, con el fin de permitir modificar mltiples variables simultneamente, los valores
ingresados no sern inmediatamente descargados al controlador hasta que sea ejecutada la orden Escribir
valores del men online, o la combinacin de teclas Ctrl+F7.
CoDeSys tambin dispone de numerosas opciones de depuracin. Una de ellas es el forzado de variables.
Ejecutando el comando Forzar valores (F7) del men Online, las variables sern 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 depuracin del programa es la utilizacin de
breakpoints y modos de ejecucin por pasos o ciclos, los que permiten interrumpir la ejecucin 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.

18

Festo Didactic Ar-Festo

Si la opcin Display flow control del men online se encuentra activada las lneas de comando o redes
(dependiendo si se program en modo texto o grfico) ejecutadas en el ltimo ciclo del PLC sern
coloreadas. Esto ayuda a detectar si determinada porcin del cdigo fue ejecutada o no y seguir el flujo del
programa. Adems, los valores intermedios de los editores de FBD y CFC y el contenido del acumulador
tambin sern mostrados.
Para permitir que la aplicacin se inicie automticamente luego de haber iniciado el controlador, debe
utilizarse la opcin Crear proyecto de booteo del men online. Esto generar dos archivos binarios, con
extensin *.PRG y *.CHK respectivamente que sern descargados al controlador. Dichos archivos sern
tambin almacenados en el directorio del proyecto. CoDeSys no admite el desensamble de los proyectos
descargados, por lo que si se desea tener acceso al cdigo fuente desde el controlador, el mismo debe ser
descargado explcitamente. Al descargar el cdigo fuente se incluyen todos los comentarios y la informacin
grfica, la cual se encontrar disponible desde el propio controlador en cualquier momento.
Otra caracterstica 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
modificacin de cambios no es posible cuando hubo modificacin en las tareas, en la configuracin de
entrada/salida, o si se incluyeron nuevas libreras en el proyecto.

Fig. 2.14: Modificacin online del programa

Festo Didactic Ar-Festo

19

Simulacin integrada
El modo de simulacin permite depurar la aplicacin sin necesidad de conectarse fsicamente al
controlador. Dicho modo puede ser habilitado mediante la opcin Modo simulacin del men online. Una
e mostraran automticamente los valores de las
variables y se podr trabajar tal y como si se tuviera el dispositivo target conectado. Las entradas y salidas
fsicas del controlador tambin podrn ser simuladas mediante la herramienta de configuracin del PLC (Ver
seccin 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 duracin y luego visualizados como si se tratara de un osciloscopio con
memoria, permitiendo de esta manera una mejor observacin y seguimiento de las variables.
Hasta 20 seales pueden ser muestreadas simultneamente. Los datos muestreados sern luego
almacenados en el controlador hasta que la alimentacin sea interrumpida, y pueden ser tambin
almacenados en la carpeta del proyecto. Esta funcionalidad puede ser utilizada desde la pestaa de
recursos del organizador de objetos.

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

20

Festo Didactic Ar-Festo

Seguridad de proyectos
CoDeSys ofrece dos posibilidades para proteger el proyecto contra acceso no autorizado. Seleccionando
opciones del men proyectos pueden definirse contraseas que sern chequeadas antes de abrir o
guardar el proyecto.
Sin embargo, para tener una proteccin ms especfica, es posible definir grupos de usuario con permisos
especficos para tener acceso a determinadas partes del proyecto. De esta manera, puede por ejemplo
darse autorizacin a un usuario para hacer uso de la visualizacin pero no autorizarlo para alterar la
programacin.
La ventana de configuracin de contraseas puede ser hallada con el nombre contraseas para grupos de
usuarios en el men proyecto. Aqu se pueden determinar contraseas para ocho diferentes niveles de
grupos de usuarios.

Fig. 2.16: Definiendo contraseas para diferentes grupos de usuarios.


Luego de haber definido las contraseas 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 podrn definir los accesos
del objeto que se encuentre en primer plano, o de todos los objetos del proyecto.

Festo Didactic Ar-Festo

21

Fig. 2.17: Aplicando niveles de acceso.


Estableciendo comunicacin con el controlador
Fundamentos de comunicacin
Para poder comprender como se realiza la comunicacin entre CoDeSys y un dispositivo target se debe
analizar el esquema de la figura 2.18, en el cul se realiza una analoga entre el esquema de
comunicaciones de la suite de desarrollo CoDeSys y la ventana de configuracin de los parmetros de
comunicacin.

Fig. 2.18: Esquema del sistema de comunicacin de CoDeSys Ventana de configuracin de parmetros de
comunicacin.

22

Festo Didactic Ar-Festo

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 debern tener entonces dos comunicaciones configuradas,
una entre el sistema target y el Gateway, y otra entre dicho Gateway y el sistema de desarrollo.
Anlogamente, se puede ver en la ventana de configuracin de parmetros de comunicacin que ambas
comunicaciones deben estar debidamente configuradas para conseguir el acceso al dispositivo target.
Configuracin de la comunicacin
Todos los parmetros de configuracin pueden ser accedidos y modificados desde la opcin Parmetros de
comunicacin 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 podrn modificar las opciones de
comunicacin especficas de cada dispositivo o canal, mientras que en la parte derecha se podrn editar las
configuraciones ya existentes, eliminarlas o agregar nuevas.

Fig. 2.19: Ventana de configuracin de parmetros de comunicacin.


Configurando una conexin TCP/IP.
Para configurar la comunicacin 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 conexin que se utilizar para
acceder al Gateway, la direccin y el puerto correspondiente. Para una comunicacin bsica entre una PC y
un dispositivo target, debe seleccionarse conexin TCP/IP y la direccin localhost (o 127.0.0.1, direccin 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 configuracin para esta comunicacin, pero las mismas
exceden ampliamente el objetivo de este trabajo y por lo tanto no sern tratadas.
La comunicacin entre el Gateway y el sistema target es llamada Canal. Para cada dispositivo target que se
utilice se deber configurar un nuevo canal de comunicacin. Para esto se deber presionar la tecla Nuevo.
Se abrir un cuadro de dilogo en el cul 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.

Festo Didactic Ar-Festo

23

Una vez creado el canal, los parmetros de comunicacin del mismo podrn ser configurados directamente
desde la parte central de la ventana principal de parmetros de configuracin, y sern diferentes en
funcin del dispositivo utilizado. La figura 2.19 muestra la configuracin de un canal de comunicacin
TCP/IP, mientras que en la figura 2.20 puede verse la configuracin de una canal RS232.

Fig. 2.20: Ventana de configuracin de parmetros de comunicacin.

24

Festo Didactic Ar-Festo

Configurando una conexin RS232.


Una vez configurada la comunicacin y seleccionado el canal adecuado, deber desmarcarse la opcin
Modo Simulacin del men Online para poder comunicarse con el dispositivo target. La comunicacin se
har efectiva al seleccionar la opcin login del mismo men o mediante la combinacin de teclas Alt+F8.
Descarga y recuperacin de proyectos
Modo Online y modificacin en lnea

La primera vez que se realiza la conexin con el dispositivo target mediante la opcin online del men
online, pueden darse dos situaciones. Una de ellas es que el controlador no se encuentre ejecutando ningn
programa o se encuentre ejecutando un programa diferente, en cuyo caso CoDeSys dar un aviso y
solicitar autorizacin explcita 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 situacin 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 ms, 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 ejecucin del ciclo de control. Es importante remarcar que esta opcin
no estar habilitada en los casos en los cuales hubo modificacin en las tareas, en la configuracin de los
mdulos de entrada/salida, o si se incluyeron nuevas libreras 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 opcin 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 alimentacin del controlador, el programa se borra. Por
otro lado, al descargar el programa mediante la opcin Online se est descargando el cdigo compilado, por
lo que no podr recuperarse el cdigo fuente del programa desde el controlador. La figura
2.23 (1) refleja esta situacin.

Festo Didactic Ar-Festo

25

Creando proyectos autoarrancables


Como ya se menciono anteriormente el conectarse online con el controlador no garantiza que el proyecto
arranque automticamente luego de alimentado el controlador. Para lograr esto, la opcin Crear proyecto
de booteo del men online debe ser utilizada en el modo online. Esto generar dos archivos binarios, con
extensin *.PRG y *.CHK respectivamente, los cules sern descargados al controlador y almacenados en
memoria EEPROM o Flash.

Fig. 2.21: Ventana de configuracin de parmetros de comunicacin.


Configurando una conexin RS232.
Al descargar el proyecto de esta manera, el mismo se iniciar automticamente luego de una interrupcin
en la alimentacin. Sin embargo, al igual que lo que ocurra con la descarga en modo online, solo est
siendo descargado el cdigo compilado, por lo que el cdigo fuente an no podr ser recuperado desde el
controlador. La figura 2.23 (2) refleja esta situacin.
Puede darse el caso que el dispositivo target soporte la creacin automtica de proyectos autoarrancables.
En este caso, cada vez que se realice una conexin online con el controlador, el cdigo compilado se
descargar automticamente a la memoria EEPROM o Flash del mismo.
Recuperacin de proyectos
Como se pudo apreciar en los dos apartados anteriores, el cdigo fuente no ser en ningn caso descargado
automticamente al descargar el programa, por lo que para poder recuperar el mismo desde el dispositivo
target, se lo debe descargar en forma explcita.
Para recuperar el cdigo fuente desde un controlador en el cul la descarga del mismo fue explcitamente
realizada, bastar con seleccionar la opcin abrir del men file y seleccionar la opcin Abrir proyecto
desde el PLC.

26

Festo Didactic Ar-Festo

Fig. 2.22: Cuadro de dilogo Abrir. En la parte inferior izquierda puede verse la opcin de recuperacin de
cdigo fuente desde el controlador.

Seleccionada esta opcin, se debe seleccionar el dispositivo target a utilizar y configurar las opciones de
comunicacin. Si estos pasos son realizados correctamente, el cdigo 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 situacin.

Fig. 2.23: Descarga/Recuperacin del proyecto fuente y compilado.

Festo Didactic Ar-Festo

27

3 Estructura de proyectos y unidades de organizacin de programas


Estructura y caractersticas 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 extensin *.PRO y los objetos que contiene son las unidades de organizacin de
programas (POU), los tipos de datos, las visualizaciones y los recursos. Dentro de estas cuatro categoras se
pueden encontrar las variables (locales o globales), las libreras y el cdigo fuente de los programas.

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

28

Festo Didactic Ar-Festo

Tipos de datos
Los tipos de datos son una de las caractersticas definidas por el estndar IEC 61131-3. Adems de los tipos
de datos estndar, el usuario tiene la posibilidad de definir sus propios tipos de datos. Este tema ser
abordado en profundidad en el captulo 4.
Visualizaciones
La visualizacin es una representacin grfica de las variables del proyecto que permite no solo ver la
evolucin y estado de variables sino tambin 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.

Festo Didactic Ar-Festo

29

Esta integracin ofrece grandes ventajas para la generacin de interfaces HMI (Hombre-Mquina). La
visualizacin integrada de CoDeSys no necesita una lista de tags y puede acceder directamente al
controlador. Tampoco se requiere ninguna capa extra de comunicacin ya que utiliza el mismo
mecanismo utilizado por el sistema de programacin (Ver apartado 2.5). De esta manera, la tarea de
generar la interfaz grfica para la visualizacin se puede ver notablemente reducida y simplificada.
La visualizacin 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
mscara de visualizacin creada puede ser ejecutada en cuatro modos diferentes sin sufrir modificacin
alguna. Los posibles modos de visualizacin son los siguientes:
1

Directamente en el sistema de programacin: Para testear la mscara de visualizacin creada, pero

tambin por propsitos de servicio y diagnstico en conexin 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 comunicacin
adicional. Este sistema permite al usuario crear una interfaz de software de bajo costo para la operacin
del sistema utilizando las visualizaciones generadas en tiempo de desarrollo.
CoDeSys HMI es ejecutado desde la lnea de comando. Por defecto mostrar la visualizacin llamada
PLC_VISU (Si existiera) en modo pantalla completa. El resto de los elementos de CoDeSys como mens,
organizador de objetos, etc. No se encontrarn disponibles.

Fig. 3.4: CoDeSys HMI siendo ejecutado.

30

Festo Didactic Ar-Festo

Visualizacin Web: La visualizacin web permite operar el sistema a travs de un navegador Web,

ya sea en la red local o a travs de internet. CoDeSys puede generar una descripcin 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 visualizacin
Web, el sistema target debe soportar esta funcionalidad y se deber iniciar y configurar un servidor web en
el mismo. Esta funcin no se encuentra disponible en la actual lnea de controladores programables con
CoDeSys de festo.

Fig. 3.5: Estructura del sistema de visualizacin Web.


4

Visualizacin en sistema target: Si el sistema target tiene incorporado una interfaz de visualizacin,

algn perifrico de entrada y soporta la funcionalidad Target visualization, los datos de visualizacin
pueden ser descargados desde el sistema de programacin junto con la aplicacin al sistema target. La
visualizacin ser presentada entonces directamente desde el sistema target.
Para implementar esta funcin de visualizacin debe incluirse en el proyecto la librera SysLibTargetVisu.lib.
Adems, el sistema target debe ejecutar un sistema operativo Windows (NT/2000/CE).

Festo Didactic Ar-Festo

31

Recursos
En la pestaa 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 mayora de estos objetos, por lo que
solo se presentar aqu una breve descripcin 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: Configuracin de aquellas variables que pueden ser utilizadas a lo largo de todo
el proyecto.
o Configuracin de alarmas: Para la configuracin y el manejo de las alarmas en el proyecto.
o Administrador de libreras: Permite administrar las libreras 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 comunicacin con el sistema target a travs de
comandos.
o Configuracin del PLC: Para la configuracin del dispositivo target.
o Graficar variables online: Para presentar la evolucin de las variables en forma grfica.
o Configuracin de target: Para la seleccin y configuracin de la plataforma de hardware.
o Configuracin de tareas: Para controlar el programa a travs de mltiples tareas.
o Administrador de recetas: Para indicar y pre-configurar los valores de las variables, dependiendo del
sistema target y de la configuracin realizada.
o Espacio de trabajo: Permite acceder y modificar las opciones generales de configuracin del
proyecto.

32

Festo Didactic Ar-Festo

POU - Unidades de organizacin de programas


Un programa CoDeSys segn IEC 61131-3 se encontrar dividido en mltiples unidades denominadas POU.
Una POU es una unidad de organizacin de programa; cada una de ellas consistir de una declaracin de
variables locales y un cuerpo escrito en uno de los lenguajes de programacin definidos por la norma IEC
61131-3.
El estndar especifica tres tipos de POU: funciones, bloques de funciones y programas. Una POU puede
llamar a otra POU, pero la recursin no est permitida.
La ejecucin del proyecto se inicia con una POU especial llamada PLC_PRG (programa principal, similar al P0
de los controladores de la lnea FEC de festo) y es ejecutado cclicamente. 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 ejecucin.


Funciones
Una funcin es una POU que permite mltiples 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 declaracin. Adems, el resultado debe ser asignado a la funcin, lo que implica que el nombre de la
misma es utilizado como variable de salida. La declaracin de una funcin comienza siempre con la palabra
clave FUNCTION.

Fig. 3.8: Declaracin y cuerpo de una funcin simple en IL(1).

Festo Didactic Ar-Festo

33

Las funciones no almacenan valores de la ltima llamada, y sus variables locales sern inicializadas en cada
llamado. Se utilizan en general para expresiones de clculo complejas y repetitivas. Debe notarse que el uso
de variables globales en las funciones no cumple con el estndar IEC 61131-3 a pesar de que CoDeSys lo
permita.
o IL:

o ST:

o FBD:

Fig. 3.9: Ejemplos de llamado a una funcin en diferentes lenguajes.

34

Festo Didactic Ar-Festo

El llamado a la funcin en ST(2) puede aparecer como un operando en una expresin, mientras que en
SFC(3) la funcin solo puede tomar parte dentro de un STEP o en una transicin.
Bloques de funciones
Un bloque de funcin es una POU que puede tener varios valores de entradas y que entrega uno o ms
valores de salida. A diferencia de una funcin, un bloque de funciones retiene los valores hasta que se la
procesa nuevamente. La declaracin de un bloque de funciones comienza con la palabra clave
FUNCTION_BLOCK.

Fig. 3.10: Declaracin y cuerpo de un bloque de funciones simple en IL.

Festo Didactic Ar-Festo

35

Mltiples 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 funcin. 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: Grfico de flujo secuencial, lenguaje grfico definido por IEC 61131-3.
Solo los parmetros 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 especfica del bloque de funciones se debe utilizar el operador punto
(.) de la siguiente manera:

Nombre_de_la_copia.Nombre_de_la_variable

36

Festo Didactic Ar-Festo

IL:

ST:

FBD:

Fig. 3.11: Ejemplos en varios lenguajes de llamados a una instancia de un bloque de funciones.
Cabe destacar tambin 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 ms de una variable de salida y que las mismas son retenidas
hasta un nuevo llamado, no siendo necesaria una asignacin inmediata. La figura 3.11 muestra llamados al
bloque de funciones creado en la figura 3.10 en IL, ST y FBD4.

Festo Didactic Ar-Festo

37

Programas

Un programa es una POU que devuelve mltiples valores durante su ejecucin. Los programas son
reconocidos globalmente a lo largo del proyecto y todos los valores son retenidos desde la ltima ejecucin
hasta la siguiente.
No puede haber mltiples 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 permanecern 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 vlidos cuando la misma instancia es llamada nuevamente. La declaracin de un
programa comienza con la palabra clave PROGRAM.

Fig. 3.12: Declaracin y cuerpo de un programa en IL.

Si se desea llamar al programa con parmetros de entrada/Salida, se lo puede hacer de la misma forma que
se hara en un bloque de funciones. Adems, todas las variables de un programa pueden ser accedidas
desde la POU que lo ejecut.

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

38

Festo Didactic Ar-Festo

4 Tipos de datos
En CoDeSys pueden utilizarse tipos de datos estndar 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 posicin de memoria.
Tipos de datos estndar
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

Lmite inferior

Lmite superior

Espacio de Memoria

BYTE

255

8 bit

WORD

65535

16 bit

DWORD

4294967295

32 bit

-128

127

8 bit

255

8 bit

32767

16 bit

65535

16 bit

2147483647

32 bit

4294967295

32 bit

SINT
USINT
INT
UINT
DINT
UDINT

-32768
0
-2147483648
0

Tabla 4.1: Tipos de datos enteros.

Festo Didactic Ar-Festo

39

Datos Reales
Tambin conocidos como variables de punto flotante, son utilizadas para la representacin de nmeros
racionales.
Tipo

REAL
LREAL

Lmite inferior

Lmite superior

1.175494351

3.402823466

x10-38
2.22507385850
72014x10-308

Espacio de Memoria

32 bit
x1038
1.797693134862
64 bit
3158x10308

La tabla 4.2 resume los dos tipos de variables que pueden encontrarse dentro de esta clasificacin.
Cadena de caracteres (strings)
Una variable de tipo STRING puede contener cualquier cadena de caracteres. Su tamao se define en la
declaracin, entre parntesis y a continuacin del tipo, y determina la cantidad de memoria a reservar. Sin
embargo, si no es definido al momento de la declaracin, el tamao por defecto que se utilizar ser de
80 caracteres. La longitud mxima 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 declaracin:
<Identificador>: STRING (<Longitud_del_string>);
Tipos de datos de tiempo (Temporales)
Estos tipos de datos sern 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

Lmite

Lmite superior

inferior

de

Memoria
49d17h2m47s295ms

32 bit

12:00:00 AM

23:59:59.999 PM

32 bit

01/01/1970

06/02/2016 aprox.

32 bit

TIME
TIME_OF_DAY

Espacio

(TOD)
DATE
DATE_AND_TIME
(DT)

01/01/1970, 06/02/2016,

32 bit

12:00:00 AM 06:28:15 AM aprox.

Tabla 4.3: Tipos de datos temporales.

40

Festo Didactic Ar-Festo

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 declaracin de la POU como en la lista de variables globales.

Tiempo de desarrollo:

Tiempo de ejecucin:

Fig. 4.1: Declaracin de arreglos en tiempo de desarrollo y ejecucin respectivamente.

Festo Didactic Ar-Festo

41

Sintaxis de declaracin:
<Identificador>: ARRAY [<LI1>..<LS1>, <LI2>..<LS2>] OF <TIPO_DE_DATO>
Donde LI1, LI2 son los lmites inferiores del rango del campo y LS1, LS2 sern los lmites superiores. Estos
lmites 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 funcin llamada CheckBounds (Provista por la librera
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 direccin 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 continuacin del nombre.
Sintaxis de declaracin:
<Identificador>: POINTER TO <TIPO_DE_DATO/BLOQUE_DE_FUNCIONES>;

Fig. 4.2: Variable de tipo puntero en tiempo de ejecucin.

42

Festo Didactic Ar-Festo

Enumeracin
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 enumeracin. Los valores de una
enumeracin son reconocidos en todas las reas del proyecto, incluso si fueron declaradas dentro de una
POU.

Fig. 4.3: Declaracin de un tipo de variable enumeracin definida por el usuario.

Festo Didactic Ar-Festo

43

Fig. 4.4: Ejemplo de uso en tiempo de ejecucin de una variable de tipo enumeracin.
Sintaxis de declaracin:
TYPE <Identificador> : (<Enum_0>,<Enum_1>,,<Enum_2>); END_TYPE
La forma correcta de crear enumeraciones es en el organizador de objetos, bajo la pestaa Tipos de Datos.
Luego de ser declarada, las variables del tipo <Identificador> pueden tomar cualquiera de los valores de la
enumeracin.
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 pestaa Tipos De Datos, y son reconocidas en todas las reas del proyecto. Para acceder a
un elemento o variable especfica dentro de una variable del tipo estructura se debe utilizar el operador
punto (.).

Fig. 4.5: Ejemplo de declaracin de una estructura definida por el usuario.

Sintaxis de declaracin:
TYPE <Nombre_de_la_estructura>: STRUCT
<Declaracin_de_variable_1>
<Declaracin_de_variable_2>

<Declaracin_de_variable_2>
END_STRUCT
END_TYPE

44

Festo Didactic Ar-Festo

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

Festo Didactic Ar-Festo

45

5 Operandos en CoDeSys
Declaracin de variables
Generalidades
Como ya se pudo observar en captulos anteriores, todas las variables deben ser declaradas antes de poder
ser utilizadas. El editor de declaracin es utilizado para declarar variables en cada POU, o un apartado
especial en la pestaa 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 declaracin de una variable presenta la siguiente sintaxis:
<Identificador> {AT <direccin>}:<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, maysculas/minsculas son ignoradas y la longitud
del nombre no tiene limitaciones.
Todas las declaraciones de datos pueden ser inicializadas agregndole 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 travs del men insertar.
Por otro lado, para brindar mayor soporte al programador y simplificar la tarea de declaracin 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 opcin tipo.
La declaracin de variables puede tambin ser realizada en forma rpida con la ayuda de la funcin de autodeclaracin de variables, ya analizada en la seccin anterior.

46

Festo Didactic Ar-Festo

Keywords
Las palabras claves o Keywords deben ser escritas en letras maysculas en todos los editores. Aparecern
en color azul y no podrn ser utilizadas como variables. Mediante la opcin Palabras claves de declaracin
del men insertar puede obtenerse un completo listado de las palabras claves que pueden ser utilizadas
en la declaracin de variables.

Fig. 5.2: Opciones de ayuda del editor de declaraciones, a travs del men insertar.
Sintaxis de direcciones
El acceso a ubicaciones de memoria individuales es realizado a travs del uso de secuencias de caracteres
especiales. Estas secuencias consisten de una concatenacin del signo porcentual (%), un prefijo de rango,
un prefijo de tamao y uno o ms nmeros 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 debera utilizar la
secuencia %IXY.Z.

Prefijo

Significado

Entrada

Salida

Ubicacin de memoria

Tabla 5.1: Prefijos de rango.

Festo Didactic Ar-Festo

47

Prefijo

Significado

Bit

none

Bit

Byte (8 bits)

Word (16 bits)

Double Word (32 bits)

Tabla 5.2: Prefijos de tamao.

Para vincular una variable a una direccin, se debe utilizar en la declaracin la palabra clave AT, asignando
de esta forma una etiqueta a la direccin. Luego, ante cualquier modificacin en la direccin de las seales
de entrada o salida, solo deber modificarse la lnea de la declaracin 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 (.).

48

Festo Didactic Ar-Festo

Variables remanentes
Las variables remanentes son aquellas variables que pueden retener sus valores ante situaciones
anormales de la ejecucin 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 desconexin 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 desconexin del controlador, ya que no son
almacenadas en el rea retentiva de la memoria del controlador.

Fig. 5.4: Ejemplo de declaracin de los diferentes tipos de variables remanentes.


Si es necesario que una variable sea conservada tanto ante una desconexin como ante una nueva
descarga del programa, se deberan utilizar ambas palabras claves en la declaracin (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 funcin 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.

Festo Didactic Ar-Festo

49

Variables Locales y Globales


Las variables locales son declaradas entre las palabras claves VAR y END_VAR en el editor de declaracin de
la POU a la cual pertenecen, y son solo vlidas en el mbito de dicha POU. Las variables locales no tienen
conexin externa, por lo que no podrn ser escritas desde fuera de la POU.
Por su parte, las variables globales son declaradas en un apartado especial en la pestaa 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 grficamente 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 especfica, 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 lgicos VERDADERO y FALSO.

50

Festo Didactic Ar-Festo

Constantes Temporales
Las constantes temporales son generalmente utilizadas para operar los temporizadores de la librera
estndar. 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 declaracin pueden ser incluidos das, horas, minutos, segundos y milsimas de
segundos. Las entradas temporales deben colocarse en orden de acuerdo con la longitud temporal de cada
uno de los campos (por ejemplo das 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 mximos permitidos de cada uno de los campos, los cuales pueden ser observados en
la tabla 5.3. Debe notarse que estos rangos no sern vlidos 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
utilizacin de constantes temporales.

Campo

Rango

Das (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 utilizacin de constantes temporales.

Festo Didactic Ar-Festo

51

Constantes Numricas enteras


Las constantes numricas pueden ser expresadas en diferentes sistemas de representacin, tales como
binario, octal, decimal y hexadecimal.

Fig. 5.7: Ejemplo de utilizacin de constantes numricas 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 continuacin:
o Nmero Decimal: 62
o Nmero Binario: 2#1001_0011 (El guin bajo puede ser utilizado o no)
o Nmero Octal: 8#67
o Nmero hexadecimal: 16#A46F
En la figura 5.7 pueden apreciarse ejemplos de constantes numricas enteras expresados en diferentes
sistemas de representacin.
Constantes Reales
Las constantes numricas reales pueden ser expresadas en formato fraccionario decimal o exponencial.
Independientemente de esto, el smbolo decimal a utilizar sigue los lineamientos del estndar 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 utilizacin de constantes Reales.

52

Festo Didactic Ar-Festo

6 Lenguajes de programacin IEC 61131-3


CoDeSys soporta la totalidad de los lenguajes que se describen en el estndar IEC 61131-3, los cules
pueden ser divididos en dos grupos:
Textuales:
o Listado de instrucciones (IL).
o Texto estructurado (ST).
Grficos:
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 grfico secuencial


continuo (CFC), el cual no es tratado como un lenguaje independiente por ser bsicamente una
representacin grfica diferente del lenguaje de diagrama de bloque de funciones (FBD).
Lenguajes de programacin textuales
IL Listado de instrucciones
La programacin en listado de instrucciones consiste en una serie de instrucciones, cada una de las cules
comienza en una nueva lnea y contiene un operador y uno o ms operandos separados por comas. Este
lenguaje permite una programacin rpida y simple cuando el programa es pequeo. Cada operacin se
basa en el uso de un registro especial llamado acumulador, de forma similar al lenguaje assembler. Antes
de realizar alguna operacin se debe cargar el valor o la variable con la que se quiere operar en el
acumulador. Luego de realizada la operacin, el resultado quedar disponible nuevamente en el
acumulador. Antes de la instruccin puede colocarse una etiqueta seguida por dos puntos (:). Los
comentarios se deben encerrar entre asteriscos y parntesis (Ver figura 6.2) y pueden ocupar una lnea
completa o encontrarse al final de una lnea de programa. Todos los operadores IEC 61131-3 son
soportados (este tema se profundizar en el mdulo 7).
Debe notarse que el lenguaje de listado de instrucciones no soporta la programacin estructurada.

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

Festo Didactic Ar-Festo

53

Fig. 6.2: Ejemplo de programacin en listado de instrucciones (IL).


Tambin pueden utilizarse modificadores, los cuales modificarn 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 instruccin es solamente ejecutada si el resultado de la expresin
anterior es VERDADERO.
o N (Con los operadores JMPC, CALC, RETC): La instruccin ser solamente ejecutada si el resultado de
la expresin anterior es FALSO.
o N (En cualquier otro caso): Negacin 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 captulo 7 se dar una explicacin detallada de la funcin de cada uno de los
operadores.

Operador

Modificadores

LD

ST

AND

OR

XOR

JMP

CN

CAL

CN

RET

CN

Tabla 6.1: Operadores afectados de modificadores en IL.

54

Festo Didactic Ar-Festo

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


ST Texto Estructurado
La programacin en texto estructurado es un lenguaje de alto nivel que permite la utilizacin de
condicionales y bucles (Conocidos generalmente por su nombre en ingls, 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 programacin en texto estructurado se basa en expresiones. Una expresin es una construccin que
retorna un valor luego de su evaluacin, y se compone de operadores y operandos. Un operando puede ser
una constante, una variable, un llamado a una funcin u otra expresin. La evaluacin de expresiones se
realiza a travs 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.

Operacin

Operador

Nivel de Prioridad

Parntesis

(expresi

Mxima prioridad

Llamado a una funcin

Nombre den)funcin (parmetros)

Potenciacin

EXPT

Negacin

NOT

.
*

Multiplicacin

Divisin

Mdulo

MOD

suma

Resta

<, >, <=, >=

Igual

Distinto

<>

AND booleana

AND

XOR booleana

XOR

OR booleana

OR

Mnima prioridad

Comparacin

Tabla 6.2: Prioridad de operadores en ST.

Festo Didactic Ar-Festo

55

A continuacin 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 condicin booleana y dependiendo de la misma ejecutar
instrucciones.
Sintaxis:
IF <Expresin_Booleana_1> THEN
<Instrucciones_1>
{ELSEIF <Expresin_Booleana_2> THEN
<Instrucciones_2>
.
.
ELSIF <Expresin_Booleana_n> THEN
<Instrucciones_n>
ELSE
<Instrucciones>}
END_IF;
(La parte entre llaves es opcional).
Si la expresin booleana de la condicin IF es verdadera, se ejecutan el conjunto de instrucciones
correspondientes y se sale del lazo. Si la condicin de IF es falsa, se evalan 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 expresin ELSE.
o Instruccin CASE: Esta instruccin permite combinar mltiples instrucciones condicionales en funcin
de la misma variable y en una nica construccin.
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;

56

Festo Didactic Ar-Festo

La instruccin CASE es procesada de acuerdo al siguiente modelo: Si la variable de la condicin tiene el


valor indicado en alguna de las lneas, las instrucciones correspondientes sern ejecutadas. Si la variable no
toma ninguno de los valores indicados, las instrucciones ELSE sern 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 sern ejecutadas hasta tanto el valor de variable sea mayor al valor V_Final. Esta
condicin es verificada antes de ejecutar las instrucciones, por lo que las instrucciones del lazo no sern
nunca ejecutadas si V_Inicial es mayor a V_Final. La variable se incrementa automticamente 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 condicin de salida
puede ser cualquier expresin booleana. Esto significa que mientras se cumpla la condicin indicada el lazo
ser ejecutado.
Sintaxis:
WHILE <Expresin_Booleana> DO
<Instrucciones>
END_WHILE;
Debe notarse que si la condicin booleana es falsa en la primera evaluacin, las instrucciones
correspondientes no se ejecutaran nunca. De igual manera, si la condicin 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 condicin de salida es chequeada luego de la ejecucin
del lazo. De esta manera, el lazo ser ejecutada al menos una vez antes de finalizar su ejecucin sin
importar el valor de la condicin booleana. Es este lazo las instrucciones se ejecutarn hasta que la
condicin booleana retorne el valor VERDADERO. Si la condicin booleana nunca toma ese valor, se
generar un bucle infinito.

Festo Didactic Ar-Festo

57

Sintaxis:
REPEAT
<Instrucciones>
UNTIL <Expresin_ Booleana>
END_REPEAT;
Las instrucciones WHILE y REPEAT tienen mejores prestaciones que la instruccin 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 programacin en texto estructurado (ST).


Lenguajes de programacin grficos
SFC Esquema secuencial de funciones
El esquema secuencial de funciones (SFC) es un lenguaje de programacin grfico que permite describir el
orden cronolgico 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 estn separados por transiciones, las cuales
contienen las condiciones booleanas para la continuacin del la secuencia. Si bien CoDeSys soporta una
versin de SFC que est en concordancia con el estndar IEC 61131-3, tambin ofrece un modo simplificado;
mientras que los pasos IEC contienen flags con calificadores y soportan hasta nueve acciones en un solo
paso, la versin simplificada solo muestra un tringulo negro en la esquina superior derecha del paso y
permite una sola accin en cada paso. Las acciones pueden programarse en cualquiera de los lenguajes IEC,
inclusive en SFC nuevamente.

58

Festo Didactic Ar-Festo

Fig. 6.5: Ejemplo de programacin en esquema secuencial de funciones (SFC).

Para poder utilizar pasos IEC en lugar de pasos simplificados, la librera 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 accin. La tabla 6.3 resume los posibles calificadores IEC y su implicancia.
Adicionalmente, es posible asociar a cada paso una accin de entrada y una accin de salida. Una accin de
entrada es ejecutada por nica vez apenas el paso se hace activo. Una accin de salida es tambin
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.

Festo Didactic Ar-Festo

59

Calificador
N

Implicancia
La accin estar activa mientras el paso lo est

No almacenar
R

La accin es desactivada

Reset
S

La accin es activada y permanece activa hasta ser

Set

especficamente desactivada.

L Limitado

La accin es activada por un determinado periodo de

temporalmente

tiempo, siendo como mximo el tiempo que el paso se


encuentre activo.

La accin se vuelve activa luego de un tiempo

Retardada en tiempo

determinado siempre y cuando el paso siga activo. Una


vez iniciada, permanece activa todo el tiempo que el paso

se encuentre
activo.
La accin es ejecutada
solo una vez
si el paso se encuentra

Pulso

activo.

SD

La accin se vuelve activa luego de un tiempo

Almacenada y

determinado y permanece activa hasta ser

retardada en tiempo

especficamente desactivada.

DS Retardada y

La accin se vuelve activa luego de un tiempo

Almacenada

determinado siempre y cuando el paso siga activo.


Permanecer activa hasta ser especficamente
desactivada.

SL Almacenada y

La accin es activada por un determinado tiempo.

limitada
t emporalmente

Tabla 6.3: Calificadores de acciones IEC y sus implicancias.

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

60

Festo Didactic Ar-Festo

Adems de la configuracin de las acciones, diferentes tipos de ramificaciones pueden ser generadas a lo
largo del programa, a saber:
o Ramas alternativas:
Dos o ms ramas pueden ser alternativas. Esto significa que cada rama debe comenzar y finalizar con una
transicin. Las ramas alternativas pueden contener ramas paralelas e incluso otras ramas alternativas. Una
rama alternativa siempre comienza y finaliza con una lnea horizontal. Son evaluadas de izquierda a
derecha; la primera transicin con un resultado verdadero habilita la ejecucin de su respectiva rama en
detrimento del resto de ellas.
o Ramas paralelas:
Dos o ms 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 lnea y finaliza con una doble lnea o un salto. Al hacerse verdadera la condicin
previa a las ramas paralelas, todas las primeros pasos de las ramas paralelas entre s son ejecutados en
simultaneo. El paso que sigue la lnea final de las ramas paralelas se convierte en activo cuando todos los
pasos previos estn activos y la condicin de transicin anterior produce un valor verdadero.

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

Festo Didactic Ar-Festo

61

o Salto (jump):
Un salto es una conexin 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 caracterstica de la programacin en SFC son las variables implcitas (flags) para consultar el estado de
los pasos, las acciones y la duracin de los pasos activos. Estas variables son implementadas por la librera
iecsfc.lib para pasos IEC y directamente por CoDeSys para pasos no-IEC.
FBD Diagrama de bloques de funciones
El lenguaje de programacin de diagrama de bloques de funciones (FBD) es un lenguaje grfico orientado a
redes y muy sencillo de comprender. Cada una de las redes contiene una estructura que representa ya sea
una expresin lgica, aritmtica, el llamado a una funcin, el llamado a un bloque de funciones o un salto.
El editor FBD de CoDeSys permite agilizar notablemente la programacin a travs de la configuracin
automtica de bloques y conexiones.

Fig. 6.8: Ejemplo de programacin en Diagrama de bloques de funciones (FBD).


CFC Esquema continuo de funciones
El esquema continuo de funciones (CFC) no es un lenguaje de programacin en si mismo sino que se trata
de un editor que realiza una implementacin particular del editor de FBD, pero no orientado a redes. De esta
manera, la libre ubicacin de bloques y conexiones es posible, permitiendo funciones tales como lazos de
realimentacin.
Para controlar y modificar el orden de ejecucin de los bloques, se utiliza un cuadro gris con un nmero que
se puede encontrar en la esquina superior derecha de cada uno de los bloques, en donde se muestra el
nmero de orden de ejecucin en el ciclo de control.

62

Festo Didactic Ar-Festo

Fig. 6.9: Ejemplo de programacin en esquema continuo de funciones (CFC).


LD Diagrama de escalera
La programacin en diagrama de escalera es un lenguaje de programacin grfico que permite combinar
contactos de rels y bobinas, simplificando notablemente la comprensin del programa por personal con
poca experiencia en programacin. Es un lenguaje orientado a redes, y se encuentra disponible para la gran
mayora de los PLCs clsicos. Es muy simple para la programacin de expresiones booleanas, pero su grado
de complejidad aumenta cuando se necesita trabajar con datos de otros tipos, como por ejemplo valores
analgicos.

Fig. 6.10: Ejemplo de programacin en diagrama de escalera (LD).

Festo Didactic Ar-Festo

63

7 Operadores IEC 61131-3


La suite de desarrollo CoDeSys soporta todos los operadores especificados por el estndar IEC 61131-3. En
contraste con las funciones estndar, las cules son provistas por libreras (Ver captulo 8 librera
estndar), los operadores son reconocidos implcitamente a lo largo de todo el proyecto, y son utilizados en
las POU de la misma manera que las funciones. Adems de los operadores IEC, CoDeSys tambin soporta
algunos otros operadores, los cules sern 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 asignacin
Estos operadores tienen por finalidad la asignacin 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 estndar o definido por el usuario.
La forma de asignar variables difiere en funcin del lenguaje en el cul se est programando, si bien los
resultados finales sern siempre los mismos. Debe destacarse que para la programacin en LD, la
asignacin de variables es vlida solamente si se utilizan variables de tipo booleanas.
LD / ST
LD /ST se trata de la asignacin mas bsica de variables. Su funcin es la de asignar un valor o el resultado
de una expresin 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 (Ntese 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.

64

Festo Didactic Ar-Festo

FBD:

ST:
IL:

Figura 7.1: Ejemplos de asignacin LD / ST en los diferentes lenguajes IEC.

FBD:

LD:

ST:

IL:

Figura 7.2: Ejemplos de asignacin 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 tambin verdadera. Ejemplos de su uso pueden verse en la
figura 7.3.

Festo Didactic Ar-Festo

65

FBD:

ST:

IL:

Figura 7.3: Ejemplos de asignacin LD / S en los diferentes lenguajes IEC.

FBD:

ST:

IL:

Figura 7.4: Ejemplos de asignacin LD / R en los diferentes lenguajes IEC.

66

Festo Didactic Ar-Festo

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 programacin IEC.
MOVE
El operador MOVE permite la asignacin de una variable o una constante a otra variable del tipo adecuado.
Puede utilizarse en combinacin con la funcin de habilitacin de los editores de LD y CFC, aunque esta
combinacin no es posible en FBD. En caso de utilizar dicha combinacin, la asignacin se har efectiva
cuando la entrada de habilitacin 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 aritmticos
ADD
El operador ADD permite sumar variables de los tipos BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
UDINT, REAL y LREAL. Tambin 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 programacin IEC.

Festo Didactic Ar-Festo

67

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 programacin IEC.
FBD:

ST:

IL:

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

68

Festo Didactic Ar-Festo

SUB
Permite sustraer una variable de otra de los tipos BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
UDINT, REAL and LREAL. Tambin 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 programacin 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 divisin entera de una variable en otra de los tipos BYTE, WORD, DWORD, SINT, USINT, INT, UINT,
DINT, UDINT, o la divisin 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 programacin IEC.

Festo Didactic Ar-Festo

69

MOD
Este operador permite obtener el resto de la divisin 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 programacin 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 operacin AND lgica bit a bit entre operandos binarios. Estos deben ser del los tipos BOOL,
BYTE, WORD o DWORD.

70

Festo Didactic Ar-Festo

OR
Realiza la operacin OR lgica 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 operacin XOR lgica bit a bit entre operandos binarios. Estos deben ser del los tipos BOOL,
BYTE, WORD o DWORD. Para el caso de tener ms de dos entradas, las entradas sern chequeadas en pares
y los resultados particulares comparados nuevamente en pares.
NOT
Realiza la operacin NOT lgica 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 operacin de rotacin 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 sern completados con cero y los bits sobrantes a la izquierda sern descartados.

Figura 7.13: Funcionamiento del operador SHL.

Festo Didactic Ar-Festo

71

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


Como puede apreciarse en la figura 7.14, a iguales operaciones los resultados sern diferentes para
diferentes tipos de datos, a pesar que las variables de entradas tengan el mismo valor.
SHR
Este operador realiza la operacin de rotacin 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 sern completados con cero y los bits sobrantes a la derecha sern descartados.

Figura 7.15: Funcionamiento del operador SHR.

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

72

Festo Didactic Ar-Festo

ROL
Este operador realiza la operacin de rotacin 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 sern 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 operacin de rotacin 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 sern completados con los bits sobrantes de la derecha.

Figura 7.19: Funcionamiento del operador ROR.

Festo Didactic Ar-Festo

73

Operadores de seleccin
SEL
FBD:

ST:

IL:

Figura 7.20: Ejemplos de uso del operador SEL.


El operador SEL permite la seleccin binaria, a travs de la cul una variable podr tomar uno de los valores
previamente definidos en funcin 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.

74

Festo Didactic Ar-Festo

MAX
Este operador retorna el valor mximo 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 mnimo de entre dos valores. Puede ser utilizado con variables de cualquier
tipo.
LIMIT
El operador LIMIT permite limitar el rango de variacin de una variable entre un valor mnimo y un valor
mximo, 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 lmite 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.

Festo Didactic Ar-Festo

75

Figura 7.23: Relacin entrada/Salida del operador LIMIT.

Figura 7.24: Ejemplos de uso del operador LIMIT en IL.

Operadores de comparacin
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.

76

Festo Didactic Ar-Festo

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.

Festo Didactic Ar-Festo

77

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 estndar IEC 61131-3. Su funcin es la de retornar la direccin de su
argumento. Su argumento puede ser una variable de cualquier tipo. Esta direccin 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.

78

Festo Didactic Ar-Festo

Operadores de ramificacin
CAL
Este operador es vlido para el lenguaje de listado de instrucciones solamente (IL). Permite llamar una
funcin, un bloque de funciones o un programa. Las variables de entrada de la POU que est siendo llamada
deben colocarse en parntesis a continuacin 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 programacin IL, FBD y LD, aunque en diferentes
maneras en cada uno de ellos. Su funcin 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 programacin IL, FBD y LD. Su funcin es la de interrumpir
prematuramente el ciclo de ejecucin. 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.

Festo Didactic Ar-Festo

79

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.

80

Festo Didactic Ar-Festo

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 programacin
IEC 61131-3. En la tabla 7.1 puede verse de manera resumida y a travs de ejemplos la manera en la cual se
debe realizar el llamado a otras POU, especficamente programas, funciones y bloques de funciones.
Operadores numricos
ABS
El operador ABS tiene por funcin 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 utilizacin en lenguaje de texto estructurado.

Figura 7.33: Ejemplos de uso del operador ABS en ST.

Festo Didactic Ar-Festo

81

Variable de entrada
INT

Variable de Salida
INT, REAL, WORD, DWORD,
DINT

REAL
BYTE

REAL
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
UDINT

REAL, DWORD, DINT


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

82

Festo Didactic Ar-Festo

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

Festo Didactic Ar-Festo

83

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 (funcin 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 (funcin 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

84

ATAN

Festo Didactic Ar-Festo

Este operador retorna el arco-tangente (funcin 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 funcin potenciacin, la exponenciacin 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.

Festo Didactic Ar-Festo

85

7. 10 Operadores de conversin 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 conversin de tipo disponibles en CoDeSys.

Debe notarse que esta implcitamente prohibido convertir tipo ms grandes en tipos ms pequeos
(como por ejemplo de tipo ENTERO a BYTE). Para estas conversiones se requieren ciertas consideraciones
especiales para no perder informacin.
Si bien las posibilidades de conversin 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_<

7. 10. 1

Tipo_de_dato_Variable_2>

BOOL_TO

Permite convertir de tipo booleano en cualquier otro tipo. Para tipos numricos, 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.

86

Festo Didactic Ar-Festo

Figura 7.39: Ejemplo de conversin BOOL_TO en IL.

7. 10. 2

TO_BOOL

Permite convertir de cualquier tipo a tipo booleano. Para tipos numricos, 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 conversin TO_BOOL en ST.

Festo Didactic Ar-Festo

87

7. 10. 3

Conversiones entre tipos de nmeros enteros

Permite convertir de cualquier tipo de nmero entero en otro tipo de nmero. Si se realiza una conversin
hacia un tipo de nmero menor (Menor tamao del campo), puede perderse informacin; si el nmero que
se est convirtiendo excede el rango del tipo de dato de salida, los primeros bytes sern 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 ms cercano y convertido en el nuevo tipo de variable.

7. 10. 5

88

TIME_TO / TIME_OF_DAY

Festo Didactic Ar-Festo

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 vlido en la variable de salida. En cualquier otro caso, el valor de
salida ser 0.

Festo Didactic Ar-Festo

89

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.

90

Festo Didactic Ar-Festo

8 Librerias: La librera estndar


Una librera es una lista de objetos los cuales pueden ser utilizados en diferentes proyectos. Las libreras
pueden ser generadas por el usuario o pueden ser propias de CoDeSys. Tambin puede darse el caso de
que sean entregadas por el fabricante del hardware, en cuyo caso pueden estar encriptadas.
La librera por defecto que se incluye en todos los proyectos es la librera standard.lib. Esta librera es
propia de CoDeSys y provee funciones bsicas tales como temporizadores y contadores entre otras. En este
captulo se desarrollaran algunas de las funciones ms destacadas de la librera standard.lib. Para mayor
informacin acerca de las funciones disponibles en esta librera debe consultarse la documentacin oficial
de CoDeSys.
Otra librera de gran utilidad es la librera util.lib, la cual contiene funciones adicionales tales como
conversiones BCD, funciones matemticas auxiliares, generadoras de seales y manipuladores para
procesamiento de valores analgicos entre otras. Esta librera no ser tratada en este documento, pero
puede obtenerse mayor informacin en la documentacin oficial.

Figura 8.1: El administrador de libreras. Funciones de la librera estndar.

Festo Didactic Ar-Festo

91

R_TRIG
R_TRIG es un bloque de funciones que permite detectar el flanco ascendente de una seal booleana. La
variable de salida ser tambin una variable booleana, y permanecer en estado FALSO mientras que la
variable de entrada sea falsa. Tan pronto como la seal de entrada pase de FALSO a VERDADERO, la salida
generar un pulso de corta duracin indicando la deteccin del flanco ascendente, permaneciendo
nuevamente en estado FALSO hasta el prximo flanco ascendente de la seal 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 declaracin
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.

92

Festo Didactic Ar-Festo

F_TRIG es un bloque de funciones similar al caso anterior, cuya funcin es la de detectar el flanco
descendente de una seal booleana. La variable de salida ser tambin una variable booleana, y
permanecer en estado FALSO mientras que la variable de entrada sea verdadera. Tan pronto como la seal
de entrada pase de VERDADERO a FALSO, la salida generar un pulso de corta duracin indicando la
deteccin del flanco descendente, permaneciendo nuevamente en estado FALSO hasta el prximo flanco
descendente de la seal de entrada.
Dado que se trata de un bloque de funciones, debe declararse una variable del tipo F_TRIG en la declaracin
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 librera estndar 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.

Festo Didactic Ar-Festo

93

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 utilizacin de este bloque de funciones, mientras que la figura 8.7 muestra la
declaracin del bloque de funciones CTU, en el administrador de libreras, en la pestaa recursos del
organizador de objetos.

Figura 8.7: Declaracin del Bloque de funciones CTU en el administrador de libreras.

CTD
CTD es tambin un bloque de funciones incluido en la librera estndar 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.

94

Festo Didactic Ar-Festo

Figura 8.8: Ejemplo de utilizacin del bloque de funciones CTD de la librera estndar 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 utilizacin del bloque de funciones CTUD de la librera estndar 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 tambin 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 vlida cuando CV ser igual a 0.

Festo Didactic Ar-Festo

95

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 seal 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 utilizacin del bloque de funciones TP en ST.

96

Festo Didactic Ar-Festo

TON
El bloque de funciones TON implementa un retardo a la conexin. 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 utilizacin del bloque de funciones TON en FBD.

Festo Didactic Ar-Festo

97

TOF
El bloque de funciones TOF implementa un retardo a la desconexin. 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 utilizacin del bloque de funciones TOF en IL.

98

Festo Didactic Ar-Festo

Bloques de funciones biestable


SR
El bloque de funciones SR es bsicamente un Flip-Flop con entrada de habilitacin dominante. Tiene dos
entradas, SET1 y RESET, y una salida, Q1.EL valor de la salida responder en todo momento a la siguiente
expresin:

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 deshabilitacin. Presenta dos
entradas, SET y RESET1, y una salida, Q1. EL valor de la salida responder en todo momento a la siguiente
expresin:

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.

Festo Didactic Ar-Festo

99

9 Apendice A: Atajos de teclado

100

CTRL + O: Abrir un proyecto (Desde un medio de


almacenamiento o directamente del controlador).

CTRL + S: Guardar el proyecto actual.

F2: Asistente de entrada.

SHIFT + F2: Autodeclaracin de variables.

F1: Ayuda (Sensible al contexto).

F2: Asistente de entrada.

F11: Compilar.

ALT + F8: Iniciar Modo Online.

CTRL + F8: Terminar modo Online.

F5: Activar programa.

SHIFT + F8: Detener programa.

F9: Colocar o quitar Breakpoint.

CTRL + F7: Escribir valores al controlador.

F7: Forzar valores.

Festo Didactic Ar-Festo

10 Bibliografia

Base de datos SPIMS.

CoDeSys provided by festo - Festo IPT.

Welcome to the world of CoDeSys, CoDeSys pbf training Dieter Staneker

User Manual for PLC programming with CoDeSys 2.3


3S-Smart Solution Software.

CoDeSys Visualization. Supplement to the User Manual


for PLC Programming with CoDeSys 2.3 3S-Smart
software solution.

Your license to success: CoDeSys and your controller 3S CoDeSys training.

Su licencia el xito: CoDeSys y su controlador 3S


CoDeSys training. Traduccin al espaol por festo-ME.

http://www.infoplc.net/

http://www.plcopen.org/

http://www.3s-software.com/

http://www.iec.ch

Festo Didactic Ar-Festo

101

102

Festo Didactic Ar-Festo

Vous aimerez peut-être aussi