Asesoría Agenda una llamada de descubrimiento técnico hoy mismo »

· Industrial Programming  · 2 min de lectura

Guía de Clean Code para PLC: Programando para el Mañana

Escribir código que funcione es fácil; escribir código que sea mantenible en una planta a 50°C es el verdadero reto. CASE, State Machines y Naming Conventions.

Escribir código que funcione es fácil; escribir código que sea mantenible en una planta a 50°C es el verdadero reto. CASE, State Machines y Naming Conventions.

En la industria, el 80% del costo de un software no está en el desarrollo, sino en el mantenimiento. Si tu código solo lo entiendes tú cuando lo escribes, y tres meses después ni tú mismo sabes qué hace ese “Timer_1” o esa “Bit_432”, has fallado como programador industrial.

Programar un PLC (ya sea en TIA Portal, CODESYS o Studio 5000) requiere disciplina. Aquí te presento las mejores prácticas para escribir código profesional en Structured Text (ST).

1. Naming Conventions: El fin de “Aux_1”

No seas croto. Las variables deben ser auto-descriptivas. Seguir una convención de prefijos (estilo húngaro simplificado) ayuda a cualquiera a entender el tipo de dato sin mirar la declaración.

PrefijoTipoEjemplo
xBOOLxMotorRunning
iINTiPartCounter
rREAL (Float)rActualPressure
tTIMEtDelayOpen

[!TIP] Si una variable es un sensor físico, nómbrala según el plano eléctrico: xLS_Home_Position (LS = Limit Switch).

2. Máquinas de Estado (CASE): Orden en el Caos

Evita los “Spaghetti Rungs” de lógica de bits entrelazados. Para secuencias, usa siempre la instrucción CASE. Es legible, fácil de debuggear y garantiza que solo un estado esté activo a la vez.

CASE iState OF
    0: // IDLE
        IF xStart THEN iState := 10; END_IF
    10: // STARTING
        xValveOpen := TRUE;
        IF xSensorLimit THEN iState := 20; END_IF
    20: // RUNNING
        xMotorRun := TRUE;
    999: // FAULT
        xMotorRun := FALSE;
END_CASE

He creado un repositorio con plantillas profesionales de máquinas de estado:

👉 GitHub: plc-clean-code-templates

3. Modularidad: Menos Copiar y Pegar

Si tienes 4 motores idénticos, no copies la lógica 4 veces. Crea un Function Block (FB).

  • Encapsulamiento: Toda la lógica del motor vive en un lugar.
  • Instanciación: Si encuentras un bug, lo arreglas una sola vez en el FB y se actualiza en todos los motores.

4. Comentarios: Explica el “Por qué”, no el “Qué”

  • Mal: xMotor := TRUE; // El motor se enciende (Obvio).
  • Bien: xMotor := TRUE; // Encendido por secuencia de lubricación inicial (Útil).

Conclusión

El código “limpio” en un PLC salva vidas y dinero. Reduce drásticamente el tiempo de parada de máquina (Downtime) porque el técnico de turno puede entender el fallo en minutos.


Fuentes y Referencias:

Volver al blog

Related Posts

View All Posts »