Introducción
La arquitectura de los autómatas programables, conocidos como PLC (Controladores Lógicos Programables), es fundamental para comprender cómo se gestionan y controlan procesos industriales de manera automática y fiable. Un PLC está compuesto por diferentes elementos estructurales que trabajan en conjunto, permitiendo la adquisición, procesamiento y salida de información relevante para el control de máquinas y sistemas. Los elementos clave de cualquier PLC son la unidad central de proceso (CPU) y los módulos de entradas y salidas, además de otros módulos especiales y periféricos que amplían sus capacidades.
Unidad Central de Proceso (CPU)
La CPU es el “cerebro” del PLC. Se encarga de ejecutar el programa de usuario, gestionar la comunicación entre los diferentes módulos y coordinar todas las operaciones internas. Está compuesta por un microprocesador, memoria de trabajo (RAM) y memoria de almacenamiento (generalmente EEPROM o Flash, donde se guarda el programa de control). Además, la CPU realiza el ciclo de escaneo, que consiste en leer el estado de las entradas, ejecutar el programa lógico, actualizar las salidas y realizar tareas de diagnóstico y comunicación.
Ejemplo práctico: En una línea de ensamblaje industrial, la CPU puede recibir señales de sensores de presencia, procesarlas para determinar si una pieza está correctamente posicionada, y a continuación activar un actuador que la traslade a la siguiente estación.
Módulos de Entradas y Salidas (E/S)
Los módulos de entradas y salidas (E/S) constituyen la interfaz entre el PLC y el entorno físico. Estos módulos permiten la conexión de sensores, interruptores, pulsadores, actuadores, motores y otros dispositivos de campo.
Entradas y salidas digitales
Las señales digitales representan dos estados posibles, generalmente encendido/apagado (1/0 o verdadero/falso). Los módulos de entrada digital reciben señales de dispositivos como interruptores de límite, sensores de proximidad o pulsadores. Los módulos de salida digital controlan elementos como relés, contactores, lámparas o solenoides.
Ejemplo práctico: En un sistema de transporte de cajas, un sensor de proximidad digital puede detectar la llegada de una caja y, mediante una salida digital, accionar una cinta transportadora.
Entradas y salidas analógicas
Las señales analógicas representan un rango continuo de valores, como la temperatura, presión o nivel, y suelen estar comprendidas entre 0-10V, 4-20mA, etc. Los módulos de entrada analógica convierten estas señales físicas en valores binarios que la CPU puede procesar, mientras que los módulos de salida analógica generan señales proporcionales que pueden regular, por ejemplo, la velocidad de un motor o la apertura de una válvula.
Ejemplo práctico: Un ejemplo típico es el control de temperatura en un horno industrial, donde una entrada analógica registra la señal de un sensor de temperatura y, a través de una salida analógica, se regula la potencia de los elementos calefactores.
# ------------------------------------------------
# Simulación del ciclo de escaneo de un PLC
# ------------------------------------------------
# --- Definición de variables de entrada (simuladas) ---
# Inicialmente, suponemos que un sensor de presencia (entrada digital) está activo (1)
sensor_presencia = 1 # 1 = objeto detectado, 0 = no detectado
# Un sensor de temperatura (entrada analógica) nos da un valor de 350 grados
temperatura_actual = 350 # en grados Celsius (simulado)
# --- Definición de variables internas del programa ---
# Estas variables almacenan estados intermedios (como "marcas" internas en un PLC)
proceso_activo = False # Indica si el proceso principal está en marcha
contador_piezas = 0 # Contador de piezas procesadas
# --- Definición de variables de salida ---
# Inicialmente, todas las salidas están apagadas (0)
motor_cinta = 0 # Salida digital que activa la cinta transportadora
valvula_calentador = 0 # Salida analógica (0-100%) para el calentador
# --- CICLO PRINCIPAL DEL PROGRAMA (simula el escaneo continuo de un PLC) ---
# En un PLC real, este ciclo se ejecuta indefinidamente mientras el autómata está en RUN.
for ciclo in range(1, 6): # Simulamos 5 ciclos de escaneo
print(f"\n--- CICLO DE ESCANEO NÚMERO {ciclo} ---")
# ------------------------------------------------
# 1. LECTURA DE ENTRADAS (Input Scan)
# ------------------------------------------------
# En un PLC real, aquí se actualizan las imágenes de las entradas.
# En nuestra simulación, leemos las variables que representan los sensores.
print("🔍 Leyendo entradas.")
print(f" - Sensor de presencia: {sensor_presencia} (1=detectado)")
print(f" - Temperatura actual: {temperatura_actual} °C")
# ------------------------------------------------
# 2. EJECUCIÓN DEL PROGRAMA DE USUARIO (Program Scan)
# ------------------------------------------------
# Aquí implementamos la lógica de control, similar a un programa en ladder o texto estructurado.
print("⚙️ Ejecutando lógica de control.")
# Lógica para la cinta transportadora (basada en el sensor de presencia)
if sensor_presencia == 1:
motor_cinta = 1 # Activar cinta si hay una pieza
print(" - Se detecta pieza: ACTIVANDO motor de cinta.")
else:
motor_cinta = 0 # Detener cinta si no hay pieza
print(" - No se detecta pieza: DETENIENDO motor de cinta.")
# Lógica para el control de temperatura (simula un lazo PID simple)
TEMPERATURA_CONSIGNA = 300 # Temperatura deseada en grados
if temperatura_actual < TEMPERATURA_CONSIGNA:
# Si la temperatura es inferior a la consigna, aumentamos la salida analógica
valvula_calentador = 80 # Abrimos la válvula al 80%
print(f" - Temp. {temperatura_actual}°C < consigna {TEMPERATURA_CONSIGNA}°C. Aumentando calefacción al {valvula_calentador}%.")
elif temperatura_actual > TEMPERATURA_CONSIGNA + 20:
# Si la temperatura supera la consigna + 20, reducimos
valvula_calentador = 30
print(f" - Temp. {temperatura_actual}°C > consigna+20. Reduciendo calefacción al {valvula_calentador}%.")
else:
# En un rango cercano, mantenemos un valor medio
valvula_calentador = 50
print(f" - Temp. en rango. Manteniendo calefacción al {valvula_calentador}%.")
# Lógica de contador de piezas
if sensor_presencia == 1 and motor_cinta == 1:
# Simulamos que cada ciclo con sensor activo cuenta como una pieza procesada
contador_piezas += 1
print(f" - Pieza contabilizada. Total piezas: {contador_piezas}")
# ------------------------------------------------
# 3. ACTUALIZACIÓN DE SALIDAS (Output Scan)
# ------------------------------------------------
# En un PLC real, aquí se escriben los valores calculados en las salidas físicas.
print("🔧 Actualizando salidas.")
print(f" - Estado del motor de cinta: {'ACTIVADO' if motor_cinta else 'DETENIDO'}")
print(f" - Apertura de válvula calentador: {valvula_calentador}%")
# ------------------------------------------------
# 4. SIMULACIÓN DE CAMBIO EN LAS ENTRADAS (para ver evolución)
# ------------------------------------------------
# En un PLC real, las entradas cambian por el entorno. Aquí las modificamos para ver la evolución.
if ciclo == 2:
sensor_presencia = 0 # La pieza se retira
print(" (Simulación: sensor de presencia se desactiva)")
elif ciclo == 3:
sensor_presencia = 1 # Llega una nueva pieza
temperatura_actual = 280 # La temperatura ha bajado
print(" (Simulación: nueva pieza detectada, temperatura ha bajado)")
elif ciclo == 4:
temperatura_actual = 330 # La temperatura sube
print(" (Simulación: temperatura aumenta)")
elif ciclo == 5:
sensor_presencia = 0
print(" (Simulación: última pieza, sensor desactivado)")
# ------------------------------------------------
# 5. FIN DE LA SIMULACIÓN
# ------------------------------------------------
print("\n--- SIMULACIÓN FINALIZADA ---")
print(f"Resumen: Se procesaron un total de {contador_piezas} piezas.")
Este código simula los ciclos de escaneo de un PLC: lectura de entradas (sensor de presencia, temperatura), ejecución de la lógica de control (cinta, temperatura, contador) y actualización de salidas. Las variables cambian para mostrar la evolución del proceso. Se puede probar en Thonny y entender el flujo típico de un autómata.
Módulos especiales
Además de los módulos básicos de E/S, existen módulos especiales que proporcionan funcionalidades avanzadas:
- Módulos de comunicaciones: Permiten que el PLC se conecte con otros autómatas, ordenadores o sistemas de supervisión mediante protocolos industriales como Profibus, Ethernet/IP, Modbus, entre otros. Esto es esencial en plantas donde varios PLC deben intercambiar datos o reportar información a sistemas SCADA.
- Módulos de contadores y temporizadores rápidos: Gestionan señales de alta velocidad, como encoders en sistemas de posicionamiento, que requieren un procesamiento más rápido y preciso que el que ofrece el ciclo normal de escaneo.
- Módulos de pesaje, dosificación o control PID: Integran funciones específicas para aplicaciones concretas, facilitando la implementación de soluciones complejas sin necesidad de desarrollar lógica adicional en el programa principal.
Periféricos
Por último, los periféricos incluyen dispositivos externos necesarios para la programación, monitoreo y mantenimiento del PLC. Entre estos destacan las consolas de programación, paneles HMI (Interfaz Hombre-Máquina), impresoras, y módulos de memoria externa. Un operario puede, por ejemplo, ajustar parámetros de un proceso desde un panel táctil HMI conectado al PLC, o descargar un nuevo programa usando un PC portátil.
📋 Instrucciones de Uso:
- Copia el prompt completo del recuadro superior.
- Pega el prompt en una nueva conversación con tu IA favorita.
- Prueba el código generado en Thonny y ajústalo a tus necesidades.
💼 Caso Práctico Industrial
Contexto: En una línea de envasado, se utiliza un sensor analógico de presión (4-20 mA) para controlar el llenado de botellas. La CPU del PLC debe leer este valor y, si supera un umbral, cerrar una válvula mediante una salida digital.
Problema: ¿Qué módulos son necesarios en el PLC para esta aplicación?
Pregunta: Selecciona la opción correcta:
🍓 Caso Práctico Raspberry Pi
Contexto: Quieres simular una entrada analógica (0-3.3V) en una Raspberry Pi para probar un programa similar al de un PLC. Dispones de un potenciómetro y resistencias.
Problema: La Raspberry Pi no tiene entradas analógicas nativas. ¿Qué necesitas añadir?
Pregunta: Elige la opción más adecuada:
🐍 Caso Práctico Python
Contexto: En el código de simulación de PLC, la variable `motor_cinta` se activa cuando `sensor_presencia == 1`. Al final del ciclo, se imprime el estado del motor.
Problema: En el ciclo 3, ¿por qué se activa el motor?
Pregunta: Selecciona la opción correcta:
📚 Recursos Técnicos y Normativos 2026
Normativas y Estándares
- IEC 61131-2 - Requisitos de hardware para autómatas programables.
- PLCopen - Organización para la estandarización en automatización.