Сконфигурируйте свойства для коммуникации MODBUS

The modbus объект имеет следующие свойства.

СвойствоТранспортный типОписание
'DeviceAddress'Только TCP/IPIP-адрес или имя хоста сервера MODBUS, например '192.168.2.1'. Требуется во время создания объекта, если transport является TCP/IP.

m = modbus('tcpip', '192.168.2.1')

PortТолько TCP/IPУдаленный порт, используемый сервером MODBUS. Значение по умолчанию является 502. Необязательно во время создания объекта, если transport является TCP/IP.

m = modbus('tcpip', '192.168.2.1', 308)

'Port'Только последовательный RTUПоследовательный порт MODBUS соединяется, например, с 'COM1'. Требуется во время создания объекта, если transport является Serial RTU.

m = modbus('serialrtu','COM3')

TimeoutКак TCP/IP, так и последовательный RTUМаксимальное время в секундах ожидания ответа от сервера MODBUS, заданное как положительное значение типа double. Значение по умолчанию является 10. Вы можете изменить значение либо во время создания объекта, либо после создания объекта.

m.Timeout = 30;

NumRetriesКак TCP/IP, так и последовательный RTUКоличество повторных попыток, выполняемых в случае отсутствия ответа от сервера после тайм-аута. При использовании транспорта Serial RTU сообщение передается в негодность. При использовании транспорта TCP/IP соединение закрывается и снова открывается.

m.NumRetries = 5;

'ByteOrder'Как TCP/IP, так и последовательный RTU Порядок байтов значений, записанных в 16-битные регистры или считанных из них. Допустимые варианты 'big-endian' и 'little-endian'. Значение по умолчанию является 'big-endian', в соответствии со стандартом MODBUS.

m.ByteOrder = 'little-endian';

'WordOrder'Как TCP/IP, так и последовательный RTUПорядок слов для регистра читает и записывает, что охватывает несколько 16-битных регистров. Допустимые варианты 'big-endian' и 'little-endian'. Значение по умолчанию является 'big-endian', и это зависит от устройства.

m.WordOrder = 'little-endian';

BaudRateТолько последовательный RTUСкорость передачи битов для последовательной передачи портов. По умолчанию это 9600 бит в секунду, но фактическое необходимое значение зависит от устройства.

m.Baudrate = 28800;

DataBitsТолько последовательный RTUКоличество бит данных для передачи. Значение по умолчанию 8 является стандартом MODBUS для последовательного RTU. Другие допустимые значения: 5, 6 и 7.

m.DataBits = 6;

ParityТолько последовательный RTUТип проверки четности. Допустимые варианты 'none' (по умолчанию), 'even', 'odd', 'mark', и 'space'. Фактическое необходимое значение зависит от устройства. Если установлено значение по умолчанию noneпроверка четности не выполняется, и бит четности не передается.

m.Parity = 'odd';

StopBitsТолько последовательный RTUКоличество бит, используемых для указания конца передачи данных. Допустимые варианты: 1 (по умолчанию) и 2. Фактическое требуемое значение зависит от устройства, хотя 1 типично для четного/нечетного четности и 2 для отсутствия четности.

m.StopBits = 2;

Установите свойство во время создания объекта

Значения свойств можно изменить либо во время создания объекта, либо после создания объекта.

Можно создать modbus объект, используя пару "имя-значение", чтобы задать значение во время создания объекта.

Этот пример создает объект MODBUS и увеличивает Timeout на 20 секунд.

m = modbus('serialrtu','COM3','Timeout',20)


m = 

   Modbus Serial RTU with properties:

             Port: 'COM3'
         BaudRate: 9600
         DataBits: 8
           Parity: 'none'
         StopBits: 1
           Status: 'open'
       NumRetries: 1
          Timeout: 20 (seconds)
        ByteOrder: 'big-endian'
        WordOrder: 'big-endian'

Этот выход отражает Timeout изменение свойства по умолчанию 10 с секунд до 20 секунд.

Установите свойство после создания объекта

Вы можете изменить свойство в любое время, задав значение свойства с помощью этого синтаксиса после создания объекта MODBUS.

<object_name>.<property_name> = <property_value>

Этот пример с использованием того же объекта с именем m увеличивает Timeout до 30 секунд.

m = modbus('serialrtu','COM3');
m.Timeout = 30

Этот пример меняет Parity от значения по умолчанию none на even.

m = modbus('serialrtu','COM3');
m.Parity = 'even';