· 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.

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.
| Prefijo | Tipo | Ejemplo |
|---|---|---|
x | BOOL | xMotorRunning |
i | INT | iPartCounter |
r | REAL (Float) | rActualPressure |
t | TIME | tDelayOpen |
[!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_CASEHe 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:
- PLCopen: Software Construction Guidelines
- CENELEC: IEC 61131-3 Standard Overview
- Bob Martin: Clean Code (Adaptado a sistemas de tiempo real).



