Documentation
MbusRtuMasterProtocol Class Reference
[Serial Protocols]
Modbus RTU Master Protocol class. More...
Public Member Functions | |
| MbusRtuMasterProtocol () | |
| Creates new instance. | |
| synchronized void | openProtocol (String portName, int baudRate, int dataBits, int stopBits, int parity) throws IOException, PortInUseException, UnsupportedCommOperationException |
| Opens a Modbus serial port with specific port parameters. | |
| synchronized void | closeProtocol () throws IOException |
| Closes the serial port and releases any system resources associated with the port. | |
| boolean | isOpen () |
| Returns whether the port is open or not. | |
Static Public Attributes | |
| static final int | DATABITS_8 = SerialPort.DATABITS_8 |
| 8 data bits | |
| static final int | STOPBITS_1 = SerialPort.STOPBITS_1 |
| 1 stop bit | |
| static final int | STOPBITS_1_5 = SerialPort.STOPBITS_1_5 |
| 1.5 stop bits | |
| static final int | STOPBITS_2 = SerialPort.STOPBITS_2 |
| 2 stop bits | |
| static final int | PARITY_NONE = SerialPort.PARITY_NONE |
| no parity | |
| static final int | PARITY_ODD = SerialPort.PARITY_ODD |
| odd parity | |
| static final int | PARITY_EVEN = SerialPort.PARITY_EVEN |
| even parity | |
| static final int | PARITY_MARK = SerialPort.PARITY_MARK |
| mark parity | |
| static final int | PARITY_SPACE = SerialPort.PARITY_SPACE |
| space parity | |
Bit Access | |
Table 0:00000 (Coils) and Table 1:0000 (Input Status) | |
| synchronized void | readCoils (int slaveAddr, int startRef, boolean[] bitArr) throws IOException, BusProtocolException |
| Modbus function 1 (01 hex), Read Coil Status/Read Coils. | |
| synchronized void | readInputDiscretes (int slaveAddr, int startRef, boolean[] bitArr) throws IOException, BusProtocolException |
| Modbus function 2 (02 hex), Read Inputs Status/Read Input Discretes. | |
| synchronized void | writeCoil (int slaveAddr, int bitAddr, boolean bitVal) throws IOException, BusProtocolException |
| Modbus function 5 (05 hex), Force Single Coil/Write Coil. | |
| synchronized void | forceMultipleCoils (int slaveAddr, int startRef, boolean[] bitArr) throws IOException, BusProtocolException |
| Modbus function 15 (0F hex), Force Multiple Coils. | |
Register Access (16-bit, 32-bit and floating point) | |
Table 4:00000 (Holding Registers) and Table 3:00000 (Input Registers) | |
| synchronized void | readMultipleRegisters (int slaveAddr, int startRef, short[] regArr) throws IOException, BusProtocolException |
| Modbus function 3 (03 hex), Read Holding Registers/Read Multiple Registers. | |
| synchronized void | readMultipleRegisters (int slaveAddr, int startRef, int[] int32Arr) throws IOException, BusProtocolException |
| Modbus function 3 (03 hex) for 32-bit int data types, Read Holding Registers/Read Multiple Registers as int data. | |
| synchronized void | readMultipleRegisters (int slaveAddr, int startRef, float[] float32Arr) throws IOException, BusProtocolException |
| Modbus function 3 (03 hex) for 32-bit float data types, Read Holding Registers/Read Multiple Registers as float data. | |
| synchronized void | readInputRegisters (int slaveAddr, int startRef, short[] regArr) throws IOException, BusProtocolException |
| Modbus function 4 (04 hex), Read Input Registers. | |
| synchronized void | readInputRegisters (int slaveAddr, int startRef, int[] int32Arr) throws IOException, BusProtocolException |
| Modbus function 4 (04 hex) for 32-bit int data types, Read Input Registers as int data. | |
| synchronized void | readInputRegisters (int slaveAddr, int startRef, float[] float32Arr) throws IOException, BusProtocolException |
| Modbus function 4 (04 hex) for 32-bit float data types, Read Input Registers as float data. | |
| synchronized void | writeSingleRegister (int slaveAddr, int regAddr, short regVal) throws IOException, BusProtocolException |
| Modbus function 6 (06 hex), Preset Single Register/Write Single Register. | |
| synchronized void | writeMultipleRegisters (int slaveAddr, int startRef, short[] regArr) throws IOException, BusProtocolException |
| Modbus function 16 (10 hex), Preset Multiple Registers/Write Multiple Registers. | |
| synchronized void | writeMultipleRegisters (int slaveAddr, int startRef, int[] int32Arr) throws IOException, BusProtocolException |
| Modbus function 16 (10 hex) for 32-bit int data types, Preset Multiple Registers/Write Multiple Registers with int data. | |
| synchronized void | writeMultipleRegisters (int slaveAddr, int startRef, float[] float32Arr) throws IOException, BusProtocolException |
| Modbus function 16 (10 hex) for 32-bit float data types, Preset Multiple Registers/Write Multiple Registers with float data. | |
| synchronized void | maskWriteRegister (int slaveAddr, int regAddr, short andMask, short orMask) throws IOException, BusProtocolException |
| Modbus function 22 (16 hex), Mask Write Register. | |
| synchronized void | readWriteRegisters (int slaveAddr, int readRef, short[] readArr, int writeRef, short[] writeArr) throws IOException, BusProtocolException |
| Modbus function 23 (17 hex), Read/Write Registers. | |
Diagnostics | |
|
| |
| synchronized byte | readExceptionStatus (int slaveAddr) throws IOException, BusProtocolException |
| Modbus function 7 (07 hex), Read Exception Status. | |
Custom Function Codes | |
|
| |
| synchronized void | readHistoryLog (int slaveAddr, int channelNo, int resolution, short readArr[]) throws IOException, BusProtocolException |
| Vendor Specific Modbus function 100 (64 hex), Read History Log. | |
Protocol Configuration | |
|
| |
| synchronized void | setTimeout (int timeOut) |
| Configures time-out. | |
| int | getTimeout () |
| Returns the operation time-out value. | |
| synchronized void | setPollDelay (int pollDelay) |
| Configures poll delay. | |
| int | getPollDelay () |
| Returns the poll delay time. | |
| synchronized void | setRetryCnt (int retryCnt) |
| Configures the automatic retry setting. | |
| int | getRetryCnt () |
| Returns the automatic retry count. | |
Transmission Statistic Functions | |
|
| |
| synchronized long | getTotalCounter () |
| Returns how often a transmit/receive cycle has been executed. | |
| synchronized void | resetTotalCounter () |
| Resets total transmit/receive cycle counter. | |
| synchronized long | getSuccessCounter () |
| Returns how often a transmit/receive cycle was successful. | |
| synchronized void | resetSuccessCounter () |
| Resets successful transmit/receive counter. | |
Slave Configuration | |
|
| |
| void | configureStandard32BitMode () |
| Configures all slaves for Standard 32-bit Mode. | |
| synchronized void | configureStandard32BitMode (int slaveAddr) |
| Configures a slave for Standard 32-bit Register Mode. | |
| void | configureSingleReg32BitMode () |
| Configures all slaves for Single Register 32-bit Mode. | |
| synchronized void | configureSingleReg32BitMode (int slaveAddr) |
| Configures all slaves for Single Register 32-bit Mode. | |
| void | configureCountFromOne () |
| Configures the reference counting scheme to start with one for all slaves. | |
| synchronized void | configureCountFromOne (int slaveAddr) |
| Configures a slave's reference counting scheme to start with one. | |
| void | configureCountFromZero () |
| Configures the reference counting scheme to start with zero for all slaves. | |
| synchronized void | configureCountFromZero (int slaveAddr) |
| Configures a slave's reference counting scheme to start with zero. | |
| void | configureLittleEndianInts () |
| Disables word swapping for int data type functions for all slaves. | |
| synchronized void | configureLittleEndianInts (int slaveAddr) |
| Disables word swapping for int data type functions on a per slave basis. | |
| void | configureBigEndianInts () |
| Configures int data type functions to do a word swap for all slaves. | |
| synchronized void | configureBigEndianInts (int slaveAddr) |
| Enables int data type functions to do a word swap on a per slave basis. | |
| void | configureLittleEndianFloats () |
| Disables float data type functions to do a word swap for all slaves. | |
| synchronized void | configureLittleEndianFloats (int slaveAddr) |
| Disables float data type functions to do a word swap on a per slave basis. | |
| void | configureSwappedFloats () |
| Configures float data type functions to do a word swap for all slaves. | |
| synchronized void | configureSwappedFloats (int slaveAddr) |
| Enables float data type functions to do a word swap on a per slave basis. | |
Detailed Description
Modbus RTU Master Protocol class.
This class realizes the Modbus RTU master protocol. It provides functions to open and to close serial port as well as data and control functions which can be used at any time after the protocol has been opened. The data and control functions are organized different conformance classes. For a more detailed description of the data and control functions see section Data and Control Functions for all Modbus Protocol Flavours.
It is possible to instantiate multiple instances of this class for establishing multiple connections on different serial ports (They should be executed in separate threads).
All functions have been implemented thread-safe. It is also possible to instantiate multiple instances for establishing multiple connections on different serial ports.
- Remarks:
- The frame delimition of the RTU protocol leads to some practical limitations with Java: The RTU protocol is using silence periods in the data stream as start and end of frame detection. The specification determines a silence period of 3.5 character transmission times as an end of frame signal. If the combination of Java thread scheduler, the Communications API and the underlaying operating system are not able to transmit a message without a silence period, a sensitive slave will interpret the received message as garbage and not reply. The silence period for a baudrate of 115200 bps is 330 us, which is very difficult to obey for a non-real-time platform. In practical situations the RTU protocol should not be used at all in conjunction with high bit rates (e.g. above 9600 bps) and large message sizes (e.g. > 20 registers). Tests have shown that RTU is still usable with 115200 bps and message sizes below 20 registers as well as 9600 bps and message sizes of 125 registers on a Win32 platform. The behaviour depends very much on computer speed, operating system, Java virtual machine and Communication API. Therefore the usability of the RTU protocol has to be decided on a case to case basis. The ASCII protocol does not have this limitation and is therefore recommended to be used instead.
- See also:
- Data and Control Functions for all Modbus Protocol Flavours, Serial Protocols
- MbusElamMasterProtocol, MbusAsciiMasterProtocol, MbusTcpMasterProtocol
Member Function Documentation
| synchronized void openProtocol | ( | String | portName, | |
| int | baudRate, | |||
| int | dataBits, | |||
| int | stopBits, | |||
| int | parity | |||
| ) | throws IOException, PortInUseException, UnsupportedCommOperationException |
Opens a Modbus serial port with specific port parameters.
This function opens the serial port. After a port has been opened data and control functions can be used.
- Note:
- The default time-out for the data transfer is 1000 ms.
- The default poll delay is 0 ms.
- Automatic retries are switched off (retry count is 0).
- The Modbus standard requires two stop bits if no parity is chosen. This library is not enforcing this but it is a recommended configuration.
- Parameters:
-
portName Serial port identifier (e.g. "COM1", "/dev/ser1 or /dev/ttyS0") baudRate The port baudRate in bps (typically 1200 - 9600). dataBits Must be DATABITS_8 for RTU stopBits STOPBITS_1: 1 stop bit, STOPBITS_1_5: 1.5 stop bits, STOPBITS_2: 2 stop bits parity PARITY_NONE: no parity, PARITY_ODD: odd parity, PARITY_EVEN: even parity, PARITY_MARK: mark parity, PARITY_SPACE: space parity
- Exceptions:
-
IOException An I/O error occured UnsupportedCommOperationException A communication parameter is not supported PortInUseException Port is already used by somebody else IllegalArgumentException A parameter is invalid
Reimplemented from MbusSerialMasterProtocol.
| synchronized void closeProtocol | ( | ) | throws IOException [virtual, inherited] |
Closes the serial port and releases any system resources associated with the port.
- Exceptions:
-
IOException An I/O error occured
Implements MbusMasterFunctions.
| boolean isOpen | ( | ) | [virtual, inherited] |
Returns whether the port is open or not.
- Return values:
-
true = open false = closed
Implements MbusMasterFunctions.
| synchronized void readCoils | ( | int | slaveAddr, | |
| int | startRef, | |||
| boolean[] | bitArr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 1 (01 hex), Read Coil Status/Read Coils.
Reads the contents of the discrete outputs (coils, 0:00000 table).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) startRef Start reference (Range: depends on configuration setting) bitArr Buffer which will contain the data read. The length of the array determines how many coils are read (Range: 1-2000).
- Exceptions:
-
IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized void readInputDiscretes | ( | int | slaveAddr, | |
| int | startRef, | |||
| boolean[] | bitArr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 2 (02 hex), Read Inputs Status/Read Input Discretes.
Reads the contents of the discrete inputs (coils, 1:00000 table).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) startRef Start reference (Range: depends on configuration setting) bitArr Buffer which will contain the data read. The length of the array determines how many coils are read (Range: 1-2000).
- Exceptions:
-
IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized void writeCoil | ( | int | slaveAddr, | |
| int | bitAddr, | |||
| boolean | bitVal | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 5 (05 hex), Force Single Coil/Write Coil.
Sets a single discrete output variable (coil, 0:00000 table) to either ON or OFF.
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 0 - 247) bitAddr Coil address (Range: depends on configuration setting) bitVal true sets, false clears discrete output variable
- Exceptions:
-
IllegalStateException Port or connection is closed IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- Broadcast supported for serial protocols
| synchronized void forceMultipleCoils | ( | int | slaveAddr, | |
| int | startRef, | |||
| boolean[] | bitArr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 15 (0F hex), Force Multiple Coils.
Writes binary values into a sequence of discrete outputs (coils, 0:00000 table).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) startRef Start reference (Range: depends on configuration setting) bitArr Buffer which contains the data to be sent. The length of the array determines how many coils are written (Range: 1-1968).
- Exceptions:
-
IllegalStateException Port or connection is closed IOException An I/O error occured BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- Broadcast supported for serial protocols
| synchronized void readMultipleRegisters | ( | int | slaveAddr, | |
| int | startRef, | |||
| short[] | regArr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 3 (03 hex), Read Holding Registers/Read Multiple Registers.
Reads the contents of the output registers (holding registers, 4:00000 table).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) startRef Start reference (Range: depends on configuration setting) regArr Buffer which will be filled with the data read. The length of the array determines how many registers are read (Range: 1-125).
- Exceptions:
-
IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized void readMultipleRegisters | ( | int | slaveAddr, | |
| int | startRef, | |||
| int[] | int32Arr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 3 (03 hex) for 32-bit int data types, Read Holding Registers/Read Multiple Registers as int data.
Reads the contents of pairs of two consecutive output registers (holding registers, 4:00000 table) into float values.
- Remarks:
- Depending on the 32-bit Mode setting, an int will be transferred as two consecutive 16-bit registers (Standard) or as one 32-bit register (Daniel/Enron).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) startRef Start reference (Range: depends on configuration setting) int32Arr Buffer which will be filled with the data read. The length of the array determines how many registers are read (Range: 1-62).
- Exceptions:
-
IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized void readMultipleRegisters | ( | int | slaveAddr, | |
| int | startRef, | |||
| float[] | float32Arr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 3 (03 hex) for 32-bit float data types, Read Holding Registers/Read Multiple Registers as float data.
Reads the contents of pairs of two consecutive output registers (holding registers, 4:00000 table) into float values.
- Remarks:
- Depending on the 32-bit Mode setting, an int will be transferred as two consecutive 16-bit registers (Standard) or as one 32-bit register (Daniel/Enron).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) startRef Start reference (Range: depends on configuration setting) float32Arr Buffer which will be filled with the data read. The length of the array determines how many registers are read (Range: 1-62).
- Exceptions:
-
IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized void readInputRegisters | ( | int | slaveAddr, | |
| int | startRef, | |||
| short[] | regArr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 4 (04 hex), Read Input Registers.
Read the contents of the input registers (3:00000 table).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) startRef Start reference (Range: depends on configuration setting) regArr Buffer which will be filled with the data read. The length of the array determines how many registers are read (Range: 1-125).
- Exceptions:
-
IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized void readInputRegisters | ( | int | slaveAddr, | |
| int | startRef, | |||
| int[] | int32Arr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 4 (04 hex) for 32-bit int data types, Read Input Registers as int data.
Reads the contents of pairs of two consecutive input registers (3:00000 table) into float values.
- Remarks:
- Depending on the 32-bit Mode setting, an int will be transferred as two consecutive 16-bit registers (Standard) or as one 32-bit register (Daniel/Enron).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) startRef Start reference (Range: depends on configuration setting) int32Arr Buffer which will be filled with the data read. The length of the array determines how many registers are read (Range: 1-62).
- Exceptions:
-
IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized void readInputRegisters | ( | int | slaveAddr, | |
| int | startRef, | |||
| float[] | float32Arr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 4 (04 hex) for 32-bit float data types, Read Input Registers as float data.
Reads the contents of pairs of two consecutive input registers (3:00000 table) into float values.
- Remarks:
- Depending on the 32-bit Mode setting, an int will be transferred as two consecutive 16-bit registers (Standard) or as one 32-bit register (Daniel/Enron).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) startRef Start reference (Range: depends on configuration setting) float32Arr Buffer which will be filled with the data read. The length of the array determines how many registers are read (Range: 1-62).
- Exceptions:
-
IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized void writeSingleRegister | ( | int | slaveAddr, | |
| int | regAddr, | |||
| short | regVal | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 6 (06 hex), Preset Single Register/Write Single Register.
Writes a value into a single output register (holding register, 4:00000 reference).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 0 - 247) regAddr Register address (Range: depends on configuration setting) regVal Data to be sent
- Exceptions:
-
IllegalStateException Port or connection is closed IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- Broadcast supported for serial protocols
| synchronized void writeMultipleRegisters | ( | int | slaveAddr, | |
| int | startRef, | |||
| short[] | regArr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 16 (10 hex), Preset Multiple Registers/Write Multiple Registers.
Writes values into a sequence of output registers (holding registers, 4:00000 table).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 0 - 247) startRef Start reference (Range depends on configuration setting) regArr Buffer with the data to be sent. The length of the array determines how many registers are sent (Range: 1-61).
- Exceptions:
-
IllegalStateException Port or connection is closed IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- Broadcast supported for serial protocols
| synchronized void writeMultipleRegisters | ( | int | slaveAddr, | |
| int | startRef, | |||
| int[] | int32Arr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 16 (10 hex) for 32-bit int data types, Preset Multiple Registers/Write Multiple Registers with int data.
Writes int values into a pairs of output registers (holding registers, 4:00000 table).
- Remarks:
- Depending on the 32-bit Mode setting, an int will be transferred as two consecutive 16-bit registers (Standard) or as one 32-bit register (Daniel/Enron).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 0 - 247) startRef Start reference (Range: depends on configuration setting) int32Arr Buffer with the data to be sent. The length of the array determines how many registers are sent (Range: 1-61).
- Exceptions:
-
IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- Broadcast supported for serial protocols
| synchronized void writeMultipleRegisters | ( | int | slaveAddr, | |
| int | startRef, | |||
| float[] | float32Arr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 16 (10 hex) for 32-bit float data types, Preset Multiple Registers/Write Multiple Registers with float data.
Writes float values into a pairs of output registers (holding registers, 4:00000 table).
- Remarks:
- Depending on the 32-bit Mode setting, an int will be transferred as two consecutive 16-bit registers (Standard) or as one 32-bit register (Daniel/Enron).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 0 - 247) startRef Start reference (Range: depends on configuration setting) float32Arr Buffer with the data to be sent. The length of the array determines how many registers are sent (Range: 1-61).
- Exceptions:
-
IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- Broadcast supported for serial protocols
| synchronized void maskWriteRegister | ( | int | slaveAddr, | |
| int | regAddr, | |||
| short | andMask, | |||
| short | orMask | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 22 (16 hex), Mask Write Register.
Masks bits according to an AND & an OR mask into a single output register (holding register, 4:00000 reference). Masking is done as follows: result = (currentVal AND andMask) OR (orMask AND (NOT andMask))
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) regAddr Register address (Range: depends on configuration setting) andMask Mask to be applied as a logic AND to the register orMask Mask to be applied as a logic OR to the register
- Exceptions:
-
IllegalStateException Port or connection is closed IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized void readWriteRegisters | ( | int | slaveAddr, | |
| int | readRef, | |||
| short[] | readArr, | |||
| int | writeRef, | |||
| short[] | writeArr | |||
| ) | throws IOException, BusProtocolException [inherited] |
Modbus function 23 (17 hex), Read/Write Registers.
Combines reading and writing of the output registers in one transaction (holding registers, 4:00000 table).
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255) readRef Start reference for reading (Range: depends on configuration setting) readArr Buffer which will contain the data read. The length of the array determines how many registers are read (Range: 1-125). writeRef Start reference for writing (Range: depends on configuration setting) writeArr Buffer with data to be sent. The length of the array determines how many registers are sent (Range: 1-121).
- Exceptions:
-
IllegalStateException Port or connection is closed IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized byte readExceptionStatus | ( | int | slaveAddr | ) | throws IOException, BusProtocolException [inherited] |
Modbus function 7 (07 hex), Read Exception Status.
Reads the eight exception status coils within the slave device.
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255)
- Exceptions:
-
IllegalStateException Port or connection is closed IOException An I/O error occured IllegalArgumentException A parameter is out of range BusProtocolException A protocol failure occured. See descendants of BusProtocolException for a more detailed failure list.
- Note:
- No broadcast supported
| synchronized void setTimeout | ( | int | timeOut | ) | [inherited] |
Configures time-out.
This function sets the time-out to the specified value. A value of 0 disables the time-out, which causes all subsequent calls to data and control functions to block.
- Note:
- A port or connection must be closed in order to configure it.
- Parameters:
-
timeOut Timeout value in ms (Range: 0 - 100000), 0 disables time-out
- Exceptions:
-
IllegalStateException Port is open IllegalArgumentException Parameter is out of range
| int getTimeout | ( | ) | [inherited] |
Returns the operation time-out value.
- Returns:
- Timeout value in ms
| synchronized void setPollDelay | ( | int | pollDelay | ) | [inherited] |
Configures poll delay.
This function sets the delay time which applies between two consecutive Modbus read/write. A value of 0 disables the poll delay.
- Note:
- A port or connection must be closed in order to configure it.
- Parameters:
-
pollDelay Delay time in ms (Range: 0 - 100000), 0 disables poll delay
- Exceptions:
-
IllegalStateException Port is open IllegalArgumentException Parameter is out of range
| int getPollDelay | ( | ) | [inherited] |
Returns the poll delay time.
- Returns:
- Delay time in ms, 0 if poll delay is switched off
| synchronized void setRetryCnt | ( | int | retryCnt | ) | [inherited] |
Configures the automatic retry setting.
A value of 0 disables any automatic retries.
- Note:
- A port or connection must be closed in order to configure it.
- Parameters:
-
retryCnt Retry count (Range: 0 - 10), 0 disables retries
- Exceptions:
-
IllegalStateException Port is open IllegalArgumentException Parameter is out of range
| int getRetryCnt | ( | ) | [inherited] |
Returns the automatic retry count.
- Returns:
- Retry count
| synchronized long getTotalCounter | ( | ) | [inherited] |
Returns how often a transmit/receive cycle has been executed.
- Returns:
- Counter value
| synchronized long getSuccessCounter | ( | ) | [inherited] |
Returns how often a transmit/receive cycle was successful.
- Returns:
- Counter value
| void configureStandard32BitMode | ( | ) | [inherited] |
Configures all slaves for Standard 32-bit Mode.
In Standard 32-bit Register Mode a 32-bit value is transmitted as two consecutive 16-bit Modbus registers.
- Remarks:
- This is the default mode
| synchronized void configureStandard32BitMode | ( | int | slaveAddr | ) | [inherited] |
Configures a slave for Standard 32-bit Register Mode.
In Standard 32-bit Register Mode a 32-bit value is transmitted as two consecutive 16-bit Modbus registers.
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255). A value of zero configures the behaviour for broadcasting.
- Remarks:
- This is the default mode
| void configureSingleReg32BitMode | ( | ) | [inherited] |
Configures all slaves for Single Register 32-bit Mode.
Some Modbus flavours like the Daniel/Enron protocol represent a 32-bit value using one 32-bit Modbus register instead of two 16-bit registers.
| synchronized void configureSingleReg32BitMode | ( | int | slaveAddr | ) | [inherited] |
Configures all slaves for Single Register 32-bit Mode.
Some Modbus flavours like the Daniel/Enron protocol represent a 32-bit value using one 32-bit Modbus register instead of two 16-bit registers.
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255). A value of zero configures the behaviour for broadcasting.
| void configureCountFromOne | ( | ) | [inherited] |
Configures the reference counting scheme to start with one for all slaves.
This renders the reference range to be 1 to 0x10000 and register #0 is an illegal register.
- Remarks:
- This is the default mode
| synchronized void configureCountFromOne | ( | int | slaveAddr | ) | [inherited] |
Configures a slave's reference counting scheme to start with one.
This renders the reference range to be 1 to 0x10000 and register #0 is an illegal register.
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255). A value of zero configures the behaviour for broadcasting.
- Remarks:
- This is the default mode
| void configureCountFromZero | ( | ) | [inherited] |
Configures the reference counting scheme to start with zero for all slaves.
This is also known as PDU addressing.
This renders the valid reference range to be 0 to 0xFFFF.
This renders the first register to be #0 for all slaves.
| synchronized void configureCountFromZero | ( | int | slaveAddr | ) | [inherited] |
Configures a slave's reference counting scheme to start with zero.
This is also known as PDU addressing.
This renders the valid reference range to be 0 to 0xFFFF.
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255). A value of zero configures the behaviour for broadcasting.
| void configureLittleEndianInts | ( | ) | [inherited] |
Disables word swapping for int data type functions for all slaves.
Modbus is using little-endian word order for 32-bit values. This setting assumes that the slave also serves 32-bit data in in little little-endian word order.
- Remarks:
- This is the default mode
| synchronized void configureLittleEndianInts | ( | int | slaveAddr | ) | [inherited] |
Disables word swapping for int data type functions on a per slave basis.
Modbus is using little-endian word order for 32-bit values. This setting assumes that the slave also serves 32-bit data in little little-endian word order.
- Remarks:
- This is the default mode
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255). A value of zero configures the behaviour for broadcasting.
| void configureBigEndianInts | ( | ) | [inherited] |
Configures int data type functions to do a word swap for all slaves.
Modbus is using little-endian word order for 32-bit values. The data transfer functions operating upon 32-bit int data types can be configured to do a word swap which enables them to read 32-bit data correctly from a big-endian machine.
| synchronized void configureBigEndianInts | ( | int | slaveAddr | ) | [inherited] |
Enables int data type functions to do a word swap on a per slave basis.
Modbus is using little-endian word order for 32-bit values. The data transfer functions operating upon 32-bit int data types can be configured to do a word swap which enables them to read 32-bit data correctly from a big-endian machine.
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255). A value of zero configures the behaviour for broadcasting.
| void configureLittleEndianFloats | ( | ) | [inherited] |
Disables float data type functions to do a word swap for all slaves.
Modbus is using little-endian word order for 32-bit values. This setting assumes that the slaves also serves 32-bit floats in little little-endian word order which is the most common case.
- Remarks:
- This is the default mode
| synchronized void configureLittleEndianFloats | ( | int | slaveAddr | ) | [inherited] |
Disables float data type functions to do a word swap on a per slave basis.
Modbus is using little-endian word order for 32-bit values. This setting assumes that the slave also serves 32-bit floats in little little-endian word order which is the most common case.
- Remarks:
- This is the default mode
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255). A value of zero configures the behaviour for broadcasting.
| void configureSwappedFloats | ( | ) | [inherited] |
Configures float data type functions to do a word swap for all slaves.
The data functions operating upon 32-bit float data types can be configured to do a word swap.
- Note:
- Most platforms store floats in IEEE 754 little-endian order which does not need a word swap.
| synchronized void configureSwappedFloats | ( | int | slaveAddr | ) | [inherited] |
Enables float data type functions to do a word swap on a per slave basis.
The data functions operating upon 32-bit float data types can be configured to do a word swap.
- Note:
- Most platforms store floats in IEEE 754 little-endian order which does not need a word swap.
- Parameters:
-
slaveAddr Modbus address of slave device or unit identifier (Range: 1 - 255). A value of zero configures the behaviour for broadcasting.
FieldTalk Modbus Master Library, Java Edition
Library version 2.6.5