4.6.3. Статус контроллера

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

4.6.3.1. Статус движения

MoveSts содержит:

  • Флаг движения, который устанавливается когда контроллер меняет позицию двигателя.
  • «Флаг достижения требуемой скорости», который устанавливается если скорость равна той, с которой контроллер должен отрабатывать текущее движение.
  • Флаг антилюфта, который устанавливается при подавлении люфта во время заключительной стадии движения (см. Компенсация люфта).

MvCmdSts содержит информацию о выполняемой команде. Все движения мотора вызываются командами движения к целевой позиции MOVE, сдвига относительно последней целевой позиции MOVR, движения вправо RIGT или влево LEFT, плавной SSTP или резкой STOP остановки, калибровки домашней позиции HOME или принудительного подавления люфта LOFT. Управление кнопками, джойстиком, импульсами синхронизации и т. п. тоже приводится к этим командам. Например, джойстик вызывает команды движения вправо и влево при отклонении или команду плавной остановки в центральном положении (см. Управление с помощью джойстика). В переменной MvCmdSts приведена текущая команда движения или последняя выполненная команда, а также статус команды: выпоняется она или уже выполнена. Если команда выполнена, то еще один бит показывает результат её выполнения (успешный или неуспешный). Неуспешное выполнение означает, что мы не попали к той позиции, к которой пытались двигаться или не смогли отработать люфт. Причиной может быть неожиданная остановка по концевикам, попадание в состояние Alarm. Изначальное состояние этого поля показывает неизвестную команду и статус успешного выполнения.

4.6.3.2. Статус питания мотора

PWRSts содержит информацию о питающем напряжении. Обмотки могут быть:

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

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

4.6.3.3. Статус энкодера

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

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

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

4.6.3.4. Статус обмоток двигателя

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

  • Отключены от контроллера
  • Быть подключены
  • Замкнуты накоротко
  • Их состояние можут быть неизвестно.

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

4.6.3.5. Статус положения.

В статусной структуре выводятся все данные о положении и скорости позиционера. Для этого используются поля основной позиции (CurPosition, uStep), второстепенной позиции (EncPosition), скорости (CurSpeed, uCurSpeed). Основное положение отсчитывается в шагах шагового двигателя и микрошагах, если используется управление без обратной связи. При использовании режима ведущего энкодера

хранится счётчик положения по энкодеру, а в uStep записан 0. Поле второстепенной позиции это поле энкодера если используется управление шаговым двигателем без обратной связи, счетчик шагов, если подключен шаговый двигатель в режиме ведущего энкодера, или 0, если подключен DC двигатель. Скорость выводится всегда для основного датчика позиции и измеряется в тех же единицах, что и установленная скорость движения.

4.6.3.6. Статус питания контроллера и температура.

В статусной структуре выводятся:

  • Ток потребления силовой части (в мА).
  • Напряжение на силовой части (в десятках мВ).
  • Ток потребления по USB (в мА).
  • Напряжение на USB (в десятках мВ).
  • Температура микропроцессора (в десятых долях градуса Цельсия).

4.6.3.7. Статусные флаги

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

Ошибки команд протокола:

  • errc - Неопознанная команда протокола. Ошибка возникать не должна если используется софт, совместимый с используемой в контроллере версией протокола. Флаг не снимается самостоятельно.
  • errd - Код проверки целостности данных команды не сошёлся. Ошибка возникает при сбоях передачи данных. Флаг не снимается самостоятельно.
  • errv - Не удалось применить одно или несколько переданных в команде значений. Возникает когда команда была принята и успешно распознана, но передаваемые в ней данные были некорректны, выходили за допустимый диапазон. Также эта ошибка может означать, что требуюмую операцию не удалось выполнить из-за аппаратного сбоя. Например, эта ошибка возникнет при установке режима деления шага, не входящего в список поддерживаемых или при установке нулевого количества шагов на оборот двигателя. Флаг не снимается самостоятельно. Ошибки превышения критических параметров:
  • Флаг, что сейчас контроллер находится в режиме Alarm.
  • Флаг, который говорит о том, что сейчас силовой драйвер сигнализирует о перегреве. Флаг снимается сам в зависимости от настроек критических параметров.
  • Флаг, который говорит о том, что температура микропроцессора вышла за допустимый диапазон. Флаг снимается сам в зависимости от настроек критических параметров
  • Флаг, который говорит о том, что напряжение питания превысило допустимое значение. Флаг снимается сам в зависимости от настроек критических параметров.
  • Флаг, который говорит о том, что напряжение питания оказалось ниже допустимого значения. Флаг снимается сам в зависимости от настроек критических параметров.
  • Флаг, который говорит о том, что потребляемый ток из блока питания превысил допустимое значение. Флаг снимается сам в зависимости от настроек критических параметров.
  • Флаг, который говорит о том, что напряжение USB превысило допустимое значение. Флаг снимается сам в зависимости от настроек критических параметров.
  • Флаг, который говорит о том, что напряжение USB оказалось ниже допустимого значения. Флаг снимается сам в зависимости от настроек критических параметров.
  • Флаг, который говорит о том, что ток потребления по шине питания USB превысил допустимое значение. Флаг снимается сам в зависимости от настроек критических параметров.
  • Флаг, что концевики перепутаны местами. Флаг не снимается самостоятельно.

Общие флаги ошибок:

  • Флаг, что система контроля позиции обнаружила рассогласование позиции по счётчику шагов и датчику положения. Флаг не снимается самостоятельно (если не используется автоматическая корректировка позиции).

Флаги состояния:

  • Наличие подключенной сейчас подвижки, оснащённой памятью EEPROM.
  • Наличие внешнего питания. Иначе питание внутреннее. Установлен всегда.

4.6.3.8. Статус цифровых сигналов.

Контроллер выводит состояние входных и выходных цифровых сигналов в виде флагов активного состояния или в виде текущего логического уровня. Активное состояние соответствует единице или нулю, в зависимости от настроек конкретного блока, например от настройки инвертирования. Флаги бывают:

  • Состояние правого концевика (1, если концевик активен).
  • Состояние левого концевика (1, если концевик активен).
  • Состояние правой кнопки (1, если кнопка нажата).
  • Состояние левой кнопки (1, если кнопка нажата).
  • 1, если ножка EXTIO работает как выход. Иначе - как вход.
  • Состояние ножки EXTIO (1, если активное состояние на входе или на выходе).
  • Состояние датчика Холла C (1, если на входе логическая единица).
  • Состояние датчика Холла C (1, если на входе логическая единица).
  • Состояние датчика Холла C (1, если на входе логическая единица).
  • Состояние магнитного тормоза (1, если на тормоз подано питание).
  • Состояние датчика полного оборота (1, если датчик активен).
  • Состояние входной ножки синхронизации (1, если ножка синхронизации в активном состоянии).
  • Состояние выходной ножки синхронизации (1, если ножка синхронизации в активном состоянии).
  • Состояние на входе канала энкодера B (1, если на входе логическая единица).
  • Состояние на входе канала энкодера B (1, если на входе логическая единица).