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