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

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

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

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

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

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

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

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

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

m.Timeout = 30;

NumRetriesИ TCP/IP и Последовательный RTUКоличество повторений, чтобы выполнить, если нет никакого ответа с сервера после тайм-аута. При использовании Последовательного транспорта 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 толькоБитная скорость передачи для коммуникации последовательного порта. Значение по умолчанию составляет 9 600 битов в секунды, но фактическое необходимое значение является зависящим от устройств.

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';