Académique Documents
Professionnel Documents
Culture Documents
CoDeSys
Introduccin al sistema de
programacin IEC 61131-3
Festo Didactic
Versin:
1.01
Autor:
Gabriel Vento
Edicin:
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.
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
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.
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.
Entre las funciones principales de CoDeSys SP runtime se pueden mencionar las siguientes:
o
Sistema de entradas/salidas.
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:
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.
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.
10
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.
11
Organizador de objetos
Ventana de mensajes
Barra de estado
12
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.
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
14
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.
16
17
18
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.
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.
20
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.
21
Fig. 2.18: Esquema del sistema de comunicacin de CoDeSys Ventana de configuracin de parmetros de
comunicacin.
22
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.
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.
24
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.
25
26
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.
27
28
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.
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
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.
30
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.
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).
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:
32
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:
34
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.
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
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.
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.
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
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
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
40
Tiempo de desarrollo:
Tiempo de ejecucin:
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>;
42
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.
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 (.).
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
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
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
47
Prefijo
Significado
Bit
none
Bit
Byte (8 bits)
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.
48
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.
49
50
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
51
52
53
Operador
Modificadores
LD
ST
AND
OR
XOR
JMP
CN
CAL
CN
RET
CN
54
Operacin
Operador
Nivel de Prioridad
Parntesis
(expresi
Mxima prioridad
Potenciacin
EXPT
Negacin
NOT
.
*
Multiplicacin
Divisin
Mdulo
MOD
suma
Resta
Igual
Distinto
<>
AND booleana
AND
XOR booleana
XOR
OR booleana
OR
Mnima prioridad
Comparacin
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
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.
58
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.
59
Calificador
N
Implicancia
La accin estar activa mientras el paso lo est
No almacenar
R
La accin es desactivada
Reset
S
Set
especficamente desactivada.
L Limitado
temporalmente
Retardada en tiempo
se encuentre
activo.
La accin es ejecutada
solo una vez
si el paso se encuentra
Pulso
activo.
SD
Almacenada y
retardada en tiempo
especficamente desactivada.
DS Retardada y
Almacenada
SL Almacenada y
limitada
t emporalmente
Fig. 6.6: STEP en SFC con accin de entrada (E) y salida (X).
60
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.
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.
62
63
64
FBD:
ST:
IL:
FBD:
LD:
ST:
IL:
65
FBD:
ST:
IL:
FBD:
ST:
IL:
66
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.
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
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.
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
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:
71
72
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.
73
Operadores de seleccin
SEL
FBD:
ST:
IL:
74
MAX
Este operador retorna el valor mximo de entre dos valores. Puede ser utilizado con variables de cualquier
tipo.
75
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.
76
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.
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.
78
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.30: Ejemplos de uso del operador JMP y RET (RETURN) en LD.
79
Figura 7.32: Ejemplos de uso del operador JMP y RET (RETURN) en FBD.
80
81
Variable de entrada
INT
Variable de Salida
INT, REAL, WORD, DWORD,
DINT
REAL
BYTE
REAL
INT, REAL, BYTE, WORD,
DWORD, DINT
WORD
DWORD
SINT
REAL
USINT
REAL
UINT
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.
82
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.
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.
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
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,
FBD:
ST:
IL:
85
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
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.
87
7. 10. 3
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
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
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.
89
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
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.
F_TRIG
92
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.
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.
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.
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
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.
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.
96
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.
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.
98
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:
99
100
F11: Compilar.
10 Bibliografia
http://www.infoplc.net/
http://www.plcopen.org/
http://www.3s-software.com/
http://www.iec.ch
101
102