Программирование ПЛК для электрической тали (S7-1200: LAD и SCL)
Программирование ПЛК для управления электрической талью (практика S7-1200) В статье рассматривается программирование контроллера Siemens S7-1200 (CPU 1212C DC/DC/DC) в среде TIA Portal V17 с использованием смешанного программирования на LAD (релейно-контактная логика) и SCL (структурированный текст). Реализованы логика управления подъёмом/опусканием/передвижением тали, защита от перегрузки, концевые выключатели, аварийная блокировка, переключение режимов управления (радиопульт/кнопочный пост), самодиагностика неисправностей. Полная программа включает 4 блока FC, 1 блок DB и главный цикл OB1 — готова к непосредственному импорту в реальный проект.
Традиционное управление электрическими талями долгие годы строилось на связке «кулачковый контроллер + реле + контактор»: электрическая схема насчитывала десятки промежуточных реле и реле времени, что крайне затрудняло поиск неисправностей и исключало интеграцию в информационные системы предприятия. С развитием концепции «Индустрия 4.0» всё больше заводов требуют подключения подъёмного оборудования к системам MES/SCADA для мониторинга состояния, сбора данных о работе и раннего предупреждения отказов. Замена релейной логики на ПЛК — закономерный шаг эволюции. В статье, основанной на реальном проекте, реализованном компанией Келуде Тяжёлая Промышленность для завода автомобильных запчастей (централизованное управление 68 электрическими талями), подробно описан весь процесс разработки программы ПЛК: таблица распределения входов/выходов, логика на LAD, код обработки ошибок на SCL, структура экранов HMI и этапы загрузки и отладки программы.
Аппаратная конфигурация и распределение входов/выходов
Выбор оборудования
| Оборудование | Модель | Количество | Примечание |
|---|---|---|---|
| PLC CPU | S7-1200 1212C DC/DC/DC | 1 | 6ES7 212-1AE40-0XB0,8DI/6DO |
| Дискретный сигналМодуль Расширения | SM 1223 DI 8×24VDC / DO 8×24VDC | 1 | 6ES7 223-1BH32-0XB0 |
| Аналоговый сигналМодуль Расширения | SM 1231 AI 4×13bit | 1 | 6ES7 231-4HD32-0XB0,4~20mA |
| HMI Сенсорный Экран | KTP400 Basic PN | 1 | 6AV6 647-0AD11-3AX0,4.3дюйм |
| Промежуточное Реле | RIM 24VDC 2CO | 6 | PLC DOКонтакторГальваническая развязка катушки |
| Импульсный Блок Питания | EDR-120-24 | 1 | AC220VDC24V 5A |
1.2 Таблица распределения входов/выходов (I/O)
| Адрес | Обозначение | Функция | Тип | Описание |
|---|---|---|---|---|
| %I0.0 | SB1_UP | Кнопка «Вверх» | DI | Вверх с пульта,Нормально разомкнутый (НР) |
| %I0.1 | SB2_DN | Кнопка «Вниз» | DI | Пульт управленияОпускание,Нормально разомкнутый (НР) |
| %I0.2 | SB3_LT | Кнопка «Влево» | DI | Влево с пульта,Нормально разомкнутый (НР) |
| %I0.3 | SB4_RT | Кнопка «Вправо» | DI | Вправо с пульта,Нормально разомкнутый (НР) |
| %I0.4 | SQ1_UL | Верхний концевой выключатель | DI | Путевой выключатель,Нормально замкнутый (НЗ) |
| %I0.5 | SQ2_DL | Нижний концевой выключательь | DI | Путевой выключатель,Нормально замкнутый (НЗ) |
| %I0.6 | SB0_EST | Кнопка Аварийной Остановки | DI | Нормально замкнутый контакт,0=Срабатывание |
| %I0.7 | FR_OL | Тепловое реле | DI | Тепловое реле,Нормально замкнутый (НЗ) |
| %I1.0 | OL1_OVLD | Сигнал перегрузки | DI | Ограничитель перегрузкиВыход,Нормально разомкнутый (НР) |
| %I1.1 | RC_SEL | Дистанционное управление/Переключение режима управления (пульт) | DI | 0=Пульт управления 1=Дистанционное управление |
| — | Аналоговый вход:датчик перегрузки(4~20mA0~20t) | |||
| Адрес | Обозначение | Функция | Тип | Описание |
|---|---|---|---|---|
| %Q0.0 | KM1_UP | Вверх с пультаКонтактор | DO | Управление главной цепью подъемаКонтактор |
| %Q0.1 | KM2_DN | Контактор опускания | DO | Управление главной цепью опусканияпью подъемаКонтактор |
| %Q0.2 | KM3_LT | Контактор движения влево | DO | Управление главной цепью движения влевоКонтактор |
| %Q0.3 | KM4_RT | Контактор движения вправо | DO | Управление главной цепью движения вправоКонтактор |
| %Q0.4 | KA1_ALM | Аварийная сигнализация | DO | Звуковой и световой сигнализатор |
| %Q0.5 | KA2_RUN | индикатор работы | DO | Зеленый индикатор работы |
2. Программирование на языке релейно-контактных схем (LAD)
2.1 Структура главного организационного блока OB1
OB1 — главный циклический организационный блок, время цикла сканирования по умолчанию — 10 мс. В порядке выполнения вызываются следующие функциональные блоки (FC):
| Порядок вызова | FCБлок | Функция | Язык программирования |
|---|---|---|---|
| 1 | FC100_Safety | предохранительная блокировка(Аварийный стоп/Верхний концевой выключатель/Тепловое реле/Перегрузка) | LAD |
| 2 | FC200_HoistCtrl | ПодъёмЛогика управления(Вверх с пульта/Опускание/Блокировка) | LAD |
| 3 | FC300_TravelCtrl | Логика управления работой(Влево с пульта/Вправо с пульта/Блокировка) | LAD |
| 4 | FC400_FaultDiag | Диагностика Неисправностейи сигнализация(SCL) | SCL |
2.2 Предохранительная блокировка FC100 (LAD-диаграмма)
// FC100: логика предохранительной блокировки // последовательное соединение всех условий безопасности——запрет работы при невыполнении любого условия "SB0_EST" "SQ1_UL" "SQ2_DL" "FR_OL" "SafetyOK" ----|/|-------------|/|-------------|/|-------------|/|------------------------( ) // блокировка по перегрузке:при перегрузке разрешено только опускание "OL1_OVLD" "SB2_DN" ----| |------------| |-----------------------------------------------------------( "Overload_DN_Only" ) // сброс сигнала перегрузки(ручное подтверждение) "Overload_DN_Only" "SB1_UP" "Overload_Latch" ----| |-------------------| |----------------------------------------------------( )
2.3 Управление подъёмом FC200 (LAD-диаграмма)
// FC200: логика управления подъемом // подъем:SafetyOK + верхний конечный выключатель не сработал + отсутствие перегрузки + опускание не выполняется + кнопка подъема // Опускание:SafetyOK + нижний конечный выключатель не сработал + подъем не выполняется + кнопка опускания(при перегрузке разрешено только опускание) "SafetyOK" "SQ1_UL" "Overload_Latch" "KM2_DN" "SB1_UP" "KM1_UP" ----| |-------------| |-------------|/|----------------|/|-----------| |----------( ) | | "KM1_UP" | ----| |----------------------------------------------------------------------------+ "SafetyOK" "SQ2_DL" "KM1_UP" "SB2_DN" "KM2_DN" ----| |-------------| |-------------------------------|/|-----------| |----------( ) | | "KM2_DN" | ----| |----------------------------------------------------------------------------+ // электрическая блокировка:KM1иKM2категорически запрещен одновременный выход "KM1_UP" "KM2_DN" "Interlock_OK" ----| |-----------| |--------------( ) // для обнаружения неисправностей,в нормальном состоянии не должен проводить
2.4 Защита от частых пусков — таймер задержки
// защита от частых пусков:задержка после каждой остановки500msразрешение повторного пуска // предотвращение частых срабатываний контактора за короткий промежуток времени(дребезг контактов/электрическая дуга) "KM1_UP" ----|/|----------------------------------------------------------------------------- "KM2_DN" TON_Start_Delay ----|/|----------------[TON: #Temp_StartDelay ] PT= T#500MS Q= "Start_Allowed" // включение в главную цепь управления "Start_Allowed" "SB1_UP" "KM1_UP" // подъем ----| |----------------| |-----------( )
Диагностика неисправностей на SCL
3.1 FC400_FaultDiag (структурированный текст SCL)
// FC400: диагностика неисправностей и сигнализация // язык:SCL(структурированный текст) // функция:мониторинг состояния оборудования в реальном времени,Обнаружение13категории неисправностей типа,вывод кода неисправности наHMI FUNCTION FC400_FaultDiag : Void VAR_INPUT I_SafetyOK : Bool; // состояние предохранительной блокировки I_KM1_UP : Bool; // обратная связь контактора подъема I_KM2_DN : Bool; // обратная связь контактора опускания I_Overload_Latch : Bool; // блокировка по перегрузке I_OL1_OVLD : Bool; // сигнал датчика перегрузки I_RunHours : Real; // суммарное время работы(часы) END_VAR VAR_OUTPUT Q_FaultCode : Int; // вывод кода неисправности наHMI Q_FaultMsg : String[40]; // описание неисправности Q_Alarm_Output : Bool; // управление звуковым и световым сигнализатором Q_TotalRunHours : Real; // общее время работы END_VAR VAR vFaultCount : Int; // счетчик неисправностей vPrev_KM1 : Bool; // детектирование фронта сигнала контактора подъема vPrev_KM2 : Bool; // детектирование фронта сигнала контактора опускания vOverloadTimer : Time; // длительность перегрузки END_VAR // === список обнаружения неисправностей === Q_FaultCode := 0; // по умолчанию неисправностей нет Q_Alarm_Output := FALSE; vFaultCount := 0; // по умолчанию неисправностей нет1:нажата аварийная остановка IF I_SafetyOK = FALSE AND "SB0_EST" = FALSE THEN Q_FaultCode := 1; Q_FaultMsg := 'кнопка аварийной остановки нажата'; vFaultCount := vFaultCount + 1; END_IF; // по умолчанию неисправностей нет2:срабатывание верхнего конечного выключателя IF "SQ1_UL" = FALSE THEN Q_FaultCode := 2; Q_FaultMsg := 'срабатывание верхнего конечного выключателя(недостаточное расстояние от крюка до барабана)'; vFaultCount := vFaultCount + 1; END_IF; // по умолчанию неисправностей нет3:срабатывание нижнего конечного выключателя IF "SQ2_DL" = FALSE THEN Q_FaultCode := 3; Q_FaultMsg := 'срабатывание нижнего конечного выключателя(недостаточное количество каната на барабане3витков)'; vFaultCount := vFaultCount + 1; END_IF; // по умолчанию неисправностей нет4:перегрузка теплового реле IF "FR_OL" = FALSE THEN Q_FaultCode := 4; Q_FaultMsg := 'защита двигателя от перегрузки(срабатывание теплового реле)'; vFaultCount := vFaultCount + 1; END_IF; // по умолчанию неисправностей нет5:перегрузка IF I_Overload_Latch THEN Q_FaultCode := 5; Q_FaultMsg := 'срабатывание ограничителя перегрузки(нагрузка>110%)'; vFaultCount := vFaultCount + 1; END_IF; // по умолчанию неисправностей нет6:KM1/KM2одновременное срабатывание(залипание контактора) IF I_KM1_UP AND I_KM2_DN THEN Q_FaultCode := 6; Q_FaultMsg := 'критическая неисправность:одновременное срабатывание контакторов высокой и низкой скорости'; vFaultCount := vFaultCount + 1; END_IF; // по умолчанию неисправностей нет7:аномалия обратной связи контактора(несоответствие команды выхода и обратной связи) IF ("KM1_UP" = TRUE AND I_KM1_UP = FALSE) OR ("KM2_DN" = TRUE AND I_KM2_DN = FALSE) THEN Q_FaultCode := 7; Q_FaultMsg := 'аномальный отклик контактора(возможное заклинивание/перегорание катушки)'; vFaultCount := vFaultCount + 1; END_IF; // при наличии любой неисправности,управление выходом сигнализации IF vFaultCount > 0 THEN Q_Alarm_Output := TRUE; END_IF; // === накопление во время работы === Q_TotalRunHours := I_RunHours + (TIME_TO_REAL(TIME_NOW() - "Start_Time")) / 3600000.0; END_FUNCTION Мониторинг HMI и настройка связи
4.1 Таблица переменных HMI и структура экранов
| HMIЭкран | Отображаемое содержимое | ПривязкаDBПеременная |
|---|---|---|
| Главный экран | Состояние оборудования/ТекущийНагрузка/Время работы | DB1.Status / DB1.Load / DB1.RunHours |
| Экран управления | Вверх с пульта/Опускание/Влево с пульта/Виртуальная кнопка «Вправо» | Используется при переключении ручного/автоматического режима |
| Экран неисправностей | Код неисправности/Описание/Время возникновения/Кнопка сброса | DB1.FaultCode / DB1.FaultMsg |
| ПараметрЭкран | Уставка перегрузки/Сброс времени работы/Смена пароля | DB1.Overload_Set / DB1.Password |
4.2 Настройка связи PROFINET (конфигурация в TIA Portal)
// сетевые параметры конфигурации устройства // 1. S7-1200 CPU 1212C // IP: 192.168.0.10 // маска подсети: 255.255.255.0 // PROFINETимя устройства: plc-hoist-01 // 2. KTP400 Basic HMI // IP: 192.168.0.20 // маска подсети: 255.255.255.0 // имя устройства: hmi-hoist-01 // 3. HMIконфигурация соединения(вHMIнастройка в конфигурации) // тип соединения типа: PROFINET (S7-1200) // HMIустройство: HMI_1 [192.168.0.20] // Контроллер: plc-hoist-01 [192.168.0.10] // точка доступа: S7ONLINE // подсеть: PN/IE_1 // 4. HMIпример соединения переменных(PLC tag HMI tag) // "DB1".FaultCode "FaultCode" (Int, период сбора данных500ms) // "DB1".Load_Current "CurrentLoad"(Real, период сбора данных200ms) // "DB1".Status_Running "IsRunning" (Bool, период сбора данных100ms)
Загрузка программы и пусконаладка
5.1 Порядок загрузки
// процесс загрузки(TIA Portal V17) // 1. компиляция всего проекта(Project Build Rebuild All) // обеспечить"0 errors, 0 warnings" // 2. выбор целевого устройства(Select target device) // онлайн-доступ обнаруженоPLC назначениеIP 192.168.0.10 // 3. загрузка конфигурации оборудования(Download HW config) // автоматический перезапускPLC(около15секунд) // 4. загрузка программного обеспечения(Download SW) // выбор"Download all blocks" перезапись существующей программы // 5. онлайн-мониторинг(Go online) // нажать"очки"значок для входа в режим онлайн-мониторинга // наблюдение за зелеными цепями на релейно-контактной схеме для проверки проводимости // 6. принудительное присвоение переменных(Force table)—— для наладки // возможность принудительного изменения без фактического нажатия кнопокDIмониторинг состояния оборудования в реальном времени // например, принудительно%I0.0=1имитация нажатия кнопки подъема // внимание:после завершения наладки обязательно сбросить все принудительные значения
5.2 Контрольный список при пусконаладке
При нажатом аварийном стопе все выходы KM равны 0, выход аварийной сигнализации Q0.4 равен 1
После сброса аварийного стопа и при неактивном верхнем конечном выключателе нажатие SB1 включает KM1 — двигатель поднимает груз
Отпускание SB1 отключает KM1 — двигатель останавливается
При подъёме срабатывание верхнего конечного выключателя SQ1 немедленно отключает KM1
При включённом KM1 нажатие SB2 не должно включать KM2 (проверка блокировки)
При сигнале перегрузки подъём запрещён, доступно только опускание
При частых пусках с интервалом менее 500 мс второй пуск не выполняется (защита от частых пусков активна)
На экране неисправностей HMI отображаются корректный код неисправности и описание
Связь PROFINET без обрывов (на HMI нет всплывающих сообщений об ошибках)
Часто задаваемые вопросы
В: Насколько возрастёт стоимость при замене релейного управления на ПЛК?
О: При переводе одной электрической тали с релейного управления на ПЛК стоимость аппаратной части увеличивается примерно на 1500–2500 юаней (CPU S7-1200 — около 800 юаней + модуль расширения — около 600 юаней + HMI — около 1200 юаней + вспомогательные материалы — около 300 юаней). Однако при централизованном управлении несколькими талями удельные затраты значительно снижаются — в проекте с 68 талями удорожание на одну таль составило всего около 350 юаней. Кроме того, решение на ПЛК сокращает время поиска неисправностей на 40%, обеспечивает удалённый мониторинг и плановое техобслуживание, что делает долгосрочные эксплуатационные расходы и потери от простоев значительно ниже, чем при релейной схеме.
В: Можно ли написать программу для электрической тали только на LAD, не владея SCL?
О: Да, вполне. Все блоки FC100/FC200/FC300 в этой статье написаны на LAD, и только FC400 (диагностика неисправностей) — на SCL. Диагностику неисправностей также можно реализовать на LAD с использованием слова состояния и команд сравнения, однако SCL более лаконичен при обработке строк и математических операциях. Для чисто инженерных задач стиль LAD ближе к электрической схеме и понятнее электромонтажникам, поэтому рекомендуется основную логику писать на LAD, а вспомогательные функции — на SCL.
В: Как выбрать между решением на ПЛК и решением с преобразователем частоты?
О: ПЛК-решение предназначено для логического управления (вкл/выкл), а преобразователь частоты — для регулирования скорости. Это не взаимоисключающие варианты. Наиболее отработанная схема для электрической тали — комбинация «ПЛК + преобразователь частоты»: ПЛК отвечает за логику (аварийный стоп, конечные выключатели, блокировки, сигнализация), а преобразователь частоты — за управление двигателем (плавный пуск, регулирование скорости, торможение). Для талей грузоподъёмностью свыше 5 т рекомендуется устанавливать преобразователь частоты для точного позиционирования на малой скорости; для талей до 5 т с однотипными операциями вполне достаточно схемы ПЛК + контактор.
В: Что лучше выбрать — S7-1200 или S7-200 SMART?
О: S7-200 SMART дешевле (CPU — около 500 юаней) и подходит для автономного управления до 10 талей. S7-1200 поддерживает PROFINET (промышленный Ethernet реального времени) и подходит для объединения нескольких талей в сеть с подключением к MES/SCADA-системе. Рекомендации: для одиночных талей или небольших партий — S7-200 SMART (экономичный вариант); для централизованного мониторинга нескольких талей — S7-1200 (сетевое взаимодействие); при необходимости связи с преобразователем частоты по PROFINET — только S7-1200. Логика программирования на обеих платформах идентична, затраты на перенос программы минимальны.
Рекомендуемые стандарты
• JB/T 10220-2014 «Тормоза для электрических талей»
• JB/T 10218-2014 «Двигатели с коническим ротором для электрических талей»
• JB/T 10219-2014 «Редукторы для электрических талей»
Козловой кран Kelude: обзор, характеристики и применение
Козловые краны являются неотъемлемой частью современного промышленного производства и строительства. Они обеспечивают эффективное перемещение тяжелых грузов на открытых площадках, в цехах и на складах. В этой статье мы подробно рассмотрим козловые краны производства компании «Келуде» (Kelude), их ключевые особенности, технические параметры и сферы применения, а также ответим на часто задаваемые вопросы.
О: Стандартные сроки изготовления составляют от 45 до 90 дней в зависимости от сложности и загруженности производства. Для кранов со стандартными характеристиками сроки могут быть короче.
В: Какие условия необходимы для монтажа крана?
О: Для монтажа необходима подготовленная площадка с уложенными подкрановыми путями, соответствующими проекту. Также требуется наличие источника питания необходимой мощности. Наши специалисты могут провести шеф-монтаж и пусконаладочные работы.
В: Возможно ли управление краном с помощью радиопульта?
О: Да, большинство наших кранов могут быть оснащены системой радиоуправления. Это повышает безопасность и удобство работы, позволяя оператору находиться на безопасном расстоянии от груза.
В: Какой режим работы подходит для нашего производства?
О: Режим работы (А3-А7) выбирается в зависимости от интенсивности использования крана. Для легких и средних условий эксплуатации подходят режимы А3-А5, для тяжелых и очень тяжелых — А6-А7. Наши инженеры помогут вам подобрать оптимальную конфигурацию.