KOP (contactos) en TIA Portal
KOP es el lenguaje de contactos de Siemens: el nombre viene del alemán Kontaktplan, y en la norma internacional IEC 61131-3 se llama LD (Ladder Diagram, diagrama de escalera). Es el lenguaje más usado en máquinas porque se parece a un esquema eléctrico: cualquier técnico que lea esquemas puede seguir un programa en KOP, y eso facilita mucho el diagnóstico en planta. Este tema explica sus instrucciones básicas tal y como se usan en TIA Portal con los S7-1200 y S7-1500.
Cómo se lee un segmento
Un programa en KOP se divide en segmentos. Cada segmento empieza en una barra vertical a la izquierda, que representa la «alimentación», y termina en una o varias instrucciones de salida, como una bobina. Se lee como un circuito: si hay un camino que «conduce» desde la barra hasta la bobina, la bobina se activa. El resultado de evaluar el camino se llama RLO (resultado lógico de la operación).
Recuerda lo visto en el ciclo de scan: los segmentos se ejecutan de arriba abajo y cada segmento de izquierda a derecha, una vez por ciclo.
Contactos
- Contacto normalmente abierto
-| |-: «conduce» si su operando vale 1. - Contacto normalmente cerrado
-|/|-: «conduce» si su operando vale 0.
Contactos en serie hacen una función Y (AND); contactos en paralelo, una función O (OR). Es la lógica booleana de siempre, dibujada.
Bobinas
- Bobina
-( )-: escribe el RLO en su operando en cada ciclo: 1 si llega corriente, 0 si no. - Bobina negada
-(/)-: escribe el valor contrario. - Activar
-(S)-(set): pone el operando a 1 cuando llega corriente, y si no llega, no lo toca. - Desactivar
-(R)-(reset): pone el operando a 0 cuando llega corriente, y si no llega, no lo toca.
Con S y R, el valor se queda memorizado entre ciclos. Si en un mismo ciclo se ejecutan un S y un R sobre el mismo operando, manda el último que se ejecuta, como con la doble bobina.
Biestables SR y RS
TIA Portal también tiene biestables como una sola instrucción, en los que la prioridad está clara:
- SR: si las dos entradas están a 1, gana el reset (la entrada R1).
- RS: si las dos entradas están a 1, gana el set (la entrada S1).
Para un motor se suele preferir que el paro tenga prioridad, es decir, un biestable con prioridad de reset: si se pulsan marcha y paro a la vez, el motor no arranca.
Flancos
Un contacto de flanco positivo -|P|- conduce solo en el ciclo en que su operando pasa de 0 a 1; el de
flanco negativo -|N|-, en el ciclo en que pasa de 1 a 0. Cada uno necesita su propio bit de memoria
para recordar el estado anterior. También existen las instrucciones R_TRIG y F_TRIG, que guardan ese estado en su
propio bloque de datos de instancia.
Temporizadores IEC
Los temporizadores tienen una entrada IN, un tiempo PT (por ejemplo T#5s), una salida
Q y el tiempo transcurrido ET. Cada temporizador necesita su propia instancia (un bloque de datos donde
guarda su estado). Los tres más usados:
- TON, retardo a la conexión: Q se activa cuando IN lleva a 1 el tiempo PT. Si IN cae antes, se reinicia y Q no se activa. Uso típico: esperar a que una señal sea estable, o dar un tiempo antes de avanzar.
- TOF, retardo a la desconexión: Q se activa en cuanto IN pasa a 1 y se mantiene durante PT después de que IN caiga. Uso típico: dejar un ventilador funcionando un rato después de parar una máquina.
- TP, impulso: al pasar IN a 1, Q da un impulso de duración PT, aunque IN dure más o menos. Uso típico: activar una electroválvula de soplado durante un tiempo fijo.
- TONR: como el TON, pero acumula el tiempo aunque IN se interrumpa, hasta que se resetea. Sirve, por ejemplo, para contar horas de funcionamiento.
Contadores IEC
- CTU (contador ascendente): suma 1 en cada flanco de subida de CU. Q se activa cuando el valor actual CV llega al valor de preselección PV. La entrada R lo pone a cero.
- CTD (descendente): resta en cada flanco de CD; Q se activa al llegar a 0 o menos.
- CTUD: cuenta en los dos sentidos, por ejemplo piezas que entran y salen de un almacén intermedio.
Los contadores cuentan flancos, no niveles: aunque CU esté a 1 muchos ciclos, solo suma uno.
Comparar, mover y calcular
- Comparadores (
==,<>,>,<,>=,<=): se colocan como un contacto, que conduce si se cumple la comparación. Por ejemplo, «temperatura > 80,0». - MOVE: copia un valor de una variable a otra.
- Operaciones matemáticas (ADD, SUB, MUL, DIV) y conversiones entre tipos.
Variables, direcciones y tipos de datos
Cada señal tiene una dirección: %I0.0 es el bit 0 del byte 0 de entradas, %Q4.1 el bit 1
del byte 4 de salidas y %M10.0 una marca interna. En TIA Portal no se programa con direcciones sueltas,
sino con variables con nombre, definidas en la tabla de variables del PLC: "Marcha" en lugar de
%I0.1. El programa se entiende mucho mejor y, si cambia un borne, solo se cambia la dirección en la tabla.
| Tipo | Qué guarda | Ejemplo |
|---|---|---|
| Bool | Un bit: 0 o 1 | Estado de un sensor |
| Int | Entero de 16 bits, de −32768 a 32767 | Valor bruto de una analógica |
| DInt | Entero de 32 bits | Contador de piezas grande |
| Real | Número con decimales | Temperatura en °C |
| Time | Duración | T#2s500ms |
Bloques
- OB (bloque de organización): los llama el sistema operativo. El OB1 es el programa cíclico.
- FC (función): código reutilizable sin memoria propia entre llamadas.
- FB (bloque de función): código reutilizable con memoria propia, guardada en un DB de instancia. Por ejemplo, un FB «Motor» que se llama una vez por cada motor, cada uno con su instancia.
- DB (bloque de datos): guarda datos. Los globales se pueden leer desde cualquier parte del programa.
Errores típicos en KOP
- Escribir la misma salida con dos bobinas en segmentos distintos.
- Usar un contacto normalmente cerrado para un paro que ya está cableado normalmente cerrado.
- Usar la misma instancia para dos temporizadores distintos.
- Contar con un nivel en lugar de con un flanco, o usar una suma en lugar de un contador.
- Mezclar S y R de la misma variable por todo el programa, hasta que nadie sabe quién la activa.
- Segmentos sin título ni comentario, y variables con nombres como
M10_3.
Resumen
- KOP se lee como un esquema: serie es Y, paralelo es O, y la bobina recibe el resultado.
- Contacto NA conduce con 1; contacto NC conduce con 0. El contacto del programa no es el contacto físico.
- Bobina normal: escribe cada ciclo. S y R memorizan; si coinciden, manda la última que se ejecuta.
- SR da prioridad al reset; RS, al set.
- TON retarda la conexión, TOF retarda la desconexión y TP da un impulso de duración fija.
- Los contadores cuentan flancos. Cada temporizador y contador necesita su propia instancia.
Pon a prueba lo que has aprendido
43 preguntas prácticas con su explicación. Sin registro y gratis.
Empezar el test