UniSet
2.6.0
|
- \ref sec_MBSlave_Comm - \ref sec_MBSlave_Conf - \ref sec_MBSlave_ConfList - \ref sec_MBSlave_FileTransfer - \ref sec_MBSlave_MEIRDI - \ref sec_MBSlave_DIAG - \ref sec_MBSlave_TCP @section sec_MBSlave_Comm Общее описание Modbus slave Класс реализует базовые функции для протокола Modbus в slave режиме. Реализацию Modbus RTU - см. RTUExchange. Реализацию Modbus slave (TCP) - см. MBSlave. Список регистров с которыми работает процесс задаётся в конфигурационном файле в секции \b <sensors>. см. \ref sec_MBSlave_Conf В данной версии поддерживаются следующие функции: - 0x02 - read input status - 0x03 - read register outputs or memories or read word outputs or memories - 0x04 - read input registers or memories or read word outputs or memories - 0x05 - forces a single coil to either ON or OFF - 0x06 - write register outputs or memories - 0x08 - Diagnostics (Serial Line only) - 0x0F - force multiple coils - 0x10 - write register outputs or memories - 0x14 - read file record - 0x15 - write file record - 0x2B - Modbus Encapsulated Interface - 0x50 - set date and time - 0x66 - file transfer @section sec_MBSlave_Conf Конфигурирование ModbusTCP slave Конфигурирование процесса осуществляется либо параметрами командной строки либо через настроечную секцию. \par Секция с настройками При своём старте, в конфигурационном файле ищётся секция с названием объекта, в которой указываются настроечные параметры по умолчанию. Пример: @code <MBSlave1 name="MBSlave1" default_mbaddr="0x31" afterSendPause="0" reg_from_id="0" replyTimeout="60" askcount_id="" respond_invert="" respond_id="" timeout="" heartbeat_id="" initPause="" force="" ... \endcode - \b default_mbaddr - адрес по умолчанию для данного устройства. Если указан адрес 255 - ответ будет на любые сообщения. - \b afterSendPause - принудительная пауза после посылки ответа - \b reg_from_id - номер регистра брать из ID датчика - \b replyTimeout - таймаут на формирование ответа. Если ответ на запрос будет сформирован за большее время, он не будет отослан. - \b askcount_id - идентификатор датчика для счётчика запросов - \b respond_id - идентификатор датчика наличия связи. Выставляется в "1" когда связь есть. - \b respond_invert - инвертировать логику выставления датчика связи (т.е. выставлять "1" - когда нет связи). - \b heartbeat_id - идентификтор датчика "сердцебиения". См. \ref sec_SM_HeartBeat - \b initPause - пауза перед началом работы, после активации. По умолчанию 3000 мсек. - \b force - [1,0] перезаписывать ли значения в SharedMemory каждый раз (а не по изменению). - \b timeout msec - таймаут, для определения отсутствия связи Специфичные для RTU настройки: @code device="/dev/ttyS0" speed="9600" use485F="1" transmitCtl="0"> \endcode - \b device - устройство (порт) - \b speed - скорость обмена - \b use485F - [0,1] - использовать специальный класс для обмена по RS485 на контрллерах фаствел (убирает echo программным путём). - \b transmitCtl - [0,1] - управлять ли приёмопередатчиков (ну программном уровне). Обычно это на аппаратном или драйвером. Специфичные для TCP настройки: @code iaddr="localhost" iport="502" \endcode - \b iaddr - ip адрес данного устройства - \b iport - tcp порт. \par Параметры запуска При создании объекта в конструкторе передаётся префикс для определения параметров командной строки. По умолчанию \b xxx="mbs". Далее приведены основные параметры: \b --xxx-name ID - идентификатор процесса. \b --xxx-default-mbaddr addr1 - slave-адрес по умолчанию для данного устройства. Если указан адрес 255 - ответ будет на любые сообщения. \b --xxx-timeout или \b timeout msec - таймаут на определение отсутсвия связи. \b --xxx-reply-timeout msec - таймаут на формирование ответа. \b --xxx-initPause или \b initPause msec - пауза перед началом работы, после активации. По умолчанию 50 мсек. \b --xxx-force или \b force [1|0] - 1 - перечитывать/перезаписывать значения входов из SharedMemory на каждом цикле - 0 - обновлять значения только по изменению \b --xxx-reg-from-id или \b reg_from_id [1|0] - 1 - в качестве регистра использовать идентификатор датчика - 0 - регистр брать из поля tcp_mbreg \b --xxx-default-mbfunc или \b default_mbfunc [0...255] - Функция подставляемая по умолчанию, если не указан параметр mbfunc. Действует только если включён контроль функций (check-mbfunc). \b --xxx-check-mbfunc [0|1] - - 1 - включить контроль (обработку) свойства mbfunc. По умолчанию: отключёна. Если контроль включён то разрешено использовать один и тот же регистр но \b для \b разных \b функций. - 0 - игнорировать свойство mbfunc.. \b --xxx-heartbeat-id или \b heartbeat_id ID - идентификатор датчика "сердцебиения" (см. \ref sec_SM_HeartBeat) \b --xxx-heartbeat-max или \b heartbeat_max val - сохраняемое значение счётчика "сердцебиения". \b --xxx-activate-timeout msec . По умолчанию 2000. - время ожидания готовности SharedMemory к работе. \b --xxx-allow-setdatetime 0,1 - Включить функцию 0x50. Выставление даты и времени. \par Настройки протокола RTU: \b --xxx-dev devname - файл устройства \b --xxx-speed - Скорость обмена (9600,19920,38400,57600,115200) \par Настройки протокола TCP: \b --xxx-inet-addr [xxx.xxx.xxx.xxx | hostname ] - this modbus server address \b --xxx-inet-port num - this modbus server port. Default: 502. @section sec_MBSlave_ConfList Конфигурирование списка регистров для ModbusSlave Конфигурационные параметры задаются в секции <sensors> конфигурационного файла. Список обрабатываемых регистров задаётся при помощи двух параметров командной строки \b --xxx-filter-field - задаёт фильтрующее поле для датчиков \b --xxx-filter-value - задаёт значение фильтрующего поля. Необязательный параметр. \warning Если в результате список будет пустым, процесс завершает работу. Пример конфигурационных параметров:
К основным параметрам настройки датчиков относятся следующие (префикс mbs_ - для примера):
Помимо этого можно задавать следующие параметры:
Данная реализация позволяет передавать по протоколу Modbus заранее заданные файлы. Настройка происходвится в конфигурационном файле.