SCL vs LAD: какой язык выбрать
SCL и LAD — два основных языка программирования ПЛК Siemens в TIA Portal. У каждого свои сильные стороны. Разберём, когда что использовать и как их комбинировать.
Что такое LAD
LAD (Ladder Diagram) — релейная логика. Графическое представление электрической схемы. Идеален для:
- Простой логики «вход → выход»;
- Дискретных сигналов;
- Релейных схем;
- Читаемости для электриков.
Пример:
| I0.0 | I0.1 | Q0.0 |
|---|----|----| --- |
| | ( ) |----( ) |
|---|----|----| --- |
Что такое SCL
SCL (Structured Control Language) — текстовый язык, похож на Pascal. Для:
- Сложных вычислений;
- Циклов и условий;
- Работы с массивами;
- Математики, фильтров, регуляторов.
Пример:
IF (i_input1 AND i_input2) THEN
q_output := TRUE;
END_IF;
Сравнение
| Параметр | LAD | SCL |
|---|---|---|
| Тип | Графический | Текстовый |
| Читаемость | Для электриков | Для программистов |
| Простые задачи | Отлично | Избыточно |
| Сложные задачи | Громоздко | Отлично |
| Циклы | Нет | FOR, WHILE |
| Массивы | Ограниченно | Отлично |
| Документирование | Комментарии | Код = документация |
| Отладка | Визуальная | Watch, breakpoint |
Когда использовать LAD
- Обработка дискретных входов/выходов;
- Простые блокировки (кнопка + реле);
- Схемы пуска двигателей;
- Сигнализация по уставкам;
- Код, который должны понимать электрики заказчика.
Когда использовать SCL
- ПИД-регуляторы (хотя есть PID_Compact и в LAD);
- Фильтры сигналов (скользящее среднее, медиана);
- Математические преобразования;
- Работа с рецептами;
- Обработка аварий;
- Сложная логика состояний (state machine);
- Работа с буферами данных.
Комбинация LAD и SCL
Лучшая практика: верхний уровень в LAD, сложные блоки в SCL.
Пример:
- OB1 (основной цикл) — в LAD;
- FB для управления мотором — в LAD (простая логика);
- FB для расчёта уставки — в SCL (математика);
- FB для фильтрации сигналов — в SCL.
Пример: ПИД-регулятор
В LAD — вызов готового блока PID_Compact:
| i_setpoint ---|PID_Compact|--- q_output
| i_process ----| |
| i_manual ------| |
Внутри PID_Compact — это «чёрный ящик» от Siemens. Если нужен свой алгоритм — пишем в SCL.
Пример: фильтр скользящего среднего
В SCL — компактно:
FUNCTION_BLOCK "FB_AvgFilter"
VAR
arr : ARRAY[1..10] OF REAL;
r_sum : REAL;
END_VAR
BEGIN
// Сдвиг массива
FOR i := 10 TO 2 BY -1 DO
arr[i] := arr[i-1];
END_FOR;
arr[1] := i_input;
// Сумма и среднее
r_sum := 0;
FOR i := 1 TO 10 DO
r_sum := r_sum + arr[i];
END_FOR;
q_filtered := r_sum / 10.0;
END_FUNCTION_BLOCK
В LAD аналог — это десятки блоков MOVE и ADD. Громоздко и нечитаемо.
Что выбрать для команды
Опыт ЭкоЭн В ЭкоЭн мы:
- Обучаем инженеров обоим языкам;
- Используем LAD для всего, что проще в LAD;
- Используем SCL для сложных алгоритмов;
- Пишем документацию: «этот FB написан на SCL, потому что...».
Заключение
Не выбирайте между LAD и SCL — комбинируйте. Для каждой задачи — свой инструмент. В ЭкоЭн обучаем обеим и используем лучшее из двух миров.
Нужно обучение? Свяжитесь с нами.
