Programmation PLC pour Palans Électriques (S7-1200 en Ladder & SCL)

Programmation PLC pour palan électrique (cas pratique S7-1200) Cet article présente la mise en œuvre d'un système de commande par PLC pour palans électriques, basé sur le contrôleur Siemens S7-1200 (CPU 1212C DC/DC/DC) et l'environnement de développement TIA Portal V17. La programmation hybride LAD (logique à contacts) + SCL (texte structuré) assure les fonctions de montée/descente, déplacement gauche/droite, protection contre les surcharges, limitation de course, verrouillage d'arrêt d'urgence, commutation télécommande/pupitre et autodiagnostic des défauts. Le programme complet comprend 4 blocs FC, 1 bloc DB et 1 cycle principal OB1, directement importable dans un projet réel.

La commande traditionnelle des palans électriques repose depuis longtemps sur l'association « contrôleur à cames + relais + contacteur ». Le schéma électrique, composé de dizaines de relais intermédiaires et de relais temporisés, rend le diagnostic des pannes fastidieux et empêche toute intégration au système d'information de l'usine. Avec l'avènement de l'Industrie 4.0, les exploitants exigent de plus en plus souvent le raccordement des équipements de levage aux systèmes MES/SCADA pour la surveillance des états, la collecte des données de fonctionnement et l'alerte précoce des anomalies. Le remplacement de la logique à relais par un PLC s'impose donc comme une évolution incontournable. Cet article s'appuie sur l'expérience réelle d'un projet livré par Kelude pour une usine de pièces automobiles (commande centralisée de 68 palans électriques) et détaille l'intégralité du processus de programmation : table d'affectation des entrées/sorties, logique en schéma à contacts, code de gestion des défauts en SCL, conception des écrans IHM et procédure de téléchargement et de mise en service.

Architecture du programme PLC S7-1200 pour palan électrique

Configuration matérielle et affectation des E/S

1.1 Choix du matériel

ÉquipementModèleQuantitéRemarque
PLC CPUS7-1200 1212C DC/DC/DC16ES7 212-1AE40-0XB0,8DI/6DO
Signal numérique Module dSM 1223 DI 8×24VDC / DO 8×24VDC16ES7 223-1BH32-0XB0
Signal analogique Module dSM 1231 AI 4×13bit16ES7 231-4HD32-0XB0,4~20mA
IHM Écran TactileKTP400 Basic PN16AV6 647-0AD11-3AX0,4.3pouce
Relais IntermédiaireRIM 24VDC 2CO6PLC DOContacteur Isolation de bobine
Alimentation à DécoupageEDR-120-241AC220VDC24V 5A

1.2 Tableau d'affectation des E/S

AdresseSymboleFonctionTypeDescription
%I0.0SB1_UPBouton montéeDIMontée par manette, Contact normalement ouvert (NO)
%I0.1SB2_DNBouton descenteDIManette Descente, Contact normalement ouvert (NO)
%I0.2SB3_LTBouton translation gaucheDIBouton translation gauche, Contact normalement ouvert (NO)
%I0.3SB4_RTBouton translation droiteDITranslation droite par manette, Contact normalement ouvert (NO)
%I0.4SQ1_ULFin de course hauteDIInterrupteur de Position, Contact normalement fermé (NF)
%I0.5SQ2_DLFin de course basseDIInterrupteur de Position, Contact normalement fermé (NF)
%I0.6SB0_ESTBouton dDIContact NF,0=Déclenchement
%I0.7FR_OLRelais ThermiqueDIRelais Thermique, Contact normalement fermé (NF)
%I1.0OL1_OVLDSignal de surchargeDILimiteur de Surcharge Sortie, Contact normalement ouvert (NO)
%I1.1RC_SELTélécommande/Commutation manetteDI0=Manette 1=Télécommande
Entrée analogique: capteur de surcharge(4~20mA0~20t)
AdresseSymboleFonctionTypeDescription
%Q0.0KM1_UPContacteur de montéeDOCommande circuit principal de montée Contacteur
%Q0.1KM2_DNContacteur de descenteDOCommande Descente Commande circuit principal de montée Contacteur
%Q0.2KM3_LTContacteur de translation gaucheDOCommande circuit principal translation gauche Contacteur
%Q0.3KM4_RTContacteur de translation droiteDOCommande circuit principal translation droite Contacteur
%Q0.4KA1_ALMAlarme défautDOPilotage Avertisseur Sonore & Lumineux
%Q0.5KA2_RUNvoyant de fonctionnementDOVertvoyant de fonctionnement

2. Programmation en langage LAD

2.1 Architecture du bloc principal OB1

L'OB1 est le bloc d'organisation du cycle principal, avec un temps de scrutation par défaut de 10 ms. Les blocs FC suivants sont appelés dans l'ordre d'exécution :

Ordre dFCBlocFonctionLangage de programmation
1FC100_Safetyverrouillage de sécurité(Arrêt d/Fin de course haute/Relais thermique/Surcharge)LAD
2FC200_Hoist CtrlLogique de commande de levage(Montée par manette/Descente/Interverrouillage)LAD
3FC300_Travel CtrlLogique de commande de fonctionnement(Translation gauche par manette/Translation droite par manette/Interverrouillage)LAD
4FC400_Fault DiagDiagnostic de Panne Et alarme(SCL)SCL

2.2 Verrouillage de sécurité FC100 (schéma LAD)

 // FC100: Logique de verrouillage de sécurité // Toutes les conditions de sécurité en série——Interdiction de fonctionnement si une condition n "SB0_EST" "SQ1_UL" "SQ2_DL" "FR_OL" "SafetyOK" ----|/|-------------|/|-------------|/|-------------|/|------------------------( ) // Interverrouillage de surcharge:Descente autorisée uniquement en cas de surcharge "OL1_OVLD" "SB2_DN" ----| |------------| |-----------------------------------------------------------( "Overload_DN_Only" ) // Réinitialisation du signal de surcharge(Confirmation manuelle) "Overload_DN_Only" "SB1_UP" "Overload_Latch" ----| |-------------------| |----------------------------------------------------( ) 

2.3 Commande de levage FC200 (schéma LAD)

 // FC200: Logique de commande de levage // Montée:SafetyOK + Fin de course supérieur non déclenché + Non-surcharge + Descente non active + Bouton de montée // Descente:SafetyOK + Fin de course inférieur non déclenché + Montée non active + Bouton de descente(Descente autorisée uniquement en cas de surcharge) "SafetyOK" "SQ1_UL" "Overload_Latch" "KM2_DN" "SB1_UP" "KM1_UP" ----| |-------------| |-------------|/|----------------|/|-----------| |----------( ) | | "KM1_UP" | ----| |----------------------------------------------------------------------------+ "SafetyOK" "SQ2_DL" "KM1_UP" "SB2_DN" "KM2_DN" ----| |-------------| |-------------------------------|/|-----------| |----------( ) | | "KM2_DN" | ----| |----------------------------------------------------------------------------+ // interverrouillage électrique:KM1etKM2Interdiction absolue de sortie simultanée "KM1_UP" "KM2_DN" "Interlock_OK" ----| |-----------| |--------------( ) // Pour la détection de défauts,Non conducteur en fonctionnement normal 

2.4 Protection anti-démarrages répétés

 // Protection contre les démarrages fréquents:Temporisation après chaque arrêt500msRedémarrage autorisé uniquement après temporisation // Prévention des collages fréquents du contacteur sur de très courtes durées(Rebondissement des contacts/Arc électrique) "KM1_UP" ----|/|----------------------------------------------------------------------------- "KM2_DN" TON_Start_Delay ----|/|----------------[TON: #Temp_StartDelay ] PT= T#500MS Q= "Start_Allowed" // Intégration au circuit de commande principal "Start_Allowed" "SB1_UP" "KM1_UP" // Montée ----| |----------------| |-----------( ) 

3. Diagnostic de pannes en SCL

3.1 FC400_FaultDiag (texte structuré SCL)

 // FC400: Diagnostic de panne et alarme // Langage:SCL(Texte structuré) // Fonction:Surveillance en temps réel de l,Détection13Types de défauts type,Sortie du code de défaut versHMI FUNCTION FC400_FaultDiag : Void VAR_INPUT I_SafetyOK : Bool; // État du verrouillage de sécurité I_KM1_UP : Bool; // Retour contacteur de montée I_KM2_DN : Bool; // Retour contacteur de descente I_Overload_Latch : Bool; // Verrouillage de surcharge I_OL1_OVLD : Bool; // Signal du capteur de surcharge I_RunHours : Real; // Temps de fonctionnement cumulé(heures) END_VAR VAR_OUTPUT Q_FaultCode : Int; // Sortie du code de défaut versHMI Q_FaultMsg : String[40]; // Description du défaut Q_Alarm_Output : Bool; // Pilotage de l Q_TotalRunHours : Real; // Temps de fonctionnement total END_VAR VAR vFaultCount : Int; // Compteur de défauts vPrev_KM1 : Bool; // Détection de front du contacteur de montée vPrev_KM2 : Bool; // Détection de front du contacteur de descente vOverloadTimer : Time; // Durée de surcharge END_VAR // === Liste de détection de défauts === Q_FaultCode := 0; // Aucun défaut par défaut Q_Alarm_Output := FALSE; vFaultCount := 0; // Aucun défaut par défaut1:Arrêt d IF I_SafetyOK = FALSE AND "SB0_EST" = FALSE THEN Q_FaultCode := 1; Q_FaultMsg := 'Bouton d'; vFaultCount := vFaultCount + 1; END_IF; // Aucun défaut par défaut2:Fin de course supérieur déclenché IF "SQ1_UL" = FALSE THEN Q_FaultCode := 2; Q_FaultMsg := 'Fin de course supérieur déclenché(Distance insuffisante entre le crochet et le tambour)'; vFaultCount := vFaultCount + 1; END_IF; // Aucun défaut par défaut3:Fin de course inférieur déclenché IF "SQ2_DL" = FALSE THEN Q_FaultCode := 3; Q_FaultMsg := 'Fin de course inférieur déclenché(Câble de tambour insuffisant3spires)'; vFaultCount := vFaultCount + 1; END_IF; // Aucun défaut par défaut4:Surcharge du relais thermique IF "FR_OL" = FALSE THEN Q_FaultCode := 4; Q_FaultMsg := 'Protection de surcharge du moteur(Déclenchement du relais thermique)'; vFaultCount := vFaultCount + 1; END_IF; // Aucun défaut par défaut5:surcharge IF I_Overload_Latch THEN Q_FaultCode := 5; Q_FaultMsg := 'Déclenchement du limiteur de surcharge(Charge>110%)'; vFaultCount := vFaultCount + 1; END_IF; // Aucun défaut par défaut6:KM1/KM2Collage simultané(Collage du contacteur) IF I_KM1_UP AND I_KM2_DN THEN Q_FaultCode := 6; Q_FaultMsg := 'Défaut grave:Collage simultané des contacteurs haute et basse vitesse'; vFaultCount := vFaultCount + 1; END_IF; // Aucun défaut par défaut7:Anomalie de retour contacteur(Incohérence entre la commande de sortie et le retour) IF ("KM1_UP" = TRUE AND I_KM1_UP = FALSE) OR ("KM2_DN" = TRUE AND I_KM2_DN = FALSE) THEN Q_FaultCode := 7; Q_FaultMsg := 'Réponse anormale du contacteur(Risque de blocage/Bobine grillée)'; vFaultCount := vFaultCount + 1; END_IF; // En cas de défaut,Pilotage de la sortie d IF vFaultCount > 0 THEN Q_Alarm_Output := TRUE; END_IF; // === Cumul en fonctionnement === Q_TotalRunHours := I_RunHours + (TIME_TO_REAL(TIME_NOW() - "Start_Time")) / 3600000.0; END_FUNCTION 

4. Écrans de surveillance IHM et configuration de communication

4.1 Tableau des variables IHM et conception des écrans

IHMÉcranContenu affichéLiaison DBVariable
Écran principalÉtat de l/Actuel Charge/Temps de fonctionnementDB1.Status / DB1.Load / DB1.Run Hours
Écran de commandeMontée par manette/Descente/Translation gauche par manette/Bouton virtuel translation droiteUtilisé pour la commutation manuel/automatique
Écran de défautCode de défaut/Description/Heure d/Bouton de réinitialisationDB1.Fault Code / DB1.Fault Msg
ParamètreÉcranValeur de consigne de surcharge/Remise à zéro du temps de fonctionnement/Modification du mot de passeDB1.Overload_Set / DB1.Password

4.2 Configuration de la communication PROFINET (configuration TIA Portal)

 // Paramètres réseau de configuration de l // 1. S7-1200 CPU 1212C // IP: 192.168.0.10 // Masque de sous-réseau: 255.255.255.0 // PROFINETNom de l: plc-hoist-01 // 2. KTP400 Basic HMI // IP: 192.168.0.20 // Masque de sous-réseau: 255.255.255.0 // Nom de l: hmi-hoist-01 // 3. HMIConfiguration de connexion(dansHMIréglé dans la configuration) // Type de connexion type: PROFINET (S7-1200) // HMIÉquipement: HMI_1 [192.168.0.20] // Contrôleur: plc-hoist-01 [192.168.0.10] // Point d: S7ONLINE // Sous-réseau: PN/IE_1 // 4. HMIExemple de connexion de variables(PLC tag HMI tag) // "DB1".FaultCode "FaultCode" (Int, Période d500ms) // "DB1".Load_Current "CurrentLoad"(Real, Période d200ms) // "DB1".Status_Running "IsRunning" (Bool, Période d100ms) 

Téléchargement du programme et mise en service

5.1 Procédure de téléchargement

 // Procédure de téléchargement(TIA Portal V17) // 1. Compilation du projet complet(Project Build Rebuild All) // S"0 errors, 0 warnings" // 2. Sélectionner l(Select target device) // Accès en ligne DétectéPLC AffectationIP 192.168.0.10 // 3. Téléchargement de la configuration matérielle(Download HW config) // Redémarrera automatiquementPLC(environ15secondes) // 4. Téléchargement du programme logiciel(Download SW) // Sélectionner"Download all blocks" Écraser le programme existant // 5. Surveillance en ligne(Go online) // Cliquer sur"lunettes"icône pour entrer en mode surveillance en ligne // Vérifier si les chemins verts du schéma à contacts conduisent comme prévu // 6. Forçage de variables(Force table)—— Pour la mise en service // Peut forcer le changement dDISurveillance en temps réel de l // Par exemple, forcer%I0.0=1Simuler l // Attention:Après la mise en service, veiller à effacer toutes les valeurs forcées 

5.2 Liste de contrôle pour la mise en service

Arrêt d'urgence actionné : toutes les sorties KM à 0, sortie d'alarme Q0.4 à 1
Arrêt d'urgence réarmé + fin de course haute non atteinte : appui sur SB1 → KM1 s'enclenche, le moteur lève
Relâchement de SB1 → KM1 se libère, le moteur s'arrête
Déclenchement de la fin de course haute SQ1 pendant la levée → KM1 se coupe immédiatement
Avec KM1 enclenché, appui sur SB2 → KM2 ne doit pas s'enclencher (vérification de l'interverrouillage)
Signal de surcharge actif : levée bloquée, seule la descente est possible
Intervalle entre démarrages fréquents < 500 ms → la 2ᵉ sollicitation reste sans réponse (protection anti-redémarrage active)
L'écran de défauts de l'IHM affiche le code de défaut et la description corrects
Communication PROFINET stable (aucune fenêtre d'alarme sur l'IHM)


Questions fréquentes

Q : Quel est le surcoût du remplacement d'une commande par relais par une commande par PLC ?

A : Pour un palan électrique individuel, le passage d'une commande par relais à une commande par PLC représente un surcoût matériel d'environ 190 à 320 EUR (CPU S7-1200 ≈ 100 EUR + module d'extension ≈ 75 EUR + IHM ≈ 155 EUR + accessoires ≈ 40 EUR). En revanche, pour une installation centralisée de plusieurs appareils, ce coût est considérablement amorti — dans le cas d'une installation de 68 palans, le surcoût par unité n'est plus que d'environ 45 EUR. De plus, la solution PLC réduit de 40 % le temps de diagnostic des pannes, permet la surveillance à distance et la maintenance préventive, ce qui rend les coûts d'exploitation et les pertes d'arrêt à long terme bien inférieurs à ceux d'une solution à relais.

Q : Je ne connais pas le langage SCL, puis-je programmer un palan électrique uniquement en langage LAD ?

A : Tout à fait. Les blocs FC100/FC200/FC300 de cet article sont tous programmés en LAD ; seul le bloc FC400 de diagnostic de panne utilise SCL. Le diagnostic peut également être réalisé en LAD avec des mots d'état et des instructions de comparaison, mais SCL est plus concis pour le traitement des chaînes et les calculs mathématiques. Pour les applications purement techniques, le style schéma électrique du langage LAD est plus facile à comprendre pour les électriciens. Il est recommandé d'utiliser LAD pour la logique principale et SCL pour les fonctions auxiliaires.

Q : Comment choisir entre une solution à base de PLC et une solution avec variateur de fréquence ?

A : La solution PLC est destinée à la logique de commande (tout-ou-rien), tandis que le variateur de fréquence assure la régulation de vitesse. Les deux ne sont pas mutuellement exclusifs. Pour un palan électrique, la solution la plus aboutie est la combinaison « PLC + variateur de fréquence » : le PLC gère la logique (arrêt d'urgence, fins de course, interverrouillage, alarmes), le variateur pilote le moteur (démarrage progressif, régulation de vitesse, freinage). Pour les palans de capacité supérieure à 5 t, l'ajout d'un variateur est recommandé pour un positionnement lent et précis ; pour les palans de moins de 5 t à usage unique, une solution PLC + contacteur est tout à fait suffisante.

Q : Quel automate choisir entre le S7-1200 et le S7-200 SMART ?

A : Le S7-200 SMART est plus économique (CPU ≈ 65 EUR) et convient à la commande de machines individuelles jusqu'à 10 unités. Le S7-1200 prend en charge l'Ethernet temps réel PROFINET, idéal pour la mise en réseau de plusieurs appareils et l'intégration dans un système MES/SCADA. Recommandation : pour une machine seule ou une petite série, le 200 SMART (économique) ; pour la surveillance centralisée de plusieurs appareils, le 1200 (mise en réseau) ; si une communication PROFINET avec un variateur est requise, le 1200 est indispensable. La logique de programmation étant identique sur les deux plateformes, la migration d'un programme est aisée.

Pont roulant portique Kelude

Le pont roulant portique Kelude est conçu pour les environnements industriels exigeants, offrant une solution de levage robuste et fiable. Cette gamme de portiques se distingue par sa structure rigide et sa capacité à supporter des charges lourdes, répondant aux besoins de manutention les plus critiques.

Articles connexes

contact

contact us

phone:
+86 13903802779

mail:3915269@qq.com

Working hours: Monday to Friday

Wechat
Wechat
SHARE
TOP