Перейти к содержанию

Навигация

Wb-mqtt-serial templates: различия между версиями

Строка 310: Строка 310:


<div class="mw-collapsible mw-collapsed"  style="width:500px; overflow: hidden;" >
<div class="mw-collapsible mw-collapsed"  style="width:500px; overflow: hidden;" >
<syntaxhighlight lang="JSON">
<syntaxhighlight lang="JSON" highlight="6-10">
{
{
     "device_type": "WBIO-DO-R10A-8",
     "device_type": "WBIO-DO-R10A-8",
Строка 415: Строка 415:
В этом шаблоне следует обратить внимание на следующие параметры устройства.
В этом шаблоне следует обратить внимание на следующие параметры устройства.
<syntaxhighlight lang="JSON">
<syntaxhighlight lang="JSON">
        "protocol": "modbus_io",
    "protocol": "modbus_io",
        "stride": 1000,
    "stride": 1000,
        "shift": 500,
    "shift": 500,
        "max_read_registers": 0,
    "max_read_registers": 0,
        "setup": [
    "setup": [
</syntaxhighlight>
</syntaxhighlight>


Параметр '''"protocol": "modbus_io"''' указывает, что устройство подключается оп специальному протоколу к модулю расширения. Параметры '''"stride": 1000''' и '''"shift": 500''' задают сдвиг регистров в зависимости от того, в каком порядке подключены модули к модулю расширения.  
Параметр '''"protocol": "modbus_io"''' указывает, что устройство подключается оп специальному протоколу к модулю расширения. Параметры '''"stride": 1000''' и '''"shift": 500''' задают сдвиг регистров в зависимости от того, в каком порядке подключены модули к модулю расширения.  


Сдвиг регистров (число, которое нужно добавить к базовому номеру регистра) вычисляется по формуле: <syntaxhighlight lang="JSON">Shift = (((SlaveId.Secondary - 1) % 4) + 1) * DeviceConfig()->Stride + DeviceConfig()->Shift;</syntaxhighlight>
Сдвиг регистров (число, которое нужно добавить к базовому номеру регистра) вычисляется по формуле: <syntaxhighlight lang="C++">Shift = (((SlaveId.Secondary - 1) % 4) + 1) * DeviceConfig()->Stride + DeviceConfig()->Shift;</syntaxhighlight>
Каждое подключенное устройство имеет порядковый номер (SlaveId.Secondary), начинающийся с 1 для первого устройства. (Здесь знаком "%" обозначается деление по модулю.)
Каждое подключенное устройство имеет порядковый номер (SlaveId.Secondary), начинающийся с 1 для первого устройства. (Здесь знаком "%" обозначается деление по модулю.)


Например, подставляя значения shift и stride в формулу, получаем: <syntaxhighlight lang="JSON">Shift = ((( 1 - 1) % 4) + 1) * 500 + 1000 = (0 + 1) * 500 + 1000 = 1500</syntaxhighlight> То есть ко всем регистрам, указанным в шаблоне, надо добавить 1500.
Например, подставляя значения shift и stride в формулу, получаем: <syntaxhighlight lang="C++">Shift = ((( 1 - 1) % 4) + 1) * 500 + 1000 = (0 + 1) * 500 + 1000 = 1500</syntaxhighlight> То есть ко всем регистрам, указанным в шаблоне, надо добавить 1500.


Еще один важный параметр — setup-секция, массив  
Еще один важный параметр — setup-секция, массив  
5813

правок