Как настроить требуемый адрес Modbus в датчике SGCMM уровня CO

ID:216338


Датчик SGCMM имеет фиксированные параметры связи по последовательной шине Modbus (см. таблицу ниже), именно их необходимо использовать в Master устройстве (например, в управляющем контроллере).


По умолчанию датчик имеет Modbus адрес = 0.

Виртуально датчик состоит как-бы из двух устройств. Первое со Slave ID =0, второе со Slave ID = х , где х -значение Modbus адреса вашего датчика, которое Вы запишите в нулевой регистр устройства с адресом ID=0.

А вот из второго виртуального устройства с адресом Slave ID = x Вы можете только читать данные из регистра 11 (Концентрация CO). Звучит запутанно, но на практике все не так сложно.

Для чтения номера Slave из адреса 00 датчика и величины уровня CO (из адреса 11 датчика) используем в контроллере (например в PLC SystemeHD от Systeme Electric) Modbus функцию 03 и переменные типа AI.

А для записи нового адреса в датчик Modbus функцию 16 Modbus и переменную типа AV.

Исходя из описанного выше, если Вам нужно изменить адрес датчика, Вы связываетесь с устройством Slave ID = 0. В нулевой регистр этого устройства функцией 16 Modbus записываете новый адрес (например 5). Далее из устройства Slave ID =5 функцией 03 Modbus читаете уровень CO из регистра 11.

Причем какой бы адрес из разрешенного диапазона мы бы не устанавливали для этого датчика, устройство с ID=0 всегда будет в нем присутствовать одновременно с устройством ID=x, заданным вами.

 

Для задания требуемого Modbus адреса для датчика, можно воспользоваться известной программой Modbus Poll (или аналогичной, способной обращаться к регистрам устройств с Modbus адресом 0).

У программы Modbus Poll есть некоторая особенность. Не пытайтесь с её помощью читать из датчика регистр с адресом 0 . Она этого не умеет. А вот записать число в регистр 0 однократно сможет.
Поэтому попробуйте сделать следующее:
- С помощью программы Modbus Poll в устройство со Slave ID =0 в регистр 0 запишите, какое либо число ( например 5), используя функцию 16 (Write Multiple Registers).
- Не обращайте внимание на ошибку связи ( например Response Error), которой ответит Modbus Poll.
- Следующим шагом из этого же датчика, но уже по другому адресу , в нашем случае это уже будет Slave ID=5, прочитайте из регистра 11 значение уровня загазованности (используя функцию 03 Read Holding Registers). Чтение должно пройти без ошибок. Это означает что Вам удалось сменить адрес датчика. Но помните, что из устройства c новым адресом (в вашем случае это Slave ID =5) можно ТОЛЬКО ЧИТАТЬ значение концентрации СО из регистра 11.


Всё описанное не является чем-то необычным, и вполне совпадает со спецификацией Modbus, т.к. адрес устройства Slave ID =0 в Modbus является широковещательным и чтение из устройств с таким адресом запрещено. Есть конечно программы, которые умеют читать из устройств с адресом 0, но Modbus Poll к ним не относится. Он все делает в соответствии со спецификацией Modbus.
- Если снова захотите сменить адрес, то опять нужно записать нужное число в регистр 0 устройства с адресом Slave ID=0.

     

Ссылка на Руководство по эксплуатации датчика SGCMM:

https://systeme.ru/download/sgcm-datcik-co-dlia-garazei-rukovodstvo

Серия:  SystemeBMSSens

Фильтры
Поиск
Корзина