JLibModbusRead.java
3.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package com.huaheng.api.dianqi;
import java.net.InetAddress;
import com.intelligt.modbus.jlibmodbus.Modbus;
import com.intelligt.modbus.jlibmodbus.exception.ModbusIOException;
import com.intelligt.modbus.jlibmodbus.exception.ModbusNumberException;
import com.intelligt.modbus.jlibmodbus.exception.ModbusProtocolException;
import com.intelligt.modbus.jlibmodbus.master.ModbusMaster;
import com.intelligt.modbus.jlibmodbus.master.ModbusMasterFactory;
import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters;
/**
* Hello world!
*
*/
public class JLibModbusRead {
public static void main(String[] args) {
try {
// 设置主机TCP参数
TcpParameters tcpParameters = new TcpParameters();
// 设置TCP的ip地址
InetAddress address = InetAddress.getByName("127.0.0.1");
// TCP参数设置ip地址
// tcpParameters.setHost(InetAddress.getLocalHost());
tcpParameters.setHost(address);
// TCP设置长连接
tcpParameters.setKeepAlive(true);
// TCP设置端口,这里设置是默认端口502
tcpParameters.setPort(Modbus.TCP_PORT);
// 创建一个主机
ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(tcpParameters);
Modbus.setAutoIncrementTransactionId(true);
int slaveId = 1;//从机地址
int offset = 9;//寄存器读取开始地址
int quantity = 1;//读取的寄存器数量
try {
if (!master.isConnected()) {
master.connect();// 开启连接
}
// * 读线圈: ON=1,OFF=0
// * 读离散量 ON=1,OFF=0
// * 读保存寄存器 指定数据类型(可以是Float)
// * 读输入寄存器 指定数据类型(可以是Float)
// boolean[] readCoils = master.readCoils(slaveId, offset, quantity);
// boolean[] discreteInputs = master.readDiscreteInputs(slaveId, offset, quantity);
// int[] readHoldingRegisters = master.readHoldingRegisters(slaveId, offset, quantity);
int[] readInputRegisters = master.readHoldingRegisters(slaveId, offset, quantity);
// for (boolean value : readCoils) {
// System.out.println("readCoils:Address: " + offset++ + ", Value: " + value);
// }
//
// for (boolean value : discreteInputs) {
// System.out.println("discreteInputs:Address: " + offset++ + ", Value: " + value);
// }
//
// for (int value : readHoldingRegisters) {
// System.out.println("readHoldingRegisters:Address: " + offset++ + ", Value: " + value);
// }
// 控制台输出
for (int value : readInputRegisters) {
System.out.println("readInputRegisters:Address: " + offset++ + ", Value: " + value);
// byte[] bytes = toHH(value);
}
} catch (ModbusProtocolException e) {
e.printStackTrace();
} catch (ModbusNumberException e) {
e.printStackTrace();
} catch (ModbusIOException e) {
e.printStackTrace();
} finally {
try {
master.disconnect();
} catch (ModbusIOException e) {
e.printStackTrace();
}
}
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
e.printStackTrace();
}
}
}