Industry 4.0 · цифровые двойники станков и промышленной автоматики · отечественная R&D-разработка +7 925 353-56-35 info@synctwin.ru
Документация / Разборы / Самоописание по SDO

Что привод расскажет о себе по шине — и чему из этого верить

У CoE есть механизм самоописания: словарь объектов устройства можно перечислить прямо по шине, через SDO-Info. Идея заманчивая — подключил незнакомый привод, спросил, получил полный список параметров. Мы спросили четыре привода четырёх вендоров. Ответы: 0, 109, 809 и снова 0 записей.

Замер

Четыре привода — четыре разных ответа

привод0x6502 (supported drive modes)словарь по SDO-Info
Inovance IS620N0x3AD0 записей
Wecon VD3E0x3AD109 записей
Mitsubishi MR-J40x3AD809 записей
Schneider LXM28E0xED — нет csv/cst, есть ip0 записей

Три вендора отвечают на 0x6502 байт в байт одинаково, четвёртый — иначе. Два прибора из четырёх словарь не отдают вовсе, и один из них — недешёвый европейский. Стандарт гарантирует, где лежат базовые объекты профиля, но не гарантирует, что устройство согласится их перечислить.

Вывод для архитектуры: автодискавери приводов на SDO-Info строить нельзя. Идентифицировать устройство надёжно можно по vendor id и product code из ESI-описания — для VD3E это 0x00000EFF / 0x0D3E0001, подтверждено живой шиной, — а состав параметров брать из заранее разобранного профиля, а не спрашивать устройство.

Пропуски

Стандартные объекты, которых просто нет

Дыры встречаются и в самом словаре. У VD3E объектов масштабирования 0x608F (разрешение энкодера) и 0x6092 (feed constant) нет вовсе — на запрос приходит «object does not exist». Разрешение энкодера у этого привода по шине узнать нельзя, только из ESI или паспорта. Электронный редуктор 0x6091 при этом есть и работает ровно по стандарту — мы проверяли его внешним эталоном, проворачивая размеченный вал рукой.

Цена вопроса

Сколько стоит спросить привод

Медианы на нашем стенде, мастер IgH в фазе Idle.

операциявремя
запуск процесса (/bin/true, базовая линия)0,57 мс
ethercat version1,5 мс
ethercat master (шину не трогает)1,4 мс
ethercat sdos — перечислить словарь5 мс
ethercat upload — прочитать один параметр32 мс

Спросить структуру дёшево: словарь мастер отдаёт из кеша, собранного при сканировании. Спросить значение дорого: это реальный обмен через мейлбокс. Чтение 60 параметров заняло у нас 1,97 с; полный паспорт привода в 300 параметров — около десяти секунд. Для разового дискавери приемлемо, для периодического опроса на живой шине — нет. Сколько это займёт при поднятом циклическом обмене, мы не мерили.

Правило

Подтверждение — не применение

Подтверждение записи по SDO говорит только о том, что сообщение доставлено. Применилось ли значение — проверяется другим объектом: записали режим в 0x6060 — читайте факт из 0x6061; послали controlword — ждите биты statusword. Команда и факт в профиле CiA-402 всегда живут в разных объектах, и это сделано не случайно.

Обратная сторона того же свойства — шум, который не надо чинить. Строка Failed SDO download 0x6060 (error -22) у нас печатается при каждом запуске, включая успешные: объект замаплен в PDO, и привод отвергает попытку записать его ещё и по SDO. Мы потратили время на «лечение», прежде чем заметили, что строку печатают и работающие оси.

И последняя грабля — про сам измерительный инструмент. Замеряя длительность переходов машины состояний CiA-402 через SDO, мы получили на всех ступенях ровно 64 мс — две SDO-транзакции по 32 мс. Переходы происходят быстрее, чем метод способен различить: мы померили собственный прибор, а не привод. Поэтому базовую линию — стоимость пустого чтения — стоит печатать рядом с каждым результатом.

Скрипты этих проверок опубликованы: github.com/SyncTwin/linuxcnc-ethercat-configs, каталог sdo-probing. Полные словари параметров по моделям — в каталоге приводов, наблюдения по устройствам — в реестре EtherCAT-устройств.