Найти тему
Мастер Кит DIY

Автоматизация управления шлагбаумов КПП

Оглавление

Рассмотрим решение следующей практической задачи автоматизации управления шлагбаумов КПП:

Необходима следующая логика работы автоматики КПП на ВЪЕЗД на территорию.

На въезде установлены 2 шлагбаума, чтобы отсекать "паровозик". Перед шлагбаумом №1 стоит светофор. Начальное состояние - горит зелёный, приглашая машины на ВЪЕЗД.

Машина подъезжает к шлагбауму №1 на ВЪЕЗД. Наезжает на петлю №1, контроллер переключает светофор с зелёного на красный. Следующие машины останавливаются на СТОП-ЛИНИИ.

Номер считывается видео-камерой и обрабатывается на внешнем сервере (софт распознавания автомобильных номеров). Считаем, что номер в белом списке. Машина находится на токовой петле. Шлагбаум № 2 закрыт. Между шлагбаумами нет другой машины.

Идет сигнал от нашей системы на контроллер Laurent-5, который учитывает, что машина на петле перед шлагбаумом №1 и замкнут контакт, что номер допускается на территорию, шлагбаум №2 закрыт.

Машина проезжает к шлагбауму №2, который закрыт. Светофор горит красным. Как только машина пересекает датчик под стрелой, шлагбаум самостоятельно закрывается за машиной, отсекая "паровоз" из следующих машин.

Машина находится между двух закрытых шлагбаумов. В этот момент происходит установление статусов: машина перед шлагбаумом №2 = петля дает сигнал, шлагбаум №1 закрыт. Если всё так, то идёт команда на открытие шлагбаума №2.

Контроллер ожидает проезда машины через токовую петлю №3 на территорию и закрывает шлагбаум № 2. По статусам датчиков фиксируется, что машины нет между шлагбаумов, шлагбаумы закрыты, тогда контроллер дает команду на светофор = загорается зелёный, приглашая следующую машину на ВЪЕЗД. Контроллер переводится в начальный режим и ожидает ТС перед шлагбаумом №1. Алгоритм повторяется.

Иллюстрация КПП на котором нужно автоматизировать процесс управления шлагбаумами с помощью системы CAT модуля Laurent-5

Такую задачу автоматизации можно легко решить с помощью модуля MP712m Laurent-5 и системы автономных логических правил CAT.

1. Аппаратные ресурсы

Определимся с аппаратными ресурсами модуля Laurent-5 которые будем задействовать для контроля и управления системой.

Элемент КППРесурс модуляПоясненияЗеленый светофор

Реле RELE_1

Включением реле будем "зажигать" зеленый светофор, выключением - соответственно, гасить зеленый цвет

Красный светофор

Реле RELE_2

Аналогично

Шлагбаум №1

Реле RELE_3

Короткое включение реле (на 2 сек) будет инициировать поднятие шлагбаума (при этом считаем что шлагбаум закрывается самостоятельно)

Шлагбаум №2

Реле RELE_4

Короткое включение реле (на 2 сек) будет инициировать поднятие шлагбаума если он закрыт и спровоцирует его закрытие если он открыт (считаем что у этого шлагбаума закрытие автоматически не выполняется, нужно в явном виде подать команду управления).

Токовая петля №1

Входная оптоизолированная линия IN_1

Высокий уровень сигнала (логическая 1) означает, что над петлей находится автомобиль, низкий (логический 0) - автомобиля нет

Токовая петля №2

IN_2

Аналогично

Токовая петля №3

IN_3

Аналогично

Датчик открытия шлагбаума №1

IN_4

Если шлагбаум открыт - на линии будет высокий логический уровень сигнала, лог. 0 - если закрыт

Датчик открытия шлагбаума №2

IN_5

Аналогично

Всю логику управления создадим используя связки логических правил CAT: событие (+дополнительные условия) → реакция. Эти связки хранятся в энергонезависимой памяти модуля (т.е. не пропадут при сбросе питания) и будут выполняться автономно без участия пользователя.

Заходим в WEB панель управления модулем (по умолчанию, IP = 192.168.0.101, логин / пароль: admin / Laurent ), переходим в раздел CAT.

-2

2. Исходное состояние

Первым делом, создадим правило (событие) по которому система должна устанавливаться в исходное состояние, а именно: в том случае если на всех "петлях" нет автомашины и оба шлагбаума закрыты - то следует погасить красный светофор и включить зеленый, тем самым приглашая автомобили на въезд.

Решим эту часть задачи с помощью события "таймер" по системному времени - будем раз в секунду проверять все названные условия и если они выполняются - производить управление огнями светофора через реле.

-3

Настроим событие так что бы оно "пыталось" выполняться (если и другие условия будут выполнены, см. далее) каждую секунду (время с момента старта модуля по модулю 1):

-4

А вот и дополнительные условия - нам нужно что бы на всех задействованных входах от датчиков (линии IN_1 - IN_5) не было сигнала (т.е. шлагбаумы закрыты, машины над петлями нет).

-5

Теперь реакция - задаем ее в виде списка Ke-команд. В частности, включаем 1-ое реле (загорается зеленый светофор), выключаем красный (RELE_2).

Полный список всех Ke-команд поддерживаемых модулем можно найти в соответствующем документе Описание Ke-команд управления.

-6

В данной логике есть некоторая тонкость - если условия для срабатывания оставить в таком виде, то событие начнет срабатывать многократно (а именно каждую секунду) до тех пор, пока не появится машина в зоне КПП (ведь все датчики в исходном состоянии когда нет автомобиля будут давать логический ноль на выходе).

В данном конкретном случае это не является проблемой (систему это не перегрузит, т.к. трудоемких операций в рамках реакции не производится - просто производится управление реле).

Однако, в том случае, если было бы нужно, чтобы реакция по данному событию была выполнена единожды (до следующего заезда машины на КПП), то нужно ввести дополнительные команды. В частности, можно выключить обработку данного события после его срабатывания с помощью Ke-команды $KE,CAT,x,SET,OFF (где x - ID события CAT). И включать данное событие как только одна из петель сработает, чтобы система вновь могла вернуться в исходное состояние.

-7

Обусловимся для упрощения изложения что дополнительное управление работой 1-го события (возвращающего систему в исходное состояние) производится не будет.

Для удобства на следующем шаге создания CAT события присвоим символическое имя данному логическому правилу.

-8

Все, событие создано. По умолчанию, сразу после создания CAT событие будет выключено. Его следует включить соответствующей "кнопочкой" в панели управления.

-9

Поскольку в исходном состоянии у нас шлагбаумы закрыты и "петли" пустые - то как было описано выше, событие будет срабатывать каждую секунду до тех пор пока не появится автомобиль в зоне КПП.

-10

3. Появление автомобиля

А вот собственно и автомобиль заезжает на 1-ую токовую петлю и останавливается перед шлагбаумом в ожидании того, что его пропустят. Соответственно, на входе контроллера Laurent-5 IN_1 появляется высокий уровень сигнала. Давайте обработаем это событие с помощью CAT.

-11

Будем реагировать на изменение уровня сигнала на линии IN_1 с низкого на высокий.

-12

Реакция - нужно погасить зеленый и включить красный светофор. А так же нам нужно как-то проинформировать софт распознавания автомобильных номеров о том, что появилась машина в зоне видимости видеокамеры и нужно определить номер, проверить его по базе и если доступ разрешен - подать сигнал на контроллер Laurent-5 о том что машину можно запускать.

Есть несколько разных способов передать данные от Laurent-5 на внешний софт (сервер) - например, отправить данные с помощью команды $KE,PUT через TCP сервер или TCP клиент. А можно вызвать URL ссылку ( отправить GET запрос) по HTTP. Предположим, что софт анализа автономеров поддерживает работу через GET HTTP запросы. Предположим, что WEB сервер находится на машине с IP = 192.168.0.200 и при обращении к скрипту event.php с параметром cmd=NEW_CAR производится инициирование процесса распознавания.

-13

4. Открываем 1-ый шлагбаум

Итак, подъехала машина и встала перед первым закрытым шлагбаумом над токовой петлей #1. Мы включили красный сигнал светофора и отправили информационное сообщение на софт распознавания автомобильных номеров. Предположим, что номер в белой базе и теперь нам нужно пропустить машину за 1-ый шлагбаум. Об этом внешний софт должен как-то сообщить Laurent-5, а он в свою очередь открыть 1-ый шлагбаум но только при выполнении ряда условий: машина все еще над 1-ой токовой петлей, оба шлагбаума закрыты.

Для этого добавим еще одно CAT событие которое будет пытаться выполняться каждую секунду но только при выполнении ряда дополнительных условий:

  • с 1-ой петли (линия IN_1) есть сигнал (машина над ним)
  • оба шлагбаума закрыты (линии IN_4 и IN_5 - логический ноль)
  • и дополнительный триггер - значение программной переменной VAR_1 должно быть равно, например, 10.

Первые три условия сейчас выполняются. А вот последнее условие ( VAR_1 == 10) которое как раз пока и не позволяет событию сработать - и будет тем "спусковым крючком" который "нажмет" софт распознавания номеров отправив на Laurent-5 команду установки значения для переменной VAR_1, например, так же через GET HTTP запрос.

-14

В качестве реакции на событие (+ выполнение всех дополнительных условий) откроем 1-ый шлагбаум замкнув контакты RELE_3 на 2 секунды. А также сбросим значение переменной VAR_1 в ноль, т.е. деактивируем событие (что бы оно не выполнялось много раз подряд) до тех пор, пока внешний софт снова не решит дать "добро" на открытие 1-го шлагбаума.

-15

В итоге в списке событий должно появиться вот такое.

-16

Итак, машина над 1-ой токовой петлей, софт проверил номер и готов пустить машину через 1-ый шлагбаум. Как он это может сделать? Опять же - есть варианты отправки команд через TCP (как сервер или клиент). А можно и GET HTTP запросом (вызвать URL ссылку) с параметрами. В частности, нужно установить значение программной переменной VAR_1 равным 10 что будет триггером для срабатывания CAT события.

Предположим что у модуля Laurent-5 IP = 192.168.0.101, пароль доступа Laurent (по умолчанию). Тогда достаточно выполнить следующий HTTP запрос на стороне софта распознавания авто-номеров:

http://192.168.0.101/cmd.cgi?psw=Laurent&cmd=VAR,1,SET,10

5. Между двух шлагбаумов

Итак, теперь машина находится между двух закрытых шлагбаумов над токовой петлей #2. Второй шлагбаум закрыт по умолчанию, а первый закроется сам автоматически после проезда автомашины. Необходимо теперь открыть второй шлагбаум, но, при условии того, что первый закрылся (что бы "паровозом" не проехало несколько машин), а машина действительно перед вторым шлагбаумом (токовая петля 2 выдает высокий логический сигнал).

Создадим еще одно событие CAT по таймеру вызываемому каждую секунду и сработающее при дополнительных условиях: токовая петля 2 выдает сигнал (над ней автомашина) на линию модуля IN_2 и оба шлагбаума закрыты (на линиях IN_4 и IN_5 логический ноль).

-17

В качестве реакции подадим управляющий сигнал на 2-ой шлагбаум через RELE_4 включив его контакты на 2 секунды.

-18

В списке CAT событий добавляется еще одно, вновь созданное для автоматизации открытия 2-ого шлагбаума.

-19

Закрываем 2-ой шлагбаум

Итак, второй шлагбаум открыт и автомашина проезжает вперед покидая токовую петлю 2 и заезжая на токовую петлю 3. При необходимости можно обработать событие заезда на 3-ю петлю по изменению уровня сигнала на линии IN_3. В данной статье этот момент пропустим и обработаем только момент покидания автомашиной 3-ей петли, т.е. момент когда нужно закрывать 2-ой шлагбаум.

Создаем новое событие CAT по изменению уровня сигнала на входной оптоизолированной линии IN_3 с высокого уровня (автомашина над петлей) на низкий уровень (машина покинула петлю).

-20

Ставим дополнительное условие - шлагбаум 2 должен быть открыт (высокий уровень сигнала на датчике открытия на линии IN_5):

-21

Реакция - отправка команды через RELE_4 на закрытие шлагбаума (закрывается так же как и закрывается). Результат:

-22

7. Финал

Как только машина покинет 3-ю петлю и будет закрыт 2-ой шлагбаум, сойдутся все условия для события CAT c ID=1 которое занимается возвращением КПП в исходное состояние для ожидания следующей автомашины.

© Дмитрий Иванов

 MP712m Laurent-5
MP712m Laurent-5