Version mise à jour de la programmation SCL Siemens : 12 cas pratiques industriels
2025-07-03
Cas 1: Contrôle du démarrage et de l'arrêt du moteur
FUNCTION_BLOCK FB_MotorControl VAR_INPUT StartButton: BOOL; StopButton: BOOL; OverloadSignal: BOOL; END_VAR VAR_OUTPUT En cours d' exécutionStatus: BOOL; Indicateur de défaut: BOOL;END_VAR BEGIN // Logique de démarrage-arrêt si le bouton de démarrage et non le bouton d'arrêt et non la surchargeSignal THEN RunningStatus := VRAI; ELSIF StopButton OR OverloadSignal THEN RunningStatus := FALSE; END_IF; // Indication de défaut FaultIndicator := Signal de surcharge; END_FUNCTION_BLOCK
le scl
Cas 3: Contrôle de la température PID
FUNCTION_BLOCK FB_TempControl VAR_INPUT Point de réglage: réel; Valeur du processus: réel; END_VAR VAR_OUTPUT ControlSorte: réel; END_VAR VAR Kp: réel: = 2.0; Ki: réel := 0.05; Kd: réel := 0.5; IntegralTerm: REAL := 0; LastError: REAL := 0; Timer: TON; END_VAR BEGIN // Exécuter périodiquement (100 ms) Timer(IN := NON Timer.Q, PT := T#100ms); SI Timer.Q Alors VAR Erreur := Point de référence - Valeur du processus; IntegralTerm := IntegralTerm + Error; VAR DerivativeTerm := Error - LastError; LastError := Error; ControlOutput := Kp * Error + Ki * IntegralTerm + Kd * DerivativeTerm; ControlOutput := LIMIT(0.0, ControlOutput, 100.0); Timer ((IN := FALSE); END_IF; END_FUNCTION_BLOCK) Il est également possible de modifier les paramètres de l'appareil
le scl
Cas 5: Contrôle de verrouillage des portes de sécurité
FUNCTION_BLOCK FB_SafetyGate VAR_INPUT Gate1Closed, Gate2Closed: BOOL; EStopButton: BOOL; ResetButton: BOOL; END_VAR VAR_OUTPUT SafetyStatus: BOOL; END_VAR VAR LockoutStatus: BOOL= FALSE:LockoutTimer: TON; END_VAR BEGIN // Condition de sécurité VAR Toutes les portes fermées := Porte1fermé ET Porte2fermé; // Arrêt d'urgence priorité maximale SI BOuton d'arrêt ESTOP puis SafetyStatus := FALSE; LockoutStatus := VRAI;Le temps d'arrêt.:= VRAI, PT := T#10S); RETURN; END_IF; // Déverrouiller la logique SI le bouton de réinitialisation et le verrouillageStatus et le verrouillageTimer.Q puis le verrouillageStatus:= FAUX; END_IF;// Fonctionnement normal S' il n' y a pas de verrouillage, alors sécurité:= Toutes les portes fermées; END_IF;