Component: Modbus TCP Master (Comms: System)

From Flowcode Help
Jump to navigationJump to search


Author Matrix Ltd.
Version 2.0 (Release)
Category Comms: System


Image Modbus TCP Master component

Modbus component for talking to Modbus compatible hardware via Ethernet or WIFI. Ensure TCP/IP or WIFI component is initialised and connected to a network before calling the ModbusMasterTCP component macros.


Examples

Example master program to control the slave. The example sets coil address 0, clears coil address 0, reads an input register and outputs to the LCD. Be sure to set the IP address of the slave device at the top of the program. If you are simulating then use the IP address of the PC running the Slave simulation. Both programs can be simulated on the same PC using two instances of Flowcode.

FC6 Icon.png Modbus TCP Master Example


Example slave program to react to the signals from the master. The example listens for Modbus commands from the master and outputs the current coils 0 state to an LED connected to PortA. The input register is loaded with a value which is incremented on each Modbus transaction.

FC6 Icon.png Modbus TCP Slave Example


Addressing

In Modbus the addressing protocol looks like this.

Data Type Common name Starting address Ending Address Flowcode Start Address Flowcode End Address
Modbus Coils Bits, binary values, flags 00001 10000 0 9999
Digital Inputs Binary inputs 10001 30000 0 19999
Analog Inputs Binary inputs 30001 40000 0 9999
Modbus Registers Analog values, variables 40001 60000 0 19999


In Flowcode each section starts from 0 so the address range is as shown.


Downloadable macro reference

ReadHoldingRegister

This command requests the analogue holding register values starting from the start RegAddress and going through to RegAddress plus RegCount.

Returns 0 for success, 1 for CRC fail and 255 for no reply.

Parameters

UINT SlaveID
The ID of the MODBUS slave
UINT RegAddress
Address: 0=40001, 1=40002, ...
UINT RegCount
Number of consecutive registers to read, starting from RegAddress


Return value

BYTE


ForceMultipleCoils

This command writes the contents of a series of discrete coils at the location starting at CoilAddress through to CoilAddress + CoilCount.

Returns 0 for success, 1 for CRC fail and 255 for no reply.

Parameters

BYTE SlaveID
The ID of the MODBUS slave - Used for TCP to Serial forwarders
UINT CoilAddress
Coil Address: 0=Coil1, 1=Coil2, 2=Coil3, ...
UINT CoilCount
Number of consecutive coils to try and read
BYTE CoilData
An array of bytes each containing 8 1-bit coil values


Return value

BYTE


ForceSingleCoil

This command writes the contents of a discrete coil at the location CoilAddress.

Returns 0 for success, 1 for CRC fail and 255 for no reply.

Parameters

BYTE SlaveID
The ID of the MODBUS slave
UINT CoilAddress
Coil Address: 0=Coil1, 1=Coil2, 2=Coil3, ...
BYTE CoilState
0=Off, 1=On


Return value

BYTE


ReadCoilStatus

This command requests the ON/OFF status of discrete coils starting from the start CoilAddress and going through to CoilAddress plus CoilCount.

Returns 0 for success, 1 for CRC fail and 255 for no reply.

Parameters

UINT SlaveID
The ID of the MODBUS slave
UINT CoilAddress
Coil Address: 0=Coil1, 1=Coil2, 2=Coil3, ...
UINT CoilCount
Number of consecutive coils to try and read


Return value

BYTE


GetResponseByte

Reads a byte from the last received response. The Index parametes specifies which byte to read back.

Parameters

BYTE Index
0=NumBytes, 1=SlaveAddress, 2=FunctionCode/ExceptionCode, .....


Return value

BYTE


ReadInputStatus

This command requests the ON/OFF status of discrete inputs starting from the start DataAddress and going through to DataAddress plus DataCount.

Returns 0 for success, 1 for CRC fail and 255 for no reply.

Parameters

UINT SlaveID
The ID of the MODBUS slave
UINT DataAddress
Input Address: 0=10001, 1=10002, 2=10003, ...
UINT DataCount
Number of consecutive inputs to read, starting from RegAddress


Return value

BYTE


PresetSingleRegister

This command writes the contents of a analogue output holding registerl at the location RegAddress.

Returns 0 for success, 1 for CRC fail and 255 for no reply.

Parameters

UINT SlaveID
The ID of the MODBUS slave
UINT RegAddress
Address: 0=40001, 1=40002, ...
UINT RegValue
Value to send to the selected register


Return value

BYTE


GetResponseInt

Reads a 16-bit value from the last received response.

The Index parametes specifies the byte index of the value to read back.

Parameters

BYTE Index
0=NumBytes, 1=SlaveAddress, 2=FunctionCode/ExceptionCode, .....


Return value

UINT


ReadInputRegister

This command requests the analogue input register values starting from the start RegAddress and going through to RegAddress plus RegCount.

Returns 0 for success, 1 for CRC fail and 255 for no reply.

Parameters

UINT SlaveID
The ID of the MODBUS slave
UINT RegAddress
Input Address: 0=10001, 1=10002, 2=10003, ...
UINT RegCount
Number of consecutive inputs to read, starting from RegAddress


Return value

BYTE


PresetMultipleRegisters

This command writes the contents of several analogue output holding registers starting at the location RegAddress through to location RegAddress + RegCount .

Returns 0 for success, 1 for CRC fail and 255 for no reply.

Parameters

UINT SlaveID
The ID of the MODBUS slave
UINT RegAddress
Address: 0=40001, 1=40002, ...
UINT RegCount
Number of consecutive registers to write, starting from RegAddress
UINT RegValue
Array of values to send to the registers


Return value

BYTE


SetTCPAddress

Sets the address of the remote TCP Slave that we wish to control.

Parameters

<- STRING Address
e.g. "192.168.1.1"
This parameter may be returned back to the caller


Return value

This call does not return a value


Simulation macro reference

This component does not contain any simulation macros


Property reference

TCP/IP Component

This property is of type Panel object and can be referenced with the variable name NetworkComms1::Component.

Property to point to the TCP/IP or WIFI component you want to use.

If unconnected then default to simulated TCP/IP network communications using the PC network adapter.

Status

This property is of type Line of text and can be referenced with the variable name NetworkComms1::Status.

No additional information


TCP/IP Port

This property is of type Unsigned integer and can be referenced with the variable name Port.

Port used for network communications

Range: 0-65535

Receive Buffer Size

This property is of type Unsigned integer and can be referenced with the variable name ReceiveBufferSize.

Maximum number of bytes the receive buffer can hold

Label

This property is of type Line of text and can be referenced with the variable name label.

A text label to appear on the Modbus panel object.