-
Notifications
You must be signed in to change notification settings - Fork 128
/
README
262 lines (246 loc) · 17 KB
/
README
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
README
The MODBUS protocol implementation in pure java.
The main advantages of the library are following:
- the library supports a lot of communication libraries (jssc, rxtx, purejavacomm, java comm api);
- the library has (practically) complete implementation of the modbus protocol v1.1b.
AUTHORS
Vladislav Y. Kochedykov, software engineer, technical expert.
CONTACT
If you have problems, questions or suggestions, please contact me at email address vladislav.kochedykov@gmail.com
To learn how to use the library you can either use examples in "examples\com\invertor\examples\modbus" folder or contact me at email.
Maven dependency:
The latest stable release.
<dependency>
<groupId>com.intelligt.modbus</groupId>
<artifactId>jlibmodbus</artifactId>
<version>1.2.9.11</version>
</dependency>
WEB SITE
project homepage:
http://jlibmodbus.sourceforge.net
https://github.com/kochedykov/jlibmodbus
purejavacomm homepage:
http://www.sparetimelabs.com/purejavacomm/purejavacomm.php
https://github.com/nyholku/purejavacomm
jssc home page:
https://code.google.com/p/java-simple-serial-connector
https://github.com/scream3r/java-simple-serial-connector
rxtx home page:
http://users.frii.com/jarvi/rxtx/index.html
jserialcomm homepage:
https://github.com/Fazecast/jSerialComm
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.11 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* Update library dependencies. jSerialComm v2.10.4, jssc v2.9.6.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.10 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* The release fixes issues #41, #64, #85, #91, 94
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.9 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* The release contains a bug fix that do rollback changes by commit 010c95917c913c355bd9599cc2458094a311da2b
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.8 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* The release contains several bug fixes and the latest pull requests including some new features
* (see git log on github https://github.com/kochedykov/jlibmodbus).
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.7 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* The automatic serial port connector selection is rolled back.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.6 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* IMPORTANTLY! Fixed the issue #22: MODBUS Master TCP - Socket left open.
* Fixed a bug with listening for incoming data on Android Things device.
* Add automatic selection of a serial port connector.
* Add Android Things support.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.5 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* Fixed a bug with an incorrect conversion from two integers to a long value.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.4 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* Fixed incoming frame logging.
* Fixed a bug in OutputStreamASCII - add unimplemented method write(byte[], int, int).
* Fixed the issue #17: Incorrect logic if lrc equals zero. Thanks to https://github.com/mlasevich
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.3 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* Fixed hasNext() in ModbusValues iterator.
* Fixed error in JSerialComm implementation. https://sourceforge.net/p/jlibmodbus/bugs/2/
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.2 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* Fixed a bug with setting timeout in SerialPortLoopback.
* Fixed a bug with setting a slave timeout.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.1 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* Experimental! Implemented RTU over TCP. Add a new serial port factories TcpClient and TcpServer. Usage: //server side SerialUtils.setSerialPortFactory(new SerialPortFactoryTcpServer(tcpParameters)); ModbusSlave slave = ModbusSlaveFactory.createModbusSlaveRTU(serialParameters);
* IMPORTANTLY! Fixed the issue #15: Bug in setRange method. Thanks to https://github.com/shdk
* Added ModbusSlaveSerialObserver and SerialPortInfo classes to notify if the com port was opened or closed.
* IMPORTANTLY! Added the jSerialComm library support.
* IMPORTANTLY! Fixed the issue #14:Bug in DataHolder class. Thanks to https://github.com/shdk
* Added API to retrieve information about a TCP client connected to the TCP slave.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.9.0 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* IMPORTANTLY! Renamed package from com.invertor.modbus to com.intelligt.modbus.jlibmodbus!
* IMPORTANTLY! Change default read timeout to 1000 ms.
* Fixed a bug in GetCommEventLog.
* Added data frame events to Input/Output streams.
* Added the loopback serial port for testing applications without actual serial hardware. Author Kevin Kieffer.
* Added method ReadCoilsResponse#getModbusCoils that returns a ModbusCoils instance.
* Fixed a bug in ModbusValue#next().
* Fixed errors in data conversion operations.
* Added method ReadHoldingRegisters#getHoldingRegisters that returns a ModbusHoldingRegisters instance.
* Renamed getBytes -> getBytesBe.
* Renamed Coils->ModbusCoils, HoldingRegistors->ModbusHoldingRegisters.
* Added class ModbusValues.
* Renamed getValues -> getBytes, setValues -> setBytes.
* Added additional helpers.
* Added the BroadcastResponse class to avoid timeout exception while sending broadcast requests.
* Fixed an incorrect logic if crc equals zero. Thanks to flooduk (https://github.com/flooduk).
* Fixed handling of broadcast requests.
* Fixed handling of RestartCommunicationsOption.
* Optimized memory usage.
* Fixed the MIN_PDU_LENGTH value.
* Reduced copy operations number.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.8.4 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* Added basic maven pom file
* Thread safety. Thanks to Kevin Kieffer.
* HoldingRegisters and Coils is now observable. Thanks to Kevin Kieffer.
* Added a method to get a byte-buffer from ReadHoldingRegistersResponse.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.8.3 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* IMPORTANTLY! Fixed bug #1 Support of SlaveID=255 with ModbusTCP. Thanks to Francois DELOYE (https://sourceforge.net/u/sesa258801).
* Added broadcast support.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.8.2 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* Added a new method - SerialUtils#getConnectorVersion.
* Fixed bug in ModbusMaster#disconnectImpl. Thanks to dpozimski (https://github.com/dpozimski)!
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.8.1 -------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* Fixed bug: setting of the "connected" status had no effect.
* Added ModbuMaster#connectImpl and ModbusMaster#disconnectImpl methods.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.8 ---------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* Added a new method ModbusMaster#isConnected that returns true if a master is connected to a remote slave.
* Added a new method ModbusSlave#isListening method that returns true if a slave is already listening for incoming connections.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.7 ---------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* IMPORTANTLY! Fixed bug with reading of multiple values in a request.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.6 ---------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* Fixed bug with a NPE thrown if setReadTimeout is invoked before port is opened.
* IMPORTANTLY! Added the PureJavaComm library support.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.5 ---------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* Added readTimeout to ModbusSlave.
* API changes: Deleted a few factory-methods from ModbusMasterFactory and ModbusSlaveFactory.
* API changes: Renamed ModbusEvent to ModbusCommEvent.
* API changes: Added methods Coils#quantity() and HoldingRegisters#quantity().
* API changes: ModbusSlaver#open() -> ModbusSlaver#listen(), ModbusSlaver#close() -> ModbusSlaver#shutdown().
* API changes: ModbusMaster#open() -> ModbusMaster#connect(), ModbusMaster#close() -> ModbusMaster#disconnect().
* Fixed bug that type of quantity must be double or float before it'll be divided.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.4 ---------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* Fixed bug with address and quantity checking in ReadCoilsRequest#checkAddressRange.
* Improved search of a ModbusFunctionCode instance by value.
* Fixed issues found by FindBug utility(http://findbugs.sourceforge.net).
* Fixed bug with SerialPortJSSC#read(byte[] b, int off, int len) method.
* Fixed bug with setting readTimeout before opening a connection.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.3 ---------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* Added a class to obtain the version of the library.
* Improved logger output.
* Added method getPortIdentifiers to get a list of available port identifiers.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.2 ---------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS
* IMPORTANTLY! Added support for java communication api 3.0.
* IMPORTANTLY! Migrated to the apache license version 2.0.
* Methods "purgeRx", "purgeTx", "clear" are removed from SerialPort class.
* Method "reset" is removed from ModbusConnection.
* Fixed potential bug with infinite loop in ModbusMaster.readResponse.
* Added method ModbusConnection.getReadTimeout.
* Prevents a NullPointerException if master is used before it has been opened.
-----------------------------------------------------------------------------------------------------------
----Release version 1.2.1 ---------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS:
* IMPORTANTLY! Add the RXTX library support! Usage: SerialUtils.setSerialPortFactory(new SerialPortFactoryRXTX());
* Added checking if jssc library is available.
* Fixed potential bug with reading of byte array.
* Added avoiding some NPEs.
* IMPORTANTLY! Fixed bug with flushing of output buffers.
* Modbus RTU master is now able to connect via tcp socket (in case of rs232/rs485 to wifi adapters).
-----------------------------------------------------------------------------------------------------------
----Release version 1.2 -----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS:
* Added extended logging.
* Add auto-increment of transaction id. See Modbus.setAutoIncrementTransactionId.
-----------------------------------------------------------------------------------------------------------
----Release version 1.1 -----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* NEWS:
* IMPORTANTLY! Fixed bug with offset reading.
* IMPORTANTLY! Fixed data conversion issues.
-----------------------------------------------------------------------------------------------------------
----Release version 1.0 -----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
* Implemented MODBUS functions:
* 0x01 - Read Coils
* 0x02 - Read Discrete Inputs
* 0x03 - Read Holding Registers
* 0x04 - Read Input Registers
* 0x05 - Write Single Coil
* 0x06 - Write Single Register
* 0x07 - Read Exception Status(serial line only)
* 0x08 - Diagnostics(serial line only)
* 0x0B - Get Comm Event Counter(serial line only)
* 0x0C - Get Comm Event Log(serial line only)
* 0x0F - Write Multiple Coils
* 0x10 - Write Multiple Registers
* 0x11 - Report Slave Id(serial line only)
* 0x14 - Read File Record
* 0x15 - Write File Record
* 0x16 - Mask Write Register
* 0x17 - Read Write Multiple Registers
* 0x18 - Read Fifo Queue
* 0x2B - Encapsulated Interface Tansport(Read Device Identification interface, (0x2B / 0x0E))