Scadapy + Arduino

Пример построения системы опроса с использование arduino и датчика температуры DS18b20.



Arduina выступает в роли Slave устройства с адресом 10 и работает по протоколу modbus RTU.
Помимо этого программа в постоянном цикле опрашивает датчик температуры DS18b20 и записывает текущие показания
по адресу 2 регистра READ_INPUT_REGISTERS.
Поскольку Slave устройство соединяется с компьютером по USB интерфейсу с выделенным com портом,
то для получения данных от него можно воспользоваться программой modbus_rtu.py.



С одной стороны эта программа является Master для опроса подчиненных устройств по протоколу
modbus RTU, а с другой является Slave устройством и передает данные на верхний уровень по
протоколу modbus TCP.
master_rtu.py используется в случае, если приходится собирать
показания с нескольких устройств по протоколу modbus RTU и интерфейсу rs485.
В файле конфигурации указывается адрес com порта и rtu адрес slave устройства.
Кроме того указываются регистры опроса и адреса регистров , в которые записываются полученные данные.
Описание файла настроек setting.cfg:
server;192.168.0.200;507; #
# server - идентификатор переменной
# 192.168.0.200 - IP адрес slave части modbus TCP для входящих подключений
# 507 - Порт slave части modbus TCP для входящих подключений

cport;COM5; #
# cport - идентификатор переменной
# COM5 - адрес СОМ порта для опроса терминальных устройств по протоколу modbusRTU

rtu;10;READ_INPUT_REGISTERS;0;10;0;0;comment
# rtu - идентификатор переменной
# 10 - rtu адрес slave устройства куда подключаемся
# READ_INPUT_REGISTERS -регистр для чтения slave устройства куда подключаемся
# варианты:
# READ_DISCRETE_INPUTS
# READ_COILS
# READ_HOLDING_REGISTERS
# 2 - стартовый адрес регистра с которого начинается чтение данных на slave устройстве modbus RTU
# 1 - количество адресов регистра которые считываются на slave устройстве modbus RTU
# 0 - стартовый адрес размещения полученных данных на slave части утилиты modbus TCP
# comment - комментарий
В данной конфигурации будет опрашиваться modbus RTU Slave устройство с адресом 10.
В регистре READ_INPUT_REGISTERS по адресу 2 будет прочитано значение измеренной температуры
и записано в регистр READ_INPUT_REGISTERS по адресу 0 slave части программы для опроса по modbus TCP.
В Scadapy делаем настройки файла ai.cfg
ai;1;100;100;green;0.1;50;Air Temp A;ameter;
т.е. будем брать измеренное значение температуры регистра READ_INPUT_REGISTERS по адресу 0х00

В файле settings.cfg пишем:

slaveIP=192.168.0.200 -- ip адрес modbus TCP slave устройства
slavePort=504 -- порт modbus TCP slave устройства
discretCfg=di.cfg
coilCfg=ci.cfg
analogCfg=ai.cfg
buttonCfg=bt.cfg
bgimage=bg.gif
delayTime=500
debug=False

Результаты измерений можно вывести на различные объекты мнемосхемы,
в том числе осуществлять контроль на динамическом графике.





Загрузкa:
     temperature.rar