|
UniSet
2.2.1
|
Класс реализует базовые функции для протокола Modbus в slave режиме. Реализацию Modbus RTU - см. RTUExchange. Реализацию Modbus slave (TCP) - см. MBSlave. Список регистров с которыми работает процесс задаётся в конфигурационном файле в секции <sensors>. см. Конфигурирование ModbusTCP slave
В данной версии поддерживаются следующие функции:
Конфигурирование процесса осуществляется либо параметрами командной строки либо через настроечную секцию.
<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="" ...
Специфичные для RTU настройки:
device="/dev/ttyS0" speed="9600" use485F="1" transmitCtl="0">
Специфичные для TCP настройки:
iaddr="localhost" iport="502"
При создании объекта в конструкторе передаётся префикс для определения параметров командной строки. По умолчанию xxx="mbs". Далее приведены основные параметры:
--xxx-name ID - идентификатор процесса.
--xxx-default-mbaddr addr1 - slave-адрес по умолчанию для данного устройства. Если указан адрес 255 - ответ будет на любые сообщения.
--xxx-timeout или timeout msec - таймаут на определение отсутсвия связи.
--xxx-reply-timeout msec - таймаут на формирование ответа.
--xxx-initPause или initPause msec - пауза перед началом работы, после активации. По умолчанию 50 мсек.
--xxx-force или force [1|0]
--xxx-reg-from-id или reg_from_id [1|0]
--xxx-default-mbfunc или default_mbfunc [0...255] - Функция подставляемая по умолчанию, если не указан параметр mbfunc. Действует только если включён контроль функций (check-mbfunc). --xxx-check-mbfunc [0|1] -
--xxx-heartbeat-id или heartbeat_id ID - идентификатор датчика "сердцебиения" (см. Слежение за "живостью" объектов ("сердцебиение"))
--xxx-heartbeat-max или heartbeat_max val - сохраняемое значение счётчика "сердцебиения".
--xxx-activate-timeout msec . По умолчанию 2000. - время ожидания готовности SharedMemory к работе.
--xxx-allow-setdatetime 0,1 - Включить функцию 0x50. Выставление даты и времени.
--xxx-dev devname - файл устройства
--xxx-speed - Скорость обмена (9600,19920,38400,57600,115200)
--xxx-inet-addr [xxx.xxx.xxx.xxx | hostname ] - this modbus server address
--xxx-inet-port num - this modbus server port. Default: 502.
Конфигурационные параметры задаются в секции <sensors> конфигурационного файла. Список обрабатываемых регистров задаётся при помощи двух параметров командной строки
--xxx-filter-field - задаёт фильтрующее поле для датчиков
--xxx-filter-value - задаёт значение фильтрующего поля. Необязательный параметр.
Пример конфигурационных параметров:
<sensors name="Sensors"> ... <item name="MySensor_S" textname="my sesnsor" iotype="DI" mbs="1" mbs_mbaddr="0x02" mbs_mbreg="1" /> <item name="MySensor2_S" textname="my sesnsor 2" iotype="DI" mbs="1" mbs_mbaddr="0x01" mbs_mbreg="1" /> ... </sensors>
К основным параметрам настройки датчиков относятся следующие (префикс mbs_ - для примера):
Помимо этого можно задавать следующие параметры:
Данная реализация позволяет передавать по протоколу Modbus заранее заданные файлы. Настройка происходвится в конфигурационном файле.
<filelist>
<!-- Список файлов разрешённых для передачи по modbus
directory - каталог где лежит файл. Можно не задавать
'ConfDir' - берётся из настроек (см. начало этого файла)
'DataDir' - берётся из настроек (см. начало этого файла)
'xxx' - прямое указание каталога
-->
<item directory="ConfDir" id="1" name="configure.xml"/>
<item directory="ConfDir" id="2" name="VERSION"/>
<item directory="/tmp/" id="3" name="configure.xml.gz"/>
<item directory="ConfDir" id="4" name="SERIAL"/>
</filelist>
<MEI>
<!-- ВНИМАНИЕ: должен заполняться в соответсвии со стандартом. ObjectID и DeviceID не случайны.. -->
<device id="0x01">
<object id="0" comm="VendorName">
<string value="etersoft"/>
</object>
<object id="1" comm="ProductCode">
<string value="uniset"/>
</object>
<object id="2" comm="MajorMinorRevision">
<string value="1.6"/>
</object>
</device>
<device id="0x02">
<object id="3" comm="VendorURL">
<string value="http://www.etersoft.ru"/>
</object>
<object id="4" comm="ProductName">
<string value="uniset"/>
</object>
<object id="5" comm="ModelName">
<string value="uniset:MBSlave"/>
</object>
<object id="6" comm="UserApplicationName">
<string value="MBSlave1"/>
</object>
</device>
<device id="0x03">
<object id="128" comm="private objects">
<string id="129" value="etersoft"/>
<string id="130" value="uniset"/>
<string id="131" value="1.6"/>
<string id="132" value="http://www.etersoft.ru"/>
<string id="133" value="MBSlave1"/>
</object>
</device>
</MEI>
1.7.6.1