Appearance
Поля фильтра CANopen
Выберите профиль CANopen и уровень Protocol. Для исходных идентификаторов, RTR и полного содержимого CAN-кадра используйте Physical и каталог CAN.
Каталог
| Поле | Тип | Значение и применимость |
|---|---|---|
canopen.type | Строка | Семейство сообщения; значения перечислены ниже |
canopen.nodeId | Целое | Узел сообщения. Для команды NMT — целевой узел; 0 у NMT означает обращение ко всем узлам |
canopen.canId | Целое | CAN-идентификатор сообщения |
canopen.index | Целое | Индекс объекта SDO/USDO, если сообщение содержит ключ объекта |
canopen.subIndex | Целое | Подындекс объекта SDO/USDO при наличии ключа |
canopen.request | Логическое | Роль запроса для SDO/USDO, когда она определена |
canopen.response | Логическое | Роль ответа для SDO/USDO, когда она определена |
canopen.abortCode | Целое | Код прерывания SDO/USDO; иначе отсутствует |
canopen.nmtCommand | Целое | Код команды NMT; иначе отсутствует |
canopen.emcyCode | Целое | Код аварийного сообщения EMCY; иначе отсутствует |
canopen.data | Байты | У SDO/USDO — передаваемые данные сообщения, у PDO — его полезные данные, у остальных типов — данные сообщения |
PDO не превращается в запись с полями index и subIndex, даже если его значения расшифрованы через описание устройства. Эти поля фильтра относятся к ключу объекта SDO/USDO. Фильтр по имени декодированного PDO-сигнала или его физическому значению в текущем каталоге отсутствует.
Типы сообщений
Значение canopen.type | Сообщения |
|---|---|
nmt | Управление состоянием сети |
sync | Синхронизация |
time | Время |
bootup | Запуск узла |
heartbeat | Сообщения состояния узла |
nodeGuard | Распознанный обмен Node Guarding |
emcy | Аварийное сообщение |
sdo | Обмен SDO |
pdo | Данные процесса PDO |
usdo | Обмен USDO в CANopen FD |
Если сообщение нельзя отнести к известному семейству, используется unknown. Разделение Heartbeat и Node Guarding зависит от наблюдаемого кадра: не всякий ответ контроля состояния однозначно различим без контекста.
Поля CANopen FD приведены как часть текущего каталога. Наличие USDO в списке не является обещанием совместимости любого адаптера или узла с CANopen FD.
Примеры
Все распознанные сообщения узла 5:
text
canopen.nodeId == 5Широковещательная команда NMT имеет целевой узел 0 и в такую выборку не попадёт. Чтобы увидеть и её:
text
canopen.nodeId == 5 or (canopen.type == nmt and canopen.nodeId == 0)Обращения к объекту 0x1018:1:
text
canopen.nodeId == 5 and canopen.type == sdo and canopen.index == 0x1018 and canopen.subIndex == 1В сегментах без ключа объекта эти поля отсутствуют. Для всей передачи используйте более широкий фильтр:
text
canopen.nodeId == 5 and canopen.type == sdoПрерывания SDO/USDO:
text
exists(canopen.abortCode)Аварийные сообщения узла:
text
canopen.nodeId == 5 and canopen.type == emcyPDO по конкретному CAN ID:
text
canopen.type == pdo and canopen.canId == 0x185Код NMT 0x01 для узла 5 или всей сети:
text
canopen.type == nmt and canopen.nmtCommand == 0x01 and canopen.nodeId in (0, 5)У NMT нет роли SDO/USDO-запроса. Не добавляйте canopen.request == true, если хотите найти команды NMT.
Продолжить: практический разбор CANopen.