Добрый день не приходилось писать шаблоны еще с регистры для сторонних устройств можете помочь с написанием 1 регистра дальше я продолжу. нужно написать. не могу разобраться как это сделать и как из документации понял адрес 0х15 для Адаптер BSB для газового котла baxi
запросы регистров у адаптера должны производиться с опкодом 3, read holding registers.
так же из-за ограниченных ресурсов контроллера мы были вынуждены так же ограничить чтение регистров следующим образом
- читать можно из диапазонов 0x00 .. 0x0F, 0x10…0x2F, 0x30…0x70. если прочитать одновременно из 2 диапазонов, результат будет валиден только для первого из запрошенных диапазона
Добрый день.
Пример с одним регистром - да, конечно могу.
Напишите пожалуйста какой регистр и в каком виде хотите прочитать? И покажите как он читается с помощью modbus_client.
Транспортный уровень протокола Для реализации обмена данными с устройствами используются стандартные функции протокола Modbus: Read Holding Registers (0x03) Write Holding Registers (0x10) Read input registers (0x04) Каждое устройство на шине является ведомым, для опроса устройств и управления ими используется единое ведущее устройство (система EctoControl). Для чтения адреса из устройства используется функция 0x46, а для его записи в устройство – функция 0x47. Далее при описании регистров используются следующие условные обозначения: RSVD – зарезервировано для последующего использования (чтение и запись могут привести к непредсказуемому результату) R – доступ только на чтение (input registers). Запись не даст результата. RW – доступ на чтение и запись (holding registers) Каждое устройство содержит однотипную информационную структуру, содержащую общую информацию об устройстве. Начальный адрес структуры (регистры): 0x0000, holding registers Длина структуры (регистры): 4 Адрес байта 0 1 2 3 4 5 6 7 Поле RSVD UID RSVD ADDR TYPE CHN_CN T Регистр 0 1 2 3 Доступ R R R R Адрес регистра 0x0000 0x0001 0x0002 0x0003 UID – уникальный идентификатор устройства (длина 3 байта), диапазон значений: [0x800000; 0xFFFFFF]. ADDR – логический адрес устройства на шине ModBus, по умолчанию 0xF0 (может быть принудительно записан мастером с помощью широковещательного пакета). Имеет диапазон 0x01…0x20. TYPE – тип устройства, определяющий его физические свойства: Измерительные датчики: 0x22 – датчик температуры 0x23 – датчик влажности воздуха Контактные датчики: 0x50 – универсальный контактный датчик 4 0x59 – разветвитель контактного датчика 10-канальный Устройства управления: 0xC0 – блок управления реле двухканальный 0xC1 – блок управления реле десятиканальный Прочие устройства: 0x11 – адаптер OpenTherm (первая версия, снята с производства) 0x14 – адаптер OpenTherm (вторая версия) 0x15 – адаптер eBus 0x16 – адаптер Navien CHN_CNT – число каналов устройства (1…10).
Производитель устройств не задает им при производстве какой-либо конкретный адрес, перед обменом данными нужно принудительно задать этот адрес или прочитать имеющийся в устройстве адрес. Для задания устройству уникального адреса на шине Modbus используется процедура программирования адреса. Процедура основана на отправке специальной функции PROG_READ (0x46) и PROG_WRITE (0x47). Функция PROG_READ (0x46) (высылается ведущим устройством единственному устройству на шине с неизвестным адресом). Запрос от ведущего устройства: Широковещательный адрес Код функции CRC_HI CRC_LO 0x00 0x46 0xXX 0xXX Ответ от ведомого устройства: Адрес ведомого устройства Код функции Адрес устройства CRC_HI CRC_LO 0x00 0x46 ADDR 0xXX 0xXX Устройство возвращает в ответе свой текущий адрес ADDR. Функция PROG_WRITE (0x47) (высылается ведущим устройством ведомому с указанием сменить свой имеющийся адрес на заданный). Запрос от ведущего устройства: Широковещательный адрес Код функции Новый адрес CRC_HI CRC_LO 0x00 0x47 ADDR 0xXX 0xXX Ответ от ведомого устройства: SLAVE_ADDR Код функции Новый адрес CRC_HI CRC_LO ADDR 0x47 ADDR 0xXX 0xXX Устройство обновляет свой адрес на ADDR и высылает ответ уже с нового адреса.
5.1. Что такое адаптер котла? Адаптер котла позволяет управлять котлом с использованием его цифрового интерфейса передачи данных. Способ взаимодействия с адаптером по шине Modbus одинаков для любого типа адаптера. Для доступа к регистрам адаптеров используются функции: Read Holding Registers (0x03) для чтения регистров, Write Holding Registers (0x10) для записи в регистры. Существует 2 аппаратной версии адаптера. Первая версия (снята с производства) отличалась синей печатной платой и выпускалась только для котлов с интерфейсами OpenTherm и eBus. Особенность этой версии – наличие встроенных алгоритмов регулирования температуры, поэтому среди настроек присутствовал выбор режима работы котла, выбор гистерезиса и т.д. Первая версия снята с производства. Вторая версия отличается желтой печатной платой, все функции и алгоритмы регулирования переложены на систему ectoControl. Обе версии адаптеров используют различное назначение регистров (за исключением единого для всех заголовка, находящегося в регистрах 0x0000…0x0003 и единой функции чтения и установки адресов). Адаптер опрашивает все параметры котла постепенно, один за другим, поэтому сразу после включения питания адаптера регистры, содержащие параметры котла (температуру, давление, расход) могут содержать значения, указывающие на то, что данные еще не прочитаны: 0x7FFF (для двухбайтных значений), 0x7F или 0xFF (для однобайтных значений). Также такие показания могут считываться для параметров, которые не поддерживаются электроникой котла.