Документация Matryoshka ClearCore

Версия прошивки - Katzenkran


Запросы и ответы

Получение текущей конфигурации (gcf — get config)

Пример запроса

{"cmd": "gcf", "rng": 2, "grp": 1, "unt": "b"}

Пример ответа

{"cmd": "gcf", "rng": 2, "grp": 1, "unt": "b", "rol": "m", "cfg": "{2,1,-80,80,10000,0,15000,7000,1150,0,5000,5000}"}

Заметки


Получение текущего статуса (sts — status)

Пример запроса

{"cmd": "sts", "rng": 2, "grp": 1, "unt": "b"}

Пример ответа (от юнита A)

{"cmd": "sts", "rng": 12, "grp": 6, "unt": "a"}

Пример ответа (от юнита B в режиме Slave)

{"cmd": "sts", "rng": 2, "grp": 1, "unt": "b", "rol": "s", "sts": {"M2": "-15/0..0(ALM)", "M3": "-15/0..0(ALM)"}}

Пример ответа (от юнита B в режиме Master)

{"cmd": "sts", "rng": 2, "grp": 1, "unt": "b", "rol": "m", "pos": 0, "sts": {"A": 0, "B": 0, "EN": 0, "ALM": 0, "M2": "-15/0..0(ALM)", "M3": "mute"}}

Заметки


Перезагрузка (rst — reset)

Пример запроса

{"cmd": "rst"}

Пример ответа

никто не отвечает на этот запрос, все перезагружаются моментально

Заметки


Простая команда движения (mtn — motion)

Пример запроса

{"cmd": "mtn", "rng": 2, "out": "p", "ind": 1, "vel": 500, "pos": 700}

Пример ответа

эхо, если команда получена и принята к исполнению

Заметки


Продвинутая команда движения (amt — advanced motion)

Пример запроса

{"cmd": "amt", "rng": 2, "dat": "p0104000800"}

Пример ответа

эхо, если команда получена и принята к исполнению

Правила составления строки dat

T_II_VVVV_PPPP (без подчеркиваний)

Если позиция или скорость имеет меньше 4 цифр, то слева дописываются нули, чтобы стало 4 цифры. Аналогично с индексом, но там 2 цифры. Например, хотим сказать тилту №5, чтобы поехал в позицию 200 со скоростью 500:

t0505000200

Если нужно отправить несколько движков в одном пакете, то делаем так (просто соединяем строки без разделителей):

t0505000200t0602000500t0702000500

На один мотор ВСЕГДА приходится 11 символов. В качестве индекса домкрата следует использовать 0.

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


Обновление конфигурации по UDP (cfg — config)

Пример запроса

{"cmd": "cfg", "str": "{0,0,-20,20,10000,0,15000,7000,1150,0,5000,5000}"}

Пример ответа

никто не отвечает на этот запрос, все перезагружаются моментально

Заметки


Включение линии enable на домкратах (enb — enable)

Пример запроса

{"cmd": "enb", "rng": 2}

Пример ответа

ничего не отвечает

Заметки


Отключение домкратов (dis — disable)

Пример запроса

{"cmd": "dis", "rng": 2}

Пример ответа

ничего не отвечает

Заметки


Формат и логика работы beacon (ранее ping)

Каждые 15 секунд мастер отсылает beacon-пакет (от англ. beacon — маяк) на IP адрес, с которого он последний раз получал пакеты (или на 10.10.16.2, если пакетов ещё не было). Аналогично работают остальные контроллеры, но beacon отсылается раз в 30 секунд, и только при условии, что нет fault.

Формат beacon пакета мастера

{"msg": "beacon", "rng": 2, "grp": 1, "unt": "b", "pos": 0, "enb": 0, "ip": "10.10.16.72"}

Формат beacon пакета остальных контроллеров

{"msg": "beacon", "rng": 2, "grp": 1, "unt": "b", "ip": "10.10.16.72"}

Особые поля


Формат и логика работы fault

Обычные ошибки

Периодически (мастер - раз в 15 секунд, остальные - раз в 30 секунд) контроллеры отсылают на IP адрес, с которого они получили последний пакет (или 10.10.16.2, если они ещё не получали пакетов), сообщения об имеющихся ошибках. Формат сообщений следующий:

{"msg": "fault", "rng": 2, "grp": 1, "unt": "b", "out": "l", "ind": 0, "flt": -4}

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

Для наклоняторов и выдвигаторов существует только один код ошибки:

Повреждения линии синхронизации

Существуют особые ошибки, которые относятся только к повреждениям линии синхронизации и отправляются только с мастера. Для таких ошибок поле "out" равняется "w" (от слова wiring), поле "flt" всегда равно -7, а "ind" указывает номер линии, которая не прошла проверку на целостность. Ошибки линии синхронизации отправляются сразу же после обнаружения. Индексы линий:

Например, пакет {"msg": "fault", "rng": 2, "grp": 1, "unt": "b", "out": "w", "ind": 2, "flt": -7} свидетельствует о разрыве линии Alarm.

При наличии таких ошибок работа домкратов запрещена на уровне прошивки до устранения неисправности.


Вычисление IP адреса, который задаёт себе контроллер при загрузке

Контроллер задаёт себе IP адрес вида 10.10.X.Y, маску подсети 255.255.252.0 (/22), и шлюз 10.10.16.1. В формулах далее все деления целочисленные, а знак процента означает взятие модуля.

X = 16 + (Ring - 1) / 10

Y = 51
+ ((Ring - 1) % 10) * 20
+ (Group - 1) * 2
+ (0 для юнита А, 1 для юнита B)


Используемые порты

Контроллер принимает пакеты на порт 8800 + Ring. Например, контроллеры третьего кольца ожидают данные на порте 8803.

Контроллер отправляет пакеты на порт 9900 + Ring. Например, контроллеры 12 кольца отправляют данные на порт 9912.