Линковка движущихся лазеров

Движущиейся лазеры и сенсоры движ лазеров отдельные устройства. Нужно их соединить в пару - этот процесс и называется линковка.

Процедура сопряжения движущихся лазеров необходима для работы системы “Движущийся лазер”, т.к. она состоит из двух устройств не связанных напрямую. Сопряжение позволяет установить, какой движущийся лазер светит в каждый из длинных фотоприемников для того, чтобы при пересечении луча выключать именно прерванный луч.


Внимание: Перед линковкой нужно сделать разлинковку.


Суть

Сенсоры проверяют соответствует ли комната подходящим условиям. Движ лазеры поочереди начинают загораться. Как только на сенсоре значения поднялись - номер движущегося лазеры присваивается сенсору.

Сценарий

  1. Посылается команда замера КТ.
  2. Идет замер КТ.
  3. Движущийся лазер загорается.
  4. Номер движущегося лазера передается сенсору
  5. Сенсор теперь имеет номер лазера (например, если М1 попадает в сенсор, то сенсор будет №1).
  6. Далее история повторяется со остальными движущимися.

Визуальное отслеживание состояния

Состояние сопряжения можно проверить по поведению светодиода около кнопки 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