logo
продукты
case details
Дом > Случаи >
Программирование Siemens SCL обновленная версия: 12 промышленных практических случаев
События
Свяжитесь мы
Miss. Andy
86-0592-5636807
Wechat +8618020763272
Контакт теперь

Программирование Siemens SCL обновленная версия: 12 промышленных практических случаев

2025-07-03

Последнее дело компании о Программирование Siemens SCL обновленная версия: 12 промышленных практических случаев
12 Промышленные практические случаи (1-6)

Случай 1: Управление пуском и остановкой двигателя

FUNCTION_BLOCK FB_MotorControl 

VAR_INPUT 
Кнопка запуска: BOOL;  
StopButton: BOOL;  
Сигнал перегрузки: BOOL;  
END_VAR 

VAR_OUTPUT 
Состояние запуска: BOOL;  
Показатель ошибки: BOOL;  
END_VAR 

Начинать.
// Логика старта-стопа 
Если StartButton и не StopButton и не перегрузкиСигнал тогда 
RunningStatus:= TRUE;  
ELSIF Стойка или перегрузка
Состояние выполнения:= FALSE;  
END_IF;  


// Показание неисправности 
Показатель неисправности:= Сигнал перегрузки;  
END_FUNCTION_BLOCK
 

Случай 2: Применение таймера

FUNCTION_BLOCK FB_DelayStart 

VAR_INPUT 
Сигнал старта: BOOL;  
DelayTime: TIME:= T#5S;  
END_VAR 

VAR_OUTPUT 
Выходный сигнал: BOOL;  
END_VAR 

VAR
Задержка времени: ТОН;  
END_VAR 

Начинать.
DelayTimer ((IN):= StartSignal, PT:= DelayTime);  
Выходный сигнал: = DelayTimer.Q;  
END_FUNCTION_BLOCK
 

Случай 3: Управление температурой PID

FUNCTION_BLOCK FB_TempControl 

VAR_INPUT 
Исходное значение: REAL;  
ProcessValue: REAL;  
END_VAR 

VAR_OUTPUT 
КонтрольВыход: REAL;  
END_VAR 

VAR
Kp: REAL:= 2.0;  
Ки: REAL:= 0.05;  
Kd: REAL:= 0.5;  
IntegralTerm: REAL:= 0;  
Последнее ошибку: REAL:= 0;  
Таймер: ТОН;  
END_VAR 

Начинать.
// Периодически (100 мс)
Таймер ((IN:= НЕ Таймер.Q, PT:= T#100ms);  
Если Таймер.Q Тогда 
Ошибка VAR:= Установка точки - значение процесса;  
IntegralTerm:= IntegralTerm + ошибка;  
VAR DerivativeTerm := Ошибка - Последняя ошибка;  
LastError:= Ошибка;  


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


Таймер ((IN):= FALSE);  
END_IF;  
END_FUNCTION_BLOCK

Случай 4: Управление очередями на производственной линии

FUNCTION_BLOCK FB_ProductionQueue 

VAR_INPUT 
NewOrder: BOOL;  
OrderID: INT;  
Полный сигнал: BOOL;  
END_VAR 

VAR_OUTPUT 
Текущий порядок: INT;  
длина очереди: INT;  
END_VAR 

VAR
OrderQuee: ARRAY[1..50] OF INT;  
Заголовок очереди: INT:= 1;  
Следующая очередь: INT:= 1;  
END_VAR 

Начинать.
// Новый порядок очереди 
Если NewOrder и QueueLength < 50 
OrderQueue[QueueTail] := OrderID;  
Чередовый хвост:= Чередовый хвост MOD 50 + 1;  
Длина очереди:= Длина очереди + 1;  
END_IF;  


// Завершен порядок очереди 
Если полный сигнал и длина очереди > 0 
QueueHead:= QueueHead MOD 50 + 1;  
Длина очереди:= Длина очереди - 1;  
END_IF;  


// Текущий порядок 
Если длина очереди > 0 
CurrentOrder := OrderQueue[QueueHead];  
Еще 
Текущий порядок: = 0;  
END_IF;  
END_FUNCTION_BLOCK
 

Случай 5: Контроль блокировки предохранительных ворот

FUNCTION_BLOCK FB_SafetyGate 

VAR_INPUT 
Вход 1 закрыт, вход 2 закрыт: BOOL;  
EStopButton: BOOL;  
Кнопка перезагрузки:  
END_VAR 

VAR_OUTPUT 
Статус безопасности: BOOL;  
END_VAR 

VAR
LockoutStatus: BOOL:= FALSE;  
Время блокировки: TON;  
END_VAR 

Начинать.
// Безопасность 
VAR AllGatesClosed:= Gate1Closed И Gate2Closed;  


// Аварийная остановка высшего приоритета
Если EStopButton тогда 
Статус безопасности:= FALSE;  
LockoutStatus:= TRUE;  
LockoutTimer ((IN):= TRUE, PT:= T#10S);  
ВРЕТА;  
END_IF;  


Отключи логику.
Если ResetButton и LockoutStatus и LockoutTimer.Q тогда 
LockoutStatus:= FALSE;  
END_IF;  


// Нормальная работа 
Если нет, то отключитесь.
Статус безопасности: = все ворота закрыты;  
END_IF;
Карта сайта |  Политика уединения | Качество Китая хорошее Сенсор лазера больного Поставщик. © авторского права 2025 Xiamen ZhiCheng Automation Technology Co., Ltd . Все права защищены.