logo
produtos
case details
Casa > Casos >
Siemens SCL Programming Versão atualizada: 12 casos práticos industriais
Eventos
Contacte-nos
Miss. Andy
86-0592-5636807
Wechat +8618020763272
Contato agora

Siemens SCL Programming Versão atualizada: 12 casos práticos industriais

2025-07-03

Último caso da empresa sobre Siemens SCL Programming Versão atualizada: 12 casos práticos industriais
12 Casos práticos industriais (1-6)

Caso 1: Controle de arranque-parada do motor

FUNÇÃO_BLOCO FB_MotorControl 

VAR_INPUT 
StartButton: BOOL;  
StopButton: BOOL;  
Sinalização de sobrecarga: BOOL;  
END_VAR

VAR_OUTPUT 
Execução Status: BOOL;  
Indicador de falha: BOOL  
END_VAR

Começar.
// Logic de Paragem e Iniciação 
Se o botão de arranque e não o botão de parada e não o sinal de sobrecarga, então
RunningStatus:= TRUE;  
ELSIF StopButton OR OverloadSignal THEN 
RunningStatus:= FALSO;  
END_IF;  


Indicação de falha.
Indicador de falha: = sinal de sobrecarga;  
END_FUNCTION_BLOCK
 

Caso 2: Aplicação de temporizadores

FUNÇÃO_BLOCO FB_DelayStart 

VAR_INPUT 
StartSignal: BOOL;  
Tempo de atraso: TEMPO: = T#5S;  
END_VAR

VAR_OUTPUT 
OutputSignal: BOOL;  
END_VAR

VAR
Tempo de atraso: TON;  
END_VAR

Começar.
O número de horas de funcionamento é o seguinte:  
OutputSignal := DelayTimer.Q;  
END_FUNCTION_BLOCK
 

Caso 3: Controle de temperatura PID

FUNCTION_BLOCK FB_TempControl 

VAR_INPUT 
Ponto de referência: 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;  
Temporiador: TON;  
END_VAR

Começar.
// Execute periodicamente (100ms) 
A duração do tempo de ensaio deve ser determinada em conformidade com o ponto 6.1.  
Se o Timer.Q Então 
Erro VAR:= Ponto de fixação - ProcessValue;  
IntegralTerm:= IntegralTerm + Erro;  
VAR DerivativeTerm := Erro - LastError;  
LastError:= Erro;  


ControlOutput := Kp * Error + Ki * IntegralTerm + Kd * DerivativeTerm;  
ControlOutput:= LIMIT(0.0, ControlOutput, 100.0);  


Aponta-tempo ((IN):= FALSO);  
END_IF;  
END_FUNCTION_BLOCK

Caso 4: Gestão de filas de produção

FUNÇÃO_BLOCO FB_Cue de produção 

VAR_INPUT 
NewOrder: BOOL;  
OrderID: INT;  
CompleteSignal: BOOL;  
END_VAR

VAR_OUTPUT 
CurrentOrder: INT;  
Duração da fila: INT;  
END_VAR

VAR
Lista de ordem: ARRAY[1..50] OF INT;  
Cabeça de fila: INT:= 1;  
QueueTail: INT:= 1;  
END_VAR

Começar.
- Nova fila de encomendas.
IF NewOrder AND QueueLength < 50 THEN 
OrderQueue[QueueTail] := OrderID;  
QueueTail:= QueueTail MOD 50 + 1;  
QueueLength := QueueLength + 1;  
END_IF;  


// Completada a fila de encomendas 
Se CompleteSignal AND QueueLength > 0 THEN 
Cabeça de fila:= Cabeça de fila MOD 50 + 1;  
Duração da fila: = Duração da fila - 1;  
END_IF;  


- Ordem atual.
IF QueueLength > 0 THEN
CurrentOrder := OrderQueue[QueueHead];  
Outro.
Ordem corrente: = 0;  
END_IF;  
END_FUNCTION_BLOCK
 

Caso 5: Controle de bloqueio do portão de segurança

FUNÇÃO_BLOCO FB_SafetyGate 

VAR_INPUT 
Portão 1 fechado, Portão 2 fechado: BOOL;  
EStopButton: BOOL;  
ResetButton: BOOL;  
END_VAR

VAR_OUTPUT 
Estado de segurança: BOOL;  
END_VAR

VAR
LockoutStatus: BOOL:= FALSO;  
Tempo de bloqueio: TON;  
END_VAR

Começar.
- Condição de segurança.
VAR AllGatesClosed:= Gate1Closed AND Gate2Closed;  


Paragem de emergência, prioridade máxima.
Se EStopButton então 
Estado de segurança: = FALSO;  
LockoutStatus:= Verdadeiro;  
LockingTimer ((IN):= TRUE, PT:= T#10S);  
RETORNO;  
END_IF;  


- Desbloqueia a lógica.
Se ResetButton E LocalizaçãoStatus E LocalizaçãoTimer.Q THEN 
LockoutStatus:= FALSO;  
END_IF;  


- Função normal.
Se NÃO, LOCKOUT, então.
Estado de Segurança:  
END_IF;
Mapa do Site |  Política de privacidade | Boa qualidade de China Sensor de laser doente Fornecedor. © de Copyright 2025 Xiamen ZhiCheng Automation Technology Co., Ltd . Todos os direitos reservados.