6.2. Описание протокола обмена¶
Описание протокола v18.3
- Описание протокола
- Исполнение команд
- Обработка ошибок на стороне контроллера
- Обработка ошибок на стороне библиотеки
- Коды ошибок ответов контроллера
- Все команды контроллера
- Команда GACC
- Команда GBRK
- Команда GCAL
- Команда GCTL
- Команда GCTP
- Команда GEDS
- Команда GEIO
- Команда GENG
- Команда GENI
- Команда GENS
- Команда GENT
- Команда GFBS
- Команда GGRI
- Команда GGRS
- Команда GHOM
- Команда GHSI
- Команда GHSS
- Команда GJOY
- Команда GMOV
- Команда GMTI
- Команда GMTS
- Команда GNME
- Команда GNMF
- Команда GNVM
- Команда GPID
- Команда GPWR
- Команда GSEC
- Команда GSNI
- Команда GSNO
- Команда GSTI
- Команда GSTS
- Команда GURT
- Команда SACC
- Команда SBRK
- Команда SCAL
- Команда SCTL
- Команда SCTP
- Команда SEDS
- Команда SEIO
- Команда SENG
- Команда SENI
- Команда SENS
- Команда SENT
- Команда SFBS
- Команда SGRI
- Команда SGRS
- Команда SHOM
- Команда SHSI
- Команда SHSS
- Команда SJOY
- Команда SMOV
- Команда SMTI
- Команда SMTS
- Команда SNME
- Команда SNMF
- Команда SNVM
- Команда SPID
- Команда SPWR
- Команда SSEC
- Команда SSNI
- Команда SSNO
- Команда SSTI
- Команда SSTS
- Команда SURT
- Команда ASIA
- Команда CLFR
- Команда CONN
- Команда DBGR
- Команда DBGW
- Команда DISC
- Команда EERD
- Команда EESV
- Команда GBLV
- Команда GETC
- Команда GETI
- Команда GETM
- Команда GETS
- Команда GFWV
- Команда GOFW
- Команда GPOS
- Команда GSER
- Команда GUID
- Команда HASF
- Команда HOME
- Команда IRND
- Команда LEFT
- Команда LOFT
- Команда MOVE
- Команда MOVR
- Команда PWOF
- Команда RDAN
- Команда READ
- Команда RERS
- Команда REST
- Команда RIGT
- Команда SARS
- Команда SAVE
- Команда SPOS
- Команда SSER
- Команда SSTP
- Команда STMS
- Команда STOP
- Команда UPDF
- Команда WDAT
- Команда WKEY
- Команда ZERO
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
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.
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 проиллюстрирован на графике:
Зависимость между отклонением и скоростью экспоненциальная, что позволяет без переключения режимов скорости сочетать высокую подвижность и точность. На графике ниже показан пример экспоненциальной зависимости скорости и работы мертвой зоны:
Параметр нелинейности можно менять. Нулевой параметр нелинейности соответствует линейной зависимости.
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 | Команда |
Описание