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

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

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

Управление контроллером с ПК происходит по интерфейсу последовательного порта (COM-порт). На стороне контроллера жёстко установлены следующие параметры COM-порта:

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

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

Базовый принцип протокола - «Запрос-Ответ», причём все обмены данными инициируются ПК, т.е. ПК посылает команды в контроллер, но не наоборот. Каждая команда подразумевает получение ответа от контроллера (кроме редких случаев специальных команд), т.е. нельзя послать несколько команд подряд, без ожидания ответа на них.

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

И контроллер и ПК обладают буфером обмена. Принятые команды и данные, в случае их наличия в команде, обрабатываются один раз. То есть, после обработки эти данные удаляются из буфера и обрабатываются уже новые пришедшие байты. Каждая команда состоит из четырёхбайтной строки, данных (если команда их предусматривает) и двухбайтного кода контроля CRC если команда содержит данные. Данные могут пересылаться как из компьютера, так и контроллером. Команда передаётся на обработку если она распознана и, в случае передачи данных, код CRC верный. После обработки пришедшей без ошибок команды контроллер посылает в компьютер четырехбайтную строку – наименование выполненной команды, затем данные, если формат команды это предусматривает, затем два байта CRC (если есть данные).

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

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

Если пришедшая в контроллер команда не может быть интерпретирована, как определенная команда управления, то в компьютер посылается строка «errc», команда игнорируется, в данных текущего состояния контроллера выставляется бит «команда не распознана». Если неопознанная команда содержала данные, то возможно неверная интерпретация принятых данных как новых команд. Необходима синхронизация.

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

6.2.3.2. Расчёт CRC

CRC-16/MODBUS рассчитывается для передаваемых данных. Четыре байта команды в расчёте не участвуют. Алгоритм 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.

Пример расчёта CRC:

Код команды (CMD): «home» или 0x656D6F68

0x68 0x6F 0x6D 0x65
CMD

Код команды (CMD): «gpos» или 0x736F7067

0x67 0x70 0x6F 0x73
CMD

Код команды (CMD): «movr» или 0x72766F6D

0x6D 0x6F 0x76 0x72  0x00 0x00 0x00 0xC8  0x00 0x00  0x00 0x00 0x00 0x00 0x00 0x00  0x53 0xc7
CMD                  DeltaPosition        uDPos      Reserved                       CRC
../../_images/crc.png

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

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

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

6.2.3.3.1. Исчезновение байта на стороне контроллера

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

6.2.3.3.2. Исчезновение байта на стороне компьютера

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

6.2.3.3.3. Возникновение байта на стороне контроллера

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

6.2.3.3.4. Возникновение байта на стороне компьютера

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

6.2.3.3.5. Изменение байта на стороне контроллера

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

6.2.3.3.6. Изменение байта на стороне компьютера

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

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

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

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

Ни одна команда не начинается нулём („\0“). Поэтому возможен такой метод синхронизации: контроллер на каждый полученный первый байт команды равный нулю отвечает нулём, а компьютер игнорирует первые байт ответа если он равен нулю и переходит к рассмотрению следующего. Тогда в случая когда синхронизация нарушена на стороне компьютера или контроллера, но еще не прошло время таймаута контроллера, возможен следующий алгоритм:

Если компьютером в ответ на переданную команду с данными или без, получен от контроллера ответ не на ту команду, «errc» либо «errd» , то с компьютера в контроллер средствами библиотеки посылается от 4 до 250 нулей (ограничение в 250 байт связано с длиной приёмного буфера и протоколом передачи данных по I2C, а передача менее 4 нулей часто не приведёт к восстановлению синхронизации). При этом происходит постоянное считывание приходящих байт от контроллера до появления первого нуля. После этого и считывание и посылка прекращаются.

Принятый нуль обычно не является частью предыдущей передачи, так как в моменты ошибок контроллер получает ответы «errc»/»errd». В редких случаях (особое изменение байта на стороне контроллера) возможна синхронизация с некоторой попытки. Таким образом, приход первого нуля обычно означает, что приёмный буфер контроллера чист и уже не заполнится, пока не придёт первая значимая команда. Сразу после прихода первого нуля от контроллера компьютер готов передавать следующую команду. Остальные нули, находящиеся в пересылке, будут проигнорированы, так как придут до ответа контроллера.

Синхронизация завершена.

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

Практически каждая функция библиотеки возвращает статус выполнения типа result_t.

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

Если ошибок не обнаружено, то команда считается выполненной успешно и возвращается result_ok.

../../_images/Synch.png

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

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

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

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

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

6.2.5. Коды ошибок ответов контроллера

6.2.5.1. ERRC

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

Код: «errc» или 0x63727265

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

Описание

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

6.2.5.2. ERRD

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

Код: «errd» или 0x64727265

uint32_t errd Неверные данные

Описание

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

6.2.5.3. ERRV

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

Код: «errv» или 0x76727265

uint32_t errv Неверное значение

Описание

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

6.2.6. Все команды контроллера

6.2.6.1. Команда GACC

Код команды (CMD): «gacc» или 0x63636167.

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

uint32_t CMD Команда

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

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

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

6.2.6.2. Команда GBRK

Код команды (CMD): «gbrk» или 0x6B726267.

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

uint32_t CMD Команда

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

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

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

6.2.6.3. Команда GCAL

Код команды (CMD): «gcal» или 0x6C616367.

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

uint32_t CMD Команда

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

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

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

6.2.6.4. Команда GCTL

Код команды (CMD): «gctl» или 0x6C746367.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint32_t MaxSpeed Массив скоростей (в полных шагах), использующийся при управлении джойстиком или кнопками влево/вправо. Диапазон: 0..100000.
uint8_t uMaxSpeed Массив скоростей (в 1/256 микрошагах), использующийся при управлении джойстиком или кнопками влево/вправо.
uint16_t Timeout timeout[i] - время в мс, по истечении которого устанавливается скорость max_speed[i+1] (используется только при управлении кнопками).
uint16_t MaxClickTime Максимальное время клика. До истечения этого времени первая скорость не включается.
uint16_t Флаги Флаги.
  0x3 - CONTROL_MODE_BITS Биты управления мотором с помощью джойстика или кнопок влево/вправо.
  0x0 - CONTROL_MODE_OFF Управление отключено.
  0x1 - CONTROL_MODE_JOY Управление с помощью джойстика.
  0x2 - CONTROL_MODE_LR Управление с помощью кнопок left/right.
  0x4 - CONTROL_BTN_LEFT_PUSHED_OPEN Левая кнопка нормально разомкнутая, если флаг установлен.
  0x8 - CONTROL_BTN_RIGHT_PUSHED_OPEN Правая кнопка нормально разомкнутая, если флаг установлен.
int32_t DeltaPosition Смещение (дельта) позиции
int16_t uDeltaPosition Дробная часть смещения в микрошагах. Используется только с шаговым двигателем. Диапазон: -255..255.
uint8_t Reserved [9] Зарезервировано (9 байт)
uint16_t 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] действует ускорение, как обычно.

6.2.6.5. Команда GCTP

Код команды (CMD): «gctp» или 0x70746367.

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

uint32_t CMD Команда

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

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

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

6.2.6.6. Команда GEDS

Код команды (CMD): «geds» или 0x73646567.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint8_t BorderFlags Флаги, определяющие тип границ и поведение мотора при их достижении.
  0x1 - BORDER_IS_ENCODER Если флаг установлен, границы определяются предустановленными точками на шкале позиции. Если флаг сброшен, границы определяются концевыми выключателями.
  0x2 - BORDER_STOP_LEFT Если флаг установлен, мотор останавливается при достижении левой границы.
  0x4 - BORDER_STOP_RIGHT Если флаг установлен, мотор останавливается при достижении правой границы.
  0x8 - BORDERS_SWAP_MISSET_DETECTION Если флаг установлен, мотор останавливается при достижении обоих границ. Нужен для предотвращения поломки двигателя при неправильных настройках концевиков
uint8_t EnderFlags Флаги, определяющие настройки концевых выключателей.
  0x1 - ENDER_SWAP Если флаг установлен, первый концевой выключатель находится справа; иначе - слева.
  0x2 - ENDER_SW1_ACTIVE_LOW 1 - Концевик, подключенный к ножке SW1, считается сработавшим по низкому уровню на контакте.
  0x4 - ENDER_SW2_ACTIVE_LOW 1 - Концевик, подключенный к ножке SW2, считается сработавшим по низкому уровню на контакте.
int32_t LeftBorder Позиция левой границы, используется если установлен флаг BORDER_IS_ENCODER.
int16_t uLeftBorder Позиция левой границы в 1/256 микрошагах( используется только с шаговым двигателем). Диапазон: -255..255.
int32_t RightBorder Позиция правой границы, используется если установлен флаг BORDER_IS_ENCODER.
int16_t uRightBorder Позиция правой границы в 1/256 микрошагах (используется только с шаговым двигателем). Диапазон: -255..255.
uint8_t Reserved [6] Зарезервировано (6 байт)
uint16_t CRC Контрольная сумма

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

6.2.6.7. Команда GEIO

Код команды (CMD): «geio» или 0x6F696567.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint8_t EXTIOSetupFlags Флаги настройки работы внешнего ввода-вывода
  0x1 - EXTIO_SETUP_OUTPUT Если флаг установлен, то ножка в состоянии вывода, иначе - ввода.
  0x2 - EXTIO_SETUP_INVERT Eсли флаг установлен, то нули считаются активным состоянием выхода, а спадающие фронты как момент подачи входного сигнала.
uint8_t EXTIOModeFlags Флаги настройки режимов внешнего ввода-вывода
  0xf - EXTIO_SETUP_MODE_IN_BITS Биты, отвечающие за поведение при переходе сигнала в активное состояние.
  0x0 - EXTIO_SETUP_MODE_IN_NOP Ничего не делать.
  0x1 - EXTIO_SETUP_MODE_IN_STOP По переднему фронту входного сигнала делается остановка двигателя (эквивалент команды STOP).
  0x2 - EXTIO_SETUP_MODE_IN_PWOF Выполняет команду PWOF, обесточивая обмотки двигателя.
  0x3 - EXTIO_SETUP_MODE_IN_MOVR Выполняется команда MOVR с последними настройками.
  0x4 - EXTIO_SETUP_MODE_IN_HOME Выполняется команда HOME.
  0x5 - EXTIO_SETUP_MODE_IN_ALARM Войти в состояние ALARM при переходе сигнала в активное состояние.
  0xf0 - EXTIO_SETUP_MODE_OUT_BITS Биты выбора поведения на выходе.
  0x0 - 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 Ножка находится в активном состоянии при обнаружении подключенного двигателя (первой обмотки).
uint8_t Reserved [10] Зарезервировано (10 байт)
uint16_t CRC Контрольная сумма

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

6.2.6.8. Команда GENG

Код команды (CMD): «geng» или 0x676E6567.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint16_t NomVoltage Номинальное напряжение мотора в десятках мВ. Контроллер будет сохранять напряжение на моторе не выше номинального, если установлен флаг ENGINE_LIMIT_VOLT (используется только с DC двигателем).
uint16_t NomCurrent Номинальный ток через мотор. Ток стабилизируется для шаговых и может быть ограничен для DC(если установлен флаг ENGINE_LIMIT_CURR). Диапазон: 15..8000
uint32_t NomSpeed Номинальная (максимальная) скорость (в целых шагах/с или rpm для DC и шагового двигателя в режиме ведущего энкодера). Контроллер будет сохранять скорость мотора не выше номинальной, если установлен флаг ENGINE_LIMIT_RPM. Диапазон: 1..100000.
uint8_t uNomSpeed Микрошаговая часть номинальной скорости мотора (используется только с шаговым двигателем).
uint16_t EngineFlags Флаги, управляющие работой мотора
  0x1 - ENGINE_REVERSE Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции.
  0x2 - ENGINE_CURRENT_AS_RMS Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (bldc).
  0x4 - ENGINE_MAX_SPEED Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости.
  0x8 - ENGINE_ANTIPLAY Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа.
  0x10 - ENGINE_ACCEL_ON Ускорение. Если флаг установлен, движение происходит с ускорением.
  0x20 - ENGINE_LIMIT_VOLT Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением(используется только с DC двигателем).
  0x40 - ENGINE_LIMIT_CURR Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением(используется только с DC двигателем).
  0x80 - ENGINE_LIMIT_RPM Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением.
int16_t Antiplay Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY.
uint8_t MicrostepMode Настройки микрошагового режима(используется только с шаговым двигателем).
  0x1 - MICROSTEP_MODE_FULL Полношаговый режим.
  0x2 - MICROSTEP_MODE_FRAC_2 Деление шага 1/2.
  0x3 - MICROSTEP_MODE_FRAC_4 Деление шага 1/4.
  0x4 - MICROSTEP_MODE_FRAC_8 Деление шага 1/8.
  0x5 - MICROSTEP_MODE_FRAC_16 Деление шага 1/16.
  0x6 - MICROSTEP_MODE_FRAC_32 Деление шага 1/32.
  0x7 - MICROSTEP_MODE_FRAC_64 Деление шага 1/64.
  0x8 - MICROSTEP_MODE_FRAC_128 Деление шага 1/128.
  0x9 - MICROSTEP_MODE_FRAC_256 Деление шага 1/256.
uint16_t StepsPerRev Количество полных шагов на оборот(используется только с шаговым двигателем). Диапазон: 1..65535.
uint8_t Reserved [12] Зарезервировано (12 байт)
uint16_t CRC Контрольная сумма

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

6.2.6.9. Команда GENI

Код команды (CMD): «geni» или 0x696E6567.

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

uint32_t CMD Команда

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

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

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

6.2.6.10. Команда GENS

Код команды (CMD): «gens» или 0x736E6567.

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

uint32_t CMD Команда

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

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

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

6.2.6.11. Команда GENT

Код команды (CMD): «gent» или 0x746E6567.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint8_t EngineType Тип мотора
  0x0 - ENGINE_TYPE_NONE Это значение не нужно использовать.
  0x1 - ENGINE_TYPE_DC Мотор постоянного тока.
  0x2 - ENGINE_TYPE_2DC Два мотора постоянного тока, что приводит к эмуляции двух контроллеров.
  0x3 - ENGINE_TYPE_STEP Шаговый мотор.
  0x4 - ENGINE_TYPE_TEST Скважность в обмотках фиксирована. Используется только производителем.
  0x5 - ENGINE_TYPE_BRUSHLESS Безщеточный мотор.
uint8_t DriverType Тип силового драйвера
  0x1 - DRIVER_TYPE_DISCRETE_FET Силовой драйвер на дискретных мосфет-ключах. Используется по умолчанию.
  0x2 - DRIVER_TYPE_INTEGRATE Силовой драйвер с использованием ключей, интегрированных в микросхему.
  0x3 - DRIVER_TYPE_EXTERNAL Внешний силовой драйвер.
uint8_t Reserved [6] Зарезервировано (6 байт)
uint16_t CRC Контрольная сумма

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

6.2.6.12. Команда GFBS

Код команды (CMD): «gfbs» или 0x73626667.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint16_t IPS Количество отсчётов энкодера на оборот вала. Диапазон: 1..65535. Поле устарело, рекомендуется записывать 0 в IPS и использовать расширенное поле CountsPerTurn. Может потребоваться обновление микропрограммы контроллера до последней версии.
uint8_t FeedbackType Тип обратной связи
  0x1 - FEEDBACK_ENCODER Обратная связь с помощью энкодера.
  0x4 - FEEDBACK_EMF Обратная связь по ЭДС.
  0x5 - FEEDBACK_NONE Обратная связь отсутствует.
uint8_t FeedbackFlags Флаги
  0x1 - FEEDBACK_ENC_REVERSE Обратный счет у энкодера.
  0xc0 - FEEDBACK_ENC_TYPE_BITS Биты, отвечающие за тип энкодера.
  0x0 - FEEDBACK_ENC_TYPE_AUTO Определять тип энкодера автоматически.
  0x40 - FEEDBACK_ENC_TYPE_SINGLE_ENDED Недифференциальный энкодер.
  0x80 - FEEDBACK_ENC_TYPE_DIFFERENTIAL Дифференциальный энкодер.
uint32_t CountsPerTurn Количество отсчётов энкодера на оборот вала. Диапазон: 1..4294967295. Для использования поля CountsPerTurn нужно записать 0 в поле IPS, иначе будет использоваться значение из поля IPS.
uint8_t Reserved [4] Зарезервировано (4 байт)
uint16_t CRC Контрольная сумма

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

6.2.6.13. Команда GGRI

Код команды (CMD): «ggri» или 0x69726767.

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

uint32_t CMD Команда

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

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

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

6.2.6.14. Команда GGRS

Код команды (CMD): «ggrs» или 0x73726767.

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

uint32_t CMD Команда

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

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

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

6.2.6.15. Команда GHOM

Код команды (CMD): «ghom» или 0x6D6F6867.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint32_t FastHome Скорость первого движения. Диапазон: 0..100000.
uint8_t uFastHome Дробная часть скорости первого движения в микрошагах(используется только с шаговым двигателем).
uint32_t SlowHome Скорость второго движения. Диапазон: 0..100000.
uint8_t uSlowHome Дробная часть скорости второго движения в микрошагах(используется только с шаговым двигателем).
int32_t HomeDelta Расстояние отхода от точки останова.
int16_t uHomeDelta Дробная часть расстояния отхода от точки останова в микрошагах(используется только с шаговым двигателем). Диапазон: -255..255.
uint16_t HomeFlags Набор флагов, определяющие такие параметры, как направление и условия останова.
  0x1 - HOME_DIR_FIRST Определяет направление первоначального движения мотора после поступления команды HOME. Если флаг установлен - вправо; иначе - влево.
  0x2 - HOME_DIR_SECOND Определяет направление второго движения мотора. Если флаг установлен - вправо; иначе - влево.
  0x4 - HOME_MV_SEC_EN Если флаг установлен, реализуется второй этап доводки в домашнюю позицию; иначе - этап пропускается.
  0x8 - HOME_HALF_MV Если флаг установлен, в начале второго движения первые пол оборота сигналы завершения движения игнорируются.
  0x30 - HOME_STOP_FIRST_BITS Биты, отвечающие за выбор сигнала завершения первого движения.
  0x10 - HOME_STOP_FIRST_REV Первое движение завершается по сигналу с Revolution sensor.
  0x20 - HOME_STOP_FIRST_SYN Первое движение завершается по сигналу со входа синхронизации.
  0x30 - HOME_STOP_FIRST_LIM Первое движение завершается по сигналу с концевика.
  0xc0 - HOME_STOP_SECOND_BITS Биты, отвечающие за выбор сигнала завершения второго движения.
  0x40 - HOME_STOP_SECOND_REV Второе движение завершается по сигналу с Revolution sensor.
  0x80 - HOME_STOP_SECOND_SYN Второе движение завершается по сигналу со входа синхронизации.
  0xc0 - HOME_STOP_SECOND_LIM Второе движение завершается по сигналу с концевика.
  0x100 - HOME_USE_FAST Если флаг установлен, используется быстрый поиск домашней позиции; иначе - традиционный.
uint8_t Reserved [9] Зарезервировано (9 байт)
uint16_t CRC Контрольная сумма

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

6.2.6.16. Команда GHSI

Код команды (CMD): «ghsi» или 0x69736867.

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

uint32_t CMD Команда

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

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

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

6.2.6.17. Команда GHSS

Код команды (CMD): «ghss» или 0x73736867.

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

uint32_t CMD Команда

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

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

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

6.2.6.18. Команда GJOY

Код команды (CMD): «gjoy» или 0x796F6A67.

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

uint32_t CMD Команда

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

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

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

../../_images/range25p.png

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

../../_images/ExpJoystick.png

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

6.2.6.19. Команда GMOV

Код команды (CMD): «gmov» или 0x766F6D67.

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

uint32_t CMD Команда

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

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

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

6.2.6.20. Команда GMTI

Код команды (CMD): «gmti» или 0x69746D67.

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

uint32_t CMD Команда

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

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

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

6.2.6.21. Команда GMTS

Код команды (CMD): «gmts» или 0x73746D67.

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

uint32_t CMD Команда

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

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

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

6.2.6.22. Команда GNME

Код команды (CMD): «gnme» или 0x656D6E67.

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

uint32_t CMD Команда

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

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

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

6.2.6.23. Команда GNMF

Код команды (CMD): «gnmf» или 0x666D6E67.

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

uint32_t CMD Команда

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

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

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

6.2.6.24. Команда GNVM

Код команды (CMD): «gnvm» или 0x6D766E67.

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

uint32_t CMD Команда

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

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

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

6.2.6.25. Команда GPID

Код команды (CMD): «gpid» или 0x64697067.

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

uint32_t CMD Команда

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

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

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

6.2.6.26. Команда GPWR

Код команды (CMD): «gpwr» или 0x72777067.

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

uint32_t CMD Команда

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

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

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

6.2.6.27. Команда GSEC

Код команды (CMD): «gsec» или 0x63657367.

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

uint32_t CMD Команда

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

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

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

6.2.6.28. Команда GSNI

Код команды (CMD): «gsni» или 0x696E7367.

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

uint32_t CMD Команда

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

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

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

6.2.6.29. Команда GSNO

Код команды (CMD): «gsno» или 0x6F6E7367.

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

uint32_t CMD Команда

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

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

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

6.2.6.30. Команда GSTI

Код команды (CMD): «gsti» или 0x69747367.

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

uint32_t CMD Команда

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

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

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

6.2.6.31. Команда GSTS

Код команды (CMD): «gsts» или 0x73747367.

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

uint32_t CMD Команда

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

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

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

6.2.6.32. Команда GURT

Код команды (CMD): «gurt» или 0x74727567.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint32_t Speed Cкорость UART
uint16_t UARTSetupFlags Флаги настройки UART
  0x3 - UART_PARITY_BITS Биты, отвечающие за выбор четности.
  0x0 - UART_PARITY_BIT_EVEN Бит 1, если чет
  0x1 - UART_PARITY_BIT_ODD Бит 1, если нечет
  0x2 - UART_PARITY_BIT_SPACE Бит четности всегда 0
  0x3 - UART_PARITY_BIT_MARK Бит четности всегда 1
  0x4 - UART_PARITY_BIT_USE Бит чётности не используется, если „0“; бит четности используется, если „1“
  0x8 - UART_STOP_BIT Если установлен, один стоповый бит; иначе - 2 стоповых бита
uint8_t Reserved [4] Зарезервировано (4 байт)
uint16_t CRC Контрольная сумма

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

6.2.6.33. Команда SACC

Код команды (CMD): «sacc» или 0x63636173.

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

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

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

uint32_t CMD Команда

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

6.2.6.34. Команда SBRK

Код команды (CMD): «sbrk» или 0x6B726273.

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

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

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

uint32_t CMD Команда

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

6.2.6.35. Команда SCAL

Код команды (CMD): «scal» или 0x6C616373.

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

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

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

uint32_t CMD Команда

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

6.2.6.36. Команда SCTL

Код команды (CMD): «sctl» или 0x6C746373.

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

uint32_t CMD Команда
uint32_t MaxSpeed Массив скоростей (в полных шагах), использующийся при управлении джойстиком или кнопками влево/вправо. Диапазон: 0..100000.
uint8_t uMaxSpeed Массив скоростей (в 1/256 микрошагах), использующийся при управлении джойстиком или кнопками влево/вправо.
uint16_t Timeout timeout[i] - время в мс, по истечении которого устанавливается скорость max_speed[i+1] (используется только при управлении кнопками).
uint16_t MaxClickTime Максимальное время клика. До истечения этого времени первая скорость не включается.
uint16_t Флаги Флаги.
  0x3 - CONTROL_MODE_BITS Биты управления мотором с помощью джойстика или кнопок влево/вправо.
  0x0 - CONTROL_MODE_OFF Управление отключено.
  0x1 - CONTROL_MODE_JOY Управление с помощью джойстика.
  0x2 - CONTROL_MODE_LR Управление с помощью кнопок left/right.
  0x4 - CONTROL_BTN_LEFT_PUSHED_OPEN Левая кнопка нормально разомкнутая, если флаг установлен.
  0x8 - CONTROL_BTN_RIGHT_PUSHED_OPEN Правая кнопка нормально разомкнутая, если флаг установлен.
int32_t DeltaPosition Смещение (дельта) позиции
int16_t uDeltaPosition Дробная часть смещения в микрошагах. Используется только с шаговым двигателем. Диапазон: -255..255.
uint8_t Reserved [9] Зарезервировано (9 байт)
uint16_t CRC Контрольная сумма

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

uint32_t 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] действует ускорение, как обычно.

6.2.6.37. Команда SCTP

Код команды (CMD): «sctp» или 0x70746373.

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

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

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

uint32_t CMD Команда

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

6.2.6.38. Команда SEDS

Код команды (CMD): «seds» или 0x73646573.

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

uint32_t CMD Команда
uint8_t BorderFlags Флаги, определяющие тип границ и поведение мотора при их достижении.
  0x1 - BORDER_IS_ENCODER Если флаг установлен, границы определяются предустановленными точками на шкале позиции. Если флаг сброшен, границы определяются концевыми выключателями.
  0x2 - BORDER_STOP_LEFT Если флаг установлен, мотор останавливается при достижении левой границы.
  0x4 - BORDER_STOP_RIGHT Если флаг установлен, мотор останавливается при достижении правой границы.
  0x8 - BORDERS_SWAP_MISSET_DETECTION Если флаг установлен, мотор останавливается при достижении обоих границ. Нужен для предотвращения поломки двигателя при неправильных настройках концевиков
uint8_t EnderFlags Флаги, определяющие настройки концевых выключателей.
  0x1 - ENDER_SWAP Если флаг установлен, первый концевой выключатель находится справа; иначе - слева.
  0x2 - ENDER_SW1_ACTIVE_LOW 1 - Концевик, подключенный к ножке SW1, считается сработавшим по низкому уровню на контакте.
  0x4 - ENDER_SW2_ACTIVE_LOW 1 - Концевик, подключенный к ножке SW2, считается сработавшим по низкому уровню на контакте.
int32_t LeftBorder Позиция левой границы, используется если установлен флаг BORDER_IS_ENCODER.
int16_t uLeftBorder Позиция левой границы в 1/256 микрошагах( используется только с шаговым двигателем). Диапазон: -255..255.
int32_t RightBorder Позиция правой границы, используется если установлен флаг BORDER_IS_ENCODER.
int16_t uRightBorder Позиция правой границы в 1/256 микрошагах (используется только с шаговым двигателем). Диапазон: -255..255.
uint8_t Reserved [6] Зарезервировано (6 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда

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

6.2.6.39. Команда SEIO

Код команды (CMD): «seio» или 0x6F696573.

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

uint32_t CMD Команда
uint8_t EXTIOSetupFlags Флаги настройки работы внешнего ввода-вывода
  0x1 - EXTIO_SETUP_OUTPUT Если флаг установлен, то ножка в состоянии вывода, иначе - ввода.
  0x2 - EXTIO_SETUP_INVERT Eсли флаг установлен, то нули считаются активным состоянием выхода, а спадающие фронты как момент подачи входного сигнала.
uint8_t EXTIOModeFlags Флаги настройки режимов внешнего ввода-вывода
  0xf - EXTIO_SETUP_MODE_IN_BITS Биты, отвечающие за поведение при переходе сигнала в активное состояние.
  0x0 - EXTIO_SETUP_MODE_IN_NOP Ничего не делать.
  0x1 - EXTIO_SETUP_MODE_IN_STOP По переднему фронту входного сигнала делается остановка двигателя (эквивалент команды STOP).
  0x2 - EXTIO_SETUP_MODE_IN_PWOF Выполняет команду PWOF, обесточивая обмотки двигателя.
  0x3 - EXTIO_SETUP_MODE_IN_MOVR Выполняется команда MOVR с последними настройками.
  0x4 - EXTIO_SETUP_MODE_IN_HOME Выполняется команда HOME.
  0x5 - EXTIO_SETUP_MODE_IN_ALARM Войти в состояние ALARM при переходе сигнала в активное состояние.
  0xf0 - EXTIO_SETUP_MODE_OUT_BITS Биты выбора поведения на выходе.
  0x0 - 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 Ножка находится в активном состоянии при подаче питания на обмотки.
uint8_t Reserved [10] Зарезервировано (10 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда

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

6.2.6.40. Команда SENG

Код команды (CMD): «seng» или 0x676E6573.

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

uint32_t CMD Команда
uint16_t NomVoltage Номинальное напряжение мотора в десятках мВ. Контроллер будет сохранять напряжение на моторе не выше номинального, если установлен флаг ENGINE_LIMIT_VOLT (используется только с DC двигателем).
uint16_t NomCurrent Номинальный ток через мотор. Ток стабилизируется для шаговых и может быть ограничен для DC(если установлен флаг ENGINE_LIMIT_CURR). Диапазон: 15..8000
uint32_t NomSpeed Номинальная (максимальная) скорость (в целых шагах/с или rpm для DC и шагового двигателя в режиме ведущего энкодера). Контроллер будет сохранять скорость мотора не выше номинальной, если установлен флаг ENGINE_LIMIT_RPM. Диапазон: 1..100000.
uint8_t uNomSpeed Микрошаговая часть номинальной скорости мотора (используется только с шаговым двигателем).
uint16_t EngineFlags Флаги, управляющие работой мотора
  0x1 - ENGINE_REVERSE Флаг реверса. Связывает направление вращения мотора с направлением счета текущей позиции. При сброшенном флаге (по умолчанию) прикладываемое к мотору положительное напряжение увеличивает счетчик позиции. И наоборот, при установленном флаге счетчик позиции увеличивается, когда к мотору приложено отрицательное напряжение. Измените состояние флага, если положительное вращение мотора уменьшает счетчик позиции.
  0x2 - ENGINE_CURRENT_AS_RMS Флаг интерпретации значения тока. Если флаг снят, то задаваемое значение тока интерпретируется как максимальная амплитуда тока. Если флаг установлен, то задаваемое значение тока интерпретируется как среднеквадратичное значение тока (для шагового) или как значение тока, посчитанное из максимального тепловыделения (bldc).
  0x4 - ENGINE_MAX_SPEED Флаг максимальной скорости. Если флаг установлен, движение происходит на максимальной скорости.
  0x8 - ENGINE_ANTIPLAY Компенсация люфта. Если флаг установлен, позиционер будет подходить к заданной точке всегда с одной стороны. Например, при подходе слева никаких дополнительных действий не совершается, а при подходе справа позиционер проходит целевую позицию на заданное расстояния и возвращается к ней опять же справа.
  0x10 - ENGINE_ACCEL_ON Ускорение. Если флаг установлен, движение происходит с ускорением.
  0x20 - ENGINE_LIMIT_VOLT Номинальное напряжение мотора. Если флаг установлен, напряжение на моторе ограничивается заданным номинальным значением(используется только с DC двигателем).
  0x40 - ENGINE_LIMIT_CURR Номинальный ток мотора. Если флаг установлен, ток через мотор ограничивается заданным номинальным значением(используется только с DC двигателем).
  0x80 - ENGINE_LIMIT_RPM Номинальная частота вращения мотора. Если флаг установлен, частота вращения ограничивается заданным номинальным значением.
int16_t Antiplay Количество шагов двигателя или импульсов энкодера, на которое позиционер будет отъезжать от заданной позиции для подхода к ней с одной и той же стороны. Используется, если установлен флаг ENGINE_ANTIPLAY.
uint8_t MicrostepMode Настройки микрошагового режима(используется только с шаговым двигателем).
  0x1 - MICROSTEP_MODE_FULL Полношаговый режим.
  0x2 - MICROSTEP_MODE_FRAC_2 Деление шага 1/2.
  0x3 - MICROSTEP_MODE_FRAC_4 Деление шага 1/4.
  0x4 - MICROSTEP_MODE_FRAC_8 Деление шага 1/8.
  0x5 - MICROSTEP_MODE_FRAC_16 Деление шага 1/16.
  0x6 - MICROSTEP_MODE_FRAC_32 Деление шага 1/32.
  0x7 - MICROSTEP_MODE_FRAC_64 Деление шага 1/64.
  0x8 - MICROSTEP_MODE_FRAC_128 Деление шага 1/128.
  0x9 - MICROSTEP_MODE_FRAC_256 Деление шага 1/256.
uint16_t StepsPerRev Количество полных шагов на оборот(используется только с шаговым двигателем). Диапазон: 1..65535.
uint8_t Reserved [12] Зарезервировано (12 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда

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

6.2.6.41. Команда SENI

Код команды (CMD): «seni» или 0x696E6573.

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

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

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

uint32_t CMD Команда

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

6.2.6.42. Команда SENS

Код команды (CMD): «sens» или 0x736E6573.

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

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

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

uint32_t CMD Команда

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

6.2.6.43. Команда SENT

Код команды (CMD): «sent» или 0x746E6573.

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

uint32_t CMD Команда
uint8_t EngineType Тип мотора
  0x0 - ENGINE_TYPE_NONE Это значение не нужно использовать.
  0x1 - ENGINE_TYPE_DC Мотор постоянного тока.
  0x2 - ENGINE_TYPE_2DC Два мотора постоянного тока, что приводит к эмуляции двух контроллеров.
  0x3 - ENGINE_TYPE_STEP Шаговый мотор.
  0x4 - ENGINE_TYPE_TEST Скважность в обмотках фиксирована. Используется только производителем.
  0x5 - ENGINE_TYPE_BRUSHLESS Безщеточный мотор.
uint8_t DriverType Тип силового драйвера
  0x1 - DRIVER_TYPE_DISCRETE_FET Силовой драйвер на дискретных мосфет-ключах. Используется по умолчанию.
  0x2 - DRIVER_TYPE_INTEGRATE Силовой драйвер с использованием ключей, интегрированных в микросхему.
  0x3 - DRIVER_TYPE_EXTERNAL Внешний силовой драйвер.
uint8_t Reserved [6] Зарезервировано (6 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда

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

6.2.6.44. Команда SFBS

Код команды (CMD): «sfbs» или 0x73626673.

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

uint32_t CMD Команда
uint16_t IPS Количество отсчётов энкодера на оборот вала. Диапазон: 1..65535. Поле устарело, рекомендуется записывать 0 в IPS и использовать расширенное поле CountsPerTurn. Может потребоваться обновление микропрограммы контроллера до последней версии.
uint8_t FeedbackType Тип обратной связи
  0x1 - FEEDBACK_ENCODER Обратная связь с помощью энкодера.
  0x4 - FEEDBACK_EMF Обратная связь по ЭДС.
  0x5 - FEEDBACK_NONE Обратная связь отсутствует.
uint8_t FeedbackFlags Флаги
  0x1 - FEEDBACK_ENC_REVERSE Обратный счет у энкодера.
  0xc0 - FEEDBACK_ENC_TYPE_BITS Биты, отвечающие за тип энкодера.
  0x0 - FEEDBACK_ENC_TYPE_AUTO Определять тип энкодера автоматически.
  0x40 - FEEDBACK_ENC_TYPE_SINGLE_ENDED Недифференциальный энкодер.
  0x80 - FEEDBACK_ENC_TYPE_DIFFERENTIAL Дифференциальный энкодер.
uint32_t CountsPerTurn Количество отсчётов энкодера на оборот вала. Диапазон: 1..4294967295. Для использования поля CountsPerTurn нужно записать 0 в поле IPS, иначе будет использоваться значение из поля IPS.
uint8_t Reserved [4] Зарезервировано (4 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда

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

6.2.6.45. Команда SGRI

Код команды (CMD): «sgri» или 0x69726773.

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

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

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

uint32_t CMD Команда

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

6.2.6.46. Команда SGRS

Код команды (CMD): «sgrs» или 0x73726773.

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

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

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

uint32_t CMD Команда

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

6.2.6.47. Команда SHOM

Код команды (CMD): «shom» или 0x6D6F6873.

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

uint32_t CMD Команда
uint32_t FastHome Скорость первого движения. Диапазон: 0..100000.
uint8_t uFastHome Дробная часть скорости первого движения в микрошагах(используется только с шаговым двигателем).
uint32_t SlowHome Скорость второго движения. Диапазон: 0..100000.
uint8_t uSlowHome Дробная часть скорости второго движения в микрошагах(используется только с шаговым двигателем).
int32_t HomeDelta Расстояние отхода от точки останова.
int16_t uHomeDelta Дробная часть расстояния отхода от точки останова в микрошагах(используется только с шаговым двигателем). Диапазон: -255..255.
uint16_t HomeFlags Набор флагов, определяющие такие параметры, как направление и условия останова.
  0x1 - HOME_DIR_FIRST Определяет направление первоначального движения мотора после поступления команды HOME. Если флаг установлен - вправо; иначе - влево.
  0x2 - HOME_DIR_SECOND Определяет направление второго движения мотора. Если флаг установлен - вправо; иначе - влево.
  0x4 - HOME_MV_SEC_EN Если флаг установлен, реализуется второй этап доводки в домашнюю позицию; иначе - этап пропускается.
  0x8 - HOME_HALF_MV Если флаг установлен, в начале второго движения первые пол оборота сигналы завершения движения игнорируются.
  0x30 - HOME_STOP_FIRST_BITS Биты, отвечающие за выбор сигнала завершения первого движения.
  0x10 - HOME_STOP_FIRST_REV Первое движение завершается по сигналу с Revolution sensor.
  0x20 - HOME_STOP_FIRST_SYN Первое движение завершается по сигналу со входа синхронизации.
  0x30 - HOME_STOP_FIRST_LIM Первое движение завершается по сигналу с концевика.
  0xc0 - HOME_STOP_SECOND_BITS Биты, отвечающие за выбор сигнала завершения второго движения.
  0x40 - HOME_STOP_SECOND_REV Второе движение завершается по сигналу с Revolution sensor.
  0x80 - HOME_STOP_SECOND_SYN Второе движение завершается по сигналу со входа синхронизации.
  0xc0 - HOME_STOP_SECOND_LIM Второе движение завершается по сигналу с концевика.
  0x100 - HOME_USE_FAST Если флаг установлен, используется быстрый поиск домашней позиции; иначе - традиционный.
uint8_t Reserved [9] Зарезервировано (9 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда

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

6.2.6.48. Команда SHSI

Код команды (CMD): «shsi» или 0x69736873.

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

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

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

uint32_t CMD Команда

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

6.2.6.49. Команда SHSS

Код команды (CMD): «shss» или 0x73736873.

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

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

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

uint32_t CMD Команда

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

6.2.6.50. Команда SJOY

Код команды (CMD): «sjoy» или 0x796F6A73.

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

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

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

uint32_t CMD Команда

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

6.2.6.51. Команда SMOV

Код команды (CMD): «smov» или 0x766F6D73.

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

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

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

uint32_t CMD Команда

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

6.2.6.52. Команда SMTI

Код команды (CMD): «smti» или 0x69746D73.

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

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

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

uint32_t CMD Команда

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

6.2.6.53. Команда SMTS

Код команды (CMD): «smts» или 0x73746D73.

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

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

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

uint32_t CMD Команда

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

6.2.6.54. Команда SNME

Код команды (CMD): «snme» или 0x656D6E73.

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

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

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

uint32_t CMD Команда

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

6.2.6.55. Команда SNMF

Код команды (CMD): «snmf» или 0x666D6E73.

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

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

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

uint32_t CMD Команда

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

6.2.6.56. Команда SNVM

Код команды (CMD): «snvm» или 0x6D766E73.

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

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

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

uint32_t CMD Команда

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

6.2.6.57. Команда SPID

Код команды (CMD): «spid» или 0x64697073.

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

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

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

uint32_t CMD Команда

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

6.2.6.58. Команда SPWR

Код команды (CMD): «spwr» или 0x72777073.

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

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

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

uint32_t CMD Команда

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

6.2.6.59. Команда SSEC

Код команды (CMD): «ssec» или 0x63657373.

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

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

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

uint32_t CMD Команда

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

6.2.6.60. Команда SSNI

Код команды (CMD): «ssni» или 0x696E7373.

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

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

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

uint32_t CMD Команда

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

6.2.6.61. Команда SSNO

Код команды (CMD): «ssno» или 0x6F6E7373.

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

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

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

uint32_t CMD Команда

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

6.2.6.62. Команда SSTI

Код команды (CMD): «ssti» или 0x69747373.

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

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

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

uint32_t CMD Команда

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

6.2.6.63. Команда SSTS

Код команды (CMD): «ssts» или 0x73747373.

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

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

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

uint32_t CMD Команда

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

6.2.6.64. Команда SURT

Код команды (CMD): «surt» или 0x74727573.

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

uint32_t CMD Команда
uint32_t Speed Cкорость UART
uint16_t UARTSetupFlags Флаги настройки UART
  0x3 - UART_PARITY_BITS Биты, отвечающие за выбор четности.
  0x0 - UART_PARITY_BIT_EVEN Бит 1, если чет
  0x1 - UART_PARITY_BIT_ODD Бит 1, если нечет
  0x2 - UART_PARITY_BIT_SPACE Бит четности всегда 0
  0x3 - UART_PARITY_BIT_MARK Бит четности всегда 1
  0x4 - UART_PARITY_BIT_USE Бит чётности не используется, если „0“; бит четности используется, если „1“
  0x8 - UART_STOP_BIT Если установлен, один стоповый бит; иначе - 2 стоповых бита
uint8_t Reserved [4] Зарезервировано (4 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда

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

6.2.6.65. Команда ASIA

Код команды (CMD): «asia» или 0x61697361.

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

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

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

uint32_t CMD Команда

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

6.2.6.66. Команда CLFR

Код команды (CMD): «clfr» или 0x72666C63.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

Описание: Команда очистки FRAM контроллера. Память очищается путем заполнения всего объема памяти байтами 0x00. После очистки контроллер перезагружается. Ответа на эту команду нет.

6.2.6.67. Команда CONN

Код команды (CMD): «conn» или 0x6E6E6F63.

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

uint32_t CMD Команда
uint8_t Reserved [8] Зарезервировано (8 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда
uint8_t sresult Результат выполнения команды.
uint8_t Reserved [8] Зарезервировано (8 байт)
uint16_t CRC Контрольная сумма

Описание: Команда служит для открытия сеанса ISP (in-system programming) при загрузке прошивки. Result = RESULT_OK, если команда выполнена загрузчиком. Result = RESULT_SOFT_ERROR, если во время выполнения команды произошла ошибка. Result не доступен через функцию библиотеки command_update_firmware, значение поля обрабатывается внутри функции.

6.2.6.68. Команда DBGR

Код команды (CMD): «dbgr» или 0x72676264.

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

uint32_t CMD Команда

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

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

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

6.2.6.69. Команда DBGW

Код команды (CMD): «dbgw» или 0x77676264.

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

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

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

uint32_t CMD Команда

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

6.2.6.70. Команда DISC

Код команды (CMD): «disc» или 0x63736964.

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

uint32_t CMD Команда
uint8_t Reserved [8] Зарезервировано (8 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда
uint8_t sresult Результат выполнения команды.
uint8_t Reserved [8] Зарезервировано (8 байт)
uint16_t CRC Контрольная сумма

Описание: Команда служит для закрытия сеанса ISP (in-system programming) при загрузке прошивки. Result = RESULT_OK, если команда выполнена загрузчиком. Result = RESULT_HARD_ERROR, если во время выполнения команды произошла аппаратная ошибка. Result = RESULT_SOFT_ERROR, если во время выполнения команды произошла программная ошибка. Result не доступен через функцию библиотеки command_update_firmware, значение поля обрабатывается внутри функции.

6.2.6.71. Команда EERD

Код команды (CMD): «eerd» или 0x64726565.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.72. Команда EESV

Код команды (CMD): «eesv» или 0x76736565.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.73. Команда GBLV

Код команды (CMD): «gblv» или 0x766C6267.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint8_t Major Мажорный номер версии загрузчика
uint8_t Minor Минорный номер версии загрузчика
uint16_t Release Номер релиза версии загрузчика
uint16_t CRC Контрольная сумма

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

6.2.6.74. Команда GETC

Код команды (CMD): «getc» или 0x63746567.

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

uint32_t CMD Команда

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

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

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

6.2.6.75. Команда GETI

Код команды (CMD): «geti» или 0x69746567.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
int8_t Производитель Производитель
int8_t ManufacturerId Идентификатор производителя
int8_t ProductDescription Описание продукта
uint8_t Major Основной номер версии железа.
uint8_t Minor Второстепенный номер версии железа.
uint16_t Release Номер правок этой версии железа.
uint8_t Reserved [12] Зарезервировано (12 байт)
uint16_t CRC Контрольная сумма

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

6.2.6.76. Команда GETM

Код команды (CMD): «getm» или 0x6D746567.

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

uint32_t CMD Команда

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

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

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

6.2.6.77. Команда GETS

Код команды (CMD): «gets» или 0x73746567.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint8_t MoveSts Состояние движения.
  0x1 - MOVE_STATE_MOVING Если флаг установлен, то контроллер пытается вращать двигателем. Не используйте этот флаг для ожидания завершения команды движения. Вместо него используйте MVCMD_RUNNING из поля MvCmdSts.
  0x2 - MOVE_STATE_TARGET_SPEED Флаг устанавливается при достижении заданной скорости.
  0x4 - MOVE_STATE_ANTIPLAY Выполняется компенсация люфта, если флаг установлен.
uint8_t MvCmdSts Состояние команды движения (касается command_move, command_movr, command_left, command_right, command_stop, command_home, command_loft).
  0x3f - MVCMD_NAME_BITS Битовая маска активной команды.
  0x0 - MVCMD_UKNWN Неизвестная команда.
  0x1 - MVCMD_MOVE Команда move.
  0x2 - MVCMD_MOVR Команда movr.
  0x3 - MVCMD_LEFT Команда left.
  0x4 - MVCMD_RIGHT Команда rigt.
  0x5 - MVCMD_STOP Команда stop.
  0x6 - MVCMD_HOME Команда home.
  0x7 - MVCMD_LOFT Команда loft.
  0x8 - MVCMD_SSTP Команда плавной остановки(SSTP).
  0x40 - MVCMD_ERROR Состояние завершения движения (1 - команда движения выполнена с ошибкой, 0 - команда движения выполнена корректно). Имеет смысл если MVCMD_RUNNING указывает на завершение движения.
  0x80 - MVCMD_RUNNING Состояние команды движения (0 - команда движения выполнена, 1 - команда движения сейчас выполняется).
uint8_t PWRSts Состояние питания шагового двигателя (используется только с шаговым двигателем).
  0x0 - PWR_STATE_UNKNOWN Неизвестное состояние, которое не должно никогда реализовываться.
  0x1 - PWR_STATE_OFF Обмотки мотора разомкнуты и не управляются драйвером.
  0x3 - PWR_STATE_NORM Обмотки запитаны номинальным током.
  0x4 - PWR_STATE_REDUCT Обмотки намеренно запитаны уменьшенным током от рабочего для снижения потребляемой мощности.
  0x5 - PWR_STATE_MAX Обмотки запитаны максимально доступным током, который может выдать схема при данном напряжении питания.
uint8_t EncSts Состояние энкодера.
  0x0 - ENC_STATE_ABSENT Энкодер не подключен.
  0x1 - ENC_STATE_UNKNOWN Cостояние энкодера неизвестно.
  0x2 - ENC_STATE_MALFUNC Энкодер подключен и неисправен.
  0x3 - ENC_STATE_REVERS Энкодер подключен и исправен, но считает в другую сторону.
  0x4 - ENC_STATE_OK Энкодер подключен и работает адекватно.

_____________________________________________________________________________________________

Важно

Структура «WindSts» (состояние обмоток) не реализована и не используется

uint8_t WindSts Состояние обмоток.
  0x0 - WIND_A_STATE_ABSENT Обмотка A не подключена.
  0x1 - WIND_A_STATE_UNKNOWN Cостояние обмотки A неизвестно.
  0x2 - WIND_A_STATE_MALFUNC Короткое замыкание на обмотке A.
  0x3 - WIND_A_STATE_OK Обмотка A работает адекватно.
  0x0 - WIND_B_STATE_ABSENT Обмотка B не подключена.
  0x10 - WIND_B_STATE_UNKNOWN Cостояние обмотки B неизвестно.
  0x20 - WIND_B_STATE_MALFUNC Короткое замыкание на обмотке B.
  0x30 - WIND_B_STATE_OK Обмотка B работает адекватно.

_____________________________________________________________________________________________

int32_t CurPosition Первичное поле, в котором хранится текущая позиция, как бы ни была устроена обратная связь. В случае работы с DC-мотором в этом поле находится текущая позиция по данным с энкодера, в случае работы с ШД-мотором в режиме, когда первичными являются импульсы, подаваемые на мотор, в этом поле содержится целое значение шагов текущей позиции.
int16_t uCurPosition Дробная часть текущей позиции в микрошагах (-255..255). Используется только с шаговым двигателем.
int64_t EncPosition Текущая позиция по данным с энкодера в импульсах энкодера, используется только если энкодер установлен, активизирован и не является основным датчиком положения, например при использовании энкодера совместно с шаговым двигателем для контроля проскальзования.
int32_t CurSpeed Текущая скорость.
int16_t uCurSpeed Дробная часть текущей скорости в микрошагах (-255..255). Используется только с шаговым двигателем.
int16_t Ipwr Ток потребления силовой части.
int16_t Upwr Напряжение на силовой части, десятки мВ.
int16_t Iusb Ток потребления по USB.
int16_t Uusb Напряжение на USB, десятки мВ.
int16_t CurT Температура процессора в десятых долях градусов цельсия.
uint32_t Флаги Флаги состояний.
  0x3f - STATE_CONTR Флаги состояния контроллера.
  0x1 - STATE_ERRC Недопустимая команда.
  0x2 - STATE_ERRD Нарушение целостности данных.
  0x4 - STATE_ERRV Недопустимое значение данных.
  0x10 - STATE_EEPROM_CONNECTED Подключена память EEPROM с настройками.
  0x20 - STATE_IS_HOMED Калибровка выполнена
  0x73ffc0 - STATE_SECUR Флаги опасности.
  0x40 - STATE_ALARM Контроллер находится в состоянии ALARM, показывая, что случилась какая-то опасная ситуация. В состоянии ALARM все команды игнорируются пока не будет послана команда STOP и состояние ALARM деактивируется.
  0x80 - STATE_CTP_ERROR Контроль позиции нарушен(используется только с шаговым двигателем).
  0x100 - STATE_POWER_OVERHEAT Перегрелась силовая часть платы.
  0x200 - STATE_CONTROLLER_OVERHEAT Перегрелась микросхема контроллера.
  0x400 - STATE_OVERLOAD_POWER_VOLTAGE Превышено напряжение на силовой части.
  0x800 - STATE_OVERLOAD_POWER_CURRENT Превышен максимальный ток потребления силовой части.
  0x1000 - STATE_OVERLOAD_USB_VOLTAGE Превышено напряжение на USB.
  0x2000 - STATE_LOW_USB_VOLTAGE Слишком низкое напряжение на USB.
  0x4000 - STATE_OVERLOAD_USB_CURRENT Превышен максимальный ток потребления USB.
  0x8000 - STATE_BORDERS_SWAP_MISSET Достижение неверной границы.
  0x10000 - STATE_LOW_POWER_VOLTAGE Напряжение на силовой части ниже чем напряжение Low Voltage Protection
  0x20000 - STATE_H_BRIDGE_FAULT Получен сигнал от драйвера о неисправности
  0xc0000 - STATE_CURRENT_MOTOR_BITS Биты, показывающие текущий рабочий мотор на платах с несколькими выходами для двигателей.
  0x0 - STATE_CURRENT_MOTOR0 Мотор 0.
  0x40000 - STATE_CURRENT_MOTOR1 Мотор 1.
  0x80000 - STATE_CURRENT_MOTOR2 Мотор 2.
  0xc0000 - STATE_CURRENT_MOTOR3 Мотор 3.
  0x100000 - STATE_WINDING_RES_MISMATCH Сопротивления обмоток отличаются друг от друга слишком сильно
  0x200000 - STATE_ENCODER_FAULT Получен сигнал от энкодера о неисправности
  0x400000 - STATE_MOTOR_CURRENT_LIMIT Превышен предел по току
uint32_t GPIOFlags Флаги состояний GPIO входов
  0xffff - STATE_DIG_SIGNAL Флаги цифровых сигналов.
  0x1 - STATE_RIGHT_EDGE Достижение правой границы.
  0x2 - STATE_LEFT_EDGE Достижение левой границы.
  0x4 - STATE_BUTTON_RIGHT Состояние кнопки „вправо“ (1, если нажата).
  0x8 - STATE_BUTTON_LEFT Состояние кнопки „влево“ (1, если нажата).
  0x10 - STATE_GPIO_PINOUT Если флаг установлен, ввод/вывод общего назначения работает как выход; если флаг сброшен, ввод/вывод работает как вход.
  0x20 - STATE_GPIO_LEVEL Состояние ввода/вывода общего назначения.
  0x200 - STATE_BRAKE Состояние вывода управления тормозом(флаг „1“ - если на тормоз подаётся питание, „0“ - если тормоз не запитан).
  0x400 - STATE_REV_SENSOR Состояние вывода датчика оборотов(флаг „1“, если датчик активен).
  0x800 - STATE_SYNC_INPUT Состояние входа синхронизации(1, если вход синхронизации активен).
  0x1000 - STATE_SYNC_OUTPUT Состояние выхода синхронизации(1, если выход синхронизации активен).
  0x2000 - STATE_ENC_A Состояние ножки A энкодера(флаг „1“, если энкодер активен).
  0x4000 - STATE_ENC_B Состояние ножки B энкодера(флаг „1“, если энкодер активен).
uint8_t CmdBufFreeSpace Это поле показывает количество свободных ячеек буфера цепочки синхронизации.
uint8_t Reserved [4] Зарезервировано (4 байт)
uint16_t CRC Контрольная сумма

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

6.2.6.78. Команда GFWV

Код команды (CMD): «gfwv» или 0x76776667.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint8_t Major Мажорный номер версии прошивки
uint8_t Minor Минорный номер версии прошивки
uint16_t Release Номер релиза версии прошивки
uint16_t CRC Контрольная сумма

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

6.2.6.79. Команда GOFW

Код команды (CMD): «gofw» или 0x77666F67.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint8_t sresult Результат выполнения команды.
uint8_t Reserved [8] Зарезервировано (8 байт)
uint16_t CRC Контрольная сумма

Описание: Команда инициирует передачу управления прошивке. Эта команда так же доступна из прошивки, для совместимости. Result = RESULT_OK, если переход из загрузчика в прошивку возможен. После ответа на эту команду выполняется переход. Result = RESULT_NO_FIRMWARE, если прошивка не найдена. Result = RESULT_ALREADY_IN_FIRMWARE, если эта команда была вызвана из прошивки.

6.2.6.80. Команда GPOS

Код команды (CMD): «gpos» или 0x736F7067.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
int32_t Position Позиция в основных шагах двигателя
int16_t uPosition Позиция в микрошагах(используется только с шаговыми двигателями)
int64_t EncPosition Позиция энкодера.
uint8_t Reserved [6] Зарезервировано (6 байт)
uint16_t CRC Контрольная сумма

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

6.2.6.81. Команда GSER

Код команды (CMD): «gser» или 0x72657367.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint32_t SerialNumber Серийный номер платы.
uint16_t CRC Контрольная сумма

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

6.2.6.82. Команда GUID

Код команды (CMD): «guid» или 0x64697567.

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

uint32_t CMD Команда

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

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

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

6.2.6.83. Команда HASF

Код команды (CMD): «hasf» или 0x66736168.

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

uint32_t CMD Команда

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

uint32_t CMD Команда
uint8_t sresult Результат выполнения команды.
uint8_t Reserved [8] Зарезервировано (8 байт)
uint16_t CRC Контрольная сумма

Описание: Команда определяет наличие в контроллере ПО. Данная команда доступна так же из прошивки. Result = RESULT_NO_FIRMWARE, если прошивка не найдена. Result = RESULT_HAS_FIRMWARE, если прошивка найдена.

6.2.6.84. Команда HOME

Код команды (CMD): «home» или 0x656D6F68.

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

uint32_t CMD Команда

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

uint32_t 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

6.2.6.85. Команда IRND

Код команды (CMD): «irnd» или 0x646E7269.

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

uint32_t CMD Команда

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

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

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

6.2.6.86. Команда LEFT

Код команды (CMD): «left» или 0x7466656C.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.87. Команда LOFT

Код команды (CMD): «loft» или 0x74666F6C.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.88. Команда MOVE

Код команды (CMD): «move» или 0x65766F6D.

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

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

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

uint32_t CMD Команда

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

6.2.6.89. Команда MOVR

Код команды (CMD): «movr» или 0x72766F6D.

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

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

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

uint32_t CMD Команда

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

6.2.6.90. Команда PWOF

Код команды (CMD): «pwof» или 0x666F7770.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.91. Команда RDAN

Код команды (CMD): «rdan» или 0x6E616472.

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

uint32_t CMD Команда

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

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

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

6.2.6.92. Команда READ

Код команды (CMD): «read» или 0x64616572.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.93. Команда RERS

Код команды (CMD): «rers» или 0x73726572.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.94. Команда REST

Код команды (CMD): «rest» или 0x74736572.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.95. Команда RIGT

Код команды (CMD): «rigt» или 0x74676972.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.96. Команда SARS

Код команды (CMD): «sars» или 0x73726173.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.97. Команда SAVE

Код команды (CMD): «save» или 0x65766173.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.98. Команда SPOS

Код команды (CMD): «spos» или 0x736F7073.

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

uint32_t CMD Команда
int32_t Position Позиция в основных шагах двигателя
int16_t uPosition Позиция в микрошагах(используется только с шаговыми двигателями)
int64_t EncPosition Позиция энкодера.
uint8_t PosFlags Флаги
  0x1 - SETPOS_IGNORE_POSITION Если установлен, то позиция в шагах и микрошагах не обновляется.
  0x2 - SETPOS_IGNORE_ENCODER Если установлен, то счётчик энкодера не обновляется.
uint8_t Reserved [5] Зарезервировано (5 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда

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

6.2.6.99. Команда SSER

Код команды (CMD): «sser» или 0x72657373.

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

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

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

uint32_t CMD Команда

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

6.2.6.100. Команда SSTP

Код команды (CMD): «sstp» или 0x70747373.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.101. Команда STMS

Код команды (CMD): «stms» или 0x736D7473.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.102. Команда STOP

Код команды (CMD): «stop» или 0x706F7473.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.103. Команда UPDF

Код команды (CMD): «updf» или 0x66647075.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

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

6.2.6.104. Команда WDAT

Код команды (CMD): «wdat» или 0x74616477.

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

uint32_t CMD Команда
uint8_t Data Закодированная прошивка.
uint8_t Reserved [8] Зарезервировано (8 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда

Описание: Записывает данные (прошивку) во Flash память контроллера. Не возвращает результат выполнения, хотя может завершаться ошибкой. Ошибочность заливки и тип ошибки можно узнать при завершении заливки.

6.2.6.105. Команда WKEY

Код команды (CMD): «wkey» или 0x79656B77.

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

uint32_t CMD Команда
uint8_t Key Ключ защиты для установки серийного номера (256 бит).
uint8_t Reserved [8] Зарезервировано (8 байт)
uint16_t CRC Контрольная сумма

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

uint32_t CMD Команда
uint8_t sresult Результат выполнения команды.
uint8_t Reserved [8] Зарезервировано (8 байт)
uint16_t CRC Контрольная сумма

Описание: Команда записи ключа для расшифровки прошивки. Result = RESULT_OK, если команда выполнена загрузчиком. Result = RESULT_HARD_ERROR, если во время выполнения команды произошла ошибка. Result не доступен через функцию библиотеки write_key, значение поля обрабатывается внутри функции. Функция используется только производителем.

6.2.6.106. Команда ZERO

Код команды (CMD): «zero» или 0x6F72657A.

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

uint32_t CMD Команда

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

uint32_t CMD Команда

Описание