Skip to content

Поля фильтра Modbus RTU ​

Фильтр работает по разобранному сообщению Modbus. Имя поля начинается с modbus.. Синтаксис общий с другими профилями, но поля trace.* и can.* в этом каталоге недоступны.

Каталог ​

Адрес, функция и результат ​

ПолеТипЗначение и применимость
modbus.unitIdЦелоеАдрес RTU-устройства у корректной записи; 0 используется для широковещательного запроса
modbus.functionЦелоеКод функции без бита исключения. Ответ 0x83 относится к функции 0x03
modbus.requestЛогическоеЗапрос при определённой роли; широковещательный запрос тоже считается запросом
modbus.responseЛогическоеОтвет при определённой роли
modbus.broadcastЛогическоеКорректный широковещательный запрос RTU к адресу 0
modbus.exceptionЛогическоеКорректный ответ с исключением
modbus.exceptionCodeЦелоеКод исключения; отсутствует у обычного ответа и запроса
modbus.validЛогическоеЗапись прошла проверку структуры и CRC; false выделяет некорректные записи

Для некорректного сообщения большинство разобранных полей отсутствует. Поэтому условие modbus.valid == false and modbus.unitId == 7 не подходит для поиска всех повреждённых сообщений предполагаемого устройства: адрес может быть недостоверен и не предоставляться фильтру.

Роль запроса или ответа не выводится только из RX/TX. В частности, одинаковые по форме сообщения записи одного элемента не всегда однозначно классифицируются при пассивном наблюдении.

Диапазон и данные ​

ПолеТипЗначение и применимость
modbus.startAddressЦелоеНачальный или целевой адрес с отсчётом от нуля, если он содержится в PDU
modbus.quantityЦелоеКоличество запрошенных или подтверждённых элементов, если содержится в PDU
modbus.byteCountЦелоеОбъявленное число байтов данных, если содержится в PDU
modbus.dataБайтыДанные функции без адреса устройства, кода функции, начального адреса, количества, счётчика байтов и CRC; см. таблицу ниже

Поля общей модели Modbus ​

Эти поля остаются в каталоге, но для обычного отбора RTU-обмена достаточно адреса и функции.

ПолеТипЗначение и применимость
modbus.transportСтрокаВ этом профиле rtu. Общий каталог также знает tcp, но TCP не входит в этот раздел
modbus.transactionIdЦелоеПоле общего каталога для Modbus TCP. У RTU всегда отсутствует

Где находятся диапазон и данные ​

ФункцииЗапросОбычный ответ
01, 02, 03, 04 — чтениеstartAddress, quantity; поля data нетbyteCount, data; полей startAddress и quantity нет
05, 06 — запись одного элементаstartAddress, data из двух байтов значения; поля quantity нетТакие же поля
0F, 10 — запись нескольких элементовstartAddress, quantity, byteCount, datastartAddress, quantity; поля data нет
Ответ с исключением—exceptionCode; диапазона и данных обычного ответа нет

Значение modbus.data[0] — первый байт данных функции, а не первый байт RTU-кадра. Для ответа чтения регистров это старший байт первого регистра. Назначение и преобразование значения определяет описание устройства.

Примеры ​

Чтение регистров хранения у адреса 7, включая ответы с исключением:

text
modbus.unitId == 7 and modbus.function == 0x03

Запрос чтения десяти регистров начиная с адреса 100:

text
modbus.unitId == 7 and modbus.request == true and modbus.function == 0x03 and modbus.startAddress == 100 and modbus.quantity == 10

Это фильтр запросов. Ответ чтения не содержит адрес 100 и к нему автоматически не присоединяется.

Ответы с исключением:

text
modbus.exception == true

Ответы с кодом исключения 0x02:

text
modbus.exceptionCode == 0x02

Некорректные записи:

text
modbus.valid == false

Широковещательные запросы:

text
modbus.broadcast == true

Распознанные запросы записи:

text
modbus.request == true and modbus.function in (0x05, 0x06, 0x0F, 0x10)

Ответы чтения со значением 0x1234 в первом регистре:

text
modbus.function == 0x03 and modbus.response == true and modbus.data[0] == 0x12 and modbus.data[1] == 0x34

Начальный адрес в выражении — адрес протокола. Не подставляйте обозначения вида 40001 без перевода по правилам документации устройства.

Подробнее о сопоставлении сообщений: анализ обмена Modbus RTU.

Protohaund — независимый программный продукт, не связанный ни с одной из упомянутых в приложении сторонних организаций, не одобренный, не спонсируемый и не сертифицированный ими.Сторонние названия, товарные знаки, наименования продуктов и устройств, названия протоколов и стандартов упоминаются исключительно для указания применимости к автомобилям, поддерживаемых продуктов, технологий, протоколов, форматов или совместимости.Все сторонние товарные знаки и иные обозначения принадлежат соответствующим правообладателям. Их использование не означает какой-либо связи Protohaund с этими правообладателями, а также одобрения или сертификации Protohaund с их стороны.Совместимость ограничена функциями, устройствами, протоколами, стандартами и версиями, явно указанными в документации Protohaund.