Project

General

Profile

6.2. Описание протокола обмена (v17.5)

Описание протокола

Управление контроллером с ПК происходит по интерфейсу последовательного порта (COM-порт). На стороне контроллера жёстко установлены следующие параметры COM-порта:
Скорость – 115200 бод;
Длина кадра – 8 бит;
Стоп-биты – 2 бита;
Чётность – нет.
Контроль потока – нет(Xon/Xoff, CTS/RTS не используются).
Таймаут на получение, между байтами одного пакета – 400 мсек.
Порядок следования бит – LittleEndian.
Многобайтовые типы данных передаются младшим байтом вперёд.

Исполнение команд

Базовый принцип протокола - "Запрос-Ответ", причём все обмены данными инициируются ПК, т.е. ПК посылает команды в контроллер, но не наоборот. Каждая команда подразумевает получение ответа от контроллера (кроме редких случаев специальных команд), т.е. нельзя послать несколько команд подряд, без ожидания ответа на них.
Все команды делятся на сервисные, штатные управляющие и штатные информационные.
Команды выполняются сразу после их поступления в контроллер. Установленные командой SХХХ параметры начинают влиять на текущее движение в течение 1 мс после установки.
Обработка команды не влияет на своевременность выполнения контроллером действий связанных с оперативным управление и контролем двигателя (работа ШИМ, взаимодействие с энкодером и т.п.).
И контроллер и ПК обладают буфером обмена. Принятые команды и данные, в случае их наличия в команде, обрабатываются один раз. То есть, после обработки эти данные удаляются из буфера и обрабатываются уже новые пришедшие байты.
Каждая команда состоит из четырёхбайтной строки, данных (если команда их предусматривает) и двухбайтного кода контроля CRC если команда содержит данные. Данные могут пересылаться как из компьютера, так и контроллером. Команда передаётся на обработку если она распознана и, в случае передачи данных, код CRC верный. После обработки пришедшей без ошибок команды контроллер посылает в компьютер четырехбайтную строку – наименование выполненной команды, затем данные, если формат команды это предусматривает, затем два байта CRC (если есть данные).

Обработка ошибок на стороне контроллера

Неверные команды или данные

Если пришедшая в контроллер команда не может быть интерпретирована, как определенная команда управления, то в компьютер посылается строка "errc", команда игнорируется, в данных текущего состояния контроллера выставляется бит "команда не распознана". Если нераспознанная команда содержала данные, то возможно неверная интерпретация принятых данных как новых команд. Необходима синхронизация.
Если пришедшая в контроллер команда интерпретирована верно, команда предусматривала данные, они пришли, но два байта CRC не соответствует полученным с ней данным, то в данных текущего состояния контроллера устанавливается флаг ошибки CRC пришедших данных, в компьютер посылается строка "errd", текущая команда игнорируется. Синхронизация приёма/передачи с компьютером не нужна.

Расчёт CRC

CRC рассчитывается для передаваемых данных. Четыре байта команды в расчёте не участвуют. Алгоритм CRC на языке Си:

unsigned short CRC16(INT8U *pbuf, unsigned short n)
{
  unsigned short crc, i, j, carry_flag, a;
  crc = 0xffff;
  for(i = 0; i < n; i++)
  {
    crc = crc ^ pbuf[i];
    for(j = 0; j < 8; j++)
    {
      a = crc;
      carry_flag = a & 0x0001;
      crc = crc >> 1;
      if ( carry_flag == 1 ) crc = crc ^ 0xa001;
    }
  }
  return crc;
}

Функция получает указатель на массив данных pbuf, длину данных в байтах n. Функция возвращает двубайтное слово - код CRC.

Сбои передачи

Наиболее вероятны следующие сбои в канале связи: исчезновение байта при приёме или передаче контроллером, возникновение лишнего байта при приёме или передаче контроллером и изменение принятого или посланного байта.
Сбои происходят при нестандартных условиях и обычно не наблюдаются вообще. Регулярные сбои возможны при некачественном, сломанном кабеле USB или соединительном кабеле между платами. Протокол не разрабатывался для штатного применения в условиях сильно нестабильной связи. В частности в таких условиях редко возможно выполнение не той команды, что была послана.

Исчезновение байта на стороне контроллера
Байт, ожидаемый, но не полученный контроллером, приводит к таймауту компьютера. Посылка команды считается компьютером неуспешной. На этот момент синхронизация передачи данных будет нарушена, но восстановится по таймауту (если таймаут контроллера меньше таймаута компьютера с учётом времени пересылки).

Исчезновение байта на стороне компьютера
Байт, не полученный компьютером, приводит к таймауту компьютера. Синхронизация не нарушена.

Возникновение байта на стороне контроллера
Лишний байт, возникший при приёме контроллером, приводит к получению компьютером одного или нескольких errc либо errd (очень редко сочетания errc и errd). Посылка команды считается неуспешной. В приёмном буфере компьютера может появиться несколько err? ответов контроллера. На этот момент синхронизация нарушена.

Возникновение байта на стороне компьютера
Байт, возникший при приёме компьютером, приводит к неверно принятой команде или неверному коду CRC. Кроме того, в приёмном буфере останется лишний байт. На этот момент синхронизация нарушена.

Изменение байта на стороне контроллера
Байт, изменившийся при приёме контроллером, приводит к получению компьютером одного или нескольких errc либо errd (очень редко сочетания errc и errd). Посылка команды считается неуспешной. В приёмном буфере компьютера может появиться несколько err? ответов контроллера. Обычно синхронизация не нарушается, но редко она может быть нарушена.

Изменение байта на стороне компьютера
Байт, изменившийся при приёме компьютером, приводит к неверно принятой команде или неверному коду CRC. На этот момент синхронизация не нарушена.

Восстановление синхронизации методом таймаута

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

Восстановление синхронизации методом очистительных нулей

Ни одна команда не начинается нулём ('\0'). Поэтому возможен такой метод синхронизации: контроллер на каждый полученный первый байт команды равный нулю отвечает нулём, а компьютер игнорирует первые байт ответа если он равен нулю и переходит к рассмотрению следующего. Тогда в случая когда синхронизация нарушена на стороне компьютера или контроллера, но еще не прошло время таймаута контроллера, возможен следующий алгоритм:
Если компьютером в ответ на переданную команду с данными или без, получен от контроллера ответ не на ту команду, errc или errd, то с компьютера в контроллер средствами библиотеки посылается от 4 до 250 нулей (ограничение в 250 байт связано с длиной приёмного буфера и протоколом передачи данных по I2C, а передача менее 4 нулей часто не приведёт к восстановлению синхронизации). При этом происходит постоянное считывание приходящих байт от контроллера до появления первого нуля. После этого и считывание и посылка прекращаются.
Принятый нуль обычно не является частью предыдущей передачи, так как в моменты ошибок контроллер получает ответы errc/errd. В редких случаях (особое изменение байта на стороне контроллера) возможен приём лишнего мусора. Если мусор содержит нуль, то синхронизация пока не восстановилась, но снова пойдут сбои, которые повторно вызовут очистительные нули и синхронизация восстановится с некоторой попытки. Таким образом, приход первого нуля обычно означает, что приёмный буфер контроллера чист и уже не заполнится, пока не придёт первая значимая команда. Сразу после прихода первого нуля от контроллера компьютер готов передавать следующую команду. Остальные нули, находящиеся в пересылке, будут проигнорированы, так как придут до ответа контроллера.
Синхронизация завершена.

Обработка ошибок на стороне библиотеки

Практически каждая функция библиотеки возвращает статус выполнения типа result_t.
После посылки запроса контроллеру библиотека проверяет первые приходящие байты пока не встретит первое ненулевое значение. Все нулевые байты игнорируются. Остальные приходящие байты считаются значимыми. Библиотека ожидает первые 4 байта ответа. Далее она сравнивает их с кодом запроса и, при необходимости, ожидает остальные байты пакета данных. Если полученные 4 байта не соответствуют запросу, то запускается процедура синхронизации очистительными нулями, команда выполнена неуспешно. Если полученные первые 4 байта совпадают с кодом запроса и в ответе есть еще данные, то после их получения проверяется CRC код. Если код неверный, то запускается синхронизация очистительными нулями, выполнение команды считается неуспешным.
Если сработал таймаут при ожидании ответа контроллера, то запускается процедура синхронизации очистительными нулями, выполнение команды считается неуспешным.
Если ошибок не обнаружено, то команда считается выполненной успешно и возвращается result_ok.

Возможные значения ответа библиотеки

  • result_ok. Ошибок нет.
  • result_error. Общая ошибка. Может быть связана с аппаратными проблемами, отсутствием данных в буфере порта, превышением таймаутов. Также может означать сбой синхронизации, который был устранён. Такой сбой мог быть вызван помехами на линии связи с контроллером. Еще одной причиной может быть несоответствие протоколов в прошивке и в контроллере.
  • result_nodevice. Невозможность открытия устройства, потеря связи с ним в процессе передачи данных, неудачная синхронизация. Требуется повторное открытие устройства или вмешательство пользователя.

Если функция возвращает ошибку, любые переданные в неё структуры для записи считаются неопределёнными.
Возврат кода ошибки может сопровождаться записью подробного сообщения в системный лог на unix или в stderr на windows.

Процедура синхронизации очистительными нулями

Восстановление синхронизации осуществляется посылкой нулевых байтов и считывания принимаемых байт до появления первого нулевого значения ('\0'). Опционально можно в конце синхронизации очистить буфер порта. Посылается изначально 64 нулевых байта. Если от контроллера не пришло ни одного нулевого байта за время таймаута, то 64 байта посылаются еще 3 раза. После 4 посылки и неполучения нулевого байта устройство считается потерянным и библиотека должна вернуть код ошибки result_nodevice. В случае удачной синхронизации возвращаемый код ошибки result_error.

Группа команд настройки контроллера

Функции для чтения/записи большинства настроек контроллера.

Команда SFBS

result_t set_feedback_settings (device_t id, const feedback_settings_t* feedback_settings)
Код команды (CMD): "sfbs" Или 0x73626673.

Запрос: (18 байт)

INT32U CMD Команда
INT16U IPS Количество отсчётов энкодера на оборот вала. Диапазон: 1..65535. Поле устарело, рекомендуется записывать 0 в IPS и использовать расширенное поле CountsPerTurn. Может потребоваться обновление микропрограммы контроллера до последней версии.
INT8U FeedbackType Тип обратной связи
0x01 - FEEDBACK_ENCODER (Обратная связь с помощью энкодера.)
0x03 - FEEDBACK_ENCODERHALL (Обратная связь с помощью датчика Холла.)
0x04 - FEEDBACK_EMF (Обратная связь по ЭДС.)
0x05 - FEEDBACK_NONE (Обратная связь отсутствует.)
INT8U FeedbackFlags Флаги
0x01 - FEEDBACK_ENC_REVERSE (Обратный счет у энкодера.)
0x02 - FEEDBACK_HALL_REVERSE (Обратный счёт позиции по датчикам Холла.)
0xC0 - FEEDBACK_ENC_TYPE_BITS (Биты, отвечающие за тип энкодера.)
0x00 - FEEDBACK_ENC_TYPE_AUTO (Определять тип энкодера автоматически.)
0x40 - FEEDBACK_ENC_TYPE_SINGLE_ENDED (Недифференциальный энкодер.)
0x80 - FEEDBACK_ENC_TYPE_DIFFERENTIAL (Дифференциальный энкодер.)
INT16U HallSPR Количество отсчётов датчиков Холла на оборот.
INT8S HallShift Фазовый сдвиг между выходным сигналом на обмотках BLDC двигателя и входным сигналом на датчиках Холла(0 - при активном только датчике холла A подается положительный потенциал на обмотку A и отрицательный потенциал на обмотку B).
INT8U Reserved [5] Зарезервировано (5 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек обратной связи.

Команда GFBS

result_t get_feedback_settings (device_t id, feedback_settings_t* feedback_settings)
Код команды (CMD): "gfbs" Или 0x73626667.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (18 байт)

INT32U CMD Команда (возврат)
INT16U IPS Количество отсчётов энкодера на оборот вала. Диапазон: 1..65535. Поле устарело, рекомендуется записывать 0 в IPS и использовать расширенное поле CountsPerTurn. Может потребоваться обновление микропрограммы контроллера до последней версии.
INT8U FeedbackType Тип обратной связи
0x01 - FEEDBACK_ENCODER (Обратная связь с помощью энкодера.)
0x03 - FEEDBACK_ENCODERHALL (Обратная связь с помощью датчика Холла.)
0x04 - FEEDBACK_EMF (Обратная связь по ЭДС.)
0x05 - FEEDBACK_NONE (Обратная связь отсутствует.)
INT8U FeedbackFlags Флаги
0x01 - FEEDBACK_ENC_REVERSE (Обратный счет у энкодера.)
0x02 - FEEDBACK_HALL_REVERSE (Обратный счёт позиции по датчикам Холла.)
0xC0 - FEEDBACK_ENC_TYPE_BITS (Биты, отвечающие за тип энкодера.)
0x00 - FEEDBACK_ENC_TYPE_AUTO (Определять тип энкодера автоматически.)
0x40 - FEEDBACK_ENC_TYPE_SINGLE_ENDED (Недифференциальный энкодер.)
0x80 - FEEDBACK_ENC_TYPE_DIFFERENTIAL (Дифференциальный энкодер.)
INT16U HallSPR Количество отсчётов датчиков Холла на оборот.
INT8S HallShift Фазовый сдвиг между выходным сигналом на обмотках BLDC двигателя и входным сигналом на датчиках Холла(0 - при активном только датчике холла A подается положительный потенциал на обмотку A и отрицательный потенциал на обмотку B).
INT8U Reserved [5] Зарезервировано (5 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек обратной связи

Команда SHOM

result_t set_home_settings (device_t id, const home_settings_t* home_settings)
Код команды (CMD): "shom" Или 0x6D6F6873.

Запрос: (33 байта)

INT32U CMD Команда
INT32U FastHome Скорость первого движения. Диапазон: 0..100000
INT8U uFastHome Дробная часть скорости первого движения в микрошагах(используется только с шаговым двигателем).
INT32U SlowHome Скорость второго движения. Диапазон: 0..100000.
INT8U uSlowHome Дробная часть скорости второго движения в микрошагах(используется только с шаговым двигателем).
INT32S HomeDelta Расстояние отхода от точки останова.
INT16S uHomeDelta Дробная часть расстояния отхода от точки останова в микрошагах(используется только с шаговым двигателем). Диапазон: -255..255.
INT16U HomeFlags Набор флагов, определяющие такие параметры, как направление и условия останова.
0x001 - HOME_DIR_FIRST (Определяет направление первоначального движения мотора после поступления команды HOME. Если флаг установлен - вправо; иначе - влево.)
0x002 - HOME_DIR_SECOND (Определяет направление второго движения мотора. Если флаг установлен - вправо; иначе - влево.)
0x004 - HOME_MV_SEC_EN (Если флаг установлен, реализуется второй этап доводки в домашнюю позицию; иначе - этап пропускается.)
0x008 - HOME_HALF_MV (Если флаг установлен, в начале второго движения первые пол оборота сигналы завершения движения игнорируются.)
0x030 - HOME_STOP_FIRST_BITS (Биты, отвечающие за выбор сигнала завершения первого движения.)
0x010 - HOME_STOP_FIRST_REV (Первое движение завершается по сигналу с Revolution sensor.)
0x020 - HOME_STOP_FIRST_SYN (Первое движение завершается по сигналу со входа синхронизации.)
0x030 - HOME_STOP_FIRST_LIM (Первое движение завершается по сигналу с концевика.)
0x0C0 - HOME_STOP_SECOND_BITS (Биты, отвечающие за выбор сигнала завершения второго движения.)
0x040 - HOME_STOP_SECOND_REV (Второе движение завершается по сигналу с Revolution sensor.)
0x080 - HOME_STOP_SECOND_SYN (Второе движение завершается по сигналу со входа синхронизации.)
0x0C0 - HOME_STOP_SECOND_LIM (Второе движение завершается по сигналу с концевика.)
0x100 - HOME_USE_FAST (Если флаг установлен, используется быстрый поиск домашней позиции; иначе - традиционный.)
INT8U Reserved [9] Зарезервировано (9 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Команда записи настроек для подхода в home position. Эта функция записывает структуру настроек, использующихся для калибровки позиции, в память контроллера.

Команда GHOM

result_t get_home_settings (device_t id, home_settings_t* home_settings)
Код команды (CMD): "ghom" Или 0x6D6F6867.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (33 байта)

INT32U CMD Команда (возврат)
INT32U FastHome Скорость первого движения. Диапазон: 0..100000
INT8U uFastHome Дробная часть скорости первого движения в микрошагах(используется только с шаговым двигателем).
INT32U SlowHome Скорость второго движения. Диапазон: 0..100000.
INT8U uSlowHome Дробная часть скорости второго движения в микрошагах(используется только с шаговым двигателем).
INT32S HomeDelta Расстояние отхода от точки останова.
INT16S uHomeDelta Дробная часть расстояния отхода от точки останова в микрошагах(используется только с шаговым двигателем). Диапазон: -255..255.
INT16U HomeFlags Набор флагов, определяющие такие параметры, как направление и условия останова.
0x001 - HOME_DIR_FIRST (Определяет направление первоначального движения мотора после поступления команды HOME. Если флаг установлен - вправо; иначе - влево.)
0x002 - HOME_DIR_SECOND (Определяет направление второго движения мотора. Если флаг установлен - вправо; иначе - влево.)
0x004 - HOME_MV_SEC_EN (Если флаг установлен, реализуется второй этап доводки в домашнюю позицию; иначе - этап пропускается.)
0x008 - HOME_HALF_MV (Если флаг установлен, в начале второго движения первые пол оборота сигналы завершения движения игнорируются.)
0x030 - HOME_STOP_FIRST_BITS (Биты, отвечающие за выбор сигнала завершения первого движения.)
0x010 - HOME_STOP_FIRST_REV (Первое движение завершается по сигналу с Revolution sensor.)
0x020 - HOME_STOP_FIRST_SYN (Первое движение завершается по сигналу со входа синхронизации.)
0x030 - HOME_STOP_FIRST_LIM (Первое движение завершается по сигналу с концевика.)
0x0C0 - HOME_STOP_SECOND_BITS (Биты, отвечающие за выбор сигнала завершения второго движения.)
0x040 - HOME_STOP_SECOND_REV (Второе движение завершается по сигналу с Revolution sensor.)
0x080 - HOME_STOP_SECOND_SYN (Второе движение завершается по сигналу со входа синхронизации.)
0x0C0 - HOME_STOP_SECOND_LIM (Второе движение завершается по сигналу с концевика.)
0x100 - HOME_USE_FAST (Если флаг установлен, используется быстрый поиск домашней позиции; иначе - традиционный.)
INT8U Reserved [9] Зарезервировано (9 байт)
INT16U CRC Контрольная сумма

Описание:
Команда чтения настроек для подхода в home position. Эта функция заполняет структуру настроек, использующихся для калибровки позиции, в память контроллера.

Команда SMOV

result_t set_move_settings (device_t id, const move_settings_t* move_settings)
Код команды (CMD): "smov" Или 0x766F6D73.

Запрос: (30 байт)

INT32U CMD Команда
INT32U Speed Заданная скорость (для ШД: шагов/c, для DC: rpm). Диапазон: 0..100000.
INT8U uSpeed Заданная скорость в единицах деления микрошага в секунду. Используется только с шаговым мотором.
INT16U Accel Ускорение, заданное в шагах в секунду^2(ШД) или в оборотах в минуту за секунду(DC). Диапазон: 1..65535.
INT16U Decel Торможение, заданное в шагах в секунду^2(ШД) или в оборотах в минуту за секунду(DC). Диапазон: 1..65535.
INT32U AntiplaySpeed Скорость в режиме антилюфта, заданная в целых шагах/c(ШД) или в оборотах/с(DC). Диапазон: 0..100000.
INT8U uAntiplaySpeed Скорость в режиме антилюфта, выраженная в 1/256 микрошагах в секунду. Используется только с шаговым мотором.
INT8U Reserved [10] Зарезервировано (10 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Команда записи настроек перемещения (скорость, ускорение, threshold и скорость в режиме антилюфта).

Команда GMOV

result_t get_move_settings (device_t id, move_settings_t* move_settings)
Код команды (CMD): "gmov" Или 0x766F6D67.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (30 байт)

INT32U CMD Команда (возврат)
INT32U Speed Заданная скорость (для ШД: шагов/c, для DC: rpm). Диапазон: 0..100000.
INT8U uSpeed Заданная скорость в единицах деления микрошага в секунду. Используется только с шаговым мотором.
INT16U Accel Ускорение, заданное в шагах в секунду^2(ШД) или в оборотах в минуту за секунду(DC). Диапазон: 1..65535.
INT16U Decel Торможение, заданное в шагах в секунду^2(ШД) или в оборотах в минуту за секунду(DC). Диапазон: 1..65535.
INT32U AntiplaySpeed Скорость в режиме антилюфта, заданная в целых шагах/c(ШД) или в оборотах/с(DC). Диапазон: 0..100000.
INT8U uAntiplaySpeed Скорость в режиме антилюфта, выраженная в 1/256 микрошагах в секунду. Используется только с шаговым мотором.
INT8U Reserved [10] Зарезервировано (10 байт)
INT16U CRC Контрольная сумма

Описание:
Команда чтения настроек перемещения (скорость, ускорение, threshold и скорость в режиме антилюфта).

Команда SENG

result_t set_engine_settings (device_t id, const engine_settings_t* engine_settings)
Код команды (CMD): "seng" Или 0x676E6573.

Запрос: (34 байта)

INT32U CMD Команда
INT16U NomVoltage Номинальное напряжение мотора в десятках мВ. Контроллер будет сохранять напряжение на моторе не выше номинального, если установлен флаг ENGINE_LIMIT_VOLT (используется только с DC двигателем).
INT16U NomCurrent Номинальный ток через мотор. Ток стабилизируется для шаговых и может быть ограничен для DC. Диапазон: 15..8000
INT32U NomSpeed Номинальная скорость (в целых шагах/с или rpm для DC и шагового двигателя в режиме ведущего энкодера). Контроллер будет сохранять скорость мотора не выше номинальной, если установлен флаг ENGINE_LIMIT_RPM. Диапазон: 1..100000.
INT8U uNomSpeed Микрошаговая часть номинальной скорости мотора (используется только с шаговым двигателем).
INT16U EngineFlags Флаги, управляющие работой мотора.
0x01 - ENGINE_REVERSE (Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции.)
0x02 - ENGINE_CURRENT_AS_RMS (Флаг интерпретации значения тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока, если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока.)
0x04 - ENGINE_MAX_SPEED (Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости.)
0x08 - ENGINE_ANTIPLAY (Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа.)
0x10 - ENGINE_ACCEL_ON (Ускорение. Если флаг установлен, движение происходит с ускорением.)
0x20 - ENGINE_LIMIT_VOLT (Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением(используется только с DC двигателем).)
0x40 - ENGINE_LIMIT_CURR (Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением(используется только с DC двигателем).)
0x80 - ENGINE_LIMIT_RPM (Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением.)
INT16S Antiplay Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY.
INT8U MicrostepMode Настройки микрошагового режима(используется только с шаговым двигателем).
0x01 - MICROSTEP_MODE_FULL (Полношаговый режим.)
0x02 - MICROSTEP_MODE_FRAC_2 (Деление шага 1/2.)
0x03 - MICROSTEP_MODE_FRAC_4 (Деление шага 1/4.)
0x04 - MICROSTEP_MODE_FRAC_8 (Деление шага 1/8.)
0x05 - MICROSTEP_MODE_FRAC_16 (Деление шага 1/16.)
0x06 - MICROSTEP_MODE_FRAC_32 (Деление шага 1/32.)
0x07 - MICROSTEP_MODE_FRAC_64 (Деление шага 1/64.)
0x08 - MICROSTEP_MODE_FRAC_128 (Деление шага 1/128.)
0x09 - MICROSTEP_MODE_FRAC_256 (Деление шага 1/256.)
INT16U StepsPerRev Количество полных шагов на оборот(используется только с шаговым двигателем). Диапазон: 1..65535.
INT8U Reserved [12] Зарезервировано (12 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек мотора. Настройки определяют номинальные значения напряжения, тока, скорости мотора, характер движения и тип мотора. Пожалуйста, загружайте новые настройки когда вы меняете мотор, энкодер или позиционер. Помните, что неправильные настройки мотора могут повредить оборудование.

Команда GENG

result_t get_engine_settings (device_t id, engine_settings_t* engine_settings)
Код команды (CMD): "geng" Или 0x676E6567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (34 байта)

INT32U CMD Команда (возврат)
INT16U NomVoltage Номинальное напряжение мотора в десятках мВ. Контроллер будет сохранять напряжение на моторе не выше номинального, если установлен флаг ENGINE_LIMIT_VOLT (используется только с DC двигателем).
INT16U NomCurrent Номинальный ток через мотор. Ток стабилизируется для шаговых и может быть ограничен для DC. Диапазон: 15..8000
INT32U NomSpeed Номинальная скорость (в целых шагах/с или rpm для DC и шагового двигателя в режиме ведущего энкодера). Контроллер будет сохранять скорость мотора не выше номинальной, если установлен флаг ENGINE_LIMIT_RPM. Диапазон: 1..100000.
INT8U uNomSpeed Микрошаговая часть номинальной скорости мотора (используется только с шаговым двигателем).
INT16U EngineFlags Флаги, управляющие работой мотора.
0x01 - ENGINE_REVERSE (Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции.)
0x02 - ENGINE_CURRENT_AS_RMS (Флаг интерпретации значения тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока, если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока.)
0x04 - ENGINE_MAX_SPEED (Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости.)
0x08 - ENGINE_ANTIPLAY (Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа.)
0x10 - ENGINE_ACCEL_ON (Ускорение. Если флаг установлен, движение происходит с ускорением.)
0x20 - ENGINE_LIMIT_VOLT (Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением(используется только с DC двигателем).)
0x40 - ENGINE_LIMIT_CURR (Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением(используется только с DC двигателем).)
0x80 - ENGINE_LIMIT_RPM (Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением.)
INT16S Antiplay Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY.
INT8U MicrostepMode Настройки микрошагового режима(используется только с шаговым двигателем).
0x01 - MICROSTEP_MODE_FULL (Полношаговый режим.)
0x02 - MICROSTEP_MODE_FRAC_2 (Деление шага 1/2.)
0x03 - MICROSTEP_MODE_FRAC_4 (Деление шага 1/4.)
0x04 - MICROSTEP_MODE_FRAC_8 (Деление шага 1/8.)
0x05 - MICROSTEP_MODE_FRAC_16 (Деление шага 1/16.)
0x06 - MICROSTEP_MODE_FRAC_32 (Деление шага 1/32.)
0x07 - MICROSTEP_MODE_FRAC_64 (Деление шага 1/64.)
0x08 - MICROSTEP_MODE_FRAC_128 (Деление шага 1/128.)
0x09 - MICROSTEP_MODE_FRAC_256 (Деление шага 1/256.)
INT16U StepsPerRev Количество полных шагов на оборот(используется только с шаговым двигателем). Диапазон: 1..65535.
INT8U Reserved [12] Зарезервировано (12 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек мотора. Настройки определяют номинальные значения напряжения, тока, скорости мотора, характер движения и тип мотора. Пожалуйста, загружайте новые настройки когда вы меняете мотор, энкодер или позиционер. Помните, что неправильные настройки мотора могут повредить оборудование.

Команда SENT

result_t set_entype_settings (device_t id, const entype_settings_t* entype_settings)
Код команды (CMD): "sent" Или 0x746E6573.

Запрос: (14 байт)

INT32U CMD Команда
INT8U EngineType Тип мотора
0x00 - ENGINE_TYPE_NONE (Это значение не нужно использовать.)
0x01 - ENGINE_TYPE_DC (Мотор постоянного тока.)
0x02 - ENGINE_TYPE_2DC (Два мотора постоянного тока, что приводит к эмуляции двух контроллеров.)
0x03 - ENGINE_TYPE_STEP (Шаговый мотор.)
0x04 - ENGINE_TYPE_TEST (Скважность в обмотках фиксирована. Используется только производителем.)
0x05 - ENGINE_TYPE_BRUSHLESS (Безщеточный мотор.)
INT8U DriverType Тип силового драйвера
0x01 - DRIVER_TYPE_DISCRETE_FET (Силовой драйвер на дискретных мосфет-ключах. Используется по умолчанию.)
0x02 - DRIVER_TYPE_INTEGRATE (Силовой драйвер с использованием ключей, интегрированных в микросхему.)
0x03 - DRIVER_TYPE_EXTERNAL (Внешний силовой драйвер.)
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись информации о типе мотора и типе силового драйвера.

Команда GENT

result_t get_entype_settings (device_t id, entype_settings_t* entype_settings)
Код команды (CMD): "gent" Или 0x746E6567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (14 байт)

INT32U CMD Команда (возврат)
INT8U EngineType Тип мотора
0x00 - ENGINE_TYPE_NONE (Это значение не нужно использовать.)
0x01 - ENGINE_TYPE_DC (Мотор постоянного тока.)
0x02 - ENGINE_TYPE_2DC (Два мотора постоянного тока, что приводит к эмуляции двух контроллеров.)
0x03 - ENGINE_TYPE_STEP (Шаговый мотор.)
0x04 - ENGINE_TYPE_TEST (Скважность в обмотках фиксирована. Используется только производителем.)
0x05 - ENGINE_TYPE_BRUSHLESS (Безщеточный мотор.)
INT8U DriverType Тип силового драйвера
0x01 - DRIVER_TYPE_DISCRETE_FET (Силовой драйвер на дискретных мосфет-ключах. Используется по умолчанию.)
0x02 - DRIVER_TYPE_INTEGRATE (Силовой драйвер с использованием ключей, интегрированных в микросхему.)
0x03 - DRIVER_TYPE_EXTERNAL (Внешний силовой драйвер.)
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Описание:
Возвращает информацию о типе мотора и силового драйвера.

Команда SPWR

result_t set_power_settings (device_t id, const power_settings_t* power_settings)
Код команды (CMD): "spwr" Или 0x72777073.

Запрос: (20 байт)

INT32U CMD Команда
INT8U HoldCurrent Ток мотора в режиме удержания, в процентах от номинального. Диапазон: 0..100.
INT16U CurrReductDelay Время в мс от перехода в состояние STOP до уменьшения тока.
INT16U PowerOffDelay Время в с от перехода в состояние STOP до отключения питания мотора.
INT16U CurrentSetTime Время в мс, требуемое для набора номинального тока от 0% до 100%.
INT8U PowerFlags Флаги параметров управления питанием.
0x01 - POWER_REDUCT_ENABLED (Если флаг установлен, уменьшить ток по прошествии CurrReductDelay. Иначе - не уменьшать.)
0x02 - POWER_OFF_ENABLED (Если флаг установлен, снять напряжение с обмоток по прошествии PowerOffDelay. Иначе - не снимать.)
0x04 - POWER_SMOOTH_CURRENT (Если установлен, то запитывание обмоток, снятие питания или снижение/повышение тока происходят плавно со скоростью CurrentSetTime, а только потом выполняется та задача, которая вызвала это плавное изменение.)
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Команда записи параметров питания мотора. Используется только с шаговым двигателем.

Команда GPWR

result_t get_power_settings (device_t id, power_settings_t* power_settings)
Код команды (CMD): "gpwr" Или 0x72777067.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (20 байт)

INT32U CMD Команда (возврат)
INT8U HoldCurrent Ток мотора в режиме удержания, в процентах от номинального. Диапазон: 0..100.
INT16U CurrReductDelay Время в мс от перехода в состояние STOP до уменьшения тока.
INT16U PowerOffDelay Время в с от перехода в состояние STOP до отключения питания мотора.
INT16U CurrentSetTime Время в мс, требуемое для набора номинального тока от 0% до 100%.
INT8U PowerFlags Флаги параметров управления питанием.
0x01 - POWER_REDUCT_ENABLED (Если флаг установлен, уменьшить ток по прошествии CurrReductDelay. Иначе - не уменьшать.)
0x02 - POWER_OFF_ENABLED (Если флаг установлен, снять напряжение с обмоток по прошествии PowerOffDelay. Иначе - не снимать.)
0x04 - POWER_SMOOTH_CURRENT (Если установлен, то запитывание обмоток, снятие питания или снижение/повышение тока происходят плавно со скоростью CurrentSetTime, а только потом выполняется та задача, которая вызвала это плавное изменение.)
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Описание:
Команда чтения параметров питания мотора. Используется только с шаговым двигателем. Используется только с шаговым двигателем.

Команда SSEC

result_t set_secure_settings (device_t id, const secure_settings_t* secure_settings)
Код команды (CMD): "ssec" Или 0x63657373.

Запрос: (28 байт)

INT32U CMD Команда
INT16U LowUpwrOff Нижний порог напряжения на силовой части для выключения, десятки мВ.
INT16U CriticalIpwr Максимальный ток силовой части, вызывающий состояние ALARM, в мА.
INT16U CriticalUpwr Максимальное напряжение на силовой части, вызывающее состояние ALARM, десятки мВ.
INT16U CriticalT Максимальная температура контроллера, вызывающая состояние ALARM, в десятых долях градуса Цельсия
INT16U CriticalIusb Максимальный ток USB, вызывающий состояние ALARM, в мА.
INT16U CriticalUusb Максимальное напряжение на USB, вызывающее состояние ALARM, десятки мВ.
INT16U MinimumUusb Минимальное напряжение на USB, вызывающее состояние ALARM, десятки мВ.
INT8U Flags Флаги критических параметров.
0x01 - ALARM_ON_DRIVER_OVERHEATING (Если флаг установлен, то войти в состояние Alarm при получении сигнала подступающего перегрева с драйвера. Иначе - игнорировать подступающий перегрев с драйвера.)
0x02 - LOW_UPWR_PROTECTION (Если установлен, то выключать силовую часть при напряжении меньшем LowUpwrOff.)
0x04 - H_BRIDGE_ALERT (Если установлен, то выключать силовую часть при сигнале неполадки в одном из транзисторных мостов)
0x08 - ALARM_ON_BORDERS_SWAP_MISSET (Если флаг установлен, то войти в состояние Alarm при получении сигнала c противоположного концевика)
0x10 - ALARM_FLAGS_STICKING (Если флаг установлен, то только по команде STOP возможен сброс всех флагов ALARM)
0x20 - USB_BREAK_RECONNECT (Если флаг установлен, то будет включен блок перезагрузки USB при поломке связи)
INT8U Reserved [7] Зарезервировано (7 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Команда записи установок защит.

Команда GSEC

result_t get_secure_settings (device_t id, secure_settings_t* secure_settings)
Код команды (CMD): "gsec" Или 0x63657367.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (28 байт)

INT32U CMD Команда (возврат)
INT16U LowUpwrOff Нижний порог напряжения на силовой части для выключения, десятки мВ.
INT16U CriticalIpwr Максимальный ток силовой части, вызывающий состояние ALARM, в мА.
INT16U CriticalUpwr Максимальное напряжение на силовой части, вызывающее состояние ALARM, десятки мВ.
INT16U CriticalT Максимальная температура контроллера, вызывающая состояние ALARM, в десятых долях градуса Цельсия
INT16U CriticalIusb Максимальный ток USB, вызывающий состояние ALARM, в мА.
INT16U CriticalUusb Максимальное напряжение на USB, вызывающее состояние ALARM, десятки мВ.
INT16U MinimumUusb Минимальное напряжение на USB, вызывающее состояние ALARM, десятки мВ.
INT8U Flags Флаги критических параметров.
0x01 - ALARM_ON_DRIVER_OVERHEATING (Если флаг установлен, то войти в состояние Alarm при получении сигнала подступающего перегрева с драйвера. Иначе - игнорировать подступающий перегрев с драйвера.)
0x02 - LOW_UPWR_PROTECTION (Если установлен, то выключать силовую часть при напряжении меньшем LowUpwrOff.)
0x04 - H_BRIDGE_ALERT (Если установлен, то выключать силовую часть при сигнале неполадки в одном из транзисторных мостов)
0x08 - ALARM_ON_BORDERS_SWAP_MISSET (Если флаг установлен, то войти в состояние Alarm при получении сигнала c противоположного концевика)
0x10 - ALARM_FLAGS_STICKING (Если флаг установлен, то только по команде STOP возможен сброс всех флагов ALARM)
0x20 - USB_BREAK_RECONNECT (Если флаг установлен, то будет включен блок перезагрузки USB при поломке связи)
INT8U Reserved [7] Зарезервировано (7 байт)
INT16U CRC Контрольная сумма

Описание:
Команда записи установок защит.

Команда SEDS

result_t set_edges_settings (device_t id, const edges_settings_t* edges_settings)
Код команды (CMD): "seds" Или 0x73646573.

Запрос: (26 байт)

INT32U CMD Команда
INT8U BorderFlags Флаги, определяющие тип границ и поведение мотора при их достижении.
0x01 - BORDER_IS_ENCODER (Если флаг установлен, границы определяются предустановленными точками на шкале позиции. Если флаг сброшен, границы определяются концевыми выключателями.)
0x02 - BORDER_STOP_LEFT (Если флаг установлен, мотор останавливается при достижении левой границы.)
0x04 - BORDER_STOP_RIGHT (Если флаг установлен, мотор останавливается при достижении правой границы.)
0x08 - BORDERS_SWAP_MISSET_DETECTION (Если флаг установлен, мотор останавливается при достижении обоих границ. Нужен для предотвращения поломки двигателя при неправильных настройках концевиков)
INT8U EnderFlags Флаги, определяющие настройки концевых выключателей.
0x01 - ENDER_SWAP (Если флаг установлен, первый концевой выключатель находится справа; иначе - слева.)
0x02 - ENDER_SW1_ACTIVE_LOW (1 - Концевик, подключенный к ножке SW1, считается сработавшим по низкому уровню на контакте.)
0x04 - ENDER_SW2_ACTIVE_LOW (1 - Концевик, подключенный к ножке SW2, считается сработавшим по низкому уровню на контакте.)
INT32S LeftBorder Позиция левой границы, используется если установлен флаг BORDER_IS_ENCODER.
INT16S uLeftBorder Позиция левой границы в 1/256 микрошагах( используется только с шаговым двигателем). Диапазон: -255..255.
INT32S RightBorder Позиция правой границы, используется если установлен флаг BORDER_IS_ENCODER.
INT16S uRightBorder Позиция правой границы в 1/256 микрошагах (используется только с шаговым двигателем). Диапазон: -255..255.
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек границ и концевых выключателей.

Команда GEDS

result_t get_edges_settings (device_t id, edges_settings_t* edges_settings)
Код команды (CMD): "geds" Или 0x73646567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (26 байт)

INT32U CMD Команда (возврат)
INT8U BorderFlags Флаги, определяющие тип границ и поведение мотора при их достижении.
0x01 - BORDER_IS_ENCODER (Если флаг установлен, границы определяются предустановленными точками на шкале позиции. Если флаг сброшен, границы определяются концевыми выключателями.)
0x02 - BORDER_STOP_LEFT (Если флаг установлен, мотор останавливается при достижении левой границы.)
0x04 - BORDER_STOP_RIGHT (Если флаг установлен, мотор останавливается при достижении правой границы.)
0x08 - BORDERS_SWAP_MISSET_DETECTION (Если флаг установлен, мотор останавливается при достижении обоих границ. Нужен для предотвращения поломки двигателя при неправильных настройках концевиков)
INT8U EnderFlags Флаги, определяющие настройки концевых выключателей.
0x01 - ENDER_SWAP (Если флаг установлен, первый концевой выключатель находится справа; иначе - слева.)
0x02 - ENDER_SW1_ACTIVE_LOW (1 - Концевик, подключенный к ножке SW1, считается сработавшим по низкому уровню на контакте.)
0x04 - ENDER_SW2_ACTIVE_LOW (1 - Концевик, подключенный к ножке SW2, считается сработавшим по низкому уровню на контакте.)
INT32S LeftBorder Позиция левой границы, используется если установлен флаг BORDER_IS_ENCODER.
INT16S uLeftBorder Позиция левой границы в 1/256 микрошагах( используется только с шаговым двигателем). Диапазон: -255..255.
INT32S RightBorder Позиция правой границы, используется если установлен флаг BORDER_IS_ENCODER.
INT16S uRightBorder Позиция правой границы в 1/256 микрошагах (используется только с шаговым двигателем). Диапазон: -255..255.
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек границ и концевых выключателей.

Команда SPID

result_t set_pid_settings (device_t id, const pid_settings_t* pid_settings)
Код команды (CMD): "spid" Или 0x64697073.

Запрос: (48 байт)

INT32U CMD Команда
INT16U KpU Пропорциональный коэффициент ПИД контура по напряжению
INT16U KiU Интегральный коэффициент ПИД контура по напряжению
INT16U KdU Дифференциальный коэффициент ПИД контура по напряжению
FLT32 Kpf Пропорциональный коэффициент ПИД контура по позиции для BLDC
FLT32 Kif Интегральный коэффициент ПИД контура по позиции для BLDC
FLT32 Kdf Дифференциальный коэффициент ПИД контура по позиции для BLDC
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись ПИД коэффициентов. Эти коэффициенты определяют поведение позиционера. Коэффициенты различны для разных позиционеров. Пожалуйста, загружайте новые настройки, когда вы меняете мотор или позиционер.

Команда GPID

result_t get_pid_settings (device_t id, pid_settings_t* pid_settings)
Код команды (CMD): "gpid" Или 0x64697067.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (48 байт)

INT32U CMD Команда (возврат)
INT16U KpU Пропорциональный коэффициент ПИД контура по напряжению
INT16U KiU Интегральный коэффициент ПИД контура по напряжению
INT16U KdU Дифференциальный коэффициент ПИД контура по напряжению
FLT32 Kpf Пропорциональный коэффициент ПИД контура по позиции для BLDC
FLT32 Kif Интегральный коэффициент ПИД контура по позиции для BLDC
FLT32 Kdf Дифференциальный коэффициент ПИД контура по позиции для BLDC
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение ПИД коэффициентов. Эти коэффициенты определяют поведение позиционера. Коэффициенты различны для разных позиционеров.

Команда SSNI

result_t set_sync_in_settings (device_t id, const sync_in_settings_t* sync_in_settings)
Код команды (CMD): "ssni" Или 0x696E7373.

Запрос: (28 байт)

INT32U CMD Команда
INT8U SyncInFlags Флаги синхронизации входа
0x01 - SYNCIN_ENABLED (Включение необходимости импульса синхронизации для начала движения.)
0x02 - SYNCIN_INVERT (Если установлен - срабатывает по переходу из 1 в 0. Иначе - из 0 в 1.)
0x04 - SYNCIN_GOTOPOSITION (Если флаг установлен, то двигатель смещается к позиции, установленной в Position и uPosition, иначе двигатель смещается на Position и uPosition)
INT16U ClutterTime Минимальная длительность входного импульса синхронизации для защиты от дребезга (мкс).
INT32S Position Желаемая позиция или смещение (целая часть)
INT16S uPosition Дробная часть позиции или смещения в микрошагах. Используется только с шаговым двигателем. Диапазон: -255..255.
INT32U Speed Заданная скорость (для ШД: шагов/c, для DC: rpm). Диапазон: 0..100000.
INT8U uSpeed Заданная скорость в микрошагах в секунду. Используется только с шаговым мотором.
INT8U Reserved [8] Зарезервировано (8 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек для входного импульса синхронизации. Эта функция записывает структуру с настройками входного импульса синхронизации, определяющими поведение входа синхронизации, в память контроллера.

Команда GSNI

result_t get_sync_in_settings (device_t id, sync_in_settings_t* sync_in_settings)
Код команды (CMD): "gsni" Или 0x696E7367.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (28 байт)

INT32U CMD Команда (возврат)
INT8U SyncInFlags Флаги синхронизации входа
0x01 - SYNCIN_ENABLED (Включение необходимости импульса синхронизации для начала движения.)
0x02 - SYNCIN_INVERT (Если установлен - срабатывает по переходу из 1 в 0. Иначе - из 0 в 1.)
0x04 - SYNCIN_GOTOPOSITION (Если флаг установлен, то двигатель смещается к позиции, установленной в Position и uPosition, иначе двигатель смещается на Position и uPosition)
INT16U ClutterTime Минимальная длительность входного импульса синхронизации для защиты от дребезга (мкс).
INT32S Position Желаемая позиция или смещение (целая часть)
INT16S uPosition Дробная часть позиции или смещения в микрошагах. Используется только с шаговым двигателем. Диапазон: -255..255.
INT32U Speed Заданная скорость (для ШД: шагов/c, для DC: rpm). Диапазон: 0..100000.
INT8U uSpeed Заданная скорость в микрошагах в секунду. Используется только с шаговым мотором.
INT8U Reserved [8] Зарезервировано (8 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек для входного импульса синхронизации. Эта функция считывает структуру с настройками синхронизации, определяющими поведение входа синхронизации, в память контроллера.

Команда SSNO

result_t set_sync_out_settings (device_t id, const sync_out_settings_t* sync_out_settings)
Код команды (CMD): "ssno" Или 0x6F6E7373.

Запрос: (16 байт)

INT32U CMD Команда
INT8U SyncOutFlags Флаги синхронизации выхода
0x01 - SYNCOUT_ENABLED (Синхронизация выхода работает согласно настройкам, если флаг установлен. В ином случае значение выхода фиксировано и подчиняется SYNCOUT_STATE.)
0x02 - SYNCOUT_STATE (Когда значение выхода управляется напрямую (см. флаг SYNCOUT_ENABLED), значение на выходе соответствует значению этого флага.)
0x04 - SYNCOUT_INVERT (Нулевой логический уровень является активным, если флаг установлен, а единичный - если флаг сброшен.)
0x08 - SYNCOUT_IN_STEPS (Если флаг установлен использовать шаги/импульсы энкодера для выходных импульсов синхронизации вместо миллисекунд.)
0x10 - SYNCOUT_ONSTART (Генерация синхронизирующего импульса при начале движения.)
0x20 - SYNCOUT_ONSTOP (Генерация синхронизирующего импульса при остановке.)
0x40 - SYNCOUT_ONPERIOD (Выдать импульс синхронизации после прохождения SyncOutPeriod отсчётов.)
INT16U SyncOutPulseSteps Определяет длительность выходных импульсов в шагах/импульсах энкодера, когда установлен флаг SYNCOUT_IN_STEPS, или в микросекундах если флаг сброшен.
INT16U SyncOutPeriod Период генерации импульсов, используется при установленном флаге SYNCOUT_ONPERIOD.
INT32U Accuracy Это окрестность вокруг целевой координаты, попадание в которую считается попаданием в целевую позицию и генерируется импульс по остановке.
INT8U uAccuracy Это окрестность вокруг целевой координаты в микрошагах (используется только с шаговым двигателем).
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек для выходного импульса синхронизации. Эта функция записывает структуру с настройками выходного импульса синхронизации, определяющими поведение вывода синхронизации, в память контроллера.

Команда GSNO

result_t get_sync_out_settings (device_t id, sync_out_settings_t* sync_out_settings)
Код команды (CMD): "gsno" Или 0x6F6E7367.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (16 байт)

INT32U CMD Команда (возврат)
INT8U SyncOutFlags Флаги синхронизации выхода
0x01 - SYNCOUT_ENABLED (Синхронизация выхода работает согласно настройкам, если флаг установлен. В ином случае значение выхода фиксировано и подчиняется SYNCOUT_STATE.)
0x02 - SYNCOUT_STATE (Когда значение выхода управляется напрямую (см. флаг SYNCOUT_ENABLED), значение на выходе соответствует значению этого флага.)
0x04 - SYNCOUT_INVERT (Нулевой логический уровень является активным, если флаг установлен, а единичный - если флаг сброшен.)
0x08 - SYNCOUT_IN_STEPS (Если флаг установлен использовать шаги/импульсы энкодера для выходных импульсов синхронизации вместо миллисекунд.)
0x10 - SYNCOUT_ONSTART (Генерация синхронизирующего импульса при начале движения.)
0x20 - SYNCOUT_ONSTOP (Генерация синхронизирующего импульса при остановке.)
0x40 - SYNCOUT_ONPERIOD (Выдать импульс синхронизации после прохождения SyncOutPeriod отсчётов.)
INT16U SyncOutPulseSteps Определяет длительность выходных импульсов в шагах/импульсах энкодера, когда установлен флаг SYNCOUT_IN_STEPS, или в микросекундах если флаг сброшен.
INT16U SyncOutPeriod Период генерации импульсов, используется при установленном флаге SYNCOUT_ONPERIOD.
INT32U Accuracy Это окрестность вокруг целевой координаты, попадание в которую считается попаданием в целевую позицию и генерируется импульс по остановке.
INT8U uAccuracy Это окрестность вокруг целевой координаты в микрошагах (используется только с шаговым двигателем).
INT16U CRC Контрольная сумма

Описание:
Чтение настроек для выходного импульса синхронизации. Эта функция считывает структуру с настройками синхронизации, определяющими поведение выхода синхронизации, в память контроллера.

Команда SEIO

result_t set_extio_settings (device_t id, const extio_settings_t* extio_settings)
Код команды (CMD): "seio" Или 0x6F696573.

Запрос: (18 байт)

INT32U CMD Команда
INT8U EXTIOSetupFlags Флаги настройки работы внешнего ввода-вывода
0x01 - EXTIO_SETUP_OUTPUT (Если флаг установлен, то ножка в состоянии вывода, иначе - ввода.)
0x02 - EXTIO_SETUP_INVERT (Eсли флаг установлен, то нули считаются активным состоянием выхода, а спадающие фронты как момент подачи входного сигнала.)
INT8U EXTIOModeFlags Флаги настройки режимов внешнего ввода-вывода
0x0F - EXTIO_SETUP_MODE_IN_BITS (Биты, отвечающие за поведение при переходе сигнала в активное состояние.)
0x00 - EXTIO_SETUP_MODE_IN_NOP (Ничего не делать.)
0x01 - EXTIO_SETUP_MODE_IN_STOP (По переднему фронту входного сигнала делается остановка двигателя (эквивалент команды STOP).)
0x02 - EXTIO_SETUP_MODE_IN_PWOF (Выполняет команду PWOF, обесточивая обмотки двигателя.)
0x03 - EXTIO_SETUP_MODE_IN_MOVR (Выполняется команда MOVR с последними настройками.)
0x04 - EXTIO_SETUP_MODE_IN_HOME (Выполняется команда HOME.)
0x05 - EXTIO_SETUP_MODE_IN_ALARM (Войти в состояние ALARM при переходе сигнала в активное состояние.)
0xF0 - EXTIO_SETUP_MODE_OUT_BITS (Биты выбора поведения на выходе.)
0x00 - EXTIO_SETUP_MODE_OUT_OFF (Ножка всегда в неактивном состоянии.)
0x10 - EXTIO_SETUP_MODE_OUT_ON (Ножка всегда в активном состоянии.)
0x20 - EXTIO_SETUP_MODE_OUT_MOVING (Ножка находится в активном состоянии при движении.)
0x30 - EXTIO_SETUP_MODE_OUT_ALARM (Ножка находится в активном состоянии при нахождении в состоянии ALARM.)
0x40 - EXTIO_SETUP_MODE_OUT_MOTOR_ON (Ножка находится в активном состоянии при подаче питания на обмотки.)
0x50 - EXTIO_SETUP_MODE_OUT_MOTOR_FOUND (Ножка находится в активном состоянии при обнаружении подключенного двигателя (первой обмотки).)
INT8U Reserved [10] Зарезервировано (10 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Команда записи параметров настройки режимов внешнего ввода/вывода. Входные события обрабатываются по фронту. Выходные состояния сигнализируются логическим состоянием. По умолчанию нарастающий фронт считается моментом подачи входного сигнала, а единичное состояние считается активным выходом.

Команда GEIO

result_t get_extio_settings (device_t id, extio_settings_t* extio_settings)
Код команды (CMD): "geio" Или 0x6F696567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (18 байт)

INT32U CMD Команда (возврат)
INT8U EXTIOSetupFlags Флаги настройки работы внешнего ввода-вывода
0x01 - EXTIO_SETUP_OUTPUT (Если флаг установлен, то ножка в состоянии вывода, иначе - ввода.)
0x02 - EXTIO_SETUP_INVERT (Eсли флаг установлен, то нули считаются активным состоянием выхода, а спадающие фронты как момент подачи входного сигнала.)
INT8U EXTIOModeFlags Флаги настройки режимов внешнего ввода-вывода
0x0F - EXTIO_SETUP_MODE_IN_BITS (Биты, отвечающие за поведение при переходе сигнала в активное состояние.)
0x00 - EXTIO_SETUP_MODE_IN_NOP (Ничего не делать.)
0x01 - EXTIO_SETUP_MODE_IN_STOP (По переднему фронту входного сигнала делается остановка двигателя (эквивалент команды STOP).)
0x02 - EXTIO_SETUP_MODE_IN_PWOF (Выполняет команду PWOF, обесточивая обмотки двигателя.)
0x03 - EXTIO_SETUP_MODE_IN_MOVR (Выполняется команда MOVR с последними настройками.)
0x04 - EXTIO_SETUP_MODE_IN_HOME (Выполняется команда HOME.)
0x05 - EXTIO_SETUP_MODE_IN_ALARM (Войти в состояние ALARM при переходе сигнала в активное состояние.)
0xF0 - EXTIO_SETUP_MODE_OUT_BITS (Биты выбора поведения на выходе.)
0x00 - EXTIO_SETUP_MODE_OUT_OFF (Ножка всегда в неактивном состоянии.)
0x10 - EXTIO_SETUP_MODE_OUT_ON (Ножка всегда в активном состоянии.)
0x20 - EXTIO_SETUP_MODE_OUT_MOVING (Ножка находится в активном состоянии при движении.)
0x30 - EXTIO_SETUP_MODE_OUT_ALARM (Ножка находится в активном состоянии при нахождении в состоянии ALARM.)
0x40 - EXTIO_SETUP_MODE_OUT_MOTOR_ON (Ножка находится в активном состоянии при подаче питания на обмотки.)
0x50 - EXTIO_SETUP_MODE_OUT_MOTOR_FOUND (Ножка находится в активном состоянии при обнаружении подключенного двигателя (первой обмотки).)
INT8U Reserved [10] Зарезервировано (10 байт)
INT16U CRC Контрольная сумма

Описание:
Команда чтения параметров настройки режимов внешнего ввода/вывода.

Команда SBRK

result_t set_brake_settings (device_t id, const brake_settings_t* brake_settings)
Код команды (CMD): "sbrk" Или 0x6B726273.

Запрос: (25 байт)

INT32U CMD Команда
INT16U t1 Время в мс между включением питания мотора и отключением тормоза.
INT16U t2 Время в мс между отключением тормоза и готовностью к движению. Все команды движения начинают выполняться только по истечении этого времени.
INT16U t3 Время в мс между остановкой мотора и включением тормоза.
INT16U t4 Время в мс между включением тормоза и отключением питания мотора.
INT8U BrakeFlags Флаги.
0x01 - BRAKE_ENABLED (Управление тормозом включено, если флаг установлен.)
0x02 - BRAKE_ENG_PWROFF (Тормоз отключает питание шагового мотора, если флаг установлен.)
INT8U Reserved [10] Зарезервировано (10 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек управления тормозом.

Команда GBRK

result_t get_brake_settings (device_t id, brake_settings_t* brake_settings)
Код команды (CMD): "gbrk" Или 0x6B726267.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (25 байт)

INT32U CMD Команда (возврат)
INT16U t1 Время в мс между включением питания мотора и отключением тормоза.
INT16U t2 Время в мс между отключением тормоза и готовностью к движению. Все команды движения начинают выполняться только по истечении этого времени.
INT16U t3 Время в мс между остановкой мотора и включением тормоза.
INT16U t4 Время в мс между включением тормоза и отключением питания мотора.
INT8U BrakeFlags Флаги.
0x01 - BRAKE_ENABLED (Управление тормозом включено, если флаг установлен.)
0x02 - BRAKE_ENG_PWROFF (Тормоз отключает питание шагового мотора, если флаг установлен.)
INT8U Reserved [10] Зарезервировано (10 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек управления тормозом.

Команда SCTL

result_t set_control_settings (device_t id, const control_settings_t* control_settings)
Код команды (CMD): "sctl" Или 0x6C746373.

Запрос: (93 байта)

INT32U CMD Команда
INT32U MaxSpeed [10] Массив скоростей (в полных шагах), использующийся при управлении джойстиком или кнопками влево/вправо. Диапазон: 0..100000.
INT8U uMaxSpeed [10] Массив скоростей (в 1/256 микрошагах), использующийся при управлении джойстиком или кнопками влево/вправо.
INT16U Timeout [9] timeout[i] - время в мс, по истечении которого устанавливается скорость max_speed[i+1] (используется только при управлении кнопками).
INT16U MaxClickTime Максимальное время клика. До истечения этого времени первая скорость не включается.
INT16U Flags Флаги.
0x03 - CONTROL_MODE_BITS (Биты управления мотором с помощью джойстика или кнопок влево/вправо.)
0x00 - CONTROL_MODE_OFF (Управление отключено.)
0x01 - CONTROL_MODE_JOY (Управление с помощью джойстика.)
0x02 - CONTROL_MODE_LR (Управление с помощью кнопок left/right.)
0x04 - CONTROL_BTN_LEFT_PUSHED_OPEN (Левая кнопка нормально разомкнутая, если флаг установлен.)
0x08 - CONTROL_BTN_RIGHT_PUSHED_OPEN (Правая кнопка нормально разомкнутая, если флаг установлен.)
INT32S DeltaPosition Смещение (дельта) позиции
INT16S uDeltaPosition Дробная часть смещения в микрошагах. Используется только с шаговым двигателем. Диапазон: -255..255.
INT8U Reserved [9] Зарезервировано (9 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек управления мотором. При выборе CTL_MODE=1 включается управление мотором с помощью джойстика. В этом режиме при отклонении джойстика на максимум двигатель стремится двигаться со скоростью MaxSpeed [i], где i=0, если предыдущим использованием этого режима не было выбрано другое i. Кнопки переключают номер скорости i. При выборе CTL_MODE=2 включается управление мотором с помощью кнопок left/right. При нажатии на кнопки двигатель начинает двигаться в соответствующую сторону со скоростью MaxSpeed [0], по истечении времени Timeout[i] мотор двигается со скоростью MaxSpeed [i+1]. При переходе от MaxSpeed [i] на MaxSpeed [i+1] действует ускорение, как обычно.

Команда GCTL

result_t get_control_settings (device_t id, control_settings_t* control_settings)
Код команды (CMD): "gctl" Или 0x6C746367.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (93 байта)

INT32U CMD Команда (возврат)
INT32U MaxSpeed [10] Массив скоростей (в полных шагах), использующийся при управлении джойстиком или кнопками влево/вправо. Диапазон: 0..100000.
INT8U uMaxSpeed [10] Массив скоростей (в 1/256 микрошагах), использующийся при управлении джойстиком или кнопками влево/вправо.
INT16U Timeout [9] timeout[i] - время в мс, по истечении которого устанавливается скорость max_speed[i+1] (используется только при управлении кнопками).
INT16U MaxClickTime Максимальное время клика. До истечения этого времени первая скорость не включается.
INT16U Flags Флаги.
0x03 - CONTROL_MODE_BITS (Биты управления мотором с помощью джойстика или кнопок влево/вправо.)
0x00 - CONTROL_MODE_OFF (Управление отключено.)
0x01 - CONTROL_MODE_JOY (Управление с помощью джойстика.)
0x02 - CONTROL_MODE_LR (Управление с помощью кнопок left/right.)
0x04 - CONTROL_BTN_LEFT_PUSHED_OPEN (Левая кнопка нормально разомкнутая, если флаг установлен.)
0x08 - CONTROL_BTN_RIGHT_PUSHED_OPEN (Правая кнопка нормально разомкнутая, если флаг установлен.)
INT32S DeltaPosition Смещение (дельта) позиции
INT16S uDeltaPosition Дробная часть смещения в микрошагах. Используется только с шаговым двигателем. Диапазон: -255..255.
INT8U Reserved [9] Зарезервировано (9 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек управления мотором. При выборе CTL_MODE=1 включается управление мотором с помощью джойстика. В этом режиме при отклонении джойстика на максимум двигатель стремится двигаться со скоростью MaxSpeed [i], где i=0, если предыдущим использованием этого режима не было выбрано другое i. Кнопки переключают номер скорости i. При выборе CTL_MODE=2 включается управление мотором с помощью кнопок left/right. При нажатии на кнопки двигатель начинает двигаться в соответствующую сторону со скоростью MaxSpeed [0], по истечении времени Timeout[i] мотор двигается со скоростью MaxSpeed [i+1]. При переходе от MaxSpeed [i] на MaxSpeed [i+1] действует ускорение, как обычно.

Команда SJOY

result_t set_joystick_settings (device_t id, const joystick_settings_t* joystick_settings)
Код команды (CMD): "sjoy" Или 0x796F6A73.

Запрос: (22 байта)

INT32U CMD Команда
INT16U JoyLowEnd Значение в шагах джойстика, соответствующее нижней границе диапазона отклонения устройства. Должно лежать в пределах. Диапазон: 0..10000.
INT16U JoyCenter Значение в шагах джойстика, соответствующее неотклонённому устройству. Должно лежать в пределах. Диапазон: 0..10000.
INT16U JoyHighEnd Значение в шагах джойстика, соответствующее верхней границе диапазона отклонения устройства. Должно лежать в пределах. Диапазон: 0..10000.
INT8U ExpFactor Фактор экспоненциальной нелинейности отклика джойстика.
INT8U DeadZone Отклонение от среднего положения, которое не вызывает начала движения (в десятых долях процента). Максимальное мёртвое отклонение +-25.5%, что составляет половину рабочего диапазона джойстика.
INT8U JoyFlags Флаги управления джойстиком.
0x01 - JOY_REVERSE (Реверс воздействия джойстика. Отклонение джойстика к большим значениям приводит к отрицательной скорости и наоборот.)
INT8U Reserved [7] Зарезервировано (7 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек джойстика. При отклонении джойстика более чем на DeadZone от центрального положения начинается движение со скоростью, определяемой отклонением джойстика от DeadZone до 100% отклонения, причем отклонению DeadZone соответствует нулевая скорость, а 100% отклонения соответствует MaxSpeed [i] (см. команду SCTL), где i=0, если предыдущим использованием этого режима не было выбрано другое i. Если следующая скорость в таблице скоростей нулевая (целая и микрошаговая части), то перехода на неё не происходит. DeadZone вычисляется в десятых долях процента отклонения от центра (JoyCenter) до правого или левого максимума. Расчёт DeadZone проиллюстрирован на графике:

Зависимость между отклонением и скоростью экспоненциальная, что позволяет без переключения режимов скорости сочетать высокую подвижность и точность. На графике ниже показан пример экспоненциальной зависимости скорости и работы мертвой зоны.

Параметр нелинейнойсти можно менять. Нулевой параметр нелинейности соответствует линейной зависимости.

Команда GJOY

result_t get_joystick_settings (device_t id, joystick_settings_t* joystick_settings)
Код команды (CMD): "gjoy" Или 0x796F6A67.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (22 байта)

INT32U CMD Команда (возврат)
INT16U JoyLowEnd Значение в шагах джойстика, соответствующее нижней границе диапазона отклонения устройства. Должно лежать в пределах. Диапазон: 0..10000.
INT16U JoyCenter Значение в шагах джойстика, соответствующее неотклонённому устройству. Должно лежать в пределах. Диапазон: 0..10000.
INT16U JoyHighEnd Значение в шагах джойстика, соответствующее верхней границе диапазона отклонения устройства. Должно лежать в пределах. Диапазон: 0..10000.
INT8U ExpFactor Фактор экспоненциальной нелинейности отклика джойстика.
INT8U DeadZone Отклонение от среднего положения, которое не вызывает начала движения (в десятых долях процента). Максимальное мёртвое отклонение +-25.5%, что составляет половину рабочего диапазона джойстика.
INT8U JoyFlags Флаги управления джойстиком.
0x01 - JOY_REVERSE (Реверс воздействия джойстика. Отклонение джойстика к большим значениям приводит к отрицательной скорости и наоборот.)
INT8U Reserved [7] Зарезервировано (7 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек джойстика. При отклонении джойстика более чем на DeadZone от центрального положения начинается движение со скоростью, определяемой отклонением джойстика от DeadZone до 100% отклонения, причем отклонению DeadZone соответствует нулевая скорость, а 100% отклонения соответствует MaxSpeed [i] (см. команду SCTL), где i=0, если предыдущим использованием этого режима не было выбрано другое i. Если следующая скорость в таблице скоростей нулевая (целая и микрошаговая части), то перехода на неё не происходит. DeadZone вычисляется в десятых долях процента отклонения от центра (JoyCenter) до правого или левого максимума. Расчёт DeadZone проиллюстрирован на графике:

Зависимость между отклонением и скоростью экспоненциальная, что позволяет без переключения режимов скорости сочетать высокую подвижность и точность. На графике ниже показан пример экспоненциальной зависимости скорости и работы мертвой зоны.

Параметр нелинейнойсти можно менять. Нулевой параметр нелинейности соответствует линейной зависимости.

Команда SCTP

result_t set_ctp_settings (device_t id, const ctp_settings_t* ctp_settings)
Код команды (CMD): "sctp" Или 0x70746373.

Запрос: (18 байт)

INT32U CMD Команда
INT8U CTPMinError Минимальное отличие шагов ШД от положения энкодера, устанавливающее флаг STATE_RT_ERROR. Измеряется в шагах ШД.
INT8U CTPFlags Флаги.
0x01 - CTP_ENABLED (Контроль позиции включен, если флаг установлен.)
0x02 - CTP_BASE (Опорой является датчик оборотов, если флаг установлен; иначе - энкодер.)
0x04 - CTP_ALARM_ON_ERROR (Войти в состояние ALARM при расхождении позиции, если флаг установлен.)
0x08 - REV_SENS_INV (Сенсор считается активным, когда на нём 0, а инвертирование делает активным уровнем 1. То есть если не инвертировать, то действует обычная логика - 0 это срабатывание/активация/активное состояние.)
0x10 - CTP_ERROR_CORRECTION (Корректировать ошибки, возникающие при проскальзывании, если флаг установлен. Работает только с энкодером. Несовместимо с флагом CTP_ALARM_ON_ERROR)
INT8U Reserved [10] Зарезервировано (10 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек контроля позиции(для шагового двигателя). При управлении ШД с энкодером (CTP_BASE 0) появляется возможность обнаруживать потерю шагов. Контроллер знает кол-во шагов на оборот (GENG::StepsPerRev) и разрешение энкодера (GFBS::IPT). При включении контроля (флаг CTP_ENABLED), контроллер запоминает текущую позицию в шагах ШД и текущую позицию энкодера. Далее, на каждом шаге позиция энкодера преобразовывается в шаги и если разница оказывается больше CTPMinError, устанавливается флаг STATE_CTP_ERROR. При управлении ШД с датчиком оборотов (CTP_BASE 1), позиция контролируется по нему. По активному фронту на входе синхронизации контроллер запоминает текущее значение шагов. Далее, при каждом обороте проверяет, на сколько шагов сместились. При рассогласовании более CTPMinError устанавливается флаг STATE_CTP_ERROR.

Команда GCTP

result_t get_ctp_settings (device_t id, ctp_settings_t* ctp_settings)
Код команды (CMD): "gctp" Или 0x70746367.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (18 байт)

INT32U CMD Команда (возврат)
INT8U CTPMinError Минимальное отличие шагов ШД от положения энкодера, устанавливающее флаг STATE_RT_ERROR. Измеряется в шагах ШД.
INT8U CTPFlags Флаги.
0x01 - CTP_ENABLED (Контроль позиции включен, если флаг установлен.)
0x02 - CTP_BASE (Опорой является датчик оборотов, если флаг установлен; иначе - энкодер.)
0x04 - CTP_ALARM_ON_ERROR (Войти в состояние ALARM при расхождении позиции, если флаг установлен.)
0x08 - REV_SENS_INV (Сенсор считается активным, когда на нём 0, а инвертирование делает активным уровнем 1. То есть если не инвертировать, то действует обычная логика - 0 это срабатывание/активация/активное состояние.)
0x10 - CTP_ERROR_CORRECTION (Корректировать ошибки, возникающие при проскальзывании, если флаг установлен. Работает только с энкодером. Несовместимо с флагом CTP_ALARM_ON_ERROR)
INT8U Reserved [10] Зарезервировано (10 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек контроля позиции(для шагового двигателя). При управлении ШД с энкодером (CTP_BASE 0) появляется возможность обнаруживать потерю шагов. Контроллер знает кол-во шагов на оборот (GENG::StepsPerRev) и разрешение энкодера (GFBS::IPT). При включении контроля (флаг CTP_ENABLED), контроллер запоминает текущую позицию в шагах ШД и текущую позицию энкодера. Далее, на каждом шаге позиция энкодера преобразовывается в шаги и если разница оказывается больше CTPMinError, устанавливается флаг STATE_CTP_ERROR. При управлении ШД с датчиком оборотов (CTP_BASE 1), позиция контролируется по нему. По активному фронту на входе синхронизации контроллер запоминает текущее значение шагов. Далее, при каждом обороте проверяет, на сколько шагов сместились. При рассогласовании более CTPMinError устанавливается флаг STATE_CTP_ERROR.

Команда SURT

result_t set_uart_settings (device_t id, const uart_settings_t* uart_settings)
Код команды (CMD): "surt" Или 0x74727573.

Запрос: (16 байт)

INT32U CMD Команда
INT32U Speed Cкорость UART
INT16U UARTSetupFlags Флаги настройки UART
0x03 - UART_PARITY_BITS (Биты, отвечающие за выбор четности.)
0x00 - UART_PARITY_BIT_EVEN (Бит 1, если чет)
0x01 - UART_PARITY_BIT_ODD (Бит 1, если нечет)
0x02 - UART_PARITY_BIT_SPACE (Бит четности всегда 0)
0x03 - UART_PARITY_BIT_MARK (Бит четности всегда 1)
0x04 - UART_PARITY_BIT_USE (Бит чётности не используется, если "0"; бит четности используется, если "1")
0x08 - UART_STOP_BIT (Если установлен, один стоповый бит; иначе - 2 стоповых бита)
INT8U Reserved [4] Зарезервировано (4 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Команда записи настроек UART. Эта функция записывает структуру настроек UART в память контроллера.

Команда GURT

result_t get_uart_settings (device_t id, uart_settings_t* uart_settings)
Код команды (CMD): "gurt" Или 0x74727567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (16 байт)

INT32U CMD Команда (возврат)
INT32U Speed Cкорость UART
INT16U UARTSetupFlags Флаги настройки UART
0x03 - UART_PARITY_BITS (Биты, отвечающие за выбор четности.)
0x00 - UART_PARITY_BIT_EVEN (Бит 1, если чет)
0x01 - UART_PARITY_BIT_ODD (Бит 1, если нечет)
0x02 - UART_PARITY_BIT_SPACE (Бит четности всегда 0)
0x03 - UART_PARITY_BIT_MARK (Бит четности всегда 1)
0x04 - UART_PARITY_BIT_USE (Бит чётности не используется, если "0"; бит четности используется, если "1")
0x08 - UART_STOP_BIT (Если установлен, один стоповый бит; иначе - 2 стоповых бита)
INT8U Reserved [4] Зарезервировано (4 байта)
INT16U CRC Контрольная сумма

Описание:
Команда чтения настроек UART. Эта функция заполняет структуру настроек UART.

Команда SCAL

result_t set_calibration_settings (device_t id, const calibration_settings_t* calibration_settings)
Код команды (CMD): "scal" Или 0x6C616373.

Запрос: (118 байт)

INT32U CMD Команда
FLT32 CSS1_A Коэффициент масштабирования для аналоговых измерений тока в обмотке A.
FLT32 CSS1_B Коэффициент сдвига для аналоговых измерений тока в обмотке A.
FLT32 CSS2_A Коэффициент масштабирования для аналоговых измерений тока в обмотке B.
FLT32 CSS2_B Коэффициент сдвига для аналоговых измерений тока в обмотке B.
FLT32 FullCurrent_A Коэффициент масштабирования для аналоговых измерений полного тока.
FLT32 FullCurrent_B Коэффициент сдвига для аналоговых измерений полного тока.
INT8U Reserved [88] Зарезервировано (88 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Команда записи калибровочных коэффициентов. Эта функция записывает структуру калибровочных коэффициентов в память контроллера.

Команда GCAL

result_t get_calibration_settings (device_t id, calibration_settings_t* calibration_settings)
Код команды (CMD): "gcal" Или 0x6C616367.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (118 байт)

INT32U CMD Команда (возврат)
FLT32 CSS1_A Коэффициент масштабирования для аналоговых измерений тока в обмотке A.
FLT32 CSS1_B Коэффициент сдвига для аналоговых измерений тока в обмотке A.
FLT32 CSS2_A Коэффициент масштабирования для аналоговых измерений тока в обмотке B.
FLT32 CSS2_B Коэффициент сдвига для аналоговых измерений тока в обмотке B.
FLT32 FullCurrent_A Коэффициент масштабирования для аналоговых измерений полного тока.
FLT32 FullCurrent_B Коэффициент сдвига для аналоговых измерений полного тока.
INT8U Reserved [88] Зарезервировано (88 байт)
INT16U CRC Контрольная сумма

Описание:
Команда чтения калибровочных коэффициентов. Эта функция заполняет структуру калибровочных коэффициентов.

Команда SNMF

result_t set_controller_name (device_t id, const controller_name_t* controller_name)
Код команды (CMD): "snmf" Или 0x666D6E73.

Запрос: (30 байт)

INT32U CMD Команда
CHAR ControllerName [16] Пользовательское имя контроллера. Может быть установлено пользователем для его удобства. Максимальная длина строки: 16 символов.
INT8U CtrlFlags Настройки контроллера.
0x01 - EEPROM_PRECEDENCE (Если флаг установлен, то настройки в EEPROM подвижки имеют приоритет над текущими настройками и заменяют их при обнаружении EEPROM.)
INT8U Reserved [7] Зарезервировано (7 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись пользовательского имени контроллера и настроек в FRAM.

Команда GNMF

result_t get_controller_name (device_t id, controller_name_t* controller_name)
Код команды (CMD): "gnmf" Или 0x666D6E67.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (30 байт)

INT32U CMD Команда (возврат)
CHAR ControllerName [16] Пользовательское имя контроллера. Может быть установлено пользователем для его удобства. Максимальная длина строки: 16 символов.
INT8U CtrlFlags Настройки контроллера.
0x01 - EEPROM_PRECEDENCE (Если флаг установлен, то настройки в EEPROM подвижки имеют приоритет над текущими настройками и заменяют их при обнаружении EEPROM.)
INT8U Reserved [7] Зарезервировано (7 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение пользовательского имени контроллера и настроек из FRAM.

Команда SNVM

result_t set_nonvolatile_memory (device_t id, const nonvolatile_memory_t* nonvolatile_memory)
Код команды (CMD): "snvm" Или 0x6D766E73.

Запрос: (36 байт)

INT32U CMD Команда
INT32U UserData [7] Пользовательские данные. Могут быть установлены пользователем для его удобства. Каждый элемент массива хранит только 32 бита пользовательских данных. Это важно на системах где тип int содержит больше чем 4 байта. Например это все системы amd64
INT8U Reserved [2] Зарезервировано (2 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись пользовательских данных во FRAM.

Команда GNVM

result_t get_nonvolatile_memory (device_t id, nonvolatile_memory_t* nonvolatile_memory)
Код команды (CMD): "gnvm" Или 0x6D766E67.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (36 байт)

INT32U CMD Команда (возврат)
INT32U UserData [7] Пользовательские данные. Могут быть установлены пользователем для его удобства. Каждый элемент массива хранит только 32 бита пользовательских данных. Это важно на системах где тип int содержит больше чем 4 байта. Например это все системы amd64
INT8U Reserved [2] Зарезервировано (2 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение пользовательских данных из FRAM.

Группа команд управления движением

Команда STOP

result_t command_stop (device_t id)
Код команды (CMD): "stop" Или 0x706F7473.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Немедленная остановка двигателя, переход в состояние STOP, ключи в режиме BREAK (обмотки накоротко замкнуты), режим "удержания" дезактивируется для DC двигателей, удержание тока в обмотках для шаговых двигателей (с учётом Power management настроек).

Команда ASIA

result_t command_add_sync_in_action (device_t id, const command_add_sync_in_action_t* the_command_add_sync_in_action)
Код команды (CMD): "asia" Или 0x61697361.

Запрос: (22 байта)

INT32U CMD Команда
INT32S Position Желаемая позиция или смещение (целая часть)
INT16S uPosition Дробная часть позиции или смещения в микрошагах. Используется только с шаговым двигателем. Диапазон: -255..255.
INT32U Time Время, за которое требуется достичь требуемой позиции, в микросекундах.
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Это команда добавляет один элемент в буфер FIFO команд, выполняемых при получении входного импульса синхронизации. Каждый импульс синхронизации либо выполнится то действие, которое описано в SSNI, если буфер пуст, либо самое старое из загруженных в буфер действий временно подменяет скорость и координату в SSNI. В последнем случае это действие стирается из буфера. Количество оставшихся пустыми элементов буфера можно узнать в структуре GETS.

Команда PWOF

result_t command_power_off (device_t id)
Код команды (CMD): "pwof" Или 0x666F7770.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Немедленное отключение питания двигателя вне зависимости от его состояния. Команда предначена для ручного управления питанием двигателя. Не следует использовать эту команду для отключения двигателя во время движения, так как питание может снова включиться для завершения движения. Для автоматического управления питанием двигателя и его отключении после остановки следует использовать систему управления электропитанием.

Команда MOVE

result_t command_move (device_t id, int Position, int uPosition)
Код команды (CMD): "move" Или 0x65766F6D.

Запрос: (18 байт)

INT32U CMD Команда
INT32S Position Желаемая позиция (целая часть).
INT16S uPosition Дробная часть позиции в микрошагах. Используется только с шаговым двигателем. Диапазон: -255..255.
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
При получении команды "move" двигатель начинает перемещаться (если не используется режим "ТТЛСинхроВхода"), с заранее установленными параметрами (скорость, ускорение, удержание), к точке указанной в полях Position, uPosition. Для шагового мотора uPosition задает значение микрошага, для DC мотора это поле не используется.

Команда MOVR

result_t command_movr (device_t id, int DeltaPosition, int uDeltaPosition)
Код команды (CMD): "movr" Или 0x72766F6D.

Запрос: (18 байт)

INT32U CMD Команда
INT32S DeltaPosition Смещение (дельта) позиции
INT16S uDeltaPosition Дробная часть смещения в микрошагах, используется только с шаговым двигателем. Диапазон: -255..255.
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
При получении команды "movr" двигатель начинает смещаться (если не используется режим "ТТЛСинхроВхода"), с заранее установленными параметрами (скорость, ускорение, удержание), влево или вправо (зависит от знака DeltaPosition) на количество импульсов указанное в полях DeltaPosition, uDeltaPosition. Для шагового мотора uDeltaPosition задает значение микрошага, для DC мотора это поле не используется.

Команда HOME

result_t command_home (device_t id)
Код команды (CMD): "home" Или 0x656D6F68.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Поля скоростей знаковые. Положительное направление это вправо. Нулевое значение флага направления инвертирует направление, заданное скоростью. Ограничение, накладываемые концевиками, действуют так же, за исключением того, что касание концевика не приводит к остановке. Ограничения максимальной скорости, ускорения и замедления действуют. 1) Двигает мотор согласно скоростям FastHome, uFastHome и флагу HOME_DIR_FAST до достижения концевика, если флаг HOME_STOP_ENDS установлен, до достижения сигнала с входа синхронизации, если установлен флаг HOME_STOP_SYNC (важно как можно точнее поймать момент срабатывания концевика) или до поступления сигнала с датчика оборотов, если установлен флаг HOME_STOP_REV_SN 2) далее двигает согласно скоростям SlowHome, uSlowHome и флагу HOME_DIR_SLOW до достижения сигнала с входа синхронизации, если установлен флаг HOME_MV_SEC. Если флаг HOME_MV_SEC сброшен, пропускаем этот пункт. 3) далее двигает мотор согласно скоростям FastHome, uFastHome и флагу HOME_DIR_SLOW на расстояние HomeDelta, uHomeDelta. Описание флагов и переменных см. описание команд GHOM/SHOM

Команда LEFT

result_t command_left (device_t id)
Код команды (CMD): "left" Или 0x7466656C.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
При получении команды "left" двигатель начинает смещаться, с заранее установленными параметрами (скорость, ускорение), влево.

Команда RIGT

result_t command_right (device_t id)
Код команды (CMD): "rigt" Или 0x74676972.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
При получении команды "rigt" двигатель начинает смещаться, с заранее установленными параметрами (скорость, ускорение), вправо.

Команда LOFT

result_t command_loft (device_t id)
Код команды (CMD): "loft" Или 0x74666F6C.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
При получении команды "loft" двигатель смещается из текущей точки на расстояние GENG::Antiplay, затем двигается в ту же точку.

Команда SSTP

result_t command_sstp (device_t id)
Код команды (CMD): "sstp" Или 0x70747373.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Плавная остановка. Двигатель останавливается с ускорением замедления.

Группа команд установки текущей позиции

Команда GPOS

result_t get_position (device_t id, get_position_t* the_get_position)
Код команды (CMD): "gpos" Или 0x736F7067.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (26 байт)

INT32U CMD Команда (возврат)
INT32S Position Позиция в основных шагах двигателя
INT16S uPosition Позиция в микрошагах(используется только с шаговыми двигателями).
INT64S EncPosition Позиция энкодера.
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Описание:
Считывает значение положения в шагах и микрошагах для шагового двигателя и в шагах энкодера всех двигателей.

Команда SPOS

result_t set_position (device_t id, const set_position_t* the_set_position)
Код команды (CMD): "spos" Или 0x736F7073.

Запрос: (26 байт)

INT32U CMD Команда
INT32S Position Позиция в основных шагах двигателя
INT16S uPosition Позиция в микрошагах(используется только с шаговыми двигателями).
INT64S EncPosition Позиция энкодера.
INT8U PosFlags Флаги
0x01 - SETPOS_IGNORE_POSITION (Если установлен, то позиция в шагах и микрошагах не обновляется.)
0x02 - SETPOS_IGNORE_ENCODER (Если установлен, то счётчик энкодера не обновляется.)
INT8U Reserved [5] Зарезервировано (5 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Устанавливает произвольное значение положения в шагах и микрошагах для шагового двигателя и в шагах энкодера всех двигателей. То есть меняется основной показатель положения.

Команда ZERO

result_t command_zero (device_t id)
Код команды (CMD): "zero" Или 0x6F72657A.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Устанавливает текущую позицию и позицию в которую осуществляется движение по командам move и movr равными нулю для всех случаев, кроме движения к позиции назначения. В последнем случае установить нулём текущую позицию, а позицию назначения пересчитать так, что в абсолютном положении точка назначения не меняется. То есть если мы находились в точке 400 и двигались к 500, то команда Zero делает текущую позицию 0, а позицию назначения - 100. Не изменяет режим движения т.е. если движение осуществлялось, то оно продолжается; если мотор находился в режиме "удержания", то тип удержания сохраняется.

Группа команд сохранения и загрузки настроек

Команда SAVE

result_t command_save_settings (device_t id)
Код команды (CMD): "save" Или 0x65766173.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
При получении команды контроллер выполняет операцию сохранения текущих настроек во встроенную энергонезависимую память контроллера.

Команда READ

result_t command_read_settings (device_t id)
Код команды (CMD): "read" Или 0x64616572.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Чтение всех настроек контроллера из flash памяти в оперативную, заменяя текущие настройки.

Команда SARS

result_t command_save_robust_settings (device_t id)
Код команды (CMD): "sars" Или 0x73726173.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
При получении команды контроллер выполняет операцию сохранения важных настроек (калибровочные коэффициенты и т.п.) во встроенную энергонезависимую память контроллера.

Команда RERS

result_t command_read_robust_settings (device_t id)
Код команды (CMD): "rers" Или 0x73726572.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Чтение важных настроек (калибровочные коэффициенты и т.п.) контроллера из flash памяти в оперативную, заменяя текущие настройки.

Команда EESV

result_t command_eesave_settings (device_t id)
Код команды (CMD): "eesv" Или 0x76736565.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек контроллера в EEPROM память позиционера, которые непосредственно связаны с позиционером и не меняются без его механической переделки. Функция должна использоваться только производителем.

Команда EERD

result_t command_eeread_settings (device_t id)
Код команды (CMD): "eerd" Или 0x64726565.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Чтение настроек контроллера из EEPROM памяти позиционера, которые непосредственно связаны с позиционером и не меняются без его механической переделки. Эта операция также автоматически выполняется при подключении позиционера с EEPROM памятью. Функция должна использоваться только производителем.

Группа команд получения статуса контроллера

Команда GETS

result_t get_status (device_t id, status_t* status)
Код команды (CMD): "gets" Или 0x73746567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (54 байта)

INT32U CMD Команда (возврат)
INT8U MoveSts Состояние движения.
0x01 - MOVE_STATE_MOVING (Если флаг установлен, то контроллер пытается вращать двигателем. Не используйте этот флаг для ожидания завершения команды движения. Вместо него используйте MVCMD_RUNNING из поля MvCmdSts.)
0x02 - MOVE_STATE_TARGET_SPEED (Флаг устанавливается при достижении заданной скорости.)
0x04 - MOVE_STATE_ANTIPLAY (Выполняется компенсация люфта, если флаг установлен.)
INT8U MvCmdSts Состояние команды движения (касается command_move, command_movr, command_left, command_right, command_stop, command_home, command_loft).
0x3F - MVCMD_NAME_BITS (Битовая маска активной команды.)
0x00 - MVCMD_UKNWN (Неизвестная команда.)
0x01 - MVCMD_MOVE (Команда move.)
0x02 - MVCMD_MOVR (Команда movr.)
0x03 - MVCMD_LEFT (Команда left.)
0x04 - MVCMD_RIGHT (Команда rigt.)
0x05 - MVCMD_STOP (Команда stop.)
0x06 - MVCMD_HOME (Команда home.)
0x07 - MVCMD_LOFT (Команда loft.)
0x08 - MVCMD_SSTP (Команда плавной остановки(SSTP).)
0x40 - MVCMD_ERROR (Состояние завершения движения (1 - команда движения выполнена с ошибкой, 0 - команда движения выполнена корректно). Имеет смысл если MVCMD_RUNNING указывает на завершение движения.)
0x80 - MVCMD_RUNNING (Состояние команды движения (0 - команда движения выполнена, 1 - команда движения сейчас выполняется).)
INT8U PWRSts Состояние питания шагового двигателя (используется только с шаговым двигателем).
0x00 - PWR_STATE_UNKNOWN (Неизвестное состояние, которое не должно никогда реализовываться.)
0x01 - PWR_STATE_OFF (Обмотки мотора разомкнуты и не управляются драйвером.)
0x03 - PWR_STATE_NORM (Обмотки запитаны номинальным током.)
0x04 - PWR_STATE_REDUCT (Обмотки намеренно запитаны уменьшенным током от рабочего для снижения потребляемой мощности.)
0x05 - PWR_STATE_MAX (Обмотки запитаны максимально доступным током, который может выдать схема при данном напряжении питания.)
INT8U EncSts Состояние энкодера.
0x00 - ENC_STATE_ABSENT (Энкодер не подключен.)
0x01 - ENC_STATE_UNKNOWN (Cостояние энкодера неизвестно.)
0x02 - ENC_STATE_MALFUNC (Энкодер подключен и неисправен.)
0x03 - ENC_STATE_REVERS (Энкодер подключен и исправен, но считает в другую сторону.)
0x04 - ENC_STATE_OK (Энкодер подключен и работает адекватно.)
INT8U WindSts Состояние обмоток.
0x00 - WIND_A_STATE_ABSENT (Обмотка A не подключена.)
0x01 - WIND_A_STATE_UNKNOWN (Cостояние обмотки A неизвестно.)
0x02 - WIND_A_STATE_MALFUNC (Короткое замыкание на обмотке A.)
0x03 - WIND_A_STATE_OK (Обмотка A работает адекватно.)
0x00 - WIND_B_STATE_ABSENT (Обмотка B не подключена.)
0x10 - WIND_B_STATE_UNKNOWN (Cостояние обмотки B неизвестно.)
0x20 - WIND_B_STATE_MALFUNC (Короткое замыкание на обмотке B.)
0x30 - WIND_B_STATE_OK (Обмотка B работает адекватно.)
INT32S CurPosition Первичное поле, в котором хранится текущая позиция, как бы ни была устроена обратная связь. В случае работы с DC-мотором в этом поле находится текущая позиция по данным с энкодера, в случае работы с ШД-мотором в режиме, когда первичными являются импульсы, подаваемые на мотор, в этом поле содержится целое значение шагов текущей позиции.
INT16S uCurPosition Дробная часть текущей позиции в микрошагах (-255..255). Используется только с шаговым двигателем.
INT64S EncPosition Текущая позиция по данным с энкодера в импульсах энкодера, используется только если энкодер установлен, активизирован и не является основным датчиком положения, например при использовании энкодера совместно с шаговым двигателем для контроля проскальзования.
INT32S CurSpeed Текущая скорость.
INT16S uCurSpeed Дробная часть текущей скорости в микрошагах (-255..255). Используется только с шаговым двигателем.
INT16S Ipwr Ток потребления силовой части.
INT16S Upwr Напряжение на силовой части, десятки мВ.
INT16S Iusb Ток потребления по USB.
INT16S Uusb Напряжение на USB, десятки мВ.
INT16S CurT Температура процессора в десятых долях градусов цельсия.
INT32U Flags Флаги состояний.
0x00003F - STATE_CONTR (Флаги состояния контроллера.)
0x000001 - STATE_ERRC (Недопустимая команда.)
0x000002 - STATE_ERRD (Нарушение целостности данных.)
0x000004 - STATE_ERRV (Недопустимое значение данных.)
0x000010 - STATE_EEPROM_CONNECTED (Подключена память EEPROM с настройками.)
0x000020 - STATE_IS_HOMED (Калибровка выполнена)
0x73FFC0 - STATE_SECUR (Флаги опасности.)
0x000040 - STATE_ALARM (Контроллер находится в состоянии ALARM, показывая, что случилась какая-то опасная ситуация. В состоянии ALARM все команды игнорируются пока не будет послана команда STOP и состояние ALARM деактивируется.)
0x000080 - STATE_CTP_ERROR (Контроль позиции нарушен(используется только с шаговым двигателем).)
0x000100 - STATE_POWER_OVERHEAT (Перегрелась силовая часть платы.)
0x000200 - STATE_CONTROLLER_OVERHEAT (Перегрелась микросхема контроллера.)
0x000400 - STATE_OVERLOAD_POWER_VOLTAGE (Превышено напряжение на силовой части.)
0x000800 - STATE_OVERLOAD_POWER_CURRENT (Превышен максимальный ток потребления силовой части.)
0x001000 - STATE_OVERLOAD_USB_VOLTAGE (Превышено напряжение на USB.)
0x002000 - STATE_LOW_USB_VOLTAGE (Слишком низкое напряжение на USB.)
0x004000 - STATE_OVERLOAD_USB_CURRENT (Превышен максимальный ток потребления USB.)
0x008000 - STATE_BORDERS_SWAP_MISSET (Достижение неверной границы.)
0x010000 - STATE_LOW_POWER_VOLTAGE (Напряжение на силовой части ниже чем напряжение Low Voltage Protection)
0x020000 - STATE_H_BRIDGE_FAULT (Получен сигнал от драйвера о неисправности)
0x0C0000 - STATE_CURRENT_MOTOR_BITS (Биты, показывающие текущий рабочий мотор на платах с несколькими выходами для двигателей.)
0x000000 - STATE_CURRENT_MOTOR0 (Мотор 0.)
0x040000 - STATE_CURRENT_MOTOR1 (Мотор 1.)
0x080000 - STATE_CURRENT_MOTOR2 (Мотор 2.)
0x0C0000 - STATE_CURRENT_MOTOR3 (Мотор 3.)
0x100000 - STATE_WINDING_RES_MISMATCH (Сопротивления обмоток отличаются друг от друга слишком сильно)
0x200000 - STATE_ENCODER_FAULT (Получен сигнал от энкодера о неисправности)
0x400000 - STATE_MOTOR_CURRENT_LIMIT (Превышен предел по току)
INT32U GPIOFlags Флаги состояний GPIO входов.
0xFFFF - STATE_DIG_SIGNAL (Флаги цифровых сигналов.)
0x0001 - STATE_RIGHT_EDGE (Достижение правой границы.)
0x0002 - STATE_LEFT_EDGE (Достижение левой границы.)
0x0004 - STATE_BUTTON_RIGHT (Состояние кнопки "вправо" (1, если нажата).)
0x0008 - STATE_BUTTON_LEFT (Состояние кнопки "влево" (1, если нажата).)
0x0010 - STATE_GPIO_PINOUT (Если флаг установлен, ввод/вывод общего назначения работает как выход; если флаг сброшен, ввод/вывод работает как вход.)
0x0020 - STATE_GPIO_LEVEL (Состояние ввода/вывода общего назначения.)
0x0040 - STATE_HALL_A (Состояние вывода датчика холла(a)(флаг "1", если датчик активен).)
0x0080 - STATE_HALL_B (Состояние вывода датчика холла(b)(флаг "1", если датчик активен).)
0x0100 - STATE_HALL_C (Состояние вывода датчика холла(c)(флаг "1", если датчик активен).)
0x0200 - STATE_BRAKE (Состояние вывода управления тормозом(флаг "1" - если на тормоз подаётся питание, "0" - если тормоз не запитан).)
0x0400 - STATE_REV_SENSOR (Состояние вывода датчика оборотов(флаг "1", если датчик активен).)
0x0800 - STATE_SYNC_INPUT (Состояние входа синхронизации(1, если вход синхронизации активен).)
0x1000 - STATE_SYNC_OUTPUT (Состояние выхода синхронизации(1, если выход синхронизации активен).)
0x2000 - STATE_ENC_A (Состояние ножки A энкодера(флаг "1", если энкодер активен).)
0x4000 - STATE_ENC_B (Состояние ножки B энкодера(флаг "1", если энкодер активен).)
INT8U CmdBufFreeSpace Это поле показывает количество свободных ячеек буфера цепочки синхронизации.
INT8U Reserved [4] Зарезервировано (4 байта)
INT16U CRC Контрольная сумма

Описание:
Возвращает информацию о текущем состоянии устройства.

Команда STMS

result_t command_start_measurements (device_t id)
Код команды (CMD): "stms" Или 0x736D7473.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Начать измерения и буферизацию скорости, ошибки следования.

Команда GETM

result_t get_measurements (device_t id, measurements_t* measurements)
Код команды (CMD): "getm" Или 0x6D746567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (216 байт)

INT32U CMD Команда (возврат)
INT32S Speed [25] Текущая скорость.
INT32S Error [25] Текущая скорость.
INT32U Length Длина фактических данных в буфере.
INT8U Reserved [6] Зарезервировано (6 байт)
INT16U CRC Контрольная сумма

Описание:
Команда чтения буфера данных для построения графиков скорости и ошибки следования. Заполнение буфера начинается по команде "start_measurements". Буффер вмещает 25 точек, точки снимаются с периодом 1 мс. Для создания устойчивой системы следует считывать данные каждые 20 мс, если буффер полностью заполнен, то рекомендуется повторять считывания каждые 5 мс до момента пока буффер вновь не станет заполнен 20-ю точками.

Команда GETC

result_t get_chart_data (device_t id, chart_data_t* chart_data)
Код команды (CMD): "getc" Или 0x63746567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (38 байт)

INT32U CMD Команда (возврат)
INT16S WindingVoltageA В случае ШД, напряжение на обмотке A; в случае бесщеточного, напряжение на первой обмотке; в случае DC на единственной.
INT16S WindingVoltageB В случае ШД, напряжение на обмотке B; в случае бесщеточного, напряжение на второй обмотке; в случае DC не используется.
INT16S WindingVoltageC В случае бесщеточного, напряжение на третьей обмотке; в случае ШД и DC не используется.
INT16S WindingCurrentA В случае ШД, ток в обмотке A; в случае бесщеточного, ток в первой обмотке; в случае DC в единственной.
INT16S WindingCurrentB В случае ШД, ток в обмотке B; в случае бесщеточного, ток в второй обмотке; в случае DC не используется.
INT16S WindingCurrentC В случае бесщеточного, ток в третьей обмотке; в случае ШД и DC не используется.
INT16U Pot Значение на аналоговом входе. Диапазон: 0..10000
INT16U Joy Положение джойстика в десятитысячных долях. Диапазон: 0..10000
INT16S DutyCycle Коэффициент заполнения ШИМ.
INT8U Reserved [14] Зарезервировано (14 байт)
INT16U CRC Контрольная сумма

Описание:
Команда чтения состояния обмоток и других не часто используемых данных. Предназначена в первую очередь для получения данных для построения графиков в паре с командой GETS.

Команда GETI

result_t get_device_information (device_t id, device_information_t* device_information)
Код команды (CMD): "geti" Или 0x69746567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (36 байт)

INT32U CMD Команда (возврат)
CHAR Manufacturer [4] Производитель
CHAR ManufacturerId [2] Идентификатор производителя
CHAR ProductDescription [8] Описание продукта
INT8U Major Основной номер версии железа.
INT8U Minor Второстепенный номер версии железа.
INT16U Release Номер правок этой версии железа.
INT8U Reserved [12] Зарезервировано (12 байт)
INT16U CRC Контрольная сумма

Описание:
Возвращает информацию об устройстве. Доступна как из прошивки, так и из бутлоадера.

Команда GSER

result_t get_serial_number (device_t id, unsigned int* SerialNumber)
Код команды (CMD): "gser" Или 0x72657367.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (10 байт)

INT32U CMD Команда (возврат)
INT32U SerialNumber Серийный номер платы.
INT16U CRC Контрольная сумма

Описание:
Чтение серийного номера контроллера.

Группа команд для работы с прошивкой контроллера

Команда GFWV

result_t get_firmware_version (device_t id, unsigned int* Major, unsigned int* Minor, unsigned int* Release)
Код команды (CMD): "gfwv" Или 0x76776667.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (10 байт)

INT32U CMD Команда (возврат)
INT8U Major Мажорный номер версии прошивки
INT8U Minor Минорный номер версии прошивки
INT16U Release Номер релиза версии прошивки
INT16U CRC Контрольная сумма

Описание:
Чтение номера версии прошивки контроллера.

Команда UPDF

result_t service_command_updf (device_t id)
Код команды (CMD): "updf" Или 0x66647075.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (4 байта)

INT32U CMD Команда (возврат)

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

Группа сервисных команд

Команда SSER

result_t set_serial_number (device_t id, const serial_number_t* serial_number)
Код команды (CMD): "sser" Или 0x72657373.

Запрос: (50 байт)

INT32U CMD Команда
INT32U SN Новый серийный номер платы.
INT8U Key [32] Ключ защиты для установки серийного номера (256 бит).
INT8U Major Основной номер версии железа.
INT8U Minor Второстепенный номер версии железа.
INT16U Release Номер правок этой версии железа.
INT8U Reserved [4] Зарезервировано (4 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись серийного номера и версии железа во flash память контроллера. Вместе с новым серийным номером и версией железа передаётся "Ключ", только при совпадении которого происходит изменение и сохранение. Функция используется только производителем.

Команда RDAN

result_t get_analog_data (device_t id, analog_data_t* analog_data)
Код команды (CMD): "rdan" Или 0x6E616472.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (76 байт)

INT32U CMD Команда (возврат)
INT16U A1Voltage_ADC "Выходное напряжение на 1 выводе обмотки А" необработанные данные с АЦП.
INT16U A2Voltage_ADC "Выходное напряжение на 2 выводе обмотки А" необработанные данные с АЦП.
INT16U B1Voltage_ADC "Выходное напряжение на 1 выводе обмотки B" необработанные данные с АЦП.
INT16U B2Voltage_ADC "Выходное напряжение на 2 выводе обмотки B" необработанные данные с АЦП.
INT16U SupVoltage_ADC "Напряжение питания ключей Н-моста" необработанные данные с АЦП.
INT16U ACurrent_ADC "Ток через обмотку А" необработанные данные с АЦП.
INT16U BCurrent_ADC "Ток через обмотку B" необработанные данные с АЦП.
INT16U FullCurrent_ADC "Полный ток" необработанные данные с АЦП.
INT16U Temp_ADC Напряжение с датчика температуры, необработанные данные с АЦП.
INT16U Joy_ADC Джойстик, необработанные данные с АЦП.
INT16U Pot_ADC Напряжение на аналоговом входе, необработанные данные с АЦП
INT16U L5_ADC Напряжение питания USB после current sense резистора, необработанные данные с АЦП.
INT16U H5_ADC Напряжение питания USB, необработанные данные с АЦП
INT16S A1Voltage "Выходное напряжение на 1 выводе обмотки А" откалиброванные данные.
INT16S A2Voltage "Выходное напряжение на 2 выводе обмотки А" откалиброванные данные.
INT16S B1Voltage "Выходное напряжение на 1 выводе обмотки B" откалиброванные данные.
INT16S B2Voltage "Выходное напряжение на 2 выводе обмотки B" откалиброванные данные.
INT16S SupVoltage "Напряжение питания ключей Н-моста" откалиброванные данные.
INT16S ACurrent "Ток через обмотку А" откалиброванные данные.
INT16S BCurrent "Ток через обмотку B" откалиброванные данные.
INT16S FullCurrent "Полный ток" откалиброванные данные.
INT16S Temp Температура, откалиброванные данные.
INT16S Joy Джойстик во внутренних единицах. Диапазон: 0..10000
INT16S Pot Аналоговый вход во внутренних единицах. Диапазон: 0..10000
INT16S L5 Напряжение питания USB после current sense резистора
INT16S H5 Напряжение питания USB
INT16U deprecated
INT32S R Сопротивление обмоток двигателя(для шагового двигателя), в мОм
INT32S L Псевдоиндуктивность обмоток двигателя(для шагового двигателя), в мкГн
INT8U Reserved [8] Зарезервировано (8 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение аналоговых данных, содержащих данные с АЦП и нормированные значения величин. Эта функция используется для тестирования и калибровки устройства.

Команда DBGR

result_t get_debug_read (device_t id, debug_read_t* debug_read)
Код команды (CMD): "dbgr" Или 0x72676264.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (142 байта)

INT32U CMD Команда (возврат)
INT8U DebugData [128] Отладочные данные.
INT8U Reserved [8] Зарезервировано (8 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение данных из прошивки для отладки и поиска неисправностей. Получаемые данные зависят от версии прошивки, истории и контекста использования.

Команда DBGW

result_t set_debug_write (device_t id, const debug_write_t* debug_write)
Код команды (CMD): "dbgw" Или 0x77676264.

Запрос: (142 байта)

INT32U CMD Команда
INT8U DebugData [128] Отладочные данные.
INT8U Reserved [8] Зарезервировано (8 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись данных в прошивку для отладки и поиска неисправностей.

Группа команд работы с EEPROM подвижки

Команда SNME

result_t set_stage_name (device_t id, const stage_name_t* stage_name)
Код команды (CMD): "snme" Или 0x656D6E73.

Запрос: (30 байт)

INT32U CMD Команда
CHAR PositionerName [16] Пользовательское имя подвижки. Может быть установлено пользователем для его удобства. Максимальная длина строки: 16 символов.
INT8U Reserved [8] Зарезервировано (8 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись пользовательского имени подвижки в EEPROM.

Команда GNME

result_t get_stage_name (device_t id, stage_name_t* stage_name)
Код команды (CMD): "gnme" Или 0x656D6E67.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (30 байт)

INT32U CMD Команда (возврат)
CHAR PositionerName [16] Пользовательское имя подвижки. Может быть установлено пользователем для его удобства. Максимальная длина строки: 16 символов.
INT8U Reserved [8] Зарезервировано (8 байт)
INT16U CRC Контрольная сумма

Описание:
Чтение пользовательского имени подвижки из EEPROM.

Команда SSTI

result_t set_stage_information (device_t id, const stage_information_t* stage_information)
Код команды (CMD): "ssti" Или 0x69747373.

Запрос: (70 байт)

INT32U CMD Команда
CHAR Manufacturer [16] Производитель. Максимальная длина строки: 16 символов.
CHAR PartNumber [24] Серия и номер модели. Максимальная длина строки: 24 символа.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись информации о позиционере в EEPROM. Функция должна использоваться только производителем.

Команда GSTI

result_t get_stage_information (device_t id, stage_information_t* stage_information)
Код команды (CMD): "gsti" Или 0x69747367.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (70 байт)

INT32U CMD Команда (возврат)
CHAR Manufacturer [16] Производитель. Максимальная длина строки: 16 символов.
CHAR PartNumber [24] Серия и номер модели. Максимальная длина строки: 24 символа.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение информации о позиционере из EEPROM.

Команда SSTS

result_t set_stage_settings (device_t id, const stage_settings_t* stage_settings)
Код команды (CMD): "ssts" Или 0x73747373.

Запрос: (70 байт)

INT32U CMD Команда
FLT32 LeadScrewPitch Шаг ходового винта в мм. Тип данных: float.
CHAR Units [8] Единицы измерения расстояния, используемые в полях MaxSpeed и TravelRange (шаги, градусы, мм, ...), Максимальная длина строки: 8 символов.
FLT32 MaxSpeed Максимальная скорость (Units/с). Тип данных: float.
FLT32 TravelRange Диапазон перемещения (Units). Тип данных: float.
FLT32 SupplyVoltageMin Минимальное напряжение питания (В). Тип данных: float.
FLT32 SupplyVoltageMax Максимальное напряжение питания (В). Тип данных: float.
FLT32 MaxCurrentConsumption Максимальный ток потребления (А). Тип данных: float.
FLT32 HorizontalLoadCapacity Горизонтальная грузоподъемность (кг). Тип данных: float.
FLT32 VerticalLoadCapacity Вертикальная грузоподъемность (кг). Тип данных: float.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек позиционера в EEPROM. Функция должна использоваться только производителем.

Команда GSTS

result_t get_stage_settings (device_t id, stage_settings_t* stage_settings)
Код команды (CMD): "gsts" Или 0x73747367.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (70 байт)

INT32U CMD Команда (возврат)
FLT32 LeadScrewPitch Шаг ходового винта в мм. Тип данных: float.
CHAR Units [8] Единицы измерения расстояния, используемые в полях MaxSpeed и TravelRange (шаги, градусы, мм, ...), Максимальная длина строки: 8 символов.
FLT32 MaxSpeed Максимальная скорость (Units/с). Тип данных: float.
FLT32 TravelRange Диапазон перемещения (Units). Тип данных: float.
FLT32 SupplyVoltageMin Минимальное напряжение питания (В). Тип данных: float.
FLT32 SupplyVoltageMax Максимальное напряжение питания (В). Тип данных: float.
FLT32 MaxCurrentConsumption Максимальный ток потребления (А). Тип данных: float.
FLT32 HorizontalLoadCapacity Горизонтальная грузоподъемность (кг). Тип данных: float.
FLT32 VerticalLoadCapacity Вертикальная грузоподъемность (кг). Тип данных: float.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек позиционера из EEPROM.

Команда SMTI

result_t set_motor_information (device_t id, const motor_information_t* motor_information)
Код команды (CMD): "smti" Или 0x69746D73.

Запрос: (70 байт)

INT32U CMD Команда
CHAR Manufacturer [16] Производитель. Максимальная длина строки: 16 символов.
CHAR PartNumber [24] Серия и номер модели. Максимальная длина строки: 24 символа.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись информации о двигателе в EEPROM. Функция должна использоваться только производителем.

Команда GMTI

result_t get_motor_information (device_t id, motor_information_t* motor_information)
Код команды (CMD): "gmti" Или 0x69746D67.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (70 байт)

INT32U CMD Команда (возврат)
CHAR Manufacturer [16] Производитель. Максимальная длина строки: 16 символов.
CHAR PartNumber [24] Серия и номер модели. Максимальная длина строки: 24 символа.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение информации о двигателе из EEPROM.

Команда SMTS

result_t set_motor_settings (device_t id, const motor_settings_t* motor_settings)
Код команды (CMD): "smts" Или 0x73746D73.

Запрос: (112 байт)

INT32U CMD Команда
INT8U MotorType Тип двигателя
0x00 - MOTOR_TYPE_UNKNOWN (Неизвестный двигатель)
0x01 - MOTOR_TYPE_STEP (Шаговый двигатель)
0x02 - MOTOR_TYPE_DC (DC двигатель)
0x03 - MOTOR_TYPE_BLDC (BLDC двигатель)
INT8U ReservedField Зарезервировано
INT16U Poles Кол-во пар полюсов у DС или BLDC двигателя или кол-во шагов на оборот для шагового двигателя.
INT16U Phases Кол-во фаз у BLDC двигателя.
FLT32 NominalVoltage Номинальное напряжение на обмотке (В). Тип данных: float.
FLT32 NominalCurrent Максимальный постоянный ток в обмотке для DC и BLDC двигателей, номинальный ток в обмотке для шаговых двигателей (А). Тип данных: float.
FLT32 NominalSpeed Номинальная скорость (об/мин). Применяется для DC и BLDC двигателей. Тип данных: float.
FLT32 NominalTorque Номинальный крутящий момент (мН м). Применяется для DC и BLDC двигателей. Тип данных: float.
FLT32 NominalPower Номинальная мощность(Вт). Применяется для DC и BLDC двигателей. Тип данных: float.
FLT32 WindingResistance Сопротивление обмотки DC двигателя, каждой из двух обмоток шагового двигателя или каждой из трёх обмоток BLDC двигателя (Ом). Тип данных: float.
FLT32 WindingInductance Индуктивность обмотки DC двигателя, каждой из двух обмоток шагового двигателя или каждой из трёх обмоток BLDC двигателя (мГн). Тип данных: float.
FLT32 RotorInertia Инерция ротора (г cм2). Тип данных: float.
FLT32 StallTorque Крутящий момент удержания позиции для шагового двигателя или крутящий момент при неподвижном роторе для других типов двигателей (мН м). Тип данных: float.
FLT32 DetentTorque Момент удержания позиции с незапитанными обмотками (мН м). Тип данных: float.
FLT32 TorqueConstant Константа крутящего момента, определяющая коэффициент пропорциональности максимального момента силы ротора от протекающего в обмотке тока (мН м/А). Используется в основном для DC двигателей. Тип данных: float.
FLT32 SpeedConstant Константа скорости, определяющая значение или амплитуду напряжения наведённой индукции при вращении ротора DC или BLDC двигателя (об/мин / В) или шагового двигателя (шаг/с / В). Тип данных: float.
FLT32 SpeedTorqueGradient Градиент крутящего момента (об/мин / мН м). Тип данных: float.
FLT32 MechanicalTimeConstant Механическая постоянная времени (мс). Тип данных: float.
FLT32 MaxSpeed Максимальная разрешённая скорость для шаговых двигателей (шаг/с) или для DC и BLDC двигателей (об/мин). Тип данных: float.
FLT32 MaxCurrent Максимальный ток в обмотке (А). Тип данных: float.
FLT32 MaxCurrentTime Безопасная длительность максимального тока в обмотке (мс). Тип данных: float.
FLT32 NoLoadCurrent Ток потребления в холостом режиме (А). Применяется для DC и BLDC двигателей. Тип данных: float.
FLT32 NoLoadSpeed Скорость в холостом режиме (об/мин). Применяется для DC и BLDC двигателей. Тип данных: float.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек двигателя в EEPROM. Функция должна использоваться только производителем.

Команда GMTS

result_t get_motor_settings (device_t id, motor_settings_t* motor_settings)
Код команды (CMD): "gmts" Или 0x73746D67.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (112 байт)

INT32U CMD Команда (возврат)
INT8U MotorType Тип двигателя
0x00 - MOTOR_TYPE_UNKNOWN (Неизвестный двигатель)
0x01 - MOTOR_TYPE_STEP (Шаговый двигатель)
0x02 - MOTOR_TYPE_DC (DC двигатель)
0x03 - MOTOR_TYPE_BLDC (BLDC двигатель)
INT8U ReservedField Зарезервировано
INT16U Poles Кол-во пар полюсов у DС или BLDC двигателя или кол-во шагов на оборот для шагового двигателя.
INT16U Phases Кол-во фаз у BLDC двигателя.
FLT32 NominalVoltage Номинальное напряжение на обмотке (В). Тип данных: float.
FLT32 NominalCurrent Максимальный постоянный ток в обмотке для DC и BLDC двигателей, номинальный ток в обмотке для шаговых двигателей (А). Тип данных: float.
FLT32 NominalSpeed Номинальная скорость (об/мин). Применяется для DC и BLDC двигателей. Тип данных: float.
FLT32 NominalTorque Номинальный крутящий момент (мН м). Применяется для DC и BLDC двигателей. Тип данных: float.
FLT32 NominalPower Номинальная мощность(Вт). Применяется для DC и BLDC двигателей. Тип данных: float.
FLT32 WindingResistance Сопротивление обмотки DC двигателя, каждой из двух обмоток шагового двигателя или каждой из трёх обмоток BLDC двигателя (Ом). Тип данных: float.
FLT32 WindingInductance Индуктивность обмотки DC двигателя, каждой из двух обмоток шагового двигателя или каждой из трёх обмоток BLDC двигателя (мГн). Тип данных: float.
FLT32 RotorInertia Инерция ротора (г cм2). Тип данных: float.
FLT32 StallTorque Крутящий момент удержания позиции для шагового двигателя или крутящий момент при неподвижном роторе для других типов двигателей (мН м). Тип данных: float.
FLT32 DetentTorque Момент удержания позиции с незапитанными обмотками (мН м). Тип данных: float.
FLT32 TorqueConstant Константа крутящего момента, определяющая коэффициент пропорциональности максимального момента силы ротора от протекающего в обмотке тока (мН м/А). Используется в основном для DC двигателей. Тип данных: float.
FLT32 SpeedConstant Константа скорости, определяющая значение или амплитуду напряжения наведённой индукции при вращении ротора DC или BLDC двигателя (об/мин / В) или шагового двигателя (шаг/с / В). Тип данных: float.
FLT32 SpeedTorqueGradient Градиент крутящего момента (об/мин / мН м). Тип данных: float.
FLT32 MechanicalTimeConstant Механическая постоянная времени (мс). Тип данных: float.
FLT32 MaxSpeed Максимальная разрешённая скорость для шаговых двигателей (шаг/с) или для DC и BLDC двигателей (об/мин). Тип данных: float.
FLT32 MaxCurrent Максимальный ток в обмотке (А). Тип данных: float.
FLT32 MaxCurrentTime Безопасная длительность максимального тока в обмотке (мс). Тип данных: float.
FLT32 NoLoadCurrent Ток потребления в холостом режиме (А). Применяется для DC и BLDC двигателей. Тип данных: float.
FLT32 NoLoadSpeed Скорость в холостом режиме (об/мин). Применяется для DC и BLDC двигателей. Тип данных: float.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек двигателя из EEPROM.

Команда SENI

result_t set_encoder_information (device_t id, const encoder_information_t* encoder_information)
Код команды (CMD): "seni" Или 0x696E6573.

Запрос: (70 байт)

INT32U CMD Команда
CHAR Manufacturer [16] Производитель. Максимальная длина строки: 16 символов.
CHAR PartNumber [24] Серия и номер модели. Максимальная длина строки: 24 символа.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись информации об энкодере в EEPROM. Функция должна использоваться только производителем.

Команда GENI

result_t get_encoder_information (device_t id, encoder_information_t* encoder_information)
Код команды (CMD): "geni" Или 0x696E6567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (70 байт)

INT32U CMD Команда (возврат)
CHAR Manufacturer [16] Производитель. Максимальная длина строки: 16 символов.
CHAR PartNumber [24] Серия и номер модели. Максимальная длина строки: 24 символа.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение информации об энкодере из EEPROM.

Команда SENS

result_t set_encoder_settings (device_t id, const encoder_settings_t* encoder_settings)
Код команды (CMD): "sens" Или 0x736E6573.

Запрос: (54 байта)

INT32U CMD Команда
FLT32 MaxOperatingFrequency Максимальная частота (кГц). Тип данных: float.
FLT32 SupplyVoltageMin Минимальное напряжение питания (В). Тип данных: float.
FLT32 SupplyVoltageMax Максимальное напряжение питания (В). Тип данных: float.
FLT32 MaxCurrentConsumption Максимальное потребление тока (мА). Тип данных: float.
INT32U PPR Количество отсчётов на оборот
INT32U EncoderSettings Флаги настроек энкодера
0x001 - ENCSET_DIFFERENTIAL_OUTPUT (Если флаг установлен, то энкодер имеет дифференциальный выход, иначе - несимметричный выход)
0x004 - ENCSET_PUSHPULL_OUTPUT (Если флаг установлен, то энкодер имеет двухтактный выход, иначе - выход с открытым коллектором)
0x010 - ENCSET_INDEXCHANNEL_PRESENT (Если флаг установлен, то энкодер имеет дополнительный индексный канал, иначе - он отсутствует)
0x040 - ENCSET_REVOLUTIONSENSOR_PRESENT (Если флаг установлен, то энкодер имеет датчик оборотов, иначе - он отсутствует)
0x100 - ENCSET_REVOLUTIONSENSOR_ACTIVE_HIGH (Если флаг установлен, то активное состояние датчика оборотов соответствует логической 1, иначе - логическому 0)
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек энкодера в EEPROM. Функция должна использоваться только производителем.

Команда GENS

result_t get_encoder_settings (device_t id, encoder_settings_t* encoder_settings)
Код команды (CMD): "gens" Или 0x736E6567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (54 байта)

INT32U CMD Команда (возврат)
FLT32 MaxOperatingFrequency Максимальная частота (кГц). Тип данных: float.
FLT32 SupplyVoltageMin Минимальное напряжение питания (В). Тип данных: float.
FLT32 SupplyVoltageMax Максимальное напряжение питания (В). Тип данных: float.
FLT32 MaxCurrentConsumption Максимальное потребление тока (мА). Тип данных: float.
INT32U PPR Количество отсчётов на оборот
INT32U EncoderSettings Флаги настроек энкодера
0x001 - ENCSET_DIFFERENTIAL_OUTPUT (Если флаг установлен, то энкодер имеет дифференциальный выход, иначе - несимметричный выход)
0x004 - ENCSET_PUSHPULL_OUTPUT (Если флаг установлен, то энкодер имеет двухтактный выход, иначе - выход с открытым коллектором)
0x010 - ENCSET_INDEXCHANNEL_PRESENT (Если флаг установлен, то энкодер имеет дополнительный индексный канал, иначе - он отсутствует)
0x040 - ENCSET_REVOLUTIONSENSOR_PRESENT (Если флаг установлен, то энкодер имеет датчик оборотов, иначе - он отсутствует)
0x100 - ENCSET_REVOLUTIONSENSOR_ACTIVE_HIGH (Если флаг установлен, то активное состояние датчика оборотов соответствует логической 1, иначе - логическому 0)
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек энкодера из EEPROM.

Команда SHSI

result_t set_hallsensor_information (device_t id, const hallsensor_information_t* hallsensor_information)
Код команды (CMD): "shsi" Или 0x69736873.

Запрос: (70 байт)

INT32U CMD Команда
CHAR Manufacturer [16] Производитель. Максимальная длина строки: 16 символов.
CHAR PartNumber [24] Серия и номер модели. Максимальная длина строки: 24 символа.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись информации о датчиках Холла в EEPROM. Функция должна использоваться только производителем.

Команда GHSI

result_t get_hallsensor_information (device_t id, hallsensor_information_t* hallsensor_information)
Код команды (CMD): "ghsi" Или 0x69736867.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (70 байт)

INT32U CMD Команда (возврат)
CHAR Manufacturer [16] Производитель. Максимальная длина строки: 16 символов.
CHAR PartNumber [24] Серия и номер модели. Максимальная длина строки: 24 символа.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение информации о датчиках Холла из EEPROM.

Команда SHSS

result_t set_hallsensor_settings (device_t id, const hallsensor_settings_t* hallsensor_settings)
Код команды (CMD): "shss" Или 0x73736873.

Запрос: (50 байт)

INT32U CMD Команда
FLT32 MaxOperatingFrequency Максимальная частота (кГц). Тип данных: float.
FLT32 SupplyVoltageMin Минимальное напряжение питания (В). Тип данных: float.
FLT32 SupplyVoltageMax Максимальное напряжение питания (В). Тип данных: float.
FLT32 MaxCurrentConsumption Максимальное потребление тока (мА). Тип данных: float.
INT32U PPR Количество отсчётов на оборот
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек датчиков Холла в EEPROM. Функция должна использоваться только производителем.

Команда GHSS

result_t get_hallsensor_settings (device_t id, hallsensor_settings_t* hallsensor_settings)
Код команды (CMD): "ghss" Или 0x73736867.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (50 байт)

INT32U CMD Команда (возврат)
FLT32 MaxOperatingFrequency Максимальная частота (кГц). Тип данных: float.
FLT32 SupplyVoltageMin Минимальное напряжение питания (В). Тип данных: float.
FLT32 SupplyVoltageMax Максимальное напряжение питания (В). Тип данных: float.
FLT32 MaxCurrentConsumption Максимальное потребление тока (мА). Тип данных: float.
INT32U PPR Количество отсчётов на оборот
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек датчиков Холла из EEPROM.

Команда SGRI

result_t set_gear_information (device_t id, const gear_information_t* gear_information)
Код команды (CMD): "sgri" Или 0x69726773.

Запрос: (70 байт)

INT32U CMD Команда
CHAR Manufacturer [16] Производитель. Максимальная длина строки: 16 символов.
CHAR PartNumber [24] Серия и номер модели. Максимальная длина строки: 24 символа.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись информации о редукторе в EEPROM. Функция должна использоваться только производителем.

Команда GGRI

result_t get_gear_information (device_t id, gear_information_t* gear_information)
Код команды (CMD): "ggri" Или 0x69726767.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (70 байт)

INT32U CMD Команда (возврат)
CHAR Manufacturer [16] Производитель. Максимальная длина строки: 16 символов.
CHAR PartNumber [24] Серия и номер модели. Максимальная длина строки: 24 символа.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение информации о редукторе из EEPROM.

Команда SGRS

result_t set_gear_settings (device_t id, const gear_settings_t* gear_settings)
Код команды (CMD): "sgrs" Или 0x73726773.

Запрос: (58 байт)

INT32U CMD Команда
FLT32 ReductionIn Входной коэффициент редуктора. (Выход = (ReductionOut/ReductionIn) * вход) Тип данных: float.
FLT32 ReductionOut Выходной коэффициент редуктора. (Выход = (ReductionOut/ReductionIn) * вход) Тип данных: float.
FLT32 RatedInputTorque Максимальный крутящий момент (Н м). Тип данных: float.
FLT32 RatedInputSpeed Максимальная скорость на входном валу редуктора (об/мин). Тип данных: float.
FLT32 MaxOutputBacklash Выходной люфт редуктора (градус). Тип данных: float
FLT32 InputInertia Эквивалентная входная инерция редуктора(г см2). Тип данных: float.
FLT32 Efficiency КПД редуктора (%). Тип данных: float.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись настроек редуктора в EEPROM. Функция должна использоваться только производителем.

Команда GGRS

result_t get_gear_settings (device_t id, gear_settings_t* gear_settings)
Код команды (CMD): "ggrs" Или 0x73726767.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (58 байт)

INT32U CMD Команда (возврат)
FLT32 ReductionIn Входной коэффициент редуктора. (Выход = (ReductionOut/ReductionIn) * вход) Тип данных: float.
FLT32 ReductionOut Выходной коэффициент редуктора. (Выход = (ReductionOut/ReductionIn) * вход) Тип данных: float.
FLT32 RatedInputTorque Максимальный крутящий момент (Н м). Тип данных: float.
FLT32 RatedInputSpeed Максимальная скорость на входном валу редуктора (об/мин). Тип данных: float.
FLT32 MaxOutputBacklash Выходной люфт редуктора (градус). Тип данных: float
FLT32 InputInertia Эквивалентная входная инерция редуктора(г см2). Тип данных: float.
FLT32 Efficiency КПД редуктора (%). Тип данных: float.
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение настроек редуктора из EEPROM.

Команда SACC

result_t set_accessories_settings (device_t id, const accessories_settings_t* accessories_settings)
Код команды (CMD): "sacc" Или 0x63636173.

Запрос: (114 байт)

INT32U CMD Команда
CHAR MagneticBrakeInfo [24] Производитель и номер магнитного тормоза, Максимальная длина строки: 24 символов.
FLT32 MBRatedVoltage Номинальное напряжение для управления магнитным тормозом (В). Тип данных: float.
FLT32 MBRatedCurrent Номинальный ток для управления магнитным тормозом (А). Тип данных: float.
FLT32 MBTorque Удерживающий момент (мН м). Тип данных: float.
INT32U MBSettings Флаги настроек магнитного тормоза.
0x01 - MB_AVAILABLE (Если флаг установлен, то магнитный тормоз доступен)
0x02 - MB_POWERED_HOLD (Если флаг установлен, то магнитный тормоз находится в режиме удержания (активен) при подаче питания)
CHAR TemperatureSensorInfo [24] Производитель и номер температурного датчика, Максимальная длина строки: 24 символов.
FLT32 TSMin Минимальная измеряемая температура (град Цельсия). Тип данных: float.
FLT32 TSMax Максимальная измеряемая температура (град Цельсия) Тип данных: float.
FLT32 TSGrad Температурный градиент (В/град Цельсия). Тип данных: float.
INT32U TSSettings Флаги настроек температурного датчика.
0x07 - TS_TYPE_BITS (Биты, отвечающие за тип температурного датчика.)
0x00 - TS_TYPE_UNKNOWN (Неизвестный сенсор)
0x01 - TS_TYPE_THERMOCOUPLE (Термопара)
0x02 - TS_TYPE_SEMICONDUCTOR (Полупроводниковый температурный датчик)
0x08 - TS_AVAILABLE (Если флаг установлен, то датчик температуры доступен)
INT32U LimitSwitchesSettings Флаги настроек концевиков.
0x01 - LS_ON_SW1_AVAILABLE (Если флаг установлен, то концевик, подключенный к ножке SW1, доступен)
0x02 - LS_ON_SW2_AVAILABLE (Если флаг установлен, то концевик, подключенный к ножке SW2, доступен)
0x04 - LS_SW1_ACTIVE_LOW (Если флаг установлен, то концевик, подключенный к ножке SW1, считается сработавшим по низкому уровню на контакте)
0x08 - LS_SW2_ACTIVE_LOW (Если флаг установлен, то концевик, подключенный к ножке SW2, считается сработавшим по низкому уровню на контакте)
0x10 - LS_SHORTED (Если флаг установлен, то концевики закорочены.)
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Запись информации о дополнительных аксессуарах в EEPROM. Функция должна использоваться только производителем.

Команда GACC

result_t get_accessories_settings (device_t id, accessories_settings_t* accessories_settings)
Код команды (CMD): "gacc" Или 0x63636167.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (114 байт)

INT32U CMD Команда (возврат)
CHAR MagneticBrakeInfo [24] Производитель и номер магнитного тормоза, Максимальная длина строки: 24 символов.
FLT32 MBRatedVoltage Номинальное напряжение для управления магнитным тормозом (В). Тип данных: float.
FLT32 MBRatedCurrent Номинальный ток для управления магнитным тормозом (А). Тип данных: float.
FLT32 MBTorque Удерживающий момент (мН м). Тип данных: float.
INT32U MBSettings Флаги настроек магнитного тормоза.
0x01 - MB_AVAILABLE (Если флаг установлен, то магнитный тормоз доступен)
0x02 - MB_POWERED_HOLD (Если флаг установлен, то магнитный тормоз находится в режиме удержания (активен) при подаче питания)
CHAR TemperatureSensorInfo [24] Производитель и номер температурного датчика, Максимальная длина строки: 24 символов.
FLT32 TSMin Минимальная измеряемая температура (град Цельсия). Тип данных: float.
FLT32 TSMax Максимальная измеряемая температура (град Цельсия) Тип данных: float.
FLT32 TSGrad Температурный градиент (В/град Цельсия). Тип данных: float.
INT32U TSSettings Флаги настроек температурного датчика.
0x07 - TS_TYPE_BITS (Биты, отвечающие за тип температурного датчика.)
0x00 - TS_TYPE_UNKNOWN (Неизвестный сенсор)
0x01 - TS_TYPE_THERMOCOUPLE (Термопара)
0x02 - TS_TYPE_SEMICONDUCTOR (Полупроводниковый температурный датчик)
0x08 - TS_AVAILABLE (Если флаг установлен, то датчик температуры доступен)
INT32U LimitSwitchesSettings Флаги настроек концевиков.
0x01 - LS_ON_SW1_AVAILABLE (Если флаг установлен, то концевик, подключенный к ножке SW1, доступен)
0x02 - LS_ON_SW2_AVAILABLE (Если флаг установлен, то концевик, подключенный к ножке SW2, доступен)
0x04 - LS_SW1_ACTIVE_LOW (Если флаг установлен, то концевик, подключенный к ножке SW1, считается сработавшим по низкому уровню на контакте)
0x08 - LS_SW2_ACTIVE_LOW (Если флаг установлен, то концевик, подключенный к ножке SW2, считается сработавшим по низкому уровню на контакте)
0x10 - LS_SHORTED (Если флаг установлен, то концевики закорочены.)
INT8U Reserved [24] Зарезервировано (24 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение информации о дополнительных аксессуарах из EEPROM.

Команды загрузчика

Команда GBLV

result_t get_bootloader_version (device_t id, unsigned int* Major, unsigned int* Minor, unsigned int* Release)
Код команды (CMD): "gblv" Или 0x766C6267.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (10 байт)

INT32U CMD Команда (возврат)
INT8U Major Мажорный номер версии загрузчика
INT8U Minor Минорный номер версии загрузчика
INT16U Release Номер релиза версии загрузчика
INT16U CRC Контрольная сумма

Описание:
Чтение номера версии прошивки контроллера.

Команда IRND

result_t get_init_random (device_t id, init_random_t* init_random)
Код команды (CMD): "irnd" Или 0x646E7269.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (24 байта)

INT32U CMD Команда (возврат)
INT8U key [16] Случайный ключ.
INT8U Reserved [2] Зарезервировано (2 байта)
INT16U CRC Контрольная сумма

Описание:
Чтение случайного числа из контроллера.

Команда GUID

result_t get_globally_unique_identifier (device_t id, globally_unique_identifier_t* globally_unique_identifier)
Код команды (CMD): "guid" Или 0x64697567.

Запрос: (4 байта)

INT32U CMD Команда

Ответ: (40 байт)

INT32U CMD Команда (возврат)
INT32U UniqueID0 Уникальный ID 0.
INT32U UniqueID1 Уникальный ID 1.
INT32U UniqueID2 Уникальный ID 2.
INT32U UniqueID3 Уникальный ID 3.
INT8U Reserved [18] Зарезервировано (18 байт)
INT16U CRC Контрольная сумма

Описание:
Считывает уникальный идентификатор каждого чипа, это значение не является случайным. Уникальный идентификатор может быть использован в качестве инициализационного вектора для операций шифрования бутлоадера или в качестве серийного номера для USB и других применений.

Команда CHMT

result_t command_change_motor (device_t id, const command_change_motor_t* the_command_change_motor)
Код команды (CMD): "chmt" Или 0x746D6863.

Запрос: (22 байта)

INT32U CMD Команда
INT8U Motor Номер мотора, на который следует переключить реле [0..1]
INT8U Reserved [15] Зарезервировано (15 байт)
INT16U CRC Контрольная сумма

Ответ: (4 байта)

INT32U CMD Команда (возврат)

Описание:
Сменить двигатель - команда для переключения выходного реле.

Процедура записи прошивки

Обмен данными с загрузчиком ведется по такому же протоколу, что и с прошивкой. Предварительно, контроллер должен быть переведён в режим Загрузчика, командой UPDF.

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

1. Команда CONN
начало ISP сессии

2. Команда WDAT
Передает закодированные данные для записи во флеш память.

...

n-1. Команда WDAT

n. Команда DISC
конец ISP сессии.

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

Отрицательные ответы контроллера

Отрицательный ответ ERRC

Ответ: (4 байта)
Код: "errc" или 0x63727265

INT32U "errc" Команда недоступна

Описание:
Ответ на команду, в случае если команда неизвестна, либо не может быть выполнена и/или обработана в данный момент (в данном состоянии). Устанавливает соответствующий бит в поле "flags" структуры состояния.

Отрицательный ответ ERRD

Ответ: (4 байта)
Код: "errd" или 0x64727265

INT32U "errd" Неверные данные

Отрицательный ответ ERRV

Ответ: (4 байта)
Код: "errv" или 0x76727265

INT32U "errv" Неверное значение

Описание:
Ответ на команду, в случае если команда корректна, контрольная сумма правильная, но передаваемые значения (хотя бы одно из них) выходят за допустимый диапазон и не могут быть приняты. При этом неверное значение заменяется одним из верных методами округления, ограничения или сбрасывания в некое стандартное состояние. Устанавливает соответствующий бит в поле "flags" структуры состояния.