La seguridad funcional en maquinaria industrial no es opcional: la Directiva de Maquinaria europea (2006/42/CE, en revisión hacia 2023/1230/UE) exige que los sistemas de mando de seguridad cumplan con estándares como IEC 62061 o EN ISO 13849-1. Para los fabricantes de maquinaria que programan en CODESYS, CODESYS Safety es el entorno de desarrollo certificado que permite implementar funciones de seguridad hasta SIL 3 (IEC 62061) y PL e (EN ISO 13849-1). En este artículo explicamos los conceptos clave y cómo estructurar un proyecto Safety correctamente.
Seguridad funcional: conceptos básicos
La seguridad funcional es la parte de la seguridad total de un sistema que depende del correcto funcionamiento de los sistemas de control. Los niveles de integridad de seguridad:
| Nivel | Norma IEC 62061 | Norma ISO 13849-1 | Probabilidad de fallo / hora |
|---|---|---|---|
| Bajo | SIL 1 | PL c | 10⁻⁶ a 10⁻⁵ |
| Medio | SIL 2 | PL d | 10⁻⁷ a 10⁻⁶ |
| Alto | SIL 3 | PL e | 10⁻⁸ a 10⁻⁷ |
La inmensa mayoría de las máquinas industriales requieren SIL 2 / PL d para funciones como la parada de emergencia, el enclavamiento de resguardos o el control de velocidad segura. SIL 3 se reserva para aplicaciones con riesgo de muerte masivo (prensas de gran tonelaje, maquinaria de elevación de personas, etc.).
CODESYS Safety vs. CODESYS estándar
CODESYS Safety es un entorno de desarrollo separado pero integrado en CODESYS IDE. Las diferencias clave:
- Compilación Safety: el compilador Safety realiza análisis estático específicos (comprobación de tipos estricta, verificación de rango, detección de variables sin inicializar) que el compilador estándar no hace.
- Partición de memoria: el código Safety se ejecuta en una partición de memoria aislada. El código estándar no puede escribir en variables Safety directamente.
- Tarea Safety dedicada: el runtime Safety ejecuta en una tarea de mayor prioridad que el código estándar, con watchdog hardware independiente.
- No se puede mezclar: las funciones Safety solo pueden llamar a otras funciones Safety. El código estándar puede leer salidas Safety (para monitorización) pero no puede escribirlas.
Importante: CODESYS Safety requiere un target hardware certificado por un organismo notificado (TÜV, Bureau Veritas, etc.) para SIL 2/3. No cualquier PLC con CODESYS puede ejecutar código Safety. Verifica que el target que vayas a usar tiene el certificado Safety correspondiente.
Bloques funcionales PLCopen Safety
PLCopen ha definido una librería estándar de bloques funcionales de seguridad que CODESYS Safety incluye. Los más utilizados en maquinaria:
- SF_EmergencyStop: gestiona la función de parada de emergencia con monitorización de discrepancia entre dos canales. Requiere reset manual.
- SF_GuardMonitoring: monitoriza el estado de resguardos y puertas de seguridad. Detección de fallos por discrepancia entre canales.
- SF_SafelyLimitedSpeed (SLS): monitoriza que la velocidad de un accionamiento no supera un límite configurado. Esencial para aplicaciones colaborativas.
- SF_SafeStop1 / SF_SafeStop2 (SS1/SS2): secuencias de parada segura monitorizadas. SS1 para parada controlada + corte de energía; SS2 para parada controlada manteniendo potencia.
- SF_TwoHandControl: control bimano para prensas y máquinas de conformado. Exige activación simultánea de dos pulsadores en menos de 500 ms.
- SF_MutingSeq: neutralización secuencial de barrera de seguridad para paso de material. Requiere dos sensores de muting con secuencia temporal validada.
Estructura de un programa Safety en CODESYS
La estructura recomendada para un programa Safety siguiendo la filosofía PLCopen:
SafetyApplication
├── SafetyTask (1 ms, prioridad máxima, watchdog 2 ms)
│ └── SafetyPRG (programa principal Safety)
│ ├── Instancias de SF_EmergencyStop, SF_GuardMonitoring...
│ ├── Lógica de condiciones de habilitación
│ └── Gestión de salidas Safety (relés de seguridad)
├── SafetyGVL_Inputs ← Entradas Safety mapeadas desde I/O físicas
├── SafetyGVL_Outputs ← Salidas Safety hacia actuadores
└── SafetyGVL_Interface ← Variables compartidas con código estándar (solo lectura)
Ejemplo: SF_EmergencyStop básico
VAR
fbEmStop : SF_EmergencyStop;
xChannel1 : BOOL; (* Canal A del seta de emergencia *)
xChannel2 : BOOL; (* Canal B del seta de emergencia *)
xReset : BOOL; (* Pulsador de reset *)
xSafetyOK : BOOL; (* Salida: sistema en estado seguro *)
END_VAR
fbEmStop(
S_EStopIn1 := xChannel1,
S_EStopIn2 := xChannel2,
S_AutoReset := FALSE,
S_StartReset := xReset,
S_EStopOut => xSafetyOK,
Error => xFaultEmStop,
DiagCode => diagEmStop
);
Documentación para certificación SIL 2
El organismo certificador (TÜV, DEKRA, etc.) exigirá la siguiente documentación técnica:
- Especificación de requisitos de seguridad (SRS): lista de todas las funciones de seguridad, su nivel SIL/PL requerido y las condiciones de activación y respuesta.
- Análisis de riesgos: conforme a ISO 12100, identificando peligros, estimando el riesgo y determinando el nivel de reducción necesario.
- Arquitectura del sistema Safety: diagrama de bloques mostrando canales redundantes, diagnósticos y rutas de fallo.
- Cálculo de PFH (Probability of Failure per Hour): datos de MTTF, DC y CCF de los componentes del circuito Safety. Herramientas como SISTEMA (IFA) automatizan este cálculo.
- Plan de validación y pruebas: procedimientos de test funcional de cada función Safety. Debe incluir prueba de inyección de fallos (ej.: simular fallo de canal).
- Manual de operación y mantenimiento Safety: instrucciones para pruebas periódicas (Proof Test Interval), típicamente anuales.
Tip: CODESYS Safety genera automáticamente el Safety Application Hash — un código único que identifica exactamente la versión del código Safety descargada en el PLC. Este hash debe registrarse en la documentación de certificación y verificarse en cada cambio de software.
Conclusión
Implementar seguridad funcional con CODESYS Safety es perfectamente alcanzable para equipos con formación adecuada. Las claves son: usar siempre bloques PLCopen certificados en lugar de lógica de seguridad propia, mantener la estricta separación entre código Safety y estándar, y gestionar la documentación de certificación desde el inicio del proyecto, no al final.
En Hexadecimal tenemos experiencia en proyectos CODESYS Safety certificados SIL 2 para fabricantes de maquinaria en España y UK. Si tu proyecto requiere seguridad funcional, consúltanos en las fases tempranas de diseño para asegurar que la arquitectura es certificable desde el principio.
