838 lines
14 KiB
Markdown
Raw Normal View History

2022-12-15 15:26:57 +01:00
# Arduino Modbus Library
## Modbus Client
### `client.coilRead()`
#### Description
Perform a "Read Coils" operation for the specified address for a single coil.
#### Syntax
```
int coilRead(int address);
int coilRead(int id, int address);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
#### Returns
coil value on success, -1 on failure.
### `client.discreteInputRead()`
#### Description
Perform a "Read Discrete Inputs" operation for the specified address for a single discrete input.
#### Syntax
```
int discreteInputRead(int address);
int discreteInputRead(int id, int address);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
#### Returns
discrete input value on success, -1 on failure.
### `client.holdingRegisterRead()`
#### Description
Perform a "Read Holding Registers" operation for a single holding register.
#### Syntax
```
long holdingRegisterRead(int address);
long holdingRegisterRead(int id, int address);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address start address to use for operation
- holding register value on success, -1 on failure.
### `client.inputRegisterRead()`
#### Description
Perform a "Read Input Registers" operation for a single input register.
#### Syntax
```
long inputRegisterRead(int address);
long inputRegisterRead(int id, int address);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
#### Returns
input register value on success, -1 on failure.
### `client.coilWrite()`
#### Description
Perform a "Write Single Coil" operation for the specified address and value.
#### Syntax
```
int coilWrite(int address, uint8_t value);
int coilWrite(int id, int address, uint8_t value);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
- value coi -l value to write
#### Returns
1 on success, 0 on failure.
### `client.holdingRegisterWrite()`
#### Description
Perform a "Write Single Holding Register" operation for the specified address and value.
#### Syntax
```
int holdingRegisterWrite(int address, uint16_t value);
int holdingRegisterWrite(int id, int address, uint16_t value);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
- value - holding register value to write
#### Returns
1 on success, 0 on failure.
### `client.registerMaskWrite()`
#### Description
Perform a "Mask Write Registers" operation for the specified address, AND mask and OR mask.
#### Syntax
```
int registerMaskWrite(int address, uint16_t andMask, uint16_t orMask);
int registerMaskWrite(int id, int address, uint16_t andMask, uint16_t orMask);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
- andMask - AND mask to use for operation
- orMask - OR mask to use for operation
#### Returns
1 on success, 0 on failure.
### `client.beginTransmission()`
#### Description
Begin the process of a writing multiple coils or holding registers.
Use write(value) to set the values you want to send, and endTransmission() to send request on the wire.
#### Syntax
```
int beginTransmission(int type, int address, int nb);
int beginTransmission(int id, int type, int address, int nb);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- type - type of write to perform, either COILS or HOLDING_REGISTERS
- address start address to use for operation
- nb - number of values to write
#### Returns
1 on success, 0 on failure
### `client.write()`
#### Description
Set the values of a write operation started by beginTransmission(...).
#### Syntax
```
int write(unsigned int value);
```
#### Parameters
- value - value to write
#### Returns
1 on success, 0 on failure
### `client.endTransmission()`
#### Description
End the process of a writing multiple coils or holding registers.
#### Syntax
```
int endTransmission();
```
#### Parameters
none
#### Returns
1 on success, 0 on failure
### `client.requestFrom()`
#### Description
Read multiple coils, discrete inputs, holding registers, or input register values.
Use available() and read() to process the read values.
#### Syntax
```
int requestFrom(int type, int address, int nb);
int requestFrom(int id, int type, int address,int nb);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
type - type of read to perform, either COILS, DISCRETE_INPUTS, HOLDING_REGISTERS, or INPUT_REGISTERS
- address start address to use for operation
- nb - number of values to read
#### Returns
0 on failure, number of values read on success
### `client.available()`
#### Description
Query the number of values available to read after calling requestFrom(...)
#### Syntax
```
int available();
```
#### Parameters
none
#### Returns
number of values available for reading use read()
### `client.read()`
#### Description
Read a value after calling requestFrom(...)
#### Syntax
```
long read();
```
#### Parameters
None
#### Returns
-1 on failure, value on success
### `client.lastError()`
#### Description
Read the last error reason as a string
#### Syntax
```
const char* lastError();
```
#### Parameters
none
#### Returns
Last error reason as a C string
### `client.end()`
#### Description
Stop the client and clean up
#### Syntax
```
void end();
```
#### Parameters
None
#### Returns
nothing
## ModbusRTUClient Class
### `modbusRTUClient.begin()`
#### Description
Start the Modbus RTU client with the specified parameters.
#### Syntax
```
ModbusRTUClient.begin(baudrate);
ModbusRTUClient.begin(baudrate, config);
```
#### Parameters
- baudrate - Baud rate to use for serial
- config - Config to use for serial (see Serial.begin(...) for more info.) defaults to SERIAL_8N1 if not provided
#### Returns
1 on success, 0 on failure
## ModbusTCPClient Class
### `ModbusTCPClient()`
#### Description
Creates a Modbus TCP client using the provided Client for the transport.
#### Syntax
```
ModbusTCPClient(client);
```
#### Parameters
- Client - to use for the transport
### `modbusTCPClient.begin()`
#### Description
Start the Modbus TCP client with the specified parameters.
#### Syntax
```
modbusTCPClient.begin(ip, port);
```
#### Parameters
- ip - the IP Address the client will connect to
- port - port to the client will connect to
#### Returns
1 on success, 0 on failure
### `modbusTCPClient.connected()`
#### Description
Returns the connection status.
#### Syntax
```
modbusTCPClient.connected();
```
#### Parameters
None
#### Returns
Returns true if the client is connected, false if not.
### `modbusTCPClient.stop()`
#### Description
Disconnect from the server.
#### Syntax
```
modbusTCPClient.stop();
```
#### Parameters
None
#### Returns
Nothing
## ModbusServer Class
### `modbusServer.configureCoils()`
#### Description
Configure the servers coils.
#### Syntax
```
int configureCoils(int startAddress, int nb);
```
#### Parameters
- startAddress - start address of coils
- nb - number of coils to configure
#### Returns
0 on success, 1 on failure
### `modbusServer.configureDiscreteInputs()`
#### Description
Configure the servers discrete inputs.
#### Syntax
```
int configureDiscreteInputs(int startAddress, int nb);
```
#### Parameters
- startAddress - start address of discrete inputs
- nb - number of discrete inputs to configure
#### Returns
0 on success, 1 on failure
### `modbusServer.configureHoldingRegisters()`
#### Description
Configure the servers holding registers.
#### Syntax
```
int configureHoldingRegisters(int startAddress, int nb);
```
#### Parameters
- startAddress - start address of holding registers
- nb - number of holding registers to configure
#### Returns
0 on success, 1 on failure
### `modbusServer.configureInputRegisters()`
#### Description
Configure the servers input registers.
#### Syntax
```
int configureInputRegisters(int startAddress, int nb);
```
#### Parameters
- startAddress - start address of input registers
- nb - number of input registers to configure
#### Returns
0 on success, 1 on failure
### `modbusServer.coilRead()`
#### Description
Perform a "Read Coils" operation for the specified address for a single coil.
#### Syntax
```
int coilRead(int address);
int coilRead(int id, int address);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
#### Returns
coil value on success, -1 on failure.
### `modbusServer.discreteInputRead()`
#### Description
Perform a "Read Discrete Inputs" operation for the specified address for a single discrete input.
#### Syntax
```
int discreteInputRead(int address);
int discreteInputRead(int id, int address);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
#### Returns
discrete input value on success, -1 on failure.
### `modbusServer.holdingRegisterRead()`
#### Description
Perform a "Read Holding Registers" operation for a single holding register.
#### Syntax
```
long holdingRegisterRead(int address);
long holdingRegisterRead(int id, int address);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address start address to use for operation
- holding register value on success, -1 on failure.
### `modbusServer.inputRegisterRead()`
#### Description
Perform a "Read Input Registers" operation for a single input register.
#### Syntax
```
long inputRegisterRead(int address);
long inputRegisterRead(int id, int address);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
#### Returns
input register value on success, -1 on failure.
### `modbusServer.coilWrite()`
#### Description
Perform a "Write Single Coil" operation for the specified address and value.
#### Syntax
```
int coilWrite(int address, uint8_t value);
int coilWrite(int id, int address, uint8_t value);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
- value coi -l value to write
#### Returns
1 on success, 0 on failure.
### `modbusServer.holdingRegisterWrite()`
#### Description
Perform a "Write Single Holding Register" operation for the specified address and value.
#### Syntax
```
int holdingRegisterWrite(int address, uint16_t value);
int holdingRegisterWrite(int id, int address, uint16_t value);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
- value - holding register value to write
#### Returns
1 on success, 0 on failure.
### `modbusServer.registerMaskWrite()`
#### Description
Perform a "Mask Write Registers" operation for the specified address, AND mask and OR mask.
#### Syntax
```
int registerMaskWrite(int address, uint16_t andMask, uint16_t orMask);
int registerMaskWrite(int id, int address, uint16_t andMask, uint16_t orMask);
```
#### Parameters
- id (slave) - id of target, defaults to 0x00 if not specified
- address address to use for operation
- andMask - AND mask to use for operation
- orMask - OR mask to use for operation
#### Returns
1 on success, 0 on failure.
### `modbusServer.discreteInputWrite()`
#### Description
Write the value of the server's Discrete Input for the specified address and value.
#### Syntax
```
int discreteInputWrite(int address, uint8_t value);
```
#### Parameters
- address address to use for operation
- value - discrete input value to write
#### Returns
1 on success, 0 on failure.
### `modbusServer.writeDiscreteInputs()`
#### Description
Write values to the server's Discrete Inputs for the specified address and values.
#### Syntax
```
int writeDiscreteInputs(int address, uint8_t values[], int nb);
```
#### Parameters
- address address to use for operation
- values - array of discrete inputs values to write
- nb - number of discrete inputs to write
#### Returns
1 on success, 0 on failure.
### `modbusServer.inputRegisterWrite()`
#### Description
Write the value of the server's Input Register for the specified address and value.
#### Syntax
```
int inputRegisterWrite(int address, uint16_t value);
```
#### Parameters
- address address to use for operation
- value - input register value to write
#### Returns
1 on success, 0 on failure.
### `modbusServer.writeInputRegisters()`
#### Description
Write values to the server's Input Registers for the specified address and values.
#### Syntax
```
int writeInputRegisters(int address, uint16_t values[], int nb);
```
#### Parameters
- address address to use for operation
- values - array of input registers values to write
- nb - number of input registers to write
#### Returns
1 on success, 0 on failure.
### `modbusServer.poll()`
#### Description
Poll for requests
#### Syntax
```
virtual void poll() = 0;
```
#### Parameters
None
#### Returns
nothing
### `modbusServer.end()`
#### Description
Stop the server
#### Syntax
```
void end();
```
#### Parameters
None
#### Return
nothing
## ModbusRTUServer Class
### `modbusRTUServer.begin()`
#### Description
Start the Modbus RTU server with the specified parameters.
#### Syntax
```
ModbusRTUServer.begin(id, baudrate);
ModbusRTUServer.begin(id, baudrate, config);
```
#### Parameters
- id - (slave) id of the server baudrate - Baud rate to use for serial
- config - Config to use for serial (see Serial.begin(...) for more info.) defaults to SERIAL_8N1 if not provided
#### Returns
1 on success, 0 on failure
## ModbusTCPServer
### `ModbusTCPServer()`
#### Description
Creates a Modbus TCP server.
#### Syntax
```
ModbusTCPServer();
```
#### Parameters
None
### `modbusTCPServer.begin()`
#### Description
Start the Modbus TCP server.
#### Syntax
```
modbusTCPserver.begin();
modbusTCPserver.begin(id);
```
#### Parameters
- id - the (slave) id of the server, defaults to 0xff (TCP);
#### Returns
1 on success, 0 on failure
### `modbusTCPServer.accept()`
#### Description
Accept a client connection.
#### Syntax
```
modbusTCPserver.accept(client);
```
#### Parameters
- client - the Client to accept a connection from;
#### Returns
Nothing