Описание коммуникации

Материал из Robot Geeks Wiki - робототехника для любителей и профессионалов
Перейти к: навигация, поиск

Содержание

Описание коммуникации с DYNAMIXEL

Для управления Dynamixel, коммуникация должна быть установлена в соответствии с протоколом Dynamixel. Данное руководство описывает этот протокол связи.

Пакет

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

  • Пакет Инструкций - содержит команды управления, посылаемые главным контроллером сервомоторам Dynamixel.
  • Пакет Состояний - содержит ответы, которые Dynamixel отправляет на главный контроллер.

Значение ID

ID - уникальное число, присваиваемое каждому Dynamixel, когда несколько устройств Dynamixel объединены в шину. Если несколько устройств Dynamixel имеют одинаковый ID, то при передачи пакета данных произойдет ошибка сети, поэтому очень важно выбирать уникальные идентификаторы устройства при объединении нескольких Dynamixel в шину.

Протокол

Dynamixel осуществляет асинхронное последовательное соединение типа 8-N-1, где цифра 8 обозначает количество битов информации в пакете, буква N указывает на отсутствие служебного бита проверки на четность/нечетность, цифра 1 обозначает число стоп-битов в конце пакета.

Если несколько Dynamixel с тем же ID подключены в одну шину, то произойдет сбой и данные будут повреждены или утеряны. Поэтому необходимо выбирать уникальные ID для устройств Dynamixel подключенных к одной шине.

ID Dynamixel можно изменять. Инструкции как это сделать описаны в Изменение ID устройств Dynamixel. Заводская настройка ID - 1.

Полудуплексный (half-duplex)

При полудуплексном соеднинении передача (TxD) и прием (RxD) данных из канала коммуникации не может происходить одновременно. Этот метод обычно используется, когда множество утсройств подключены к общей шине данных. Так как больше чем одно устройство подключено к одной шине, при передаче этим устойством данных все другие устройства должны быть в режиме приема.

Иллюстрация коммуникации Главного Контроллера с устройствами Dynamixel.‎

Главный Контроллер, управляющий сервомоторами Dynamixel задает направление связи в режим приема, после этого передает Пакет Инструкций, затем переключает направление в режим передачи и ожидает Пакет Статуса, посылаемый устройством Dynamixel.

Направления Tx, Rx

Для полудуплексного режима время окончания передачи важно, чтобы вовремя изменить направление на режим приема.

Значение битов в регистре UART_STATUS следующее:

  • TXD_BUFFER_READY_BIT: показывает, что передаваемые данные могут быть загружены в буфер. Заметим, что это только означает, что последовательный Tх буфер пуст, и не обязательно означает, что все данные переданные прежде, покинули центральный процессор.
  • TXD_SHIFT_REGISTER_EMPTY_BIT: показывает, что все данные были переданы и ЦПУ свободен.
  • TXD_BUFFER_READY_BIT: используется, когда один байт должен быть передан через последовательный канал связи, пример приведен ниже.
 TxDByte(byte bData)
 {
   while (!TXD_BUFFER_READY_BIT) // подождать, пока данные будут загружены.
   SerialTxDBuffer = bData; // загрузка данных в буфер TxD 
 }

При изменении направления, регистр TXD_SHIFT_REGISTER_EMPTY_BIT должен быть проверен.

Ниже приведен пример программы, которая посылает пакет инструкции.

 LINE 1 DIRECTION_PORT = TX_DIRECTION;
 LINE 2 TxDByte(0xff);
 LINE 3 TxDByte(0xff);
 LINE 4 TxDByte(bID);
 LINE 5 TxDByte(bLength);
 LINE 6 TxDByte(bInstruction);
 LINE 7 TxDByte(Parameter0); TxDByte(Parameter1); …
 LINE 8 DisableInterrupt(); // прерывание должно быть отключено
 LINE 9 TxDByte(Checksum); // последний TxD
 LINE 10 while (!TXD_SHIFT_REGISTER_EMPTY_BIT); // ждем, пока не будет отправлен последний бит данных
 LINE 11 DIRECTION_PORT = RX_DIRECTION; // изменение Направления RxD
 LINE 12 EnableInterrupt(); // разрешить прерывание.

Обратите внимание на важные строки между LINE 8 и LINE 12. LINE 8 необходима, так как прерывание здесь может вызвать задержку дольше, чем время задержки ожидания подтверждения и таким образом повредить начало пакета состояния.

Межбайтовое время

Если время задержки составляет более 100 мс, то привод Dynamixel считает это как проблему связи и ждет следующего пакета с заголовком (0xff 0xff).

Межбайтовое время‎

Пакет Инструкций

Пакет инструкция представляет собой управляющие данные, которые Главный Контроллер посылает сервомоторам Dynamixel .

Структура Пакета Инструкции выглядит следующим образом:

 0xFF 0xFF ID ДЛИНА ИНСТРУКЦИЯ ПАРАМЕТР_1 ... ПАРАМЕТР_N КОНТРОЛЬНАЯ_СУММА

Значение каждого байта пакета выглядит следующим образом:

 0xFF 0xFF

Сигнал, уведомляющий о начале пакета:

 ID

Это идентификатор сервомотора Dynamixel, которому адресован данный Пакет Инструкций. Он может использовать 254 различных ID - от 0 до 253 (0x00~0xFD).

Широковещательный ID: ID = 254 (0XFE)

Если используется широковещательный ID, все связанные сервомоторы Dynamixel выполняют команду Пакета Инструкции, а Пакет Статуса не возвращается.

 ДЛИНА

Длина пакета рассчитывается как "число параметров (N) + 2".

 ИНСТРУКЦИЯ

Команды управления сервомоторами Dynamixel имеют следующие типы.

Значение Название Описание Кол-во парам.
0x01 PING Нет ни каких действий. Используется, когда контроллер готов к приему статусного пакета 0
0x02 READ_DATA Команда считывает данные из Dynamixel 2
0x03 WRITE_DATA Команда записывает данные в Dynamixel 2 или более
0x04 REG WRITE Похожа на write_data но она остается в состоянии ожидания и не выполняется пока команда ACTION не прибудет 2 или более
0x05 ACTION Команда инициирует движения, зарегистрированные в REG WRITE 0
0x06 RESET Команда возвращает Dynamixel к заводским настройкам. 0
0x83 SYNC WRITE Команда используется для управления несколькими Dynamixel одновременно 4 или более
 ПАРАМЕТР_0..N

Данный параметр используется, когда Инструкция требует вспомогательных данных.

 КОНТРОЛЬНАЯ_СУММА

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

Сумма = ~ (ID + Длина + Инструкция + Параметр1 + … +ПараметрN), где, "~" является Not Bit operator.

Когда результат вычисления вышеприведенной формулы больше, чем 255 (0xFF), используются только более низкие байты.

Например, когда Вы хотите использовать Пакет Инструкции

 ID=1 (0x01), длина = 5 (0x05), инструкция = 3 (0x03),  
 Параметр1 = 12 (0x0C), Параметр2 = 100 (0x64), Параметр3 = 170 (0xAA)
 Сумма = ~ (ID + длина + инструкция + Параметр1 + … +Параметр 3)
       = ~ [0x01 + 0x05 + 0x03 + 0x0C + 0x64 + 0xAA] 
       = ~ [0x123] //Только более низкий байт 0x23 выполняет операцию Not..
       = 0xDC 

Таким образом, Пакет Инструкции должен быть 0x01, 0x05, 0x03, 0x0C, 0x64, 0xAA, 0xDC.

Пакет Статуса

Dynamixel выполняет команду, полученную от Главного Контроллера, и возвращает результат обратно. Возвращаемые данные называют Пакетом Статуса. Структура Пакета Статуса следующая:

 0xFF 0xFF ID ДЛИНА ОШИБКА ПАРАМЕТР_1 ПАРАМЕТР_2 ... ПАРАМЕТР_N КОНТРОЛЬНАЯ_СУММА

Каждый байт, составляющий пакет означает следующее:

 0xFF 0xFF

Этот сигнал уведомляет о начале пакета.

 ID

Это ID RX-64, который передает Пакет Статуса.

 ДЛИНА

Длина Пакета Статуса, значение которого рассчитывается как “число Параметров (N) + 2”.

 ОШИБКА

Содержит статус ошибки во время работы Dynamixel.

Значение каждого бита описано в приведенной ниже таблице.

Бит Название Описание
Bit 7 0 _
Bit 6 Instruction Error (Ошибка инструкции) В случае отправки неопределенной инструкции или доставки команды управления без команды reg_write в это поле записывается 1.
Bit 5 Overload Error (Ошибка нагрузки) Когда текущая нагрузка превышает установленный предел, в поле записывается 1.
Bit 4 Checksum Error (Ошибка контрольной суммы) Когда Контрольная сумма переданного Пакета Инструкции неправильная, в это поле записывается 1.
Bit 3 Range Error (Ошибка диапазона) Когда команда находится вне диапазона использования, в поле устанавливается 1.
Bit 2 Overheating Error (Ошибка перегрева) Когда внутренняя температура Dynamixel вне диапазона рабочей температуры, установленной в таблице управления, в это поле устанавливается 1.
Bit 1 Angle Limit Error (Ошибка предела угла) Когда заданное положение вала находится вне диапазона CW Angle - CCW Angle Limit, в это поле устанавливается 1.
Bit 0 Input Voltage Error (Ошибка входного напряжения) Когда приложенное напряжение находится вне диапазона рабочего напряжения, установленного в таблице управления, в поле записывается 1.

Например, когда Пакет Статуса возвращен как ниже:

 0xFF   0xFF   0x01   0x02   0x24   0xD8

Это означает, что ошибка с кодом 0x24 пришла от Dynamixel, ID которого равняется 0x01.

Так как 0x24 это 00100100 в двоичном виде, то бит 5 и бит 2 равны 1. Другими словами, произошли ошибки Перегрузки и Перегревания.

Типы ошибок в приведенной выше таблице могут измениться в зависимости от типа Dynamixel.

 ПАРАМЕТР_0...N

Возвращает данные из Таблицы Управления, в режиме «ERROR» не содержит значения.

 КОНТРОЛЬНАЯ_СУММА

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

Формула ниже построена таким же образом, как контрольная сумма Пакета Инструкции.

 Сумма = ~ (ID + Длина + Ошибка + Параметр_1 + ... +Параметр_N).

Типы Инструкций

Для управления Dynamixel, Пакет Инструкций, должен быть направлен в Dynamixel от Главного Контроллера. Пакет Инструкция содержит семь видов команд. (см. #Пакет Инструкций). Dynamixel получает Пакет Инструкций, чтобы выполнить команду и возвращает результат выполнения в Статус Пакете Главному Контроллеру. В этом разделе описываются примеры использования команд Пакет Инструкций.

Примеры приведенные ниже написаны на основе инструкций и статусов для сервомотора Dynamixel RX-64, но также подходят и для сервомоторов других типов, например AX-12/12+, DX.

Чтение Данных (READ_DATA)

  • Описание: Команда для получения текущих данных таблицы управления сервомотора Dynamixel.
  • Длина: 0x04
  • Инструкция: 0x02
  • Параметр_1: Начальный адрес данных, которые будут читать.
  • Параметр_2: Длина данных для чтения.

Пример 1. Чтение текущей внутренней температуры RX-64 с ID равным 1

 Запрашивает значение размером 1 байт из Таблицы Управления. 
 Значение расположено по адресу 43 (0x2B).
 
 Пакет Инструкций: 0xFF 0xFF 0x01 0x04 0x02 0x2B 0X01 0xCC
                            /    /       |      \    \    \
                          ID Длина Инструкция Параметры Контрольная сумма
 
 Полученный пакет статуса имеет следующий вид:
 Пакета статуса: 0xFF 0xFF 0x01 0x03 0x00 0x20 0xDB
                          /    /     |        \    \
                        ID Длина Ошибка Параметр_1 Контрольная сумма
 
  Таким образом значение Параметр_1 = 0x20 (в десятичном виде 32). 
  Это значение является текущей температурой.

Запись Данных (WRITE_DATA)

  • Описание: Команда для записи новых значений в Таблицу Управления RX-64.
  • Длина: N+3 (N - количество параметров для записи).
  • Инструкция: 0x03
  • Параметр_1: Начальный адрес для записи данных.
  • Параметр_2: Первый параметр для записи.
  • Параметр_3: Второй параметр для записи.
  • Параметр_N +1: N-й параметр для записи.

Пример 2. Устанавливаем ID RX-64 равным 1

 Записывает 1 по адресу 3 в таблице управления.
 
 Посылает ID как широковещательный пакет (0xFE)
   
 Пакет Инструкций: 0XFF 0XFF 0XFE 0X04 0X03 0X03 0X01 0XF6
                            /    /       |      \    \    \
                           ID Длина Инструкция Параметры Контрольная сумма
 
 Пакет Статуса не возвращается, так как передан широковещательный пакет (0xFE).

Регистрируемая Запись Данных (REG_WRITE)

  • Описание: Команда REG_WRITE похожа на команду WRITE_DATA с точки зрения функционала, но отличается продолжительностью выполнения. В случае использования REG_WRITE, когда пребывает Пакет Инструкций, он не выполняется сразу, а сохраняется в буфере и операция записи остается в состоянии ожидания. В момент регистрации команды флаг по адресу 44 (0x2C) устанавливается в 1. Затем, когда Пакет Инструкций типа Action получен, значение флага меняется на "'0" и записанная команда выполняется.
  • Длина: N+3 (N - количество параметров для записи).
  • Инструкция: 0x04
  • Параметр_1: Начальный адрес для записи данных.
  • Параметр_2: Первый параметр для записи.
  • Параметр_3: Второй параметр для записи.
  • Параметр_N +1: N-й параметр для записи.

Пример 3. Получаем статус пакет RX-64, ID которого равно 1

 Запрашивает значение размером 1 байт из Таблицы Управления.
 Значение расположено по адресу 43 (0x2B).
 
 Пакет Инструкций: 0XFF 0XFF 0X01 0X02 0X01 0XFB 
                            /    /       |      \
                           ID Длина Инструкция Контрольная сумма
 
 Пакет Статуса вернулся и выглядит следующим образом:
 Пакет Статуса:  0XFF 0XFF 0X01 0X02 0X00 0XFС 
                            /    /    |     \
                           ID Длина Ошибка Контрольная сумма

Действие (ACTION)

  • Описание: Команда на выполнение действия, зарегистрированного командой REG WRITE.
  • Длина: 0x02.
  • Инструкция: 0x05.
  • Параметр: Отсутствует.

Команда ACTION полезна, когда несколько RX-64S перемещаются одновременно. Если несколькими работающими механизмами управляют по одной шине, есть небольшая разница во времени между первой и последней полученными командами. Эта проблема решается при помощи Пакета Инструкции типа ACTION.

Пинг (PING).

  • Описание:Команда не содержит никаких указаний. Она используется только при получении Статус Пакета или для подтверждения существования устройства Dynamixel с заданным ID.
  • Длина: 0x02.
  • Инструкция: 0x01.
  • Параметр: Отсутствует.

Сброс (RESET)

  • Описание: Команда для сброса Таблицы Управления Dynamixel к заводским настройкам. Пожалуйста, будьте осторожны, так как значения, установленные пользователем, могут быть удалены, если используется команда RESET.
  • Длина: 0x02.
  • Инструкция: 0x06
  • Параметр: Отсутствует.

Пример 4. Сбрасываем Таблицу Управления RX-64, ID которого равен 1

 Пакет Инструкций: 0XFF 0XFF 0X00 0X02 0X06 0XF7 
                            /    /       |      \
                           ID Длина Инструкция Контрольная сумма
 
 Пакет Статуса вернулся и выглядит следующим образом:
 Пакет Статуса:  0XFF 0XFF 0X00 0X02 0X00 0XFD 
                            /    /    |     \
                           ID Длина Ошибка Контрольная сумма
 
 Обратите внимание, что ID установлено в 1 после выполнения команды сброса.

Синхронизация записи (SYNC_WRITE)

  • Описание: Команда используется для управления несколькими RX-64 одновременно с помощью одного Пакета Инструкций. При использовании этой команды, несколько команд передаются одновременно, так, что время связи сокращается, когда ведется управление несколькими RX-64. Однако, команду SYNC_WRITE, можно использовать только, когда оба адреса и длины Таблиц Управления идентичны. Кроме того, ID должен быть передан в режиме широковещательного ID. Как правило, один Пакет Инструкций составляет 4 байта, таким образом можно управлять 26 устройствами Dynamixel одновременно. Убедитесь, что длина пакета не превышает 143 байта, так как размер буфера приёма RX-64 составляет 143 байта.
  • ID : 0xFE.
  • Длина: (L+1) xN + 4; (L: Длина данных для одного RX-64; N: количество RX-64).
  • Инструкция: 0x83
  • Параметр_1: Начальный адрес для записи данных.
  • Параметр_2: Длина данных для записи.
  • Параметр_3: ID первого RX-64.
  • Параметр_4: Первый параметр для записи в первый RX-64.
  • Параметр_5: Второй параметр для записи в первый RX-64.

...

  • Параметр_L + 3: L-й параметр для записи в первый RX-64.
  • Параметр_L + 4: ID второго RX-644.
  • Параметр_L + 5: Первый параметр для записи во второй RX-64.
  • Параметр_L + 6: Второй параметр для записи во второй RX-64.

..

  • Параметр_2L + 4: L-й параметр для записи во второй RX-64.

Пример 5. Задаем перемещение в заданные позиции с желаемыми скоростями для четырех RX-64

 RX-64 с ID 0: Перемещается в позицию 0x010 со скоростью 0x150.
 
 RX-64 с ID 1: Перемещается в позицию 0x220 со скоростью 0x360.
 
 RX-64 с ID 2: Перемещается в позицию 0x030 со скоростью 0x170.
 
 RX-64 с ID 3: Перемещается в позицию 0x220 со скоростью 0x380.
 
 Пакет Инструкций: 0XFF 0XFF 0XFE 0X18 0X83 0X1E 0X04 0X00 0X10 0X00 
                   0X50 0X01 0X01 0X20 0X02 0X60 0X03 0X02 0X30 0X00 
                   0X70 0X01 0X03 0X20 0X02 0X80 0X03 0X12                        
 
 Пакет статуса не возвращается, так как ID передан как широковещательный.

Дополнительные примеры

Предполагается, что ID = 1, и скорости передачи данных = 57142 бит/с.

Пример 6. Читаем номер модели и версию прошивки

 Подсказка: Инструкция = READ_DATA; Адрес= 0х00; Длина=0х04
 
 Коммуникация: Пакет Инструкций: FF FF 01 04 02 00 03 F5
               Пакет Статуса:    FF FF 01 05 00 40 00 08 B1
   
 Результат Пакета Статуса: Номер модели = 64 (0х40); Версия прошивки = 0х08

Пример 7. Изменяем ID RX-64 с 1 на 0

 Подсказка: Инструкция = WRITE_DATA; Адрес= 0х03; Данные=0х00
 
 Коммуникация: Пакет Инструкций: FF FF 01 04 03 03 00 F4
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки.

Пример 8. Изменяем скорость передачи данных на 1 Мбит

 Подсказка: Инструкция = WRITE_DATA; Адрес= 0х04; Данные=0х01
 
 Коммуникация: Пакет Инструкций: FF FF 01 04 03 04 01 F2
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки.

Пример 9. Сбрасываем время задержки ответа на 4 мкс

 Подсказка: Инструкция = WRITE_DATA; Адрес= 0х05; Данные=0х02
 
 Коммуникация: Пакет Инструкций: FF FF 01 04 03 05 02 F0
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки.

Пример 10. Ограничиваем угол движения от 0° до 150°

 Подсказка: Так как угловой предел Против Часовой Стрелки (CCW) в 300° равен 0x3FF, 
            то 150° соответствует значению 0x200.
 
 Инструкция = WRITE_DATA; Адрес= 0х08; Данные=0х00, 0х02
 
 Коммуникация: Пакет Инструкций: FF FF 01 05 03 08 00 02 EC
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки.

Пример 11. Сбрасываем верхний предел рабочей температуры на 80 °С

 Подсказка: Инструкция = WRITE_DATA; Адрес= 0х0B; Данные=0х50
 
 Коммуникация: Пакет Инструкций: FF FF 01 04 03 0B 50 9C
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки.

Пример 12. Устанавливаем рабочее напряжение от 10 до 17 В

 Подсказка: Данные 10 В = 100 (0x64), в то время как 17 В = 170 (0xAA).
 
 Инструкция = WRITE_DATA; Адрес= 0х0С; Данные=0х64, 0хAA
 
 Коммуникация: Пакет Инструкций: FF FF 01 05 03 0C 64 AA DC
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки.

Пример 13. Генерируем 50% от макс. крутящего момента

 Подсказка: Устанавливает значение макс. крутящего момента, 
            расположенного в области EEPROM как 0x1FF, что 
            составляет 50% максимального значения 0x3FF.
 
 Инструкция = WRITE_DATA; Адрес= 0х0E; Данные=0хFF, 0х01
 
 Коммуникация: Пакет Инструкций: FF FF 01 05 03 0E FF 01 E8
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки
 
 Изменение значения крутящего момента может быть проверено 
 путем выключения и включения питания.

Пример 15. Устанавливаем сигнализацию

Устанавливаем сигнализацию таким образом, что светодиод начинает мерцать и крутящий момент становится 0, когда рабочая температура превышает значение предельной температуры.

 Подсказка: Ошибкой перегрева является Bit 2.
            Устанавливаем значение Сигнализации в 0x04. 
            (0x04=00000100)
 
 Инструкция = WRITE_DATA; Адрес= 0х11; Данные=0х04, 0х04
 
 Коммуникация: Пакет Инструкций: FF FF 01 05 03 11 04 04 DD
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки

Пример 16. Активируем светодиод и включаем крутящий момент

 Подсказка: Инструкция = WRITE_DATA; Адрес= 0х18; Данные=0х01, 0х01
 
 Коммуникация: Пакет Инструкций: FF FF 01 05 03 18 01 01 DC
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки
 
 Вы можете проверить наличие крутящего момента, 
 прикоснувшись рукой к оси Dynamixel.

Пример 17. Задаем положение и скорость

Задаем движение в положении 180° с желаемой скоростью 57 об/мин

 Подсказка: Положение цели (адрес 30 (0x1E)) = 512 (0x200);
            Скорость движения (адрес 0x20) = 512 (0x200) 
 
 Инструкция = WRITE_DATA; Адрес= 0х1E; Данные=0х00, 0x02, 0x00, 0х02
  
 Коммуникация: Пакет Инструкций: FF FF 01 07 03 1E 00 02 00 02 D2
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки

Пример 18. Устанавливаем параметры рампы упругости (compliance).

Устанавливаем значения пределов и уклона рампы упругости в 0x01 и 0x40 соответственно.

Значение параметров кривой упругости
 Подсказка: См. график выше.
 
 А: Уклон против часовой стрелки (CCW) (Адрес 29 (0x1D))=0x40 (приблизительно 18.8°)
 
 В: Граница CCW (Адрес 27 (0x1B))=0x01 (приблизительно 0.3°)
 
 C: Граница по часовой стрелке (CW) (Адрес 26 (0x1A))=0x01 (приблизительно 0.3°)
 
 D: Уклон CW (Адрес 28 (0x1C))=0x40 (приблизительно 18.8°)
 
 Инструкция = WRITE_DATA; Адрес= 0х1A; Данные=0х01, 0x01, 0x40, 0х40
 
 Коммуникация: Пакет Инструкций: FF FF 01 07 03 1A 01 01 40 40 58
               Пакет Статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки

Пример 19. Устанавливаем минимальный крутящий момент

Устанавливаем минимальный крутящий момент (удар) в 0x40

 Подсказка: Инструкция = WRITE_DATA; Адрес= 0х30; Данные=0х40, 0x00
 
 Коммуникация: Пакет Инструкций: FF FF 01 05 03 30 40 00 86
               Пакет статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: нет ошибки

Пример 20. Задаем положение нескольким RX-64

Задаем положение 0° для RX-64 с ID 0 и положение 300° для RX-64 с ID 1. Задаем команду одновременно для обоих сервомоторов.

 Подсказка: Команда WRITE_DATA не гарантирует одновременный запуск 
 обоих RX-64. Вместо этого используем команды REG_WRITE и ACTION.
 
 ID = 0; Инструкция = REG_DATA; Адрес= 0х1E; Данные=0хFF, 0x03
 ID = 1; Инструкция = REG_DATA; Адрес= 0х1E; Данные=0х40, 0x00
 ID = 0xFE (Широковещательный ID); Инструкция = ACTION
 
 Коммуникация: Пакет Инструкций: FF FF 00 05 04 1E 00 00 D8
               Пакет Статуса:    FF FF 00 02 00 FD
               Пакет Инструкций: FF FF 01 05 04 1E FF 03 D5
               Пакет Статуса:    FF FF 01 02 00 FC
               Пакет Инструкций: FF FF FE 02 05 FA (Длина:006)
               Пакет статуса: Нет возвращённого пакета

Пример 21. Устанавливаем режим блокировки данных

Устанавливаем значения Таблицы Управления в режим блокировки (за исключением значений, расположенных по адресам с 24 по 35).

 Подсказка: Установите флаг блокировку (адрес 47 (0x2F)) в 1.
  
 Инструкция = WRITE_DATA; Адрес= 0х2F; Данные=0х01
 
 Коммуникация: Пакет Инструкций: FF FF 01 04 03 2F 01 C7
               Пакет статуса:    FF FF 01 02 00 FC
 
 Результат пакета статуса: Нет ошибки
 
 После блокировки, разблокирока невозможно. Для разблокировки
 необходимо выключить питание. Если к заблокированным данным
 происходит обращение, пакета статуса вернет ошибку.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Помощь
Robot Geeks
Инструменты