Programación PLC para Polipasto Eléctrico con S7-1200 (Ladder y SCL)

Programación del control por PLC para polipasto eléctrico (práctica con S7-1200) Este artículo utiliza el Siemens S7-1200 (CPU 1212C DC/DC/DC) como controlador central, con el entorno de desarrollo TIA Portal V17 y programación mixta en LAD (diagrama de escalera) + SCL (texto estructurado), para implementar el control lógico de elevación/descenso/desplazamiento lateral del polipasto eléctrico, protección contra sobrecarga, protección de final de carrera, enclavamiento de parada de emergencia, conmutación mando a distancia/pulsador, autodiagnóstico de fallos y otras funciones. El programa completo incluye 4 bloques FC, 1 bloque DB y 1 ciclo principal OB1, y puede importarse directamente a proyectos reales.

El control de los polipastos eléctricos tradicionales ha estado dominado durante mucho tiempo por el esquema «controlador de levas + relé + contactor». El esquema eléctrico se compone de decenas de relés intermedios y relés temporizadores, lo que dificulta la localización de averías e impide la integración en los sistemas de información de fábrica. Con el avance de la Industria 4.0, cada vez más plantas exigen la conexión de los equipos de elevación a sistemas MES/SCADA para disponer de monitoreo del estado de los equipos, recopilación de datos operativos y alerta temprana de fallos. Sustituir la lógica de relés por un PLC es una tendencia inevitable. Este artículo se basa en la experiencia real de un proyecto entregado por Kelude Industrias Pesadas en una fábrica de piezas de automoción (control centralizado de 68 polipastos eléctricos) y presenta de forma completa el proceso de programación del control por PLC del polipasto eléctrico, incluyendo la tabla de asignación de E/S, la lógica en diagrama de escalera, el código de tratamiento de fallos en SCL, la planificación de la pantalla de monitoreo HMI y el flujo completo de descarga y puesta en marcha del programa.

Arquitectura del programa de control por PLC S7-1200 para polipasto eléctrico

Configuración de hardware y asignación de E/S

1.1 Selección de componentes

EquipoModeloCantidadObservaciones
PLC CPUS7-1200 1212C DC/DC/DC16ES7 212-1AE40-0XB0,8DI/6DO
Señal digital Módulo de ExpansiónSM 1223 DI 8×24VDC / DO 8×24VDC16ES7 223-1BH32-0XB0
Señal analógica Módulo de ExpansiónSM 1231 AI 4×13bit16ES7 231-4HD32-0XB0,4~20mA
HMI Pantalla TáctilKTP400 Basic PN16AV6 647-0AD11-3AX0,4.3Pulgadas
Relé IntermedioRIM 24VDC 2CO6PLC DOContactor Aislamiento de bobina
Fuente de Alimentación ConmutadaEDR-120-241AC220VDC24V 5A

1.2 Tabla de asignación de E/S

DirecciónSímboloFunciónTipoDescripción
%I0.0SB1_UPBotón de elevaciónDIElevación por mando, Contacto normalmente abierto (NA)
%I0.1SB2_DNBotón de descensoDIMando Descenso, Contacto normalmente abierto (NA)
%I0.2SB3_LTBotón de desplazamiento a la izquierdaDIDesplazamiento a la izquierda por mando, Contacto normalmente abierto (NA)
%I0.3SB4_RTBotón de desplazamiento a la derechaDIDesplazamiento a la derecha por mando, Contacto normalmente abierto (NA)
%I0.4SQ1_ULFinal de carrera superiorDIInterruptor de Posición, Contacto normalmente cerrado (NC)
%I0.5SQ2_DLFinal de carrera inferiorDIInterruptor de Posición, Contacto normalmente cerrado (NC)
%I0.6SB0_ESTBotón de Parada de EmergenciaDIContacto NC,0=Disparo
%I0.7FR_OLRelé TérmicoDIRelé Térmico, Contacto normalmente cerrado (NC)
%I1.0OL1_OVLDSeñal de sobrecargaDILimitador de Sobrecarga Salida, Contacto normalmente abierto (NA)
%I1.1RC_SELMando a distancia/Conmutación de mandoDI0=Mando 1=Mando a distancia
Entrada analógica: sensor de sobrecarga(4~20mA0~20t)
DirecciónSímboloFunciónTipoDescripción
%Q0.0KM1_UPElevación por mando ContactorDOControl del circuito principal de elevación Contactor
%Q0.1KM2_DNContactor de descensoDOControl del circuito principal de descensocipal de elevación Contactor
%Q0.2KM3_LTContactor de desplazamiento a la izquierdaontactorDOControl del circuito principal de desplazamiento a la izquierda Contactor
%Q0.3KM4_RTContactor de desplazamiento a la derechatactorDOControl del circuito principal de desplazamiento a la derecha Contactor
%Q0.4KA1_ALMAlarma de falloDOAccionamiento Alarma Acústica y Visual
%Q0.5KA2_RUNIndicador de funcionamientoDOVerdeluz indicadora de funcionamiento

2. Programación en diagrama LAD

2.1 Arquitectura del programa principal OB1

El OB1 es el bloque de organización del ciclo principal, con un tiempo de escaneo predeterminado de 10 ms. En orden de ejecución, se invocan los siguientes bloques FC:

Orden de llamadaFCBloqueFunciónLenguaje de programación
1FC100_Safetyenclavamiento de seguridad(Parada de emergencia/Final de carrera superior/Relé térmico/Sobrecarga)LAD
2FC200_Hoist CtrlLógica de control de elevación(Elevación por mando/Descenso/Enclavamiento)LAD
3FC300_Travel CtrlLógica de control de funcionamiento(Desplazamiento a la izquierda por mando/Desplazamiento a la derecha por mando/Enclavamiento)LAD
4FC400_Fault DiagDiagnóstico de Fallas Y alarma(SCL)SCL

2.2 Enclavamiento de seguridad FC100 (Diagrama LAD)

 // FC100: Lógica de enclavamiento de seguridad // Todas las condiciones de seguridad en serie——Si alguna condición no se cumple, se prohíbe el funcionamiento "SB0_EST" "SQ1_UL" "SQ2_DL" "FR_OL" "SafetyOK" ----|/|-------------|/|-------------|/|-------------|/|------------------------( ) // Enclavamiento por sobrecarga:Solo se permite el descenso en caso de sobrecarga "OL1_OVLD" "SB2_DN" ----| |------------| |-----------------------------------------------------------( "Overload_DN_Only" ) // Reinicio de señal de sobrecarga(Confirmación manual) "Overload_DN_Only" "SB1_UP" "Overload_Latch" ----| |-------------------| |----------------------------------------------------( ) 

2.3 Control de elevación FC200 (Diagrama LAD)

 // FC200: Lógica de control de elevación // Elevación:SafetyOK + Final de carrera superior no activado + Sin sobrecarga + Descenso no en funcionamiento + Botón de elevación // Descenso:SafetyOK + Final de carrera inferior no activado + Elevación no en funcionamiento + Botón de descenso(En caso de sobrecarga, solo se permite el descenso) "SafetyOK" "SQ1_UL" "Overload_Latch" "KM2_DN" "SB1_UP" "KM1_UP" ----| |-------------| |-------------|/|----------------|/|-----------| |----------( ) | | "KM1_UP" | ----| |----------------------------------------------------------------------------+ "SafetyOK" "SQ2_DL" "KM1_UP" "SB2_DN" "KM2_DN" ----| |-------------| |-------------------------------|/|-----------| |----------( ) | | "KM2_DN" | ----| |----------------------------------------------------------------------------+ // enclavamiento eléctrico:KM1yKM2Nunca deben activarse simultáneamente "KM1_UP" "KM2_DN" "Interlock_OK" ----| |-----------| |--------------( ) // Para detección de fallas,No debe conducir en condiciones normales 

2.4 Protección por temporización — prevención de arranques frecuentes

 // Protección contra arranques frecuentes:Retardo después de cada parada500msSolo entonces se permite un nuevo arranque // Evitar la activación frecuente del contactor en intervalos muy cortos(Vibración de contactos/Arco eléctrico) "KM1_UP" ----|/|----------------------------------------------------------------------------- "KM2_DN" TON_Start_Delay ----|/|----------------[TON: #Temp_StartDelay ] PT= T#500MS Q= "Start_Allowed" // Incorporación al circuito de control principal "Start_Allowed" "SB1_UP" "KM1_UP" // Elevación ----| |----------------| |-----------( ) 

3. Código de diagnóstico de fallas en SCL

3.1 FC400_FaultDiag (Texto estructurado SCL)

 // FC400: Diagnóstico de fallas y alarmas // Lenguaje:SCL(Texto estructurado) // Función:Monitoreo en tiempo real del estado del equipo,Detección13tipos de fallas tipo,Salida de código de falla aHMI FUNCTION FC400_FaultDiag : Void VAR_INPUT I_SafetyOK : Bool; // Estado de enclavamiento de seguridad I_KM1_UP : Bool; // Retroalimentación del contactor de elevación I_KM2_DN : Bool; // Retroalimentación del contactor de descenso I_Overload_Latch : Bool; // Bloqueo por sobrecarga I_OL1_OVLD : Bool; // Señal del sensor de sobrecarga I_RunHours : Real; // Tiempo de funcionamiento acumulado(horas) END_VAR VAR_OUTPUT Q_FaultCode : Int; // Salida de código de falla aHMI Q_FaultMsg : String[40]; // Descripción de falla Q_Alarm_Output : Bool; // Activación de alarma acústica y visual Q_TotalRunHours : Real; // Tiempo total de funcionamiento END_VAR VAR vFaultCount : Int; // Contador de fallas vPrev_KM1 : Bool; // Detección de flanco del contactor de elevación vPrev_KM2 : Bool; // Detección de flanco del contactor de descenso vOverloadTimer : Time; // Duración de la sobrecarga END_VAR // === Lista de detección de fallas === Q_FaultCode := 0; // Sin fallas por defecto Q_Alarm_Output := FALSE; vFaultCount := 0; // Sin fallas por defecto1:Parada de emergencia activada IF I_SafetyOK = FALSE AND "SB0_EST" = FALSE THEN Q_FaultCode := 1; Q_FaultMsg := 'Botón de parada de emergencia presionado'; vFaultCount := vFaultCount + 1; END_IF; // Sin fallas por defecto2:Final de carrera superior activado IF "SQ1_UL" = FALSE THEN Q_FaultCode := 2; Q_FaultMsg := 'Final de carrera superior activado(Distancia insuficiente del gancho al tambor)'; vFaultCount := vFaultCount + 1; END_IF; // Sin fallas por defecto3:Final de carrera inferior activado IF "SQ2_DL" = FALSE THEN Q_FaultCode := 3; Q_FaultMsg := 'Final de carrera inferior activado(Cable del tambor insuficiente3vueltas)'; vFaultCount := vFaultCount + 1; END_IF; // Sin fallas por defecto4:Sobrecarga del relé térmico IF "FR_OL" = FALSE THEN Q_FaultCode := 4; Q_FaultMsg := 'Protección contra sobrecarga del motor(Disparo del relé térmico)'; vFaultCount := vFaultCount + 1; END_IF; // Sin fallas por defecto5:sobrecarga IF I_Overload_Latch THEN Q_FaultCode := 5; Q_FaultMsg := 'Disparo del limitador de sobrecarga(Carga>110%)'; vFaultCount := vFaultCount + 1; END_IF; // Sin fallas por defecto6:KM1/KM2Activación simultánea(Contactores pegados) IF I_KM1_UP AND I_KM2_DN THEN Q_FaultCode := 6; Q_FaultMsg := 'Falla grave:Activación simultánea de contactores de alta y baja velocidad'; vFaultCount := vFaultCount + 1; END_IF; // Sin fallas por defecto7:Retroalimentación anormal del contactor(Discrepancia entre comando de salida y retroalimentación) IF ("KM1_UP" = TRUE AND I_KM1_UP = FALSE) OR ("KM2_DN" = TRUE AND I_KM2_DN = FALSE) THEN Q_FaultCode := 7; Q_FaultMsg := 'Respuesta anormal del contactor(Posible atasco/Bobina quemada)'; vFaultCount := vFaultCount + 1; END_IF; // Si hay cualquier falla,Activación de salida de alarma IF vFaultCount > 0 THEN Q_Alarm_Output := TRUE; END_IF; // === Acumulado durante el funcionamiento === Q_TotalRunHours := I_RunHours + (TIME_TO_REAL(TIME_NOW() - "Start_Time")) / 3600000.0; END_FUNCTION 

4. Pantallas de monitoreo HMI y configuración de comunicación

4.1 Tabla de variables HMI y planificación de pantallas

HMIPantallaContenido mostradoVinculación DBVariable
Pantalla principalEstado del equipo/Actual Carga/Tiempo de funcionamientoDB1.Status / DB1.Load / DB1.Run Hours
Pantalla de controlElevación por mando/Descenso/Desplazamiento a la izquierda por mando/Botón virtual de desplazamiento a la derechaUso en conmutación manual/automático
Pantalla de fallosCódigo de falla/Descripción/Hora de ocurrencia/Botón de resetDB1.Fault Code / DB1.Fault Msg
Parámetro PantallaValor de ajuste de sobrecarga/Puesta a cero del tiempo de funcionamiento/Cambio de contraseñaDB1.Overload_Set / DB1.Password

4.2 Configuración de comunicación PROFINET (configuración en TIA Portal)

 // Parámetros de red de configuración del dispositivo // 1. S7-1200 CPU 1212C // IP: 192.168.0.10 // Máscara de subred: 255.255.255.0 // PROFINETNombre del dispositivo: plc-hoist-01 // 2. KTP400 Basic HMI // IP: 192.168.0.20 // Máscara de subred: 255.255.255.0 // Nombre del dispositivo: hmi-hoist-01 // 3. HMIConfiguración de conexión(enHMIConfigurado en la configuración) // Tipo de conexión tipo: PROFINET (S7-1200) // HMIDispositivo: HMI_1 [192.168.0.20] // Controlador: plc-hoist-01 [192.168.0.10] // Punto de acceso: S7ONLINE // Subred: PN/IE_1 // 4. HMIEjemplo de conexión de variables(PLC tag HMI tag) // "DB1".FaultCode "FaultCode" (Int, Período de adquisición500ms) // "DB1".Load_Current "CurrentLoad"(Real, Período de adquisición200ms) // "DB1".Status_Running "IsRunning" (Bool, Período de adquisición100ms) 

5. Descarga del programa y puesta en marcha

5.1 Procedimiento de descarga

 // Proceso de descarga(TIA Portal V17) // 1. Compilar todo el proyecto(Project Build Rebuild All) // Asegurar"0 errors, 0 warnings" // 2. Seleccionar el dispositivo de destino(Select target device) // Acceso en línea DetectadoPLC AsignaciónIP 192.168.0.10 // 3. Descargar configuración de hardware(Download HW config) // Se reiniciará automáticamentePLC(aproximadamente15segundos) // 4. Descargar programa de software(Download SW) // Seleccionar"Download all blocks" Sobrescribir programa existente // 5. Monitoreo en línea(Go online) // Hacer clic en"gafas"Icono para ingresar al modo de monitoreo en línea // Observar si las vías verdes del diagrama de escalera conducen según lo esperado // 6. Forzar variables(Force table)—— Para puesta en marcha // Se puede forzar el cambio sin operar físicamente los botonesDIMonitoreo en tiempo real del estado del equipo // Por ejemplo, forzar%I0.0=1Simular la presión del botón de elevación // Atención:Después de la puesta en marcha, asegúrese de eliminar todos los valores forzados 

5.2 Lista de verificación para la puesta en marcha

Con la parada de emergencia pulsada, todas las salidas KM son 0 y la salida de alarma Q0.4 es 1
Con la parada de emergencia reseteada y el límite superior no activado, al pulsar SB1, KM1 se activa y el motor sube
Al soltar SB1, KM1 se desactiva y el motor se detiene
Durante la subida, al activar el límite superior SQ1, KM1 se desconecta inmediatamente
Con KM1 activado, al pulsar SB2, KM2 no debe activarse (verificar enclavamiento)
Con señal de sobrecarga activa, la subida queda bloqueada; solo se permite el descenso
Si el intervalo entre arranques y paradas es inferior a 500 ms, la segunda orden no responde (protección de retardo activa)
La pantalla de fallas del HMI muestra el código de falla y la descripción correctos
La comunicación PROFINET no se interrumpe (sin ventanas emergentes de alarma en el HMI)


Preguntas frecuentes

P: ¿Cuánto aumenta el coste al sustituir el control por relés por un control por PLC?

R: En un polipasto eléctrico individual, el coste del hardware aumenta aproximadamente entre 190 € y 320 € al pasar de control por relés a control por PLC (CPU S7-1200 ≈ 100 € + módulo de expansión ≈ 75 € + HMI ≈ 150 € + materiales auxiliares ≈ 40 €). Sin embargo, en instalaciones con múltiples unidades, el coste se reparte y se reduce notablemente: en el caso de 68 unidades, el incremento por polipasto fue de solo unos 45 €. Además, la solución con PLC reduce en un 40 % el tiempo de diagnóstico de fallas, permite el monitoreo remoto y el mantenimiento preventivo, y los costes de operación y las pérdidas por paradas a largo plazo son muy inferiores a los del esquema con relés.

P: Si no domino SCL, ¿puedo programar el polipasto eléctrico solo con diagrama de contactos (LAD)?

R: Por supuesto. Las FC100/FC200/FC300 de este artículo están programadas en LAD; solo la FC400 de diagnóstico de fallas utiliza SCL. El diagnóstico de fallas también puede implementarse en LAD con palabras de estado e instrucciones de comparación, pero SCL resulta más conciso para el procesamiento de cadenas y operaciones matemáticas. Para aplicaciones puramente de ingeniería, el estilo tipo esquema eléctrico de LAD es más fácil de entender para los electricistas; se recomienda usar LAD para la lógica principal y SCL para funciones auxiliares.

P: ¿Cómo elegir entre un control por PLC y un variador de frecuencia?

R: La solución con PLC se utiliza para el control lógico (conmutación on/off), mientras que el variador de frecuencia se emplea para la regulación de velocidad. No son opciones excluyentes. La combinación más consolidada para polipastos eléctricos es "PLC + variador de frecuencia": el PLC gestiona la lógica (parada de emergencia, finales de carrera, enclavamientos, alarmas) y el variador controla el motor (arranque suave, regulación de velocidad, frenado). Para polipastos de más de 5 t se recomienda incorporar un variador para lograr un posicionamiento lento y preciso; para polipastos de menos de 5 t con una función única, la solución PLC + contactores es totalmente suficiente.

P: ¿Qué opción es mejor, S7-1200 o S7-200 SMART?

R: El S7-200 SMART tiene un coste menor (CPU ≈ 60 €) y es adecuado para el control de máquinas individuales con menos de 10 unidades. El S7-1200 admite PROFINET en tiempo real, ideal para redes con múltiples equipos y para la integración con sistemas MES/SCADA. Recomendación: para una sola unidad o series pequeñas, S7-200 SMART (económico); para supervisión centralizada de varias unidades, S7-1200 (conectividad); si se necesita comunicación PROFINET con el variador, es imprescindible el S7-1200. La lógica de programación es idéntica en ambas plataformas, por lo que la migración del programa resulta sencilla.

Artículos relacionados

contact

contact us

phone:
+86 13903802779

mail:3915269@qq.com

Working hours: Monday to Friday

Wechat
Wechat
SHARE
TOP