Difference between revisions of "Component: Modbus Master (Comms: System)"

From Flowcode Help
Jump to navigationJump to search
(XML import BR)
Line 7: Line 7:
 
|-
 
|-
 
| width="20%" style="color: gray;" | Version
 
| width="20%" style="color: gray;" | Version
| 1.2 (Release)
+
| 1.3 (Release)
 
|-
 
|-
 
| width="20%" style="color: gray;" | Category
 
| width="20%" style="color: gray;" | Category
Line 19: Line 19:
  
 
==Examples==
 
==Examples==
 
 
Example to talk to a CT-2EA Modbus Electronic kWh Meter
 
Example to talk to a CT-2EA Modbus Electronic kWh Meter
 
{{Fcfile|ModbusDemo.fcfx|ModbusDemo}}
 
{{Fcfile|ModbusDemo.fcfx|ModbusDemo}}
Line 30: Line 29:
  
 
[[File:ModbusConsole.jpg]]
 
[[File:ModbusConsole.jpg]]
 
 
  
 
==Downloadable macro reference==
 
==Downloadable macro reference==
Line 50: Line 47:
 
:[[Variable Types|UINT]] ''RegCount''
 
:[[Variable Types|UINT]] ''RegCount''
 
::Number of consecutive registers to read, starting from RegAddress
 
::Number of consecutive registers to read, starting from RegAddress
 +
 +
 +
'''Return value'''
 +
 +
:[[Variable Types|BYTE]]
 +
 +
 +
===<span style="font-weight: normal;"><u><tt>ForceMultipleCoils</tt></u></span>===
 +
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'''
 +
 +
:[[Variable Types|UINT]] ''SlaveID''
 +
::The ID of the MODBUS slave
 +
 +
:[[Variable Types|UINT]] ''CoilAddress''
 +
::Coil Address: 0=Coil1, 1=Coil2, 2=Coil3, ...
 +
 +
:[[Variable Types|UINT]] ''CoilCount''
 +
::Number of consecutive coils to try and read
 +
 +
:[[Variable Types|BYTE]] ''CoilData''
 +
::An array of bytes each containing 8 1-bit coil values
  
  
Line 292: Line 314:
  
 
Number of bytes used when passing a slave ID, usually 1 but sometimes 2
 
Number of bytes used when passing a slave ID, usually 1 but sometimes 2
 +
 +
<span style="font-weight: normal;"><u>Silent Interval</u></span>
 +
 +
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''SilentInterval''.
 +
 +
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
 +
 +
<span style="font-weight: normal;"><u>UART Receive Timeout</u></span>
 +
 +
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''RXTOUT''.
 +
 +
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
 +
 +
<span style="font-weight: normal;"><u>Receive Timeout Count</u></span>
 +
 +
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''TOUTCNT''.
 +
 +
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
  
 
<span style="font-weight: normal;"><u>Label</u></span>
 
<span style="font-weight: normal;"><u>Label</u></span>

Revision as of 15:46, 16 February 2017


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


Image Modbus Master component

Modbus component for talking to Modbus compatible hardware via RS232 or RS485.

Examples

Example to talk to a CT-2EA Modbus Electronic kWh Meter FC6 Icon.png ModbusDemo Setup to communicate via Embedded UART1 or Simulated COM3

ModbusConns.jpg


Console data generated by the working example running in the simulation and communicating via the COM port.

ModbusConsole.jpg

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

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


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

UINT 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


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

Parameters

This macro has no parameters


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


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


Initialise

Starts up the UART to allow communications

Parameters

This macro has no parameters


Return value

This call does not return a value


Simulation macro reference

This component does not contain any simulation macros


Property reference

Channel

This property is of type Fixed list of ints and can be referenced with the variable name CHANNEL.

UART channel to specify a software channel or an onboard hardware channel

TX

This property is of type Single digital pin and can be referenced with the variable name TX.

UART transmit pin

RX

This property is of type Single digital pin and can be referenced with the variable name RX.

UART receive pin

Baud Rate

This property is of type Fixed list of ints and can be referenced with the variable name BAUD_LIST.

Data rate in bits per second

Bus

This property is of type Fixed list of ints and can be referenced with the variable name BusType.

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.

Frame Type

This property is of type Fixed list of ints and can be referenced with the variable name FrameType.

Switches between RTU and ASCII forms of Modbus

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

Slave ID Bytes

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

Number of bytes used when passing a slave ID, usually 1 but sometimes 2

Silent Interval

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

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

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

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

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

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

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.

Data Source

This property is of type Fixed list of ints and can be referenced with the variable name DataSource.

Simulation data source used to allow the component to connect to COM port hardware or the the data injector components.

COM Port

This property is of type Fixed list of ints and can be referenced with the variable name COM_port.

COM port assigned to allow the simulation to communicate with actual Modbus hardware.