Hello !
I know that similar topics already appeared, but I think my problem is a little different.
Since last year I was using modbus binding with my ventilation system without any problem.
Yesterday I have connected OR-WE-517 3-phases energy meter:
https://www.orno.pl//t5749,1,en,3-phase-multi-tariff-indicator-of-electrical-energy-consumption-with-rs485-port-and-mid-80a,1
To be sure that there is no conflict I have disconnect current RS485 connection to ventilation and connect just a power meter.
Problem is lack od modbus docs for my energy meter. It is just written that it use 9600 bps, id is 1, parity:yes, data bit:8, final bit:1
I have added config:
modbus:serial.Voltage_L1.connection=/dev/ttyUSB0:9600:8:even:1:rtu:4500
modbus:serial.Voltage_L1.id=1
modbus:serial.Voltage_L1.start=0
modbus:serial.Voltage_L1.type=holding
modbus:serial.Voltage_L1.length=2
modbus:serial.Voltage_L1.valuetype=float32
and got errors:
2017-10-30 11:46:02.218 [ERROR] [i.modbus.io.ModbusRTUTransport] - Last request: 01 03 00 00 00 02 c4 0b
2017-10-30 11:46:02.219 [ERROR] [i.modbus.io.ModbusRTUTransport] - failed to read: Error reading response (EOF)
2017-10-30 11:46:02.222 [ERROR] [w.m.io.ModbusSerialTransaction] - execute try 3/3 error: I/O exception - failed to read. Request: net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1294711 (unit id 1 & transaction 21). Serial parameters: SerialParameters@145764[portName=/dev/ttyUSB0,baudRate=9600,flowControlIn=none,flowControlOut=none,databits=8,stopbits=1,parity=even,encoding=rtu,echo=false,receiveTimeoutMillis=1500]
2017-10-30 11:46:02.224 [ERROR] [w.m.io.ModbusSerialTransaction] - execute reached max tries 3, throwing last error: I/O exception - failed to read. Request: net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1294711 (unit id 1 & transaction 21). Serial parameters: SerialParameters@145764[portName=/dev/ttyUSB0,baudRate=9600,flowControlIn=none,flowControlOut=none,databits=8,stopbits=1,parity=even,encoding=rtu,echo=false,receiveTimeoutMillis=1500]
Trace file:
2017-10-30 11:46:02.226 ERROR o.o.b.m.internal.ModbusSlave[:504]- ModbusSlave (Voltage_L1): Error getting modbus data for request net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1294711. Error: I/O exception - failed to read. Endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0]. Connection: SerialConnection@16ab87f[portName=/dev/ttyUSB0,port=/dev/ttyUSB0]
2017-10-30 11:46:02.228 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:126]- destroyObject for connection SerialConnection@16ab87f[portName=/dev/ttyUSB0,port=/dev/ttyUSB0] and endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] → closing the connection
2017-10-30 11:46:22.236 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:86]- Created connection SerialConnection@108e83b[portName=/dev/ttyUSB0,port=] for endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0]
2017-10-30 11:46:22.255 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:184]- Validating endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] connection SerialConnection@108e83b[portName=/dev/ttyUSB0,port=/dev/ttyUSB0] → true
2017-10-30 11:46:22.257 TRACE o.o.b.m.internal.ModbusSlave[:353]- ModbusSlave (Voltage_L1): borrowing connection (got SerialConnection@108e83b[portName=/dev/ttyUSB0,port=/dev/ttyUSB0]) for endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] took 22 ms
2017-10-30 11:46:22.258 TRACE o.o.b.m.internal.ModbusSlave[:499]- Executing modbus request net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1f00322 using transaction net.wimpi.modbus.io.ModbusSerialTransaction@19a9622 (global transaction id before increment 21) to read data
2017-10-30 11:46:35.784 ERROR o.o.b.m.internal.ModbusSlave[:504]- ModbusSlave (Voltage_L1): Error getting modbus data for request net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1f00322. Error: I/O exception - failed to read. Endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0]. Connection: SerialConnection@108e83b[portName=/dev/ttyUSB0,port=/dev/ttyUSB0]
2017-10-30 11:46:35.785 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:126]- destroyObject for connection SerialConnection@108e83b[portName=/dev/ttyUSB0,port=/dev/ttyUSB0] and endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] → closing the connection
2017-10-30 11:46:55.789 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:86]- Created connection SerialConnection@a2ca42[portName=/dev/ttyUSB0,port=] for endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0]
2017-10-30 11:46:55.807 TRACE o.o.b.m.i.p.ModbusSlaveConnectionFactoryImpl[:184]- Validating endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] connection SerialConnection@a2ca42[portName=/dev/ttyUSB0,port=/dev/ttyUSB0] → true
2017-10-30 11:46:55.809 TRACE o.o.b.m.internal.ModbusSlave[:353]- ModbusSlave (Voltage_L1): borrowing connection (got SerialConnection@a2ca42[portName=/dev/ttyUSB0,port=/dev/ttyUSB0]) for endpoint ModbusSerialSlaveEndpoint@4018e4[portName=/dev/ttyUSB0] took 19 ms
2017-10-30 11:46:55.810 TRACE o.o.b.m.internal.ModbusSlave[:499]- Executing modbus request net.wimpi.modbus.msg.ReadMultipleRegistersRequest@1583684 using transaction net.wimpi.modbus.io.ModbusSerialTransaction@19a9622 (global transaction id before increment 24) to read data
On other forum I found a person who was able to connect to this power meter via his python script, I have used it and got proper answer with power parameters, so connection is fine.
He told me that I should use RTU, parity: even all registers are holding and floats and I should use “read 03” to read. He also informed me that problem with this power meter is that it request ca 40ms brake after reading each byte, if this is not met then it is read error.
Can I set such parameter ? As I understand there is only possible to set delay after whole registry, but what about 1 byte ?
Any other suggestion what I am doing wrong ?
I am also not sure If I use correct registry address, since description is very poor:
I have tested with binding version 1.8.3 and latest 1.11, same result.
When I changed RTU to ASCII I dont receive error, but data is not imported.