Купите USB-RS485 переходник. По поводу настройки модбас и OpenHab: есть статья на Хабре - https://habrahabr.ru/post/252555/keeper1978 писал(а):а как тогда апелсинкой принимать Modbus протокол
Код: Выделить всё
modbus:poll=200
modbus:serial.slave1.connection=COM17:9600:8:none:1:rtu
modbus:serial.slave1.id=1
modbus:serial.slave1.start=0
modbus:serial.slave1.length=1
modbus:serial.slave1.type=discrete
Код: Выделить всё
modbus:serial.slave1.connection=COM7
modbus:serial.slave1.id=1
modbus:serial.slave1.start=0 //Начиная с нулевой
modbus:serial.slave1.length=4 //Четыре штуки, т.е. 0,1,2,3.
modbus:serial.slave1.type=holding
Код: Выделить всё
modbus:serial.slave1.connection=COM17:9600:8:none:1:rtu
modbus:serial.slave1.id=1
modbus:serial.slave1.start=0
modbus:serial.slave1.length=1
modbus:serial.slave1.type=discrete
Код: Выделить всё
modbus:serial.slave2.connection=COM17:9600:8:none:1:rtu
modbus:serial.slave2.id=1
modbus:serial.slave2.start=16
modbus:serial.slave2.length=1
modbus:serial.slave2.type=discrete
Я думаю понятно - если используете discrete или coil надо учитывать сдвиг 16 бит для каждой последующей переменной(0 для переменной с индексом 0, 16 для 1, 32 для 2 и т.д.). Либо работать с несколькими битами одной переменной.Например вы создали 3 переменых модбас с адресами 0 - 2 типа Integer,
Если мастер запросит холдинг-регистр с адресом 0 то получит значение переменной с адресом 0, но это понятно.
если мастер запросит Input Register с адресом 0 полчит значение переменной с адресом 0
если мастер запросит Discrete Inputs с адресом 0 полчит значение нулевого бита переменной с адресом 0 (соответственно запросив Discrete Inputs с адресом 16 полчит значение нулевого бита переменной с адресом 1 )
если мастер запросит Coils с адресом 0 полчит значение нулевого бита переменной с адресом 0 (соответственно запросив Coils с адресом 16 полчит значение
нулевого бита переменной с адресом 1 )
Код: Выделить всё
modbus:serial.slave1.connection=COM14:9600:8:none:1:rtu
modbus:serial.slave1.id=1
modbus:serial.slave1.start=112
modbus:serial.slave1.length=1
modbus:serial.slave1.type=coil
Код: Выделить всё
modbus:serial.slave1.connection=COM14:9600:8:none:1:rtu
modbus:serial.slave1.id=1
modbus:serial.slave1.start=0
modbus:serial.slave1.length=1
modbus:serial.slave1.type=coil
Код: Выделить всё
modbus:serial.slave2.connection=COM14:9600:8:none:1:rtu
modbus:serial.slave2.id=1
modbus:serial.slave2.start=16
modbus:serial.slave2.length=1
modbus:serial.slave2.type=coil
Код: Выделить всё
modbus:serial.slave3.connection=COM14:9600:8:none:1:rtu
modbus:serial.slave3.id=1
modbus:serial.slave3.start=32
modbus:serial.slave3.length=1
modbus:serial.slave3.type=coil