Skip to content

Практика: проверить обмен CANopen ​

Задача: исследовать состояние узла и обращения к его объектам. В примере используется узел 5. Нужна запись CANopen или текущий обмен; команды в рамках этого сценария не отправляются.

Выберите Industry → CANopen и уровень Protocol в Tracer. Для содержательного примера подготовьте запись с запуском узла, SDO и PDO. Подходящий EDS/DCF полезен для имён объектов и расшифровки PDO, но не обязателен для просмотра исходных сообщений.

1. Посмотрите состояние сети ​

text
canopen.type in (nmt, bootup, heartbeat, nodeGuard, emcy)

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

Для узла 5 с учётом общесетевых команд NMT:

text
(canopen.nodeId == 5 and canopen.type in (bootup, heartbeat, nodeGuard, emcy)) or (canopen.type == nmt and canopen.nodeId in (0, 5))

Широковещательный NMT адресован узлу 0; простое условие canopen.nodeId == 5 его скроет.

2. Найдите объект SDO ​

text
canopen.nodeId == 5 and canopen.type == sdo and canopen.index == 0x1018 and canopen.subIndex == 1

Ожидаемый результат: сообщения с ключом объекта 0x1018:1. Посмотрите запрос, ответ и доступное описание объекта.

Если передача сегментированная, уберите индекс и подындекс:

text
canopen.nodeId == 5 and canopen.type == sdo

Так в выборку попадут и сегменты, в которых ключа объекта нет. Тип sdo отбирает семейство сообщений, а не только успешно завершённые передачи.

3. Проверьте прерывания и аварии ​

text
canopen.nodeId == 5 and exists(canopen.abortCode)

Ожидаемый результат: прерывания SDO/USDO узла. Зафиксируйте код, объект, если он указан, и предшествующий запрос. Сам факт прерывания ещё не определяет, ошибочен ли запрос или конфигурация устройства.

Отдельно проверьте EMCY:

text
canopen.nodeId == 5 and canopen.type == emcy

Сопоставьте canopen.emcyCode с описанием устройства и соседними событиями. Наличие EMCY не заменяет анализа дальнейшего состояния узла.

4. Найдите изменяющийся PDO ​

На Protocol:

text
canopen.nodeId == 5 and canopen.type == pdo

При корректной привязке EDS/DCF и полном отображении PDO изучите разобранные значения. Если описание отсутствует или не подходит, работайте с байтами и не приписывайте им физический смысл по одному совпадению.

В Monitor наблюдайте нужный CAN ID, Period, Count и подсветку изменений во время обычного действия на стенде. Для стандартного первого TPDO узла 5 часто используется 0x185, но реальный COB-ID может быть перенастроен. Берите его из записи или описания устройства.

Для проверки исходных кадров перейдите в Tracer на Physical и введите фактический ID, например:

text
can.id == 0x185

Это новое выражение другого уровня. Оно не изменяет выражение на Protocol и не фильтрует Monitor.

5. Сохраните пример ​

Поставьте метки и сохраните .ptrc. Если вывод зависит от EDS/DCF, приложите использованное описание отдельно и укажите привязку к узлу. Это позволит повторить интерпретацию тех же кадров.

Справка: поля CANopen, поля CAN, Monitor.