Error de trampa de desbordamiento 0020 del SLC 500: cómo corregir el enclavamiento S:5/0
La falla mayor 0020 de SLC 500 significa que la trampa de desbordamiento S:5/0 quedó enclavada después de una operación matemática incorrecta. Borrarla con O...
Cada pocos días el SLC entra en fallo. Error grave 0020. Los operadores se encogen de hombros, mantenimiento lo borra y la producción se reanuda… hasta que el mismo error matemático vuelve a aparecer durante el turno de noche. Ese patrón es el bit de trampa de desbordamiento S:5/0 haciendo exactamente lo que Rockwell diseñó para hacer: quedar enclavado para que no puedas fingir que la aritmética incorrecta nunca ocurrió.
En un 5/04 como el 1747-L524, 0020 significa que una instrucción produjo un resultado fuera del rango entero permitido. Las operaciones con enteros con signo de 16 bits están comprendidas entre −32768 y +32767. Si superas ese límite con ADD o MUL, divides entre cero, recorres una FIFO/LIFO más allá de su búfer o ejecutas NEG sobre −32768, el procesador establece S:5/0 y permanece en fallo hasta que algo desenclava ese bit. Los manuales de la familia de publicaciones 1747-UM011 / 1747-UM001 describen la trampa; en planta simplemente se ve una CPU detenida.
Los procesadores SLC antiguos todavía controlan muchas máquinas discretas. Las trampas de desbordamiento casi siempre se deben a las operaciones matemáticas de la aplicación, no a un backplane defectuoso.
La OTU que detiene la hemorragia
La mayoría de las recuperaciones rápidas colocan una OTU sobre S:5/0 para que el ciclo pueda continuar después de la trampa. La ubicación es lo más importante. Colócala como el último peldaño de LAD 2—el archivo que contiene tus llamadas JSR—para que todas las subrutinas hayan terminado antes de borrar el enclavamiento. Así, el desbordamiento se detecta durante el ciclo y después se borra una sola vez, antes del estado inactivo.
LAD 2 — último peldaño S:5/0 ----] [----(OTU)----
Si colocas la misma OTU dentro de la subrutina que produce el desbordamiento, inventas un nuevo modo de fallo: borras demasiado pronto, vuelve a producirse un desbordamiento más adelante en el mismo ciclo y ocurre un fallo inmediato de nuevo. O la OTU se activa en una ruta que no encuentra la operación matemática incorrecta durante ese ciclo, y crees que lo has “solucionado”, mientras el peldaño real sigue provocando el fallo dos veces por semana.
| Elemento | Uso |
|---|---|
| Bit |
S:5/0 trampa de desbordamiento (enclavada) |
| Instrucción | OTU |
| Archivo | LAD 2 (principal) |
| Posición | Después de cada JSR, último peldaño |
Descarga el programa, pon la llave en RUN y observa que S:5/0 permanezca libre durante varios turnos. Si sigue tranquilo, has ganado tiempo, no has cerrado la causa raíz.
Encuentra la operación matemática que realmente produjo el desbordamiento
Considera la OTU como un cinturón de seguridad. Después, ponte a buscar:
- Cualquier cambio reciente que afecte a enteros: conteos de lotes, señales analógicas escaladas introducidas en archivos N, o un MUL “temporal” para conversiones de unidades
- ADD / SUB / MUL / DIV / DDV sin límites de rango
- Lugares que deberían usar LADD / LMUL (32 bits) cuando los valores salieron del rango cómodo de 16 bits
- NEG sobre un valor que pueda permanecer en −32768
- La longitud de la FIFO/LIFO frente al búfer que realmente reservaste
Bits de estado relacionados que conviene conocer durante la depuración: S:5/1 habilitación de la trampa de desbordamiento, S:1/0 primer ciclo y S:2/0 fallo del procesador. No borres las trampas a ciegas durante ediciones en línea sin saber qué peldaño está provocando el problema.
Comprobación de la realidad del hardware
Las CPU 5/04 de la clase 1747-L524 están totalmente obsoletas. Si vas a conservar el chasis, guarda en el estante una 5/04 de repuesto en buen estado; las plantas que todavía compran equipos de esta familia suelen terminar usando módulos como el 1747-L542. Las máquinas más pequeñas a veces migran lateralmente a una 5/03 como la 1747-L532, pero esa es una decisión de proyecto, no una solución al desbordamiento. A más largo plazo, la mayoría de las instalaciones trasladan el proceso a CompactLogix o ControlLogix y dejan atrás las trampas matemáticas de 16 bits junto con la plataforma. La estrategia de repuestos para flotas Logix mixtas sigue dependiendo de cómo abastezcas tus sistemas PLC y PAC.
Hasta que se complete esa migración, la disciplina es sencilla: OTU al final de LAD 2 y, después, demuestra qué ADD/MUL está mintiendo sobre su rango.
Sobre el autor
Mark Townsend | Ingeniero sénior de automatización – Sistemas Allen-Bradley
Mark Townsend es ingeniero sénior de automatización, con más de 18 años de experiencia en plataformas Allen-Bradley, incluidas ControlLogix, CompactLogix y la SLC-500 antigua. Su trabajo diario consiste en desarrollar lógica con RSLogix / Studio 5000 y poner en marcha HMI de FactoryTalk View en flotas antiguas y mixtas.