Author
|
Matrix Ltd.
|
Version
|
2.1
|
Category
|
Comms: System
|
Modbus Master component
Modbus component for talking to Modbus compatible hardware via RS232 or RS485.
Component Source Code
Please click here to download the component source project: FC_Comp_Source_temp/Modbus.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_temp/Modbus.fcfx
Detailed description
No detailed description exists yet for this component
Examples
CT-2EA Modbus Electronic kWh Meter
Example to talk to a CT-2EA Modbus Electronic kWh Meter
ModbusDemo
Setup to communicate via Embedded UART1 or Simulated COM3
Console data generated by the working example running in the simulation and communicating via the COM port.
Master and Slave example using vNet
Example of communicating using Modbus Master and Slave using two instances of Flowcode and the vNet injector component.
ModbusMasterDemo
ModBusSlaveDemo
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.
Macro reference
ChangeBaud
|
ChangeBaud
|
Changes the UART Baud rate. 1 = 1200 / 2 = 2400 / 3 = 4800 / 4 = 9600 / 5 = 19200 / 6 = 31250 7 = 38400 / 8 = 57600 / 9 = 115200
|
- BYTE
|
Baud
|
The new baud rate (0=1200, 9=115200)
|
- VOID
|
Return
|
ChangeFrameType
|
ChangeFrameType
|
Default frame type is the type set in the component properties.
|
- BYTE
|
Type
|
0 = Modbus RTU / 1 = Modbus ASCII
|
- VOID
|
Return
|
GetResponse
|
GetResponse
|
Collects as much incoming data as possible and stored into the response buffer. The number of bytes received will be stored into location 0 of the response buffer. Return value indicates validity of incoming CRC. 0 = OK, 1 = CRC fail, 255 = No Data
|
- BYTE
|
Return
|
GetResponseByte
|
GetResponseByte
|
Reads a byte from the last received response. The Index parametes specifies which byte to read back.
|
- BYTE
|
Index
|
0=NumBytes, 1=SlaveAddress, 2=FunctionCode/ExceptionCode, 3=DataBytes, 4=data0, 5=data1, ..
|
- BYTE
|
Return
|
GetResponseInt
|
GetResponseInt
|
Reads a 16-bit value from the last received response. The Index parametes specifies the byte index of the value to read back.
|
- BYTE
|
Index
|
4=data0, 6=data1, 8=data2, ..
|
- UINT
|
Return
|
Initialise
|
Initialise
|
Starts up the UART to allow communications
|
- VOID
|
Return
|
ReadAnalogInput
|
ReadAnalogInput
|
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.
|
- 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
|
- BYTE
|
Return
|
ReadCoil
|
ReadCoil
|
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.
|
- 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
|
- BYTE
|
Return
|
ReadDigitalInput
|
ReadDigitalInput
|
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.
|
- 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
|
- BYTE
|
Return
|
ReadHoldingRegister
|
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.
|
- 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
|
- BYTE
|
Return
|
SetCoil
|
SetCoil
|
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.
|
- UINT
|
SlaveID
|
The ID of the MODBUS slave
|
- UINT
|
CoilAddress
|
Coil Address: 0=Coil1, 1=Coil2, 2=Coil3, ...
|
- BYTE
|
CoilState
|
0=Off, 1=On
|
- BYTE
|
Return
|
SetCoils
|
SetCoils
|
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.
|
- 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
|
- BYTE
|
CoilData
|
An array of bytes each containing 8 1-bit coil values
|
- BYTE
|
Return
|
SetHoldingRegister
|
SetHoldingRegister
|
This command writes the contents of a holding register at the location RegAddress. Returns 0 for success, 1 for CRC fail and 255 for no reply.
|
- UINT
|
SlaveID
|
The ID of the MODBUS slave
|
- UINT
|
RegAddress
|
Address: 0=40001, 1=40002, ...
|
- UINT
|
RegValue
|
Value to send to the selected register
|
- BYTE
|
Return
|
SetHoldingRegisters
|
SetHoldingRegisters
|
This command writes the contents of several 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.
|
- 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
|
- BYTE
|
Return
|
Property reference
|
Properties
|
|
UART Properties
|
|
Channel
|
UART Channel selector Software channels are bit banged using generic I/O pins but are not as reliable as hardware channels. Hardware channels use the selected peripheral on-board the target microcontroller.
|
|
TX
|
Pin to be used for Transmit data
|
|
RX
|
Pin to be used for Receive data
|
|
Baud Options
|
Baud rate option selector
|
|
Baud Rate
|
|
|
Bus
|
Specifies the bus mode being used, RS232 allows you to connect a single master node to a single slave node. RS485 allows you to connect a single master node to multiple slave nodes.
|
|
Modbus Properties
|
|
Frame Type
|
Switches between RTU and ASCII forms of Modbus
|
|
Receive Buffer Size
|
Maximum number of bytes the receive buffer can hold
|
|
Slave ID Bytes
|
Number of bytes used when passing a slave ID, usually 1 but sometimes 2
|
|
Silent Interval
|
Configures how much time to wait after each master modbus command before another command can be sent. A silent interval of 60ms minimum is required in order to guarentee successful reception of the next transmission. 0=No Delay 60 = 60mS - Default Range : 0 - 65535
|
|
UART Receive Timeout
|
Amount of time to wait before timing out when listening for a slave's response. Range: 0 - 255. 0 = Don't Wait 1 - 254 = X ms 255 = Wait Forever
|
|
Receive Timeout Count
|
Number of timeouts in a row to wait for until we decide the slave is not responding or finished responding to a message. Range: 0 - 255 0 = First Timeout Only 1 = First Timeout + 1 2 = First Timeout + 2
|
|
Simulation Properties
|
|
Label
|
A text label to appear on the Modbus panel object.
|
|
Scope Traces
|
Selects if the scope traces are automatically added to the data recorder window or not. Simulation - draws an approximation of the UART data onto the scope trace. ICT - sets up the scope trace for incoming data and adds UART packet decoding at the correct BAUD.
|
|
Console Data
|
Selects if the console data is automatically generated or not
|
|
Console Columns
|
Number of characters that can be displayed on a single line of the console.
|
|
Data Source
|
Simulation data source used to allow the component to connect to various remote devices Nothing - Simulation data is ignored COM port - Routes the communication data to and from a physical or virtual COM port API - Routes the communication data via a data API component on the Panel.
|
|
API
|
Selects which API component to route the communication data via. Add API components to the panel before they will be available in this list. API components are available from the Comms component category.
|