Перейти к статье

Режимы, сессии и остановка

Проверено 2026-11-01

Справочник для разработчика управляющего ПО. При использовании готовых replay/teleoperation/tuning-инструментов подготовку сессии выполняет общий контроллер; вручную воспроизводить эту последовательность параллельно с ним не нужно.

После сброса выбирается Legacy. Extension-конфигурация хранится в RAM и не восстанавливается автоматически из EEPROM. Перед новым запуском ПО должно проверить capabilities и поддерживать протокол 9.0.

Режим Legacy

Управление Legacy через стандартные STS-регистры

Legacy mode поддерживает стандартный интерфейс регистров STS: включение мотора, режим работы, команды положения и скорости, чтение состояния. Существующее STS-ПО может использовать регистры 0–86, не включая Extension.

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

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

Запуск и остановка режима Extension

Подготовка, запуск и завершение Extension-сессии

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

  1. Найдите подключённые ID и прочитайте capabilities каждого сервопривода. Проверьте ARMC и версию 9.0. Повторяйте проверку после сброса или смены прошивки.
  2. Выключите мотор: запишите 0 в Legacy-регистр включения удержания 40. Завершите прежнюю сессию и примените необходимые постоянные Legacy-настройки.
  3. Запишите и прочитайте обратно полную конфигурацию 0xA0, включая velocity feedforward и скорость изменения компенсации гравитации.
  4. Запишите mode=1 и новый ненулевой номер сессии в 0xB8 — всего 3 байта. Это выбирает Extension и подготавливает запуск; мотор остаётся выключенным.
  5. Запишите 1 в регистр 40. Прошивка проверит датчики, защиту, конфигурацию и сохранённые пределы, затем зафиксирует измеренную позицию как начальную цель удержания. Счётчики команд, I-коррекция и гравитация начнут с нуля. Читайте 0xC1 и дождитесь нужной сессии, пригодных свежих измерений, включённого привода и готового выхода.
  6. Отправляйте цели и обновления гравитации. Проверяйте обратную связь: какие команды приняты и насколько точно выполняются.
  7. После последнего движения сервопривод удерживает конечную позицию до новой цели. Запишите 0 в регистр 40, чтобы выключить мотор и завершить сессию. Для возврата в Legacy оставьте мотор выключенным и запишите mode=0, session=0 в 0xB8.

Если запуск не удался, регистр 40 возвращается к 0. Обычного подтверждения записи недостаточно: проверьте прочитанное значение и обратную связь. Каждая попытка запуска использует подготовленную сессию. После неудачного запуска, torque-off или защитного отключения устраните причину и запишите новый номер в 0xB8 до повторного включения удержания. Повторная команда включения во время работающего управления сохраняет цель, компенсацию и счётчики.

Команды движения или изменения воздействия включённого мотора требуют готового оборудования, отсутствия зарегистрированной неисправности и показаний датчиков возрастом не более 2 мс. Обычный период регулятора — 1 мс; допустим интервал до 2 мс. Более длинные интервалы отключают выход мотора.

В Extension избегайте Legacy-записей в регистр режима 33 и регистры движения 41–47: они выключают мотор и выводят его из Extension. Сохранение постоянных настроек также завершает Extension-управление. Запись 0 в 40 оставляет режим Extension выбранным, но для запуска нужна новая подготовка сессии.

Если команды хоста перестали поступать

Сервопривод завершает последнее принятое движение и продолжает удерживать цель. Гравитация доходит до последнего запрошенного значения и сохраняется. Повторяющиеся сообщения для поддержания сессии не нужны; потеря связи сама по себе не меняет цель и не выключает мотор.

Чтобы изменить конечную позицию, отправьте новую цель. Чтобы отпустить мотор, установите torque enable в ноль. Проверка свежести датчиков, защита мотора и сторожевой таймер прошивки продолжают работать при движении и удержании.

Не путать три разных таймера

Механизм Что контролирует
Проверка свежести датчиков прошивкой Пригодность локальных измерений; управляющие действия требуют возраст не более 2 мс
Проверки хоста Возраст кадров, обратной связи и срок обновления гравитации; при нарушении программа пытается выполнить предусмотренное завершение
Потеря сообщений на шине Сама по себе не является firmware-timeout, отключающим удержание или последнюю гравитацию

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

Поведение готовых инструментов

Инструмент / событие Ожидаемое действие
Extension replay: обычное завершение или Ctrl+C Сохранить последнюю цель и удержание; при настроенной гравитации обслужить оставшееся движение и подтвердить компенсацию
Teleoperation: обычное завершение или Ctrl+C Перестать выдавать новые цели и сохранить удержание; ожидание завершения зависит от наличия модели гравитации
Tuning: обычное завершение Вернуть настроенный baseline, оставить удержание
Tuning: Ctrl+C во время серии Прервать серию и попытаться отключить удержание
Legacy replay: обычное завершение Оставить удержание последней позы
Legacy replay: Ctrl+C или ошибка Попытаться отключить удержание
Recorder: успешное завершение Оставить выбранные моторы без удержания
Закрытие viewer Не влияет на аппаратный контроллер
Убийство процесса или потеря шины Команда очистки может не дойти; firmware может удерживать последнюю цель и гравитацию

При настроенной модели гравитации и готовых моторах завершение общего Extension-контроллера обслуживает оставшееся движение и гравитацию, ожидает 200 мс покоя с общим timeout 30 с и подтверждает последнюю компенсацию. Покой здесь означает остановленный планировщик и диапазон измеренной позиции не больше одного отсчёта за эти 200 мс, а не нулевую ошибку относительно цели.

Ошибки модели, отклонённые обновления, устаревшая обратная связь, потеря сессии, аварии и проверенная температура от 60 °C вызывают попытку подтверждённого torque-off. Исключение: пропущен срок гравитации во время уже установленного удержания и два свежих прохода подтвердили здоровое неподвижное состояние той же сессии. Тогда ошибка возвращается с holdRetained: true; работа автоматически не продолжается.

Без модели гравитации общий контроллер не выполняет это заключительное ожидание покоя. При обычном воспроизведении именованных поз replay ожидает достижения каждой цели в пределах заданного допуска, но Ctrl+C может прервать это ожидание. Поэтому replay или телеуправление могут завершить процесс, пока мотор продолжает движение к последней цели.

Ctrl+C не является аппаратной аварийной остановкой. Завершение и снятие удержания зависят от работающей связи; безопасное состояние механизма должно быть обеспечено на уровне установки.


Главная раздела · Версия исходников: a995f77. Extension 9.0.