Codis d'Error PLC Allen-Bradley/Rockwell: Guia d'Interpretació i Resolució
Resposta directa: Els codis d'error dels autòmats ControlLogix i CompactLogix de Rockwell Automation es divideixen en tres grans famílies: errors de mòdul (Major/Minor Fault, visibles a Studio 5000), errors de comunicació (EtherNet/IP i ControlNet) i errors d'E/S (fallades de canal analògic o digital). Cada codi porta un parell Type/Code que identifica la causa exacta dins la taula de diagnòstic del fabricant. Aquest article explica com llegir-los, què signifiquen els més freqüents i com resoldre'ls sense allargar l'aturada de línia.
Per què és difícil interpretar-los sense manual a mà: Cada família de codi (Major Fault, Minor Fault, I/O Fault, Controller Fault) té la seva pròpia taula de referència dins la documentació de Rockwell (Logix 5000 Controllers General Instructions, publicació 1756-RM003), i el mateix número de Type significa coses diferents segons si el Code associat prové d'un mòdul d'E/S, d'una instrucció de programa o d'un problema de xarxa. Sense accés ràpid a aquesta documentació, el tècnic acaba interpretant-lo per intuïció.
Una parada de línia costa cara
Una aturada no planificada en una cèl·lula robotitzada amb un ControlLogix pot costar centenars d'euros per minut en producció perduda. El temps que el tècnic dedica a buscar quin significa el codi Type 4, Code 42 dins d'un PDF de 900 pàgines és temps que la màquina segueix parada.
— Equip d'automatització, planta de manufactura, Catalunya
Com es llegeix un codi de fallada a ControlLogix i CompactLogix?
Els controladors Logix (ControlLogix 5580, CompactLogix 5380/5480, entre altres) emmagatzemen la informació de fallada al tag automàtic Controller Fault Handler, accessible des de Studio 5000 a l'apartat Controller Properties → Major Faults o Minor Faults. Cada fallada es descriu amb un parell numèric: Type (categoria general de l'error) i Code (subcausa específica dins d'aquesta categoria).
Per exemple, un Type 4 correspon a errors de programa (Program Fault), i dins d'aquest tipus el Code concret indica si l'origen és una divisió per zero, un accés a un array fora de rang, o una instrucció amb operands invàlids. Un Type 3 correspon a errors de configuració de mòdul d'E/S, mentre que un Type 6 sol apuntar a errors de comunicació de motion o de xarxa.
Categories principals de codis d'error
1. Major Faults (fallades majors)
Aturen l'execució del programa i posen el controlador en mode Fault. Requereixen intervenció manual (Clear Faults + Reset) o un handler de programa (Fault Routine) que gestioni la recuperació automàtica quan sigui segur fer-ho. Inclouen errors de tipus 1 (hardware), 3 (mòdul I/O), 4 (programa d'usuari) i 6 (motion/safety).
2. Minor Faults (fallades menors)
No aturen el programa, però queden registrades al tag de diagnòstic i, si no es resolen, poden acumular-se fins convertir-se en un problema major. Un exemple habitual és un overflow de matemàtica en coma flotant que no interromp l'escaneig però indica un error de lògica pendent de revisar.
3. Errors de comunicació EtherNet/IP i ControlNet
Es manifesten com a mòduls amb LED vermell intermitent o codis d'estat de connexió (Connection Faulted, Rack Fault) al RSLinx o Studio 5000. Les causes més freqüents són: adreça IP duplicada, RPI (Requested Packet Interval) massa agressiu per a la xarxa, cablejat o switch industrial defectuós, o un mòdul remot que ha perdut l'alimentació.
4. Errors d'E/S (I/O Faults)
Apareixen quan un mòdul d'entrada/sortida detecta una condició anòmala: curtcircuit en una sortida digital, senyal fora de rang en una entrada analògica, o pèrdua de comunicació amb el xassís remot (rack). Es diagnostiquen des de la pestanya Module Info del mòdul afectat dins Studio 5000, on apareix el codi d'estat exacte del canal.
Exemple pràctic de diagnòstic
Situació:
El controlador ControlLogix 5580 entra en Major Fault. El tag de diagnòstic mostra Type 4, Code 42.
Interpretació segons taula de Rockwell (publicació 1756-RM003):
Type 4 = Program Fault. Code 42 = Array Subscript Out of Range: la lògica intenta accedir a una posició d'un array que no existeix (per exemple, un bucle FOR mal delimitat o un índex calculat que supera la mida de l'array). Solució: revisar la instrucció que fa la darrera operació abans de la fallada al Fault Log i corregir els límits de l'índex o afegir una comprovació de rang (LIM) abans de l'accés.