Siemens SCL Programming Versão atualizada: 12 casos práticos industriais
2025-07-03
Caso 1: Controle de arranque-parada do motor
FUNÇÃO_BLOCO FB_MotorControl VAR_INPUT StartButton: BOOL; StopButton: BOOL; OverloadSignal: BOOL; END_VAR VAR_OUTPUT RunningStatus: BOOL; FaultIndicator: BOOL;END_VAR BEGIN // Start-Stop Logic IF StartButton AND NOT StopButton AND NOT OverloadSignal THEN RunningStatus := TRUE; ELSIF StopButton OR OverloadSignal THEN RunningStatus := FALSE; END_IF; // Indicação de falha FaultIndicator := OverloadSignal; END_FUNCTION_BLOCK
- Não.
Caso 3: Controle de temperatura PID
FUNCTION_BLOCK FB_TempControl VAR_INPUT Setpoint: REAL; ProcessValue: REAL; END_VAR VAR_OUTPUT ControlOutput: REAL; END_VAR VAR Kp: REAL := 2.0; Ki: REAL:= 0.05; Kd: REAL:= 0.5; IntegralTerm: REAL := 0; LastError: REAL := 0; Timer: TON; END_VAR BEGIN // Execute periodicamente (100ms) Timer(IN := NOT Timer.Q, PT := T#100ms); IF Timer.Q THEN VAR Erro := Ponto de fixação - Valor do processo; 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:= FALSO); END_IF; END_FUNCTION_BLOCK
- Não.
Caso 5: Controle de bloqueio do portão de segurança
FUNÇÃO_BLOCO FB_SafetyGate VAR_INPUT Gate1Closed, Gate2Closed: BOOL; EStopButton: BOOL; ResetButton: BOOL; END_VAR VAR_OUTPUT SafetyStatus: BOOL; END_VAR VAR LockoutStatus: BOOL= FALSO:LocalizaçãoTimer: TON; END_VAR BEGIN // Condição de segurança VAR AllGatesClosed := Gate1Closed AND Gate2Closed; // Paragem de emergência de maior prioridade IF EStopButton THEN SafetyStatus := FALSE; LockoutStatus := TRUE;LockoutTimer ((IN := TRUE, PT := T#10S); RETURN; END_IF; // Desbloquear lógica IF ResetButton AND LockkoutStatus AND LockkoutTimer.Q THEN LockkoutStatus := FALSE; END_IF;// Operação normal SE NÃO LOCKOUTStatus ENTÃO SAFETYStatus := AllGatesClosed; END_IF;