Control del Programa
Flujo y Ejecución
Domine el flujo lógico de su programa. Desde saltos condicionales hasta herramientas de diagnóstico en tiempo real, optimice la estructura de ejecución de su autómata.
¿Qué son las operaciones de control en TIA Portal?
Las operaciones de control del programa permiten modificar el orden secuencial de ejecución de los segmentos. Se utilizan para omitir partes del código (Saltos), crear ramificaciones complejas (Distribuidores) o gestionar el comportamiento interno de la CPU (Parada, Watchdog, Medida de tiempo).
Estas instrucciones son potentes pero deben usarse con precaución, especialmente la instrucción WAIT que bloquea el ciclo, o los saltos que pueden dificultar la depuración. TIA Portal también ofrece herramientas modernas para interceptar errores localmente en cada bloque.
Saltos y Flujo
Instrucciones de desvío del programa
JMP / JMPN — Saltos condicionales
JMPQué hace
JMP interrumpe la ejecución secuencial y salta a una etiqueta (LABEL) si el RLO es 1. JMPN hace lo mismo si el RLO es 0.
Cuándo usarlo
Omitir una sección de código que no debe ejecutarse en un modo específico, o crear bucles simples en LAD/FBD.
Consejos Pro
El destino del salto (LABEL) debe estar dentro del mismo bloque (FC o FB).
No use saltos hacia atrás para crear bucles sin condición de salida, ya que corre el riesgo de superar el tiempo de ciclo.
En SCL, use preferiblemente las estructuras IF...THEN o CASE...OF.
SWITCH — Distribuidor multicaso
SWITCHQué hace
Compara un valor de entrada con varios valores objetivo y salta al segmento correspondiente al primer caso verificado. Equivalente gráfico del Switch/Case.
Cuándo usarlo
Gestión de estados máquina (Grafcet simple), selección de modos de funcionamiento o enrutamiento de piezas según un código tipo.
Consejos Pro
Más limpio y legible que una serie de comparadores == puestos en serie.
Use la entrada 'ELSE' para gestionar el caso en que ningún valor coincida.
Ideal para estructuras de menús en HMI.
RET — Retorno
RETQué hace
Fuerza el fin de la ejecución del bloque actual (FC/FB) y regresa al bloque llamante.
Cuándo usarlo
Terminación anticipada de una función si se detecta un error al inicio del bloque, o si no se cumple una condición de seguridad.
Consejos Pro
Útil para optimizar el tiempo de ciclo al no procesar el resto del código innecesariamente.
Sea vigilante: las salidas del bloque no procesadas mantendrán su último estado.
En SCL, use la instrucción RETURN;
Control del Runtime
Gestión del ciclo CPU y medidas de rendimiento
RUNTIME — Medir el tiempo
RUNTIMEQué hace
Mide el tiempo de ejecución de una porción de programa o del bloque entero en microsegundos (µs).
Cuándo usarlo
Optimización de código, diagnóstico de segmentos pesados o cálculos de rendimiento de la máquina.
Consejos Pro
Llame a RUNTIME una vez para inicializar la medida y una segunda vez para obtener el resultado.
Use el tipo de datos LReal para almacenar el resultado de la medida.
Práctico para comprobar si un bucle FOR complejo se acerca a los límites del watchdog.
WAIT — Temporización fija
WAITQué hace
Suspende la ejecución del programa durante una duración especificada en microsegundos. ATENCIÓN: a diferencia de un Temporizador, WAIT bloquea totalmente el ciclo de la CPU.
Cuándo usarlo
Esperar unos microsegundos para estabilizar una señal electrónica en una tarjeta de E/S ultra rápida.
Consejos Pro
Usar con extrema moderación. Un WAIT demasiado largo activará un error Watchdog y detendrá el PLC.
Nunca usar para retardos de proceso (segundos/minutos); use Temporizadores TON para ello.
Solo disponible en S7-1500.
STP — Parada de CPU
STPQué hace
Fuerza el paso de la CPU a modo STOP.
Cuándo usarlo
Condición de error fatal donde la máquina no debe ser controlada, o prueba de diagnóstico.
Consejos Pro
La parada es inmediata. Se requerirá intervención manual (HMI o interruptor) para reiniciar.
Prefiera la gestión de alarmas con modo seguro antes que la parada brusca de la CPU siempre que sea posible.
Útil en proyectos de puesta en marcha para hacer un 'break' en un punto preciso.
Gestión de Errores
Intercepción local de fallos de ejecución
GET_ERROR / GET_ERR_ID
Qué hacen
Recuperan información sobre el primer error ocurrido dentro de un bloque (ej: acceso a un índice de array inexistente).
Cuándo usarlo
Hacer sus bloques robustos interceptando errores de programación sin detener el PLC.
Consejos Pro
GET_ERROR proporciona una estructura detallada, GET_ERR_ID solo devuelve el número del error.
Coloque estas instrucciones al final de sus bloques críticos.
Permite crear un registro de errores personalizado.
Saltos vs Estructuras de control
¿Qué método usar para desviar el programa?
| Usted necesita... | Instrucción recomendada | ¿Por qué? |
|---|---|---|
| Salto simple en Ladder | JMP | Omitir un segmento |
| Opción múltiple compleja | SWITCH / CASE | Más legible que 10 saltos |
| Medir duración interna | RUNTIME | Optimización de rendimiento |
| Parada inmediata | STP | Error crítico hardware |
| Espera muy corta | WAIT | Estabilización electrónica |
| Diagnóstico local | GET_ERROR | Evitar el STOP de CPU |
Preguntas Frecuentes
¿Cuál es la diferencia entre JMP y JMP_LIST?
JMP es un salto único. JMP_LIST permite definir una lista de destinos. Según un índice numérico, el programa salta a la 1ª, 2ª o N-ésima etiqueta de la lista.
¿Es peligrosa la instrucción WAIT?
Sí, si se usa mal. Suspende la ejecución de TODO el programa. Si sus esperas superan el tiempo de watchdog (ej: 150ms), la CPU pasará a STOP.
¿Cómo medir el tiempo de ciclo total del PLC?
No necesita RUNTIME para eso. Puede leerlo en las propiedades de la CPU online o usar las variables de sistema del OB1.
¿Dónde colocar las etiquetas LABEL?
Los LABEL pueden ir al inicio de cualquier segmento. En LAD aparecen sobre el raíl izquierdo. El nombre debe ser único en el bloque.