exponenta event banner

Настройка свойств для связи MODBUS

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

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

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

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

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

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

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

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

m.Timeout = 30;

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