Линковка движущихся лазеров
Движущиейся лазеры и сенсоры движ лазеров отдельные устройства. Нужно их соединить в пару - этот процесс и называется линковка.
Процедура сопряжения движущихся лазеров необходима для работы системы “Движущийся лазер”, т.к. она состоит из двух устройств не связанных напрямую. Сопряжение позволяет установить, какой движущийся лазер светит в каждый из длинных фотоприемников для того, чтобы при пересечении луча выключать именно прерванный луч.
Внимание: Перед линковкой нужно сделать разлинковку.
Суть
Сенсоры проверяют соответствует ли комната подходящим условиям. Движ лазеры поочереди начинают загораться. Как только на сенсоре значения поднялись - номер движущегося лазеры присваивается сенсору.
Сценарий
- Посылается команда замера КТ.
- Идет замер КТ.
- Движущийся лазер загорается.
- Номер движущегося лазера передается сенсору
- Сенсор теперь имеет номер лазера (например, если М1 попадает в сенсор, то сенсор будет №1).
- Далее история повторяется со остальными движущимися.
Визуальное отслеживание состояния
Состояние сопряжения можно проверить по поведению светодиода около кнопки Reset на Moving- и LSensor-платах.
| Тип мигания | Интервал мигания | Состояние платы |
|---|---|---|
| Не мигает | >30 сек | Зависание |
| Не мигает | 5-30 сек | Идет калибровка |
| Несколько быстрых миганий | 5 сек | Сопряжено |
| Равномерное | 1-2 сек | Не сопряжено |
Если устройство сопряжено, то каждые 5 секунд светодиод будет мигать на 1 раз больше своего логического номера.
LSСписок значимых переменных
- MaxKT - максимально допустимое значение темноты (совпадает с настройками для калибровки)
- DeviceId - логический номер движущегося лазера, с которым сопряжен LSensor
MOVСписок значимых переменных
- Флаг сопряжения
- DeviceId - логический номер устройства
LSПроверка линковки
Если сенсор не сопряжен с движущимся лазером, то калибровка не запустится, а на сервер придет сообщение “Sensor is not linked”
MOVПроверка линковки
Если движ. лазер не сопряжен ни с каким сенсором, то калибровка не запустится, а на сервер придет сообщение “Laser is not linked” ##
##
##
Алгоритм сопряжения
Устройства можно слинковать только если они еще не сопряжены.
MOVПроверка темного состояния
Все движущиеся лазеры выключаются (и их нельзя включить следующие 200мс) и едут в середину установленных углов. ##
##
##
LSПроверка темного состояния
- Ожидание 100мс
- Поиск самой яркой пластины
- Если значение на самой яркой пластине превышает MaxKT, то отсылается ошибка типа “Linking” о превышении КТ с указанием, на какой оно пластине. ##
##
##
MOVСопряжение
Если номер в событии совпадает с DeviceId, то лазер загорается на 500 мс. ##
##
##
LSСопряжение
- Случайное ожидание от 100 до 250мс
- Поиск самой яркой пластины
- Если значение на самой яркой пластине не меньше 2200, то:
- DeviceId уставливается в номер лазера, пришедший в событии
- Отправляется событие
linkedс новым значением DeviceId - Сохранение в память DeviceId
##
##
##
MOVПодтверждение сопряжения
По событию подтверждения линковки происходит:
- установка флага линковки
- выключение лазера
- сохранение в память флага линковки
##
##
##
Сброс сопряжения
LSСброс сопряжения
- DeviceId устанавливается в значение 0
- DeviceId сохраняется в память
##
##
##
MOVСброс сопряжения
- Выключается лазер
- Флаг линковки сбрасывается
- Флаг линковки сохраняется в память
##
##
##
Reference
Запустить линковку можно с помощью события start_link с параметром link_all.
| Событие | Запрос |
|---|---|
start_link |
(string) link_all |
Пример запроса:
socket.emit('start_link', 'link_all');
Разлинковать все
Запустить линковку можно с помощью события start_link с параметром unlink_all.
| Событие | Запрос |
|---|---|
start_link |
(string) unlink_all |
Пример запроса:
socket.emit('start_link', 'unlink_all');
Changelog
27.06.18 ipacmanx - добавил суть и сценарий и reference
26.06.18 - epicstrike - init
Posts
subscribe via RSS