Appearance
Практика: проверить обмен 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.