CabinetController — пуск и останов всей установки
CabinetController — центральная точка пуска и останова всей установки. К нему подключают кнопки шкафа управления, сигнал наличия напряжения и экстренный останов. Через него также выполняют общий сброс аварий и наработки оборудования.
Оператор нажимает «Пуск», чтобы включить установку, и «Стоп», чтобы её остановить. Какие насосы, клапаны и другие устройства должны при этом работать и в какой последовательности — определяется программой установки.
Состав и связи
CabinetController связывает оборудование с общими сигналами шкафа. Последовательность пуска отдельных механизмов задаёт программа проекта.
Первое подключение
Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.
Перед генерацией выберите вариант работы с MetaLab: добавить готовые сценарии или пока отключить их создание.
Рассмотрим шкаф с кнопками «Пуск», «Стоп», «Экстренный останов», «Сброс аварий» и реле контроля напряжения.
1. Укажите сигналы шкафа
Добавьте CabinetController и заполните его параметры. В каждом поле укажите имя соответствующего сигнала из вашего проекта.
| Параметр | Что подключить |
|---|---|
CabCtlStart |
Кнопку «Пуск» |
CabCtlStop |
Кнопку «Стоп» |
CabCtlEStop |
Кнопку или цепь экстренного останова |
CabCtlPowerOk |
Реле контроля напряжения |
CabCtlFaultReset |
Кнопку «Сброс аварий» |
CabCtlBlock |
Условие, запрещающее работу всей установки. Если его нет, оставьте false |
Для кнопок значение TRUE означает, что команда подана. Для контроля напряжения TRUE означает, что питание в норме. Если электрическая схема даёт обратное значение, используйте инверсию сигнала.
Если сигнал уже проходит через SignalsFilter, здесь укажите выход его канала.
2. Оставьте обычный пуск от кнопки
Начальная настройка Conf.CabinetController_bStartOnTrig = true подходит для кнопки «Пуск»: нажали и отпустили — установка продолжает работать. После останова для нового запуска нужно снова нажать «Пуск».
Остальные настройки можно пока оставить начальными. Их назначение разобрано ниже.
3. Свяжите CabinetController с оборудованием
Компонент создаёт блок с именем CabinetController_Inst. Укажите это имя в поле родителя у оборудования:
| Компонент | Параметр | Значение |
|---|---|---|
| Engine — двигатель | EngParent |
CabinetController_Inst |
| Valve — клапан | ValParent |
CabinetController_Inst |
Так двигатели и клапаны получают от шкафа информацию о питании, экстренный останов и команды сброса. Поле родителя в компонентах обозначается словом Parent.
Для общего пуска и останова используйте в программе установки признак CabinetController_Inst.out_bWorking: после «Пуска» он равен TRUE, после «Стопа» — FALSE. Если нужно одновременно учитывать наличие питания, используйте CabinetController_Inst.out_bWorkAndPower.
По этому признаку программа запускает или останавливает нужное оборудование. Например, после общего пуска сначала открывает клапан, затем включает насос. Одного заполнения Parent для такой последовательности недостаточно — её задают в программе установки.
Как работают пуск и останов
Пуск возможен, когда есть напряжение, нет блокировки и снят экстренный останов.
| Действие или событие | Результат |
|---|---|
| Нажали «Пуск» | CabinetController запоминает, что установка включена |
| Отпустили «Пуск» | Установка остаётся включённой |
| Нажали «Стоп» | Общее разрешение работы снимается |
| Появилась блокировка | Общее разрешение работы снимается |
| Нажали «Экстренный останов» | Разрешение снимается; подключённым компонентам передаётся экстренный останов |
Если одновременно поданы «Пуск» и «Стоп», выполняется останов. Нажатие «Пуск» при запрете не запоминается: после устранения причины нужно нажать кнопку снова.
Что происходит при пропадании напряжения
О пропадании напряжения CabinetController сообщает подключённому оборудованию сразу. Двигатели и клапаны реагируют на потерю питания без ожидания.
При этом компонент некоторое время помнит, что установка была включена. Это время задаётся настройкой Conf.CabinetController_diPowerControlFilter; начальное значение — 3 секунды.
- Если напряжение вернулось через 1 секунду, повторное нажатие «Пуск» не требуется. Дальнейшую работу оборудования определяет программа установки.
- Если напряжения нет 3 секунды и дольше, состояние «Включено» сбрасывается. При обычном управлении от кнопки потребуется новый пуск.
Запустить выключенную установку без напряжения нельзя. Выдержка нужна только для уже работающей установки.
Сброс аварий и наработки
Кнопка «Сброс аварий» передаёт общую команду всем компонентам, связанным с CabinetController. Каждый из них снимает свои аварии по собственным правилам. Например, сохраняющаяся причина аварии может не позволить её сбросить.
Сброс наработки выполняется отдельной командой с панели оператора. Она передаётся подключённым компонентам через out_bWorktimeReset.
Другие способы управления
Пуск от переключателя
Если вместо кнопки используется переключатель с постоянным положением «Работа», задайте Conf.CabinetController_bStartOnTrig = false.
Тогда сигнал на CabCtlStart означает: установка должна работать, пока нет запретов. После устранения блокировки, снятия экстренного останова или восстановления питания она снова получит разрешение на работу, если переключатель остался включённым и команда «Стоп» снята.
Снятие самого сигнала CabCtlStart не останавливает установку. Для останова нужен сигнал CabCtlStop.
Управление с панели оператора
Общий пуск, останов и сбросы доступны также с панели. Их команды приведены в справочнике ниже. Команды «Пуск», «Стоп» и сброса обрабатываются один раз, после чего компонент сам обнуляет их.
Экстренный останов с панели сохраняется, пока его не снимут. Его также снимает отпускание физической кнопки экстренного останова: переход CabCtlEStop из TRUE в FALSE очищает команду панели.
Параметры компонента — Params
| Параметр | По умолчанию | Назначение |
|---|---|---|
$CabCtl |
Контроллер шкафа управления |
Название группы параметров |
CabCtlStart |
_DI_ |
Сигнал общего пуска |
CabCtlStop |
_DI_ |
Сигнал общего останова |
CabCtlEStop |
_DI_ |
Экстренный останов: TRUE — остановить |
CabCtlPowerOk |
_DI_ |
Контроль напряжения: TRUE — питание в норме |
CabCtlBlock |
false |
Блокировка: TRUE — работа запрещена |
CabCtlFaultReset |
_DI_ |
Сигнал общего сброса аварий |
Вместо _DI_ укажите сигнал из своего проекта. Если отдельной кнопки пуска, останова, экстренного останова или сброса нет, для неё можно указать false и использовать команду с панели. Сигнал наличия напряжения задаётся отдельно в CabCtlPowerOk.
Имя блока — CabinetController_Inst. Отдельного параметра ID у компонента нет.
Настройки во время работы — Conf
| Настройка | Тип | Начальное значение | Назначение |
|---|---|---|---|
Conf.CabinetController_diPowerControlFilter |
DINT |
3 |
Через сколько секунд без напряжения сбросить состояние «Включено» |
Conf.CabinetController_diFaultResetPulse |
DINT |
1 |
Длительность включения и паузы для отдельного импульсного выхода сброса, с |
Conf.CabinetController_bStartOnTrig |
BOOL |
true |
TRUE — пуск по новому нажатию; FALSE — также по постоянно включённому входу CabCtlStart |
При нулевом или отрицательном diPowerControlFilter общий пуск сбрасывается сразу после пропадания напряжения.
Команды панели оператора — View
| Команда | Тип | Как использовать |
|---|---|---|
View.CabinetController_Inst_inout_bStart |
BOOL |
Записать TRUE для пуска; компонент сам вернёт FALSE |
View.CabinetController_Inst_inout_bStop |
BOOL |
Записать TRUE для останова; компонент сам вернёт FALSE |
View.CabinetController_Inst_inout_bEmergencyStop |
BOOL |
Записать TRUE для экстренного останова, FALSE — для снятия команды |
View.CabinetController_Inst_inout_bFaultReset |
BOOL |
Записать TRUE для сброса аварий; компонент сам вернёт FALSE |
View.CabinetController_Inst_inout_bWorktimeReset |
BOOL |
Записать TRUE для сброса наработки; компонент сам вернёт FALSE |
Выходы компонента
| Выход | Тип | Что означает |
|---|---|---|
CabinetController_Inst.out_bPowerControl |
BOOL |
Напряжение присутствует |
CabinetController_Inst.out_bWorking |
BOOL |
Установка включена общим пуском |
CabinetController_Inst.out_bWorkAndPower |
BOOL |
Установка включена и напряжение присутствует |
CabinetController_Inst.out_bEmergencyStop |
BOOL |
Подана команда экстренного останова |
CabinetController_Inst.out_bFaultReset |
BOOL |
Команда общего сброса аварий |
CabinetController_Inst.out_bFaultResetPulse |
BOOL |
Отдельный импульсный выход сброса аварий |
CabinetController_Inst.out_bWorktimeReset |
BOOL |
Команда общего сброса наработки на один цикл ПЛК |
При кратком пропадании напряжения out_bWorking ещё остаётся включённым, а out_bPowerControl и out_bWorkAndPower сразу становятся FALSE.
Два выхода сброса аварий
Обычный выход out_bFaultReset включён, пока нажата кнопка «Сброс аварий». При сбросе с панели он включается на один цикл ПЛК.
У отдельного выхода out_bFaultResetPulse другое поведение: пока кнопка нажата, он попеременно включается и выключается. При настройке diFaultResetPulse = 1 он включён одну секунду, выключен одну секунду, затем повторяет это до отпускания кнопки.
Если кнопку отпустить раньше, выход выключится сразу. Короткая команда с панели также не продлевается до одной секунды. При настройке 0 или отрицательном значении этот выход не включается. На обычный сброс такая настройка не влияет.
Сигналы для отображения на панели
| Сигнал | Что показывать |
|---|---|
View.CabinetController_Inst_out_bPowerControl |
Наличие напряжения |
View.CabinetController_Inst_out_bWorking |
Установка включена |
View.CabinetController_Inst_out_bWorkAndPower |
Установка включена и есть питание |
View.CabinetController_Inst_out_bEmergencyStop |
Экстренный останов |
View.CabinetController_Inst_in_bBlock |
Блокировка работы |
Перед генерацией
Если сейчас нужна только программа, откройте у этого компонента область «Экспорт MetaLab» и удалите заполненные строки в своём проекте. После этого можно генерировать без сценариев.
Если будете выполнять виртуальную наладку, оставьте экспорт и импортируйте в раздел MetaLab следующие компоненты из полного архива MetaKit:
| Компонент MetaLab | Файл в архиве MetaKit |
|---|---|
CabinetController |
MetaLab/Lib Scenarios/CabinetController.yaml |
Один шаблон достаточно добавить один раз, даже если он нужен нескольким механизмам. Сохраните указанные имена: по ним MetaPlatform находит нужный сценарий. Сами значения для механизмов будут подставлены при генерации.
При заполненном экспорте отсутствие шаблона остановит генерацию. Этот шаг нужен для MetaCore, CODESYS 3.5 и Siemens TIA Portal; для CODESYS 2.3 сценарии MetaLab не создаются.