Detecta las salidas que se escriben en más de una ubicación
Justificación: La mantenibilidad se degrada cuando una salida se escribe en distintas ubicaciones del código. Entonces no se sabe con certeza qué acceso de escritura es el que realmente tiene efecto en el proceso. Una buena práctica consiste en calcular las variables de salida en variables auxiliares y asignar el valor calculado en un lugar al final del ciclo.
Importancia: Alta
Regla PLCopen: CP12
No se emite un error cuando una variable de salida (VAR_IN_OUT) se escribe en diferentes ramas de las sentencias IF y CASE.
Un pragma no puede desactivar esta regla.
Ejemplo
VAR_GLOBAL g_xVar AT %QX0.0 : BOOL ; g_iTest AT %QW0 : INT ; END_VAR PROGRAM PLC_PRG IF g_iCondition < INT#0 THEN g_xVar := TRUE; g_iTest := INT#12; END_IF CASE g_iCondition OF INT#1: g_xVar := FALSE; INT#2: g_iTest := INT#11; ELSE g_xVar := TRUE; g_iTest := INT#9; END_CASE --> SA0004: Multiple write access on output '%QX0.0' --> SA0004: Multiple write access on output '%QW0'