[SLOT_n]
mode = conductor

Виртуальный модуль позиционирования: по текущей и целевой позиции выдаёт команды движения приводу.

Совместимость

Виртуальный модуль, аппаратной части не требует. Доступные слоты: 0-9.

Принцип работы

Модуль принимает текущую позицию от энкодера (currentPos) и целевую позицию (targetPos). Он вычисляет направление движения и рапортует runUp или runDown; по достижении цели либо по истечении timeout рапортует stop.

Флаг multiTurn включает многооборотную кинематику: модуль выбирает кратчайший путь к цели через точку перехода между maxVal и minVal.

Применяется там, где привод не умеет позиционироваться сам — например коллекторный двигатель с внешним энкодером.

Топики

База топика события:

  • <deviceName>/conductor_<slot> — например moduleBox/conductor_0

База топика действия:

  • <deviceName>/conductor_<slot> — например moduleBox/conductor_0

Полный топик — база плюс направление и имя: moduleBox/conductor_6/event/runUp.

Опции

Доступные опции:

  • disableOnStartфлаг, стартовать в выключенном состоянии и ждать action/enable со значением 1. По умолчанию модуль активен сразу.
  • minValчисло(int), минимальное значение позиции. По умолчанию 0.
  • maxValчисло(int), максимальное значение позиции. По умолчанию 32767.
  • multiTurnчисло(int), многооборотная кинематика 0-1 по умолчанию 0. Диапазон 0–1. По умолчанию 0.
  • timeoutчисло(int), таймаут в миллисекундах (0 = без таймаута). По умолчанию 0.

События

ТопикPayloadОписание
conductor_<slot>/event/stopстрокаОтчёт остановки двигателя
conductor_<slot>/event/runUpстрокаОтчёт движения вверх
conductor_<slot>/event/runDownстрокаОтчёт движения вниз
conductor_<slot>/event/enable0 / 1Состояние модуля - активен 1 или спит 0

Пример: топик moduleBox/conductor_6/event/runUp, payload 1.

Команды

ТопикPayloadОписание
conductor_<slot>/action/currentPosцелоеТекущая позиция — приходит от энкодера
conductor_<slot>/action/targetPosцелоеЦелевая позиция
conductor_<slot>/action/stopОстановить двигатель
conductor_<slot>/action/enable0 / 1Включить (1) или выключить (0) модуль

Примеры

[SLOT_6]
mode = conductor
options = minVal:0, maxVal:1000, timeout:5000
;позиция от энкодера, команды движения - на выходы
crosslink = encoder_0/event/val:@->conductor_6/action/currentPos:@, conductor_6/event/runUp:1->out_1/action/ch_0:1, conductor_6/event/runDown:1->out_1/action/ch_1:1, conductor_6/event/stop:1->out_1/action/ch_0:0

Управление приводом с обратной связью от энкодера, таймаут 5 секунд.

[SLOT_7]
mode = conductor
options = minVal:0, maxVal:360, multiTurn:1
;поворотный стол на 360 позиций - модуль выбирает кратчайший путь
crosslink = encoder_0/event/val:@->conductor_7/action/currentPos:@

Подробнее — внутренние связи (crossLink).