General — общее управление установкой
General объединяет общий пуск и останов установки, контроль питания, сброс аварий и общие аварийные сигналы. Его удобно использовать в начале проекта, когда нужно связать оборудование с кнопками и сигналами шкафа управления.
Внутри уже есть CabinetController и два фильтра: до восьми общих аварий и до восьми предупреждений. Отдельно добавлять эти блоки не нужно. Если CabinetController уже используется, для дополнительной группы сигналов возьмите FltsWrns.
Состав и связи
General уже содержит CabinetController. Добавьте один из этих компонентов; второй CabinetController для того же проекта не нужен.
Первое подключение
Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.
Перед генерацией выберите вариант работы с MetaLab: добавить готовые сценарии или пока отключить их создание.
Рассмотрим насосную установку. На шкафу есть кнопки пуска, останова, экстренного останова и сброса аварий. Протечка должна остановить автоматическую работу установки, а открытая дверь шкафа — только показать предупреждение.
1. Подключите сигналы шкафа
Добавьте General один раз и заполните параметры:
| Параметр | Что указать |
|---|---|
CabCtlStart |
Сигнал кнопки «Пуск» |
CabCtlStop |
Сигнал кнопки «Стоп» |
CabCtlEStop |
Сигнал экстренного останова |
CabCtlPowerOk |
Наличие напряжения |
CabCtlFaultReset |
Сигнал кнопки «Сброс аварий» |
Для команд TRUE означает «команда подана». Для CabCtlPowerOk TRUE означает «напряжение есть». Если контакт имеет обратную полярность, укажите инверсию. Если сигнал уже обработан фильтром, используйте выход этого фильтра.
2. Добавьте общую аварию и предупреждение
| Параметр | Значение для примера |
|---|---|
FltBlockId |
General_Flts |
FltComment |
Общие аварии |
FltId1 |
LEAK |
FltComment1 |
Протечка |
FltIn1 |
bLeak |
FltEnable1 |
true |
FltAutoReset1 |
false |
WrnBlockId |
General_Wrns |
WrnComment |
Общие предупреждения |
WrnId1 |
DOOR_OPEN |
WrnComment1 |
Открыта дверь шкафа |
WrnIn1 |
bDoorOpen |
WrnEnable1 |
true |
WrnAutoReset1 |
true |
bLeak и bDoorOpen замените сигналами своего проекта. Входы должны быть TRUE при наличии соответствующей причины. Неиспользуемые каналы оставьте с пустыми ID. Если первая причина тоже не нужна, удалите её начальный _ID_.
3. Свяжите оборудование с общим управлением
General создаёт CabinetController_Inst. Укажите его в поле Parent готовых узлов; у отдельных Engine и Valve это поля EngParent и ValParent.
Так оборудование получает питание, экстренный останов и сбросы от шкафа. Для запуска оборудования программа использует CabinetController_Inst.out_bWorking — установка включена, либо out_bWorkAndPower — включена и есть питание. По этому признаку программа выполняет нужную последовательность и подаёт команды механизмам. Одно поле Parent эту последовательность не задаёт.
Например, после общего пуска программа открывает клапан и затем включает насос. После общего останова снимает запросы их автоматической работы.
4. Как это будет работать
После нажатия «Пуск» установка остаётся включённой до останова или блокировки. Короткое нажатие кнопки запоминается; держать её не нужно.
При протечке включается аварийный канал, General блокирует общий пуск и снимает состояние «Установка включена». После устранения протечки оператор сбрасывает аварию и снова запускает установку. Закрытие двери само снимает предупреждение; оно не блокирует общий пуск.
Пуск, останов и питание
| Событие | Результат |
|---|---|
| Нажали «Пуск», питание есть, запретов нет | Установка включена |
| Нажали «Стоп» | Общее разрешение работы снимается |
| Сработала любая общая авария | Общий пуск блокируется, состояние работы снимается |
| Сработало предупреждение | Появляется предупреждение; общий пуск сохраняется |
| Экстренный останов | Разрешение работы снимается, экстренный останов передаётся оборудованию |
| Пропало питание | Признаки питания снимаются сразу; состояние работы сохраняется на время фильтра |
При одновременном пуске и останове выполняется останов. Общая авария действует через блокировку CabinetController; она не подменяет сигнал экстренного останова и не задаёт сама реакцию ручного управления каждого механизма.
Начальный фильтр отсутствия напряжения — 3 с. Если питание восстановилось раньше, запомненный общий пуск сохраняется. Если позже — при обычном пуске от кнопки потребуется новое нажатие. Состояние питания передаётся оборудованию без ожидания фильтра.
Внутри General сначала вызывается CabinetController, затем фильтры. Поэтому вновь сработавшая общая авария поступает в блокировку CabinetController на следующем цикле программы.
Сброс и повторный пуск
Общий сброс поступает сразу в оба фильтра General и передаётся связанному оборудованию. При FltAutoResetN = false авария сохраняется после исчезновения причины. Сброс снимает её, когда причина устранена или проверка канала запрещена. Активная причина при разрешённой проверке остаётся.
При WrnAutoResetN = true предупреждение снимается после исчезновения причины без нажатия кнопки. Способ сброса выбирается отдельно у каждого канала: авария тоже может иметь автосброс, а предупреждение — требовать ручного сброса.
Если общая авария снялась автоматически, это ещё не новое нажатие «Пуск». При начальной настройке bStartOnTrig = true установку нужно запустить снова.
Шунт отключает отдельную причину и сразу снимает её срабатывание. Снятие разрешения канала прекращает новые срабатывания, но при выключенном автосбросе уже записанная причина ждёт сброса.
Состав
| Экземпляр при начальных ID | Назначение |
|---|---|
CabinetController_Inst |
Общий пуск, останов, питание и сбросы |
General_Flts_SgnlsFltr_Inst |
Восемь общих аварий; общий выход блокирует пуск |
General_Wrns_SgnlsFltr_Inst |
Восемь общих предупреждений |
Имя CabinetController_Inst фиксировано. Не добавляйте второй General или отдельный CabinetController с тем же именем в ту же область программы. ID фильтров можно изменить в Params.
Параметры компонента — Params
| Параметр | По умолчанию | Назначение |
|---|---|---|
$General |
Общая логика ПЛК |
Название группы параметров. |
CabCtlStart |
_DI_ |
Общий пуск. |
CabCtlStop |
_DI_ |
Общий останов. |
CabCtlEStop |
_DI_ |
Экстренный останов. |
CabCtlPowerOk |
_DI_ |
TRUE — напряжение есть. |
CabCtlFaultReset |
_DI_ |
Общий сброс аварий. |
$Flts |
Общие аварии |
Название группы параметров аварий. |
FltBlockId |
General_Flts |
ID аварийного фильтра. |
FltComment |
Общие аварии |
Название аварийной группы в комментариях. |
$Wrns |
Общие предупреждения |
Название группы параметров предупреждений. |
WrnBlockId |
General_Wrns |
ID предупредительного фильтра. |
WrnComment |
Общие предупреждения |
Название предупредительной группы в комментариях. |
Поля каждого канала
N — номер от 1 до 8. Например, FltIdN означает поля FltId1, FltId2, FltId3, FltId4, FltId5, FltId6, FltId7, FltId8. То же правило действует для остальных строк таблицы.
| Параметры | Канал 1 | Каналы 2–8 | Назначение |
|---|---|---|---|
FltIdN, WrnIdN |
_ID_ |
Пусто | ID причины. Пустой ID исключает канал |
FltCommentN |
авария |
Пусто | Название аварийной причины |
WrnCommentN |
предупреждение |
Пусто | Название предупредительной причины |
FltInN, WrnInN |
_DI_ |
Пусто | TRUE — причина присутствует |
FltEnableN, WrnEnableN |
true |
Пусто | Условие проверки канала |
FltAutoResetN |
false |
Пусто | TRUE — снимать аварию автоматически |
WrnAutoResetN |
true |
Пусто | TRUE — снимать предупреждение автоматически |
Пустые поля каналов 2–8 не являются настройками для работающего канала. При заполненном ID задайте также вход, разрешение и способ сброса.
Настройки каналов во время работы — Conf
У каждой используемой причины свои задержка и шунт. Для примера выше:
| Настройка | Тип | Начальное значение | Назначение |
|---|---|---|---|
Conf.General_Flts_SgnlsFltr_LEAK_diDelay |
DINT |
0 |
Задержка срабатывания, с |
Conf.General_Flts_SgnlsFltr_LEAK_bBypass |
BOOL |
false |
TRUE — отключить канал и снять его срабатывание |
Conf.General_Wrns_SgnlsFltr_DOOR_OPEN_diDelay |
DINT |
0 |
Задержка срабатывания, с |
Conf.General_Wrns_SgnlsFltr_DOOR_OPEN_bBypass |
BOOL |
false |
TRUE — отключить канал и снять его срабатывание |
Имя настройки содержит ID группы и ID причины. Настройки создаются только для каналов с заполненным ID.
Результаты фильтров
| Поле экземпляра | Тип | Назначение |
|---|---|---|
General_Flts_SgnlsFltr_Inst.out_bQ |
BOOL |
Есть хотя бы одна сработавшая причина. |
General_Flts_SgnlsFltr_Inst.out_bBypass |
BOOL |
Включён хотя бы один шунт группы. |
General_Flts_SgnlsFltr_Inst.out_Signal1_bQ |
BOOL |
Сработал канал 1; для остальных каналов используются Signal2–Signal8. |
General_Wrns_SgnlsFltr_Inst.out_bQ |
BOOL |
Есть хотя бы одна сработавшая причина. |
General_Wrns_SgnlsFltr_Inst.out_bBypass |
BOOL |
Включён хотя бы один шунт группы. |
General_Wrns_SgnlsFltr_Inst.out_Signal1_bQ |
BOOL |
Сработал канал 1; для остальных каналов используются Signal2–Signal8. |
Для панели те же результаты находятся в View: например, View.General_Flts_SgnlsFltr_Inst_out_bQ и View.General_Flts_SgnlsFltr_Inst_out_Signal1_bQ. Отдельные выходы каналов публикуются при заполненном ID. Общие выходы группы публикуются всегда.
Другие способы управления
Пуск от переключателя
Если вместо кнопки используется переключатель с постоянным положением «Работа», задайте Conf.CabinetController_bStartOnTrig = false.
Тогда сигнал на CabCtlStart означает: установка должна работать, пока нет запретов. После устранения блокировки, снятия экстренного останова или восстановления питания она снова получит разрешение на работу, если переключатель остался включённым и команда «Стоп» снята.
Снятие самого сигнала CabCtlStart не останавливает установку. Для останова нужен сигнал CabCtlStop.
Управление с панели оператора
Общий пуск, останов и сбросы доступны также с панели. Их команды приведены в справочнике ниже. Команды «Пуск», «Стоп» и сброса обрабатываются один раз, после чего компонент сам обнуляет их.
Экстренный останов с панели сохраняется, пока его не снимут. Его также снимает отпускание физической кнопки экстренного останова: переход CabCtlEStop из TRUE в FALSE очищает команду панели.
Настройки во время работы — 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 |
|---|---|
General |
MetaLab/Sys Scenarios/General.yaml |
Один шаблон достаточно добавить один раз, даже если он нужен нескольким механизмам. Сохраните указанные имена: по ним MetaPlatform находит нужный сценарий. Сами значения для механизмов будут подставлены при генерации.
При заполненном экспорте отсутствие шаблона остановит генерацию. Этот шаг нужен для MetaCore, CODESYS 3.5 и Siemens TIA Portal; для CODESYS 2.3 сценарии MetaLab не создаются.