CURSO BASICO PLC TWIDO QUINTA PARTE: LENGUAJES DE PROGRAMACION V PARTE LENGUAJES DE PROGRAMACION 5.1. Estructura de un Programa • La estructura de un programa facilita la depuración.

Download Report

Transcript CURSO BASICO PLC TWIDO QUINTA PARTE: LENGUAJES DE PROGRAMACION V PARTE LENGUAJES DE PROGRAMACION 5.1. Estructura de un Programa • La estructura de un programa facilita la depuración.

Slide 1

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 2

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 3

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 4

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 5

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 6

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 7

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 8

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 9

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 10

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 11

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 12

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 13

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 14

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 15

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 16

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 17

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 18

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 19

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 20

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 21

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 22

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 23

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 24

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 25

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 26

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 27

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 28

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 29

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 30

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 31

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 32

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 33

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 34

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 35

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 36

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 37

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 38

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 39

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 40

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 41

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 42

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 43

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 44

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 45

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 46

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 47

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 48

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 49

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 50

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 51

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 52

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 53

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 54

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 55

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 56

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 57

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 58

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 59

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 60

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 61

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 62

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 63

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 64

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 65

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 66

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 67

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 68

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 69

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 70

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 71

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 72

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 73

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 74

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 75

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 76

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 77

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 78

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 79

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 80

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 81

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 82

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83


Slide 83

CURSO BASICO
PLC TWIDO
QUINTA PARTE:
LENGUAJES DE
PROGRAMACION

V PARTE
LENGUAJES DE PROGRAMACION

1

5.1. Estructura de un Programa
• La estructura de un programa facilita la depuración y el
mantenimiento.
• Para mejorar la legibilidad, los programas son separados en módulos
con módulos que comprenden instrucciones asignadas a una función
dada.
Modulo de llenado
Instrucción 1
Instrucción 2

Módulo 1 (LD)

Modulo de mezclado
Instrucción 1
Instrucción 2

.

Modulo de riego
Instrucción 1
Instrucción 2

Módulo 2 (ST)

Procesamiento básico
.
Módulo n (LD)

V PARTE
LENGUAJES DE PROGRAMACION

2

5.1. Estructura de un Programa
• Cada módulo puede ser programado en el
lenguaje más adecuado al proceso requerido.
• Algunos son corridos cíclicamente.
• Otros son disparados por algún evento. Ej: un
fallo de potencia.

V PARTE
LENGUAJES DE PROGRAMACION

3

5.2. Lenguajes de Programación





Los lenguajes de programación fueron establecidos
en la norma IEC 61131-3.
Esta estandarización limita el número de lenguajes
de programación usados por las distintas
plataformas de PLC.
Los lenguajes estandarizados son:






Ladder (LD)
Bloques de función (FBD)
Literal Estructurado (ST)
Listas (IL)
Grafcet (SFC)
V PARTE
LENGUAJES DE PROGRAMACION

4

5.2. Lenguajes de Programación


Sin embargo, para crear programas de control con Twido sólo se
pueden utilizar los siguientes lenguajes de programación:
1.
2.
3.




Diagramas Ladder Logic (LD): Un diagrama Ladder Logic es una
forma gráfica de mostrar una expresión lógica.
Lenguaje de lista de instrucciones (IL): Un programa de lista de
instrucciones se compone de una serie de expresiones lógicas
escritas como una secuencia de instrucciones boolearias.
Grafcet: Twido admite las instrucciones de lista Grafcet, pero no
Grafcet gráfico.

Se puede utilizar un ordenador personal (PC) para crear y editar
programas de control Twido mediante estos lenguajes de
programación.
La función de reversibilidad de Lista/Ladder Logic permite pasar
un programa de Lista a Ladder Logic y viceversa, según
convenga.
V PARTE
LENGUAJES DE PROGRAMACION

5

5.2.1. Lenguaje Ladder (LD)
• El Lenguaje Ladder abarca una serie de redes o escalones que son
ejecutados por el PLC secuencialmente.
• Un escalón comprende un juego de elementos gráficos que
representan las entradas o salidas del PLC (botones de presión,
detectores, relés, luces de indicación, etc.) así como las variables
internas del PLC.
• También contiene funciones de automatización. Ej: temporizadores,
contadores, operaciones aritméticas y lógicas, etc.
• Estos elementos gráficos son unidos entre ellos por unas conexiones
horizontales (funciones AND) y conexiones verticales (funciones
OR).
• Un escalón contiene especialmente:
– Contactores y bobinas.
– Bloques de función
– Bloques de operación

V PARTE
LENGUAJES DE PROGRAMACION

6

5.2.1. Lenguaje Ladder (LD)

ESCALON o RUNG

R
S
Cu
Cd

E

ESCALON o RUNG

Barras de potencial
V PARTE
LENGUAJES DE PROGRAMACION

7

5.2.1. Lenguaje Ladder (LD)
Los diagramas Ladder Logic (lógica de escalón) son similares a los
diagramas de lógica de relé que se utilizan para representar los
circuitos de control de relé. Los elementos gráficos, como bobinas,
contactos y bloques, representan las instrucciones. A continuación
aparece un ejemplo de diagrama Ladder Logic:

V PARTE
LENGUAJES DE PROGRAMACION

8

Instrucciones básicas en
Lenguaje Ladder


Contactos



Bobinas



Temporizadores/Timers



– Normalmente abiertos
– Normalmente cerrados





Directas
Inversas
SET
RESET

– TON
– TOF
– TP

Contadores

– Representación gráfica
– Entradas
– Salidas

V PARTE
LENGUAJES DE PROGRAMACION

9

a. Contactos
• Normalmente abiertos

• Normalmente
cerrados

V PARTE
LENGUAJES DE PROGRAMACION

10

b. Bobinas
• Directas
• Inversas

V PARTE
LENGUAJES DE PROGRAMACION

11

b. Bobinas
• SET
• RESET

V PARTE
LENGUAJES DE PROGRAMACION

12

5.2.1. Instrucciones básicas con
TwidoSoft






Procesamiento booleano
Bloques de función básicos
Procesamiento numérico
Instrucciones del programa

V PARTE
LENGUAJES DE PROGRAMACION

13

5.3.1. El editor de lenguaje Ladder
• Un programa escrito en lenguaje Ladder está formado por redes de
elementos gráficos unidos que se organizan en escalones que el
controlador ejecuta de forma secuencial. Un diagrama Ladder es una
representación gráfica de un programa Ladder similar a un diagrama
lógico de relé.
Cada escalón está formado
por una red de elementos
gráficos unidos que se
organizan en un reticulado de
programación que comienza
con una barra potencial a la
izquierda y finaliza con otra a
la derecha.
V PARTE
LENGUAJES DE PROGRAMACION

14

5.3.1. El editor de lenguaje Ladder
Escalones:
Cada escalón está formado por:

Una cabecera de escalón que
indica la función del escalón.

Un reticulado de programación
de celdas con un máximo de
siete filas y once columnas.

Las dimensiones de una celda
son una fila de alto por una
columna de ancho.

Los elementos gráficos se
insertan en el reticulado y se
unen
mediante
líneas
conectoras
horizontales
y
verticales.
V PARTE
LENGUAJES DE PROGRAMACION

15

5.3.1. El editor de lenguaje Ladder
Elementos gráficos:
Los elementos gráficos representan:

Entradas y salidas del controlador, como sensores, botones y relés:

Todas las entradas están representadas por símbolos de
contactos:







Todas las salidas están representadas por símbolos de bobinas:

Operaciones aritméticas, numéricas y de comparación.
Funciones de sistema predefinidas, como temporizadores y
contadores.
Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

16

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:
El reticulado de programación de un diagrama Ladder se
divide en dos áreas:
• Área de prueba
– Contiene las condiciones que se han de probar a fin de
realizar acciones. Está formada por las columnas 1 a 10 y
contiene contactos, bloques de función y bloques de
comparación.



Área de actividad
– Contiene la salida u operación que será realizada según sean
los resultados de las pruebas llevadas a cabo en el área de
prueba. Está formada por las columnas 9 a 11 y contiene
bobinas y bloques de operación.

V PARTE
LENGUAJES DE PROGRAMACION

17

5.3.1. El editor de lenguaje Ladder
Reticulado de programación:

V PARTE
LENGUAJES DE PROGRAMACION

18

5.3.1. El editor de lenguaje Ladder

V PARTE
LENGUAJES DE PROGRAMACION

19

EJERCICIOS
SERIE - PARALELO

V PARTE
LENGUAJES DE PROGRAMACION

20

Ejemplo – Arranque de un motor
(Ladder)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

21

5.2.2. Lenguaje de lista de
instrucciones (IL)
• Se trata de una sucesión de expresiones que son
ejecutadas secuencialmente por el PLC.
• Cada sentencia puede comprender comentarios,
una o más instrucciones y pueden ser
identificadas por una etiqueta.

V PARTE
LENGUAJES DE PROGRAMACION

22

5.2.2. Lenguaje de lista de
instrucciones (IL)
Un programa escrito en lenguaje de lista de instrucciones es
ejecutado de manera secuencial por el controlador. A continuación
aparece un ejemplo de programa de Lista.

V PARTE
LENGUAJES DE PROGRAMACION

23

Número de línea:

• Los números de línea se generan automáticamente al introducir una
instrucción. Las líneas vacías y las líneas de comentario no tienen
números de línea.

Código de instrucción:

• El código de instrucción es un símbolo para un operador que
identifica la operación que se va a realizar utilizando los operandos.
Los operadores típicos especifican operaciones numéricas y
booleanas. Por ejemplo, en el programa de ejemplo anterior, LD es
la abreviatura del código de instrucción para una instrucción LOAD.
La instrucción LOAD coloca (carga) el valor del operando %I0.1 en
un registro interno llamado el acumulador. Hay dos tipos de
instrucciones básicas:
Instrucciones de prueba
– Estas instrucciones configuran o comprueban las condiciones necesarias
para realizar una acción. Por ejemplo, LOAD (LD) y AND.

Instrucciones de acción

– Estas instrucciones realizan acciones como resultado de las condiciones
configuradas. Por ejemplo, instrucciones de asignación como STORE
(ST) y RESET (R).
V PARTE
LENGUAJES DE PROGRAMACION

24

Operando:
• Un operando es un número, dirección o símbolo que
representa un valor que puede manipular un programa
en una instrucción. Por ejemplo, en el programa de
ejemplo anterior, el operando %I0.1 es una dirección
que tiene asignado el valor de una entrada del
controlador. Una instrucción puede tener de 0 a 3
operandos dependiendo del tipo de código de
instrucción.
• Los operandos pueden representar los siguientes
elementos:

– Entradas y salidas del controlador, como sensores, botones y
relés.
– Funciones de sistema predefinidas, como temporizadores y
contadores.
– Operaciones aritméticas, numéricas y de comparación.
– Variables internas del controlador, como bits y palabras.
V PARTE
LENGUAJES DE PROGRAMACION

25

INSTRUCCIONES BASICAS
PROCESAMIENTO BOOLEANO
– Instrucciones de carga (LD, LDN, LDR, LDF)
– Instrucciones de almacenamiento (ST, STN, R, S)
– Instrucciones lógicas:





Instrucciones AND lógicas (AND, ANDN, ANDR, ANDF)
Instrucciones OR lógicas (OR, ORN, ORR, ORF)
Instrucciones de OR exclusivo (XOR, XORN, XORR, XORF)
Instrucción NOT (N)

V PARTE
LENGUAJES DE PROGRAMACION

26

Procesamiento booleano


Las instrucciones booleanas pueden compararse con los elementos
gráficos de Ladder. En la tabla siguiente se muestran estas
instrucciones.
Elemento

Instrucción

Ejemplo

Descripción

Elementos de
prueba

La instrucción Cargar
(LD) equivale a un
contacto abierto.

LD %I0.0

El contacto se cierra cuando
el bit %I0.0 se encuentra en
estado 1.

Elementos de
acción

La instrucción
Almacenar (ST)
equivale a una
bobina.

ST %Q0.0

El objeto de bit asociado
toma un valor lógico del
acumulador de bits (resultado
de lógica anterior).



El resultado booleano de los elementos de prueba se aplica a los
elementos de acción como muestran las siguientes instrucciones:
LD %I0.0
AND %I0.1
ST %Q0.0
V PARTE
LENGUAJES DE PROGRAMACION

27

5.3.2. Editor de listas

V PARTE
LENGUAJES DE PROGRAMACION

28

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

29

Instrucciones de carga

V PARTE
LENGUAJES DE PROGRAMACION

30

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

31

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

32

Instrucciones de almacenamiento

V PARTE
LENGUAJES DE PROGRAMACION

33

a. Resumen contactos

V PARTE
LENGUAJES DE PROGRAMACION

34

b. Resumen bobinas

V PARTE
LENGUAJES DE PROGRAMACION

35

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

36

Instrucciones Lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

37

Instrucciones lógicas - AND

V PARTE
LENGUAJES DE PROGRAMACION

38

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

39

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

40

Instrucciones lógicas - OR

V PARTE
LENGUAJES DE PROGRAMACION

41

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

42

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

43

Instrucciones lógicas - XOR

V PARTE
LENGUAJES DE PROGRAMACION

44

Instrucción NOT (N)
• La instrucción NOT (N) niega el resultado booleano de la
instrucción anterior.

V PARTE
LENGUAJES DE PROGRAMACION

45

Ejemplo – Arranque de un motor
(IL)
PA

K

PP
F
K

V PARTE
LENGUAJES DE PROGRAMACION

46

5.3.2. Editor de listas
Instrucciones básicas para la reversibilidad
• Las instrucciones que aparecen a continuación son
necesarias para la estructura de un bloque de función
reversible en lenguaje de lista.
• BLK : indica el comienzo del bloque y define el inicio del
escalón y de la parte de entrada al bloque.
• OUT_BLK : indica el comienzo de la parte de salida del
bloque.
• END_BLK : indica el final del bloque y del escalón.
• El uso de las instrucciones del bloque de función
reversible no es obligatorio cuando el programa de lista
funciona correctamente. Es posible programar en lista
algunas instrucciones, lo cual no es reversible.
V PARTE
LENGUAJES DE PROGRAMACION

47

Principios para programar bloques de
función estándar
Se pueden usar cualquiera de los siguientes métodos:
• Instrucciones de bloque de función (por ejemplo, BLK
%TM2): método reversible de programación en lenguaje
Ladder Logic reversible que permite que las operaciones
que se van a realizar en el bloque se lleven a cabo en un
único lugar del programa.
• Instrucciones específicas (por ejemplo, CU %Ci): método
no reversible que permite que las operaciones que se
van a realizar en las entradas del bloque se lleven a cabo
en varias partes del programa (por ejemplo, line 100 CU
%C1, line 174 CD %C1, line 209 LD %C1.D).
V PARTE
LENGUAJES DE PROGRAMACION

48

Programación reversible
Se pueden usar las instrucciones BLK,
OUT_BLK y END_BLK para programación
reversible.
– BLK: Indica el principio de un bloque.
– OUT_BLK: Se utiliza para cablear
directamente las salidas de bloque.
– END_BLK: Indica el final de un bloque.
V PARTE
LENGUAJES DE PROGRAMACION

49

Ejemplo con salidas cableadas

V PARTE
LENGUAJES DE PROGRAMACION

50

Ejemplo sin salida cableada

V PARTE
LENGUAJES DE PROGRAMACION

51

5.3.2. Editor de listas
Instrucciones no equivalentes que se deben evitar
• Evite utilizar determinadas instrucciones de lista o determinadas
combinaciones de instrucciones y operandos, ya que no tienen
ningún equivalente en diagramas Ladder Logic. Por ejemplo, la
instrucción N (invierte el valor en el acumulador booleario) no tiene
una instrucción Ladder Logic equivalente.
• La tabla que aparece a continuación enumera todas las instrucciones
de programación de lista que no se pueden invertir a Ladder Logic.
Instrucción de lista

Operando

Descripción

JMPCN

%Li

NOT condicional de salto

N

Ninguno

Negación (NOT)

ENDCN

Ninguno

Condicional de finalización

V PARTE
LENGUAJES DE PROGRAMACION

52

5.3.2. Bloques de función básicos
– Bloque de función del temporizador (%TMi)
• Tipo de temporizador TOF
• Tipo de temporizador TON
• Tipo de temporizador TP

– Programación y configuración de
temporizadores
– Bloque de función del contador
progresivo/regresivo (%Ci)
– Programación y configuración de contadores
V PARTE
LENGUAJES DE PROGRAMACION

53

a. Temporizadores/Timers
• Los temporizadores hacen posible manejar
retardos durante el ajuste o retardos durante el
restablecimiento (retardo al ON o al OFF). Y
para hacer esto, ellos tienen sus propios
parámetros, entradas y salidas.
• Para %TMn son:







Tipo: TON, TOF o TP
Base de tiempos: 1ms, 10ms, 100ms, 1s y 1min.
%TMn.P: Valor preestablecido
%TMn.V: Valor actual
%TMn. Q: Salida del Timer
Comando de salida
V PARTE
LENGUAJES DE PROGRAMACION

54

Bloque de función del temporizador
(%TMi)
Existen tres tipos de bloques de función del
temporizador:
• TON (temporizador de retraso durante el
ajuste): este tipo de temporizador permite
gestionar los retrasos durante el ajuste.
• TOF (temporizador de retraso durante el
restablecimiento): este tipo de temporizador
permite gestionar los retrasos durante el
restablecimiento.
• TP (pulso de temporizador): se utiliza para
generar pulsos de duración determinada.
Los retrasos o períodos de pulsos de los temporizadores se pueden
programar y modificar mediante TwidoSoft.

V PARTE
LENGUAJES DE PROGRAMACION

55

Temporizadores/Timers
• Representación gráfica:
%TM0
IN

Q
TYPE TON
TB
1S
ADJ Y
%TM0.P 4

V PARTE
LENGUAJES DE PROGRAMACION

56

Programación y configuración de
temporizadores
Durante la configuración, deben
introducirse los parámetros siguientes:
Tipo de temporizador: TON, TOF o TP

Base de tiempo: 1 min, 1 s, 100 ms,
10 ms o 1 ms

Valor preestablecido (%TMi.P): de 0 a
9.999

Ajuste: comprobado o no comprobado
V PARTE
LENGUAJES DE PROGRAMACION

57

Bloque de función del temporizador (%TMi)
Parámetro

Etiqueta

Número de
temporizador

%TMi

0 a 63: TWDLCAA10DRF y TWDLCAA16DRF.
0 a 127 para los demás controladores.

TON

Retraso durante el ajuste (predeterminado)

TOF

Retraso durante el restablecimiento

Tipo
Base de tiempo

Valor

TP

Pulso (monoestable)

TB

1 min (predeterminado), 1s, 100ms, 10ms, 1ms

%Tmi.V

Palabra que aumenta de 0 a %TMi.P cuando el temporizador está en
funcionamiento. Se puede leer y comprobar, pero no se puede escribir desde el
programa. %TMi.V se puede modificar utilizando el editor de tablas de
animación.

Valor preestablecido

%Tmi.P

0 - 9999. Palabra que se puede leer, comprobar y escribir desde el programa.
El valor predeterminado es 9999. El período o retardo generado es igual a
%TMi.P x

Editor de tablas de
animación

Y

Y: Sí, el valor preestablecido %TMi.P se puede modificar mediante el editor de
tablas de animación.
N: No, el valor preestablecido %TMi.P no se puede modificar.

Entrada de
validación

IN

Inicia el temporizador en flanco ascendente (tipos TON o TP) o en flanco
descendente (tipo TOF).

Salida del
temporizador

Q

El bit asociado %TMi.Q se ajusta a 1 dependiendo de la función realizada:
TON, TOF, o TP.

Valor actual

V PARTE
LENGUAJES DE PROGRAMACION

58

Temporizador tipo TON

V PARTE
LENGUAJES DE PROGRAMACION

59

Tipo de temporizador TON

1. El temporizador inicia en el flanco ascendente de la entrada IN.
2. El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de una
unidad por pulso de la base de tiempo TB.
3. El bit de salida %TMi.Q se establece en 1 cuando el valor actual llega a
%TMi.P.
4. El bit de salida %TMi.Q permanece en 1 mientras la entrada IN esté en 1.
5. Si se detecta un flanco descendente en la entrada IN, el temporizador se
detiene, aun cuando el temporizador no haya alcanzado el valor %TMi.P, y
%TMi.V se establece en 0.
V PARTE
LENGUAJES DE PROGRAMACION

60

Temporizador tipo TOFF

V PARTE
LENGUAJES DE PROGRAMACION

61

Tipo de temporizador TOF

1. El valor actual %TMi.V se establece en 0 en un flanco ascendente en la
entrada IN, aun cuando el temporizador se encuentre en ejecución.
2. El bit de salida %TMi.Q se establece en 1 cuando se detecte un flanco
ascendente en la entrada N.
3. El temporizador inicia en el flanco descendente de la entrada IN.
4. El valor actual %TMi.V aumenta a %TMi.P en incrementos de una unidad por
pulso de la base de tiempo TB.
5. El bit de salida %TMi.Q se restablece a 0 cuando el valor actual llega a
%TMi.P.
V PARTE
LENGUAJES DE PROGRAMACION

62

Temporizador tipo TP

V PARTE
LENGUAJES DE PROGRAMACION

63

Tipo de temporizador TP
1. El temporizador se ejecuta en el
flanco ascendente de la entrada IN.
El valor actual %TMi.V se pone a 0
si el temporizador aún no se ha
ejecutado.
2. El bit de salida %TMi.Q se
establece en 1 cuando se inicia el
temporizador.
3. El valor actual %TMi.V del temporizador aumenta de 0 a %TMi.P en
incrementos de una unidad por pulso de la base de tiempo TB.
4. El bit de salida %TMi.Q se establece en 0 cuando el valor actual llega a
%TMi.P.
5. El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a
%TMi.P y la entrada IN vuelve a 0.6El temporizador no se puede
restablecer en cero. Cuando %TMi.V es igual a %TMi.P y la entrada IN
se establece en 0, %TMi.V se ajusta a 0.
V PARTE
LENGUAJES DE PROGRAMACION

64

Ejercicio - Semáforo
• Diagrama de tiempos

t1

t2

t3

t4
V PARTE
LENGUAJES DE PROGRAMACION

65

Contadores
• Los contadores son usados para conteo de pulsos ascendente o
descendente. Ellos tienen sus propios parámetros internos, entradas
y salidas para determinar como trabajan. Para un contador %Cn
estos son:
– Un reset
– Una entrada predeterminada
– Una entrada de conteo ascendente
– Una entrada de conteo descendente






Una salida de desborde de conteo regresivo: %Cn.E
Una salida de valor preseleccionado alcanzado: %Cn.D
Una salida de desborde de conteo progresivo: %Cn.F
Un valor preestablecido %Cn.P
Un valor actual: %Cn.V
V PARTE
LENGUAJES DE PROGRAMACION

66

Contadores
ENTRADAS

SALIDAS

Reset

Conteo regresivo
desbordado

Set
Conteo
preseleccionado
alcanzado

Contador Ascendente

Contador Descendente
Conteo progresivo
desbordado
V PARTE
LENGUAJES DE PROGRAMACION

67

Bloque de función del contador
progresivo/regresivo (%Ci)

V PARTE
LENGUAJES DE PROGRAMACION

68

Contadores

V PARTE
LENGUAJES DE PROGRAMACION

69

5.4. Grafcet (SFC)
• El lenguaje Grafcet fue desarrollado para
suministrar
una
descripción
gráfica
y
estructurada de una operación de un sistema
automatizado.
• Esta descripción es producida usando:

– Número de pasos, en los cuales las asignaciones
pueden ser asignadas
– Número de transiciones, en las cuales condiciones de
receptividad son asignados.
– Número de cada paso y transición es asignado un
proceso para ejecutar. Este procesamiento puede ser
descrito en un lenguaje conveniente, por ejemplo LD.
V PARTE
LENGUAJES DE PROGRAMACION

70

5.4. Lenguaje Grafcet (SFC)
Grafcet es un método analítico que divide cualquier sistema de control
secuencial en una serie de pasos con acciones, transiciones y condiciones
asociadas. La ilustración que aparece a continuación muestra ejemplos de
instrucciones Grafcet en programas Ladder Logic y Lista respectivamente.

V PARTE
LENGUAJES DE PROGRAMACION

71

Instrucciones aritméticas
• Las instrucciones aritméticas se utilizan para realizar
operaciones aritméticas en un operando o entre dos. La
siguiente tabla enumera los tipos de instrucciones
aritméticas.

V PARTE
LENGUAJES DE PROGRAMACION

72

Estructura de las operaciones
matemáticas

V PARTE
LENGUAJES DE PROGRAMACION

73

Sintaxis operaciones matemáticas
• La sintaxis depende de los operadores
utilizados como se muestra en la siguiente
tabla.

V PARTE
LENGUAJES DE PROGRAMACION

74

Instrucciones lógicas
• Las instrucciones de lógica se utilizan para realizar
operaciones lógicas entre dos operandos de palabra o en
un operando de palabra. La siguiente tabla enumera los
tipos de instrucciones de lógica.

V PARTE
LENGUAJES DE PROGRAMACION

75

Instrucciones lógicas

V PARTE
LENGUAJES DE PROGRAMACION

76

Instrucciones de desplazamiento

V PARTE
LENGUAJES DE PROGRAMACION

77

Consejos sobre programación
Tratamiento de los saltos de programa



Utilice los saltos de programa con precaución para evitar bucles largos que
prolonguen el tiempo de ciclo. Evite los saltos en las instrucciones ubicadas "detrás"
(Aparece una instrucción delante antes de un salto en un programa. Sin embargo,
aparece una instrucción detrás después de un salto en un programa).

Programación de salidas



‘Los bits de salida, al igual que los bits internos, sólo se deben modificar una vez en
el programa. En el caso de los bits de salida, sólo se tiene en cuenta el último valor
examinado cuando se actualizan las salidas.

Utilización de los sensores de parada de emergencia de cableado directo


Los sensores utilizados directamente para paradas de emergencia no deben ser
procesados por el controlador. Se deben conectar directamente a las salidas
correspondientes.

V PARTE
LENGUAJES DE PROGRAMACION

78

Consejos sobre programación
Tratamiento de recuperación de la alimentación


Condicionar una recuperación de la alimentación a una operación manual.
Un reinicio automático puede provocar un funcionamiento no deseado de la
instalación (utilice los bits de sistema %S0, %S1 y %S9).

Gestión de la hora y de los fechadores


Se debe comprobar el estado del bit de sistema %S51, que indica los
posibles fallos del fechador.

Comprobación de errores y sintaxis



Cuando se introduce un programa, TwidoSoft comprueba la sintaxis de
instrucciones, operandos y sus asociaciones.

V PARTE
LENGUAJES DE PROGRAMACION

79

5.6. Documentación
• La utilidad de la documentación es la de
poseer un documento en papel que
describe en detalle la aplicación. La verdad
es que cuando todo comienza a funcionar
durante un tiempo, si un error ocurre o es
necesario alguna modificación, es muy útil
tener un archivo completo que documenta
la historia del automatismo creado.
V PARTE
LENGUAJES DE PROGRAMACION

80

Principio y propósito de una copia en
papel de la documentación
• El software de Twido permite generar una
documentación de la aplicación de automatismo
creada.
• Esta documentación se genera automáticamente
usando todos los datos desde el sistema, el
programa y las funciones configuradas.
• También ofrece de igual manera personalizar el
fichero con la descripción de los elementos de su
máquina, de su aplicación.
V PARTE
LENGUAJES DE PROGRAMACION

81

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

82

Impresión de la documentación

V PARTE
LENGUAJES DE PROGRAMACION

83