zengfr / easymodbus4j

easymodbus4j是一个高性能和易用的 Modbus 协议的 Java 实现,基于 Netty 开发,可用于 Modbus协议的Java客户端和服务器开发, A high-performance and ease-of-use implementation of the Modbus protocol written in Java netty support for modbus 4 mode..

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

非标modbus

59471032 opened this issue · comments

发送01 04 0F F1 00 02 23 2C
回复01 04 59 57 22 00 00 00 00 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 13 00 00 00 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 96 02 99 02 93 02 08 03 20 04 EE EE EE EE EE EE C1 53 (94)

协议
XXX.X(A相电压2字节)
XXX.X(B相电压2字节)
XXX.X(C相电压2字节)
XXX.XXX(A相电流3字节)
XXX.XXX(B相电流3字节)
XXX.XXX(C相电流3字节)
XXX.XXX(剩余电流,3字节)
XX.XXXX(总有功功率3字节,最高位为符号位)
XX.XXXX(A相有功功率3字节,最高位为符号位)
XX.XXXX(B相有功功率3字节,最高位为符号位)
XX.XXXX(C相有功功率3字节,最高位为符号位)
XX.XXXX(总无功功率3字节,最高位为符号位)
XX.XXXX(A相无功功率3字节,最高位为符号位)
XX.XXXX(B相无功功率3字节,最高位为符号位)
XX.XXXX(C相无功功率3字节,最高位为符号位)
X.XXX(总功率因数2字节,最高位为符号位)
X.XXX(A相功率因数2字节,最高位为符号位)
X.XXX(B相功率因数2字节,最高位为符号位
X.XXX(C相功率因数2字节,最高位为符号位)
XXXXXX.XX(正向有功总电量,4字节)
XXXXXX.XX(正向有功费率1电量,4字节)
XXXXXX.XX(正向有功费率2电量,4字节)
XXXXXX.XX(正向有功费率3电量,4字节)
XXXXXX.XX(正向有功费率4电量,4字节)
XXXXXX(事件状态位,3字节)
XXX.X(A相温度)
XXX.X(B相温度)
XXX.X(C相温度)
XXX.X(零线温度)
XXX.X(环境温度)
ssmmhhDDMMYY(时间6字节,秒分时日月年)

这种非标的协议有没有好的处理办法?

4.3 how to get response to byteArray for custom decode by yourself?
see code in processResponseFrame mothod in ModbusMasterResponseHandler.java or ModbusMasterResponseProcessor.java
public void processResponseFrame(Channel channel, int unitId, AbstractFunction reqFunc, ModbusFunction respFunc) {
if (respFunc instanceof ReadDiscreteInputsResponse) {
ReadDiscreteInputsResponse resp = (ReadDiscreteInputsResponse) respFunc;
byte[] resutArray = resp.getInputStatus().toByteArray();
}
};