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

From Flowcode Help
Jump to navigationJump to search
(XML import)
 
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
+
{| style="width:50%"
 
 
{| width="50%"
 
 
|-
 
|-
| width="20%" style="color: gray;" | Author
+
| width="20%" style="color:gray;" | Author
 
| Matrix Ltd.
 
| Matrix Ltd.
 
|-
 
|-
| width="20%" style="color: gray;" | Version
+
| width="20%" style="color:gray;" | Version
| 2.0 (Release)
+
| 2.1
 
|-
 
|-
| width="20%" style="color: gray;" | Category
+
| width="20%" style="color:gray;" | Category
 
| Comms: System
 
| Comms: System
 
|}
 
|}
  
  
 +
==Modbus TCP Slave component==
 +
Modbus component for creating Modbus compatible slave hardware via Ethernet or WIFI. Ensure TCP/IP or WIFI component is initialised and connected to a network before calling the ModbusSlaveTCP component macros.
  
==[[File:Component Icon 1ecb9b0a_53e7_45c9_ab6f_7a0d4a0c47e1.png|Image]] Modbus TCP Slave component==
+
==Component Pack==
Modbus component for creating Modbus compatible slave hardware via Ethernet or WIFI.
 
Ensure TCP/IP or WIFI component is intialised and connected to a network before calling the ModbusSlaveTCP component macros.
 
  
 +
COMMSC
  
==Examples==
+
==Detailed description==
''<span style="color:red;">No additional examples</span>''
 
  
  
==Downloadable macro reference==
 
  
===<span style="font-weight: normal;"><u><tt>ReadHoldingRegister</tt></u></span>===
 
Reads the value of a single holding register.
 
  
'''Parameters'''
 
  
:[[Variable Types|UINT]] ''Address''
+
''No detailed description exists yet for this component''
::Coil Address
 
  
 +
==Examples==
  
'''Return value'''
 
  
:[[Variable Types|UINT]]
 
  
  
===<span style="font-weight: normal;"><u><tt>ReadCoilStates</tt></u></span>===
 
Reads the state of a single digital coil.
 
  
Can pack a max of 8-bits together in a single operation
+
''<span style="color:red;">No additional examples</span>''
  
'''Parameters'''
+
==Downloadable macro reference==
  
:[[Variable Types|UINT]] ''StartAddress''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
::Coil Address Range 0 to (NumCoils - 1)
+
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadHoldingRegister'''
 +
|-
 +
| colspan="2" | Reads the value of a single holding register.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Address
 +
|-
 +
| colspan="2" | Coil Address&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
:[[Variable Types|BYTE]] ''AddressCount''
 
::Range 1-8
 
  
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetCoil'''
 +
|-
 +
| colspan="2" | Sets the state of a single digital coil.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Address
 +
|-
 +
| colspan="2" | Coil Address&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | State
 +
|-
 +
| colspan="2" | 0=off, 1=on&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
'''Return value'''
 
  
:[[Variable Types|BYTE]]
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetDigitalInput'''
 +
|-
 +
| colspan="2" | Sets the state of a single digital input.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Address
 +
|-
 +
| colspan="2" | Coil Address&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | State
 +
|-
 +
| colspan="2" | 0=off, 1=on&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
  
===<span style="font-weight: normal;"><u><tt>ReadAnalogueInput</tt></u></span>===
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
Reads the value of a single analogue input.
+
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetSlaveAddress'''
 +
|-
 +
| colspan="2" | Allows the slave address to be overridden from the default slave address specified in the component property. The number of bytes used for the address is fixed by the Slave ID Bytes property to save on RAM usage.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | SlaveAddress
 +
|-
 +
| colspan="2" | &nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
'''Parameters'''
 
  
:[[Variable Types|UINT]] ''Address''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
::Coil Address
+
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadCoils'''
 +
|-
 +
| colspan="2" | Reads the state of a single digital coil. Can pack a max of 8-bits together in a single operation&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | StartAddress
 +
|-
 +
| colspan="2" | Coil Address Range 0 to (NumCoils - 1)&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | AddressCount
 +
|-
 +
| colspan="2" | Range 1-8&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
  
'''Return value'''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetHoldingRegister'''
 +
|-
 +
| colspan="2" | Sets the state of a single holding register.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Address
 +
|-
 +
| colspan="2" | Coil Address&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Value
 +
|-
 +
| colspan="2" | Analogue Value range 0 - 65535&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
:[[Variable Types|UINT]]
 
  
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadAnalogInput'''
 +
|-
 +
| colspan="2" | Reads the value of a single analogue input.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Address
 +
|-
 +
| colspan="2" | Coil Address&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
===<span style="font-weight: normal;"><u><tt>ReadInputStates</tt></u></span>===
 
Reads the state of a single digital input.
 
  
Can pack a max of 8-bits together in a single operation
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CheckForIncoming'''
 +
|-
 +
| colspan="2" | Checks for an incoming message and if the data address is within range then also automatically replies with the correct reply. Returns 0 if no comms received, 1 for a succesful transaction, 255 for an error.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
'''Parameters'''
 
  
:[[Variable Types|UINT]] ''StartAddress''
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
::Coil Address Range 0 to (NumCoils - 1)
+
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadDigitalInputs'''
 +
|-
 +
| colspan="2" | Reads the state of a single digital input. Can pack a max of 8-bits together in a single operation&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | StartAddress
 +
|-
 +
| colspan="2" | Coil Address Range 0 to (NumCoils - 1)&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | AddressCount
 +
|-
 +
| colspan="2" | Range 1-8&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
:[[Variable Types|BYTE]] ''AddressCount''
 
::Range 1-8
 
  
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetLastIncoming'''
 +
|-
 +
| colspan="2" | Gets a value from the last incoming command. Index 0 = 0 Read / 1 Write Index 1 = 0 Coils / 1 DigInput / 2 AnInput / 3 Register Index 2 = Address  Index 3 = Number&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Index
 +
|-
 +
| colspan="2" | Range: 0-3&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
'''Return value'''
 
  
:[[Variable Types|BYTE]]
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetAnalogInput'''
 +
|-
 +
| colspan="2" | Sets the state of a single analogue input.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Address
 +
|-
 +
| colspan="2" | Coil Address&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 +
| width="90%" | Value
 +
|-
 +
| colspan="2" | Analogue Value range 0 - 65535&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
  
===<span style="font-weight: normal;"><u><tt>SetSlaveAddress</tt></u></span>===
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
Allows the slave address to be overridden from the default slave address specified
+
|-
 
+
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
in the component property. The number of bytes used for the address is fixed by the
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
 
+
|-
Slave ID Bytes property to save on RAM usage.
+
| colspan="2" | Starts up the UART to allow communications and initialises the states of the various  Modbus Coils, Inputs and Registers to 0.&nbsp;
 
+
|-
'''Parameters'''
+
|-
 
+
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
:[[Variable Types|UINT]] ''SlaveAddress''
+
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 
+
|}
 
 
'''Return value'''
 
 
 
:''This call does not return a value''
 
 
 
 
 
===<span style="font-weight: normal;"><u><tt>SetCoilState</tt></u></span>===
 
Sets the state of a single digital coil.
 
 
 
'''Parameters'''
 
 
 
:[[Variable Types|UINT]] ''Address''
 
::Coil Address
 
 
 
:[[Variable Types|BYTE]] ''State''
 
::0=off, 1=on
 
 
 
 
 
'''Return value'''
 
 
 
:''This call does not return a value''
 
 
 
 
 
===<span style="font-weight: normal;"><u><tt>SetInputState</tt></u></span>===
 
Sets the state of a single digital input.
 
 
 
'''Parameters'''
 
 
 
:[[Variable Types|UINT]] ''Address''
 
::Coil Address
 
 
 
:[[Variable Types|BYTE]] ''State''
 
::0=off, 1=on
 
 
 
 
 
'''Return value'''
 
 
 
:''This call does not return a value''
 
 
 
 
 
===<span style="font-weight: normal;"><u><tt>SetHoldingRegister</tt></u></span>===
 
Sets the state of a single holding register.
 
 
 
'''Parameters'''
 
 
 
:[[Variable Types|UINT]] ''Address''
 
::Coil Address
 
 
 
:[[Variable Types|UINT]] ''Value''
 
::Analogue Value range 0 - 65535
 
 
 
 
 
'''Return value'''
 
 
 
:''This call does not return a value''
 
 
 
 
 
===<span style="font-weight: normal;"><u><tt>CheckForIncoming</tt></u></span>===
 
Checks for an incoming message and if the data address is within range then also automatically replies with the correct reply.
 
 
 
Returns 0 if no comms received, 1 for a succesful transaction, 255 for an error.
 
 
 
'''Parameters'''
 
 
 
:''This macro has no parameters''
 
 
 
 
 
'''Return value'''
 
 
 
:[[Variable Types|BYTE]]
 
 
 
 
 
===<span style="font-weight: normal;"><u><tt>SetAnalogueInput</tt></u></span>===
 
Sets the state of a single analogue input.
 
 
 
'''Parameters'''
 
 
 
:[[Variable Types|UINT]] ''Address''
 
::Coil Address
 
 
 
:[[Variable Types|UINT]] ''Value''
 
::Analogue Value range 0 - 65535
 
 
 
 
 
'''Return value'''
 
 
 
:''This call does not return a value''
 
 
 
  
===<span style="font-weight: normal;"><u><tt>Initialise</tt></u></span>===
 
Starts up the UART to allow communications and initialises the states of the various
 
  
Modbus Coils, Inputs and Registers to 0.
 
 
'''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==
 
==Property reference==
<span style="font-weight: normal;"><u>TCP/IP Component</u></span>
 
  
This property is of type ''Panel object'' and can be referenced with the variable name ''NetworkComms1::Component''.
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
+
|-
Property to point to the TCP/IP or WIFI component you want to use.
+
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
 
+
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''  
If unconnected then default to simulated TCP/IP network communications using the PC network adapter.
+
|-
 
+
|-
<span style="font-weight: normal;"><u>Status</u></span>
+
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 
+
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Modbus TCP/IP Properties
This property is of type ''Line of text'' and can be referenced with the variable name ''NetworkComms1::Status''.
+
|-
 
+
|-
''<span style="color:red;">No additional information</span>''
+
| width="10%" align="center" | [[File:Fc9-type-17-icon.png]]
 
+
| width="90%" | Network Comms Component
 
+
|-
 
+
| colspan="2" | Redirects communications via the selected component allowing different TCP/IP modules with different macros to work.&nbsp;
<span style="font-weight: normal;"><u>TCP/IP Port</u></span>
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-10-icon.png]]
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''Port''.
+
| width="90%" | Status
 
+
|-
Port used for network communications
+
| colspan="2" | Shows the state of the network comms component to verify everything is configured correctly.&nbsp;
 
+
|-
Range: 0-65535
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 
+
| width="90%" | TCP/IP Port
<span style="font-weight: normal;"><u>Receive Buffer Size</u></span>
+
|-
 
+
| colspan="2" | Port used for network communications Range: 0-65535&nbsp;
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''ReceiveBufferSize''.
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
Maximum number of bytes the receive buffer can hold
+
| width="90%" | Receive Buffer Size
 
+
|-
<span style="font-weight: normal;"><u>Slave Address</u></span>
+
| colspan="2" | Maximum number of bytes the receive buffer can hold&nbsp;
 
+
|-
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''SlaveAddress''.
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 
+
| width="90%" | Receive Timeout
''<span style="color:red;">No additional information</span>''
+
|-
 
+
| colspan="2" | Maximum time to wait for reply, in mS&nbsp;
 
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
<span style="font-weight: normal;"><u>Reply Delay</u></span>
+
| width="90%" | Slave Address
 
+
|-
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''ReplyDelay''.
+
| colspan="2" | Address of the slave. Range: 0-255&nbsp;
 
+
|-
Delay in micro seconds to wait before transmitting a reply
+
| width="10%" align="center" | [[File:Fc9-type-7-icon.png]]
 
+
| width="90%" | Maintain Stats
<span style="font-weight: normal;"><u>BaudByteDelay</u></span>
+
|-
 
+
| colspan="2" | Controls if the last command from the master is logged allowing for easier value updates. No - Do not log commands Yes - Commands are logged and available via the GetLastIncoming macro&nbsp;
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''BaudByteDelay''.
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-7-icon.png]]
''<span style="color:red;">No additional information</span>''
+
| width="90%" | Open and Close Socket
 
+
|-
 
+
| colspan="2" | &nbsp;
 
+
|-
<span style="font-weight: normal;"><u>Label</u></span>
+
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 
+
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Simulation Properties
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.
+
| width="10%" align="center" | [[File:Fc9-type-10-icon.png]]
 
+
| width="90%" | Label
<span style="font-weight: normal;"><u>Starting Address</u></span>
+
|-
 
+
| colspan="2" | A text label to appear on the Modbus panel object.&nbsp;
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''StartAdrCoil''.
+
|-
 
+
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
Start address of the Modbus coils. Referenced from 0.
+
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Modbus Coils - Single bit values
 
+
|-
For example  
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
Slave 1 might have 100 coils addressed 0-99 Start Address = 0
+
| width="90%" | Starting Address
 
+
|-
Slave 2 might have 100 coils addressed 100-199 Start Address = 100
+
| colspan="2" | Start address of the Modbus coils. Referenced from 0. For example Slave 1 might have 100 coils addressed 0-99 Start Address = 0 Slave 2 might have 100 coils addressed 100-199 Start Address = 100&nbsp;
 
+
|-
<span style="font-weight: normal;"><u>Number of Addresses</u></span>
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 
+
| width="90%" | Number of Addresses
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''NumAdrCoil''.
+
|-
 
+
| colspan="2" | Specifies how many Coils are available on the slave. Each address consumes a single bit of RAM, 8 Addresses are packed together into a single RAM Byte.&nbsp;
Specifies how many Coils are available on the slave.
+
|-
 
+
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
Each address consumes a single bit of RAM, 8 Addresses are packed together into a single RAM Byte.
+
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Digital Inputs - Single bit values
 
+
|-
<span style="font-weight: normal;"><u>Starting Address</u></span>
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''StartAdrDI''.
+
| width="90%" | Starting Address
 
+
|-
Start address of the Modbus digital inputs. Referenced from 0.
+
| colspan="2" | Start address of the Modbus digital inputs. Referenced from 0. For example Slave 1 might have 100 inputs addressed 0-99 Start Address = 0 Slave 2 might have 100 inputs addressed 100-199 Start Address = 100&nbsp;
 
+
|-
For example  
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 
+
| width="90%" | Number of Addresses
Slave 1 might have 100 inputs addressed 0-99 Start Address = 0
+
|-
 
+
| colspan="2" | Specifies how many Digital Inputs are available on the slave. Each address consumes a single bit of RAM, 8 Addresses are packed together into a single RAM Byte.&nbsp;
Slave 2 might have 100 inputs addressed 100-199 Start Address = 100
+
|-
 
+
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
<span style="font-weight: normal;"><u>Number of Addresses</u></span>
+
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Analog Inputs - 16-bit values
 
+
|-
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''NumAdrDI''.
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
Specifies how many Digital Inputs are available on the slave.
+
| width="90%" | Starting Address
 
+
|-
Each address consumes a single bit of RAM, 8 Addresses are packed together into a single RAM Byte.
+
| colspan="2" | Start address of the Modbus analogue inputs. Referenced from 0. For example Slave 1 might have 100 inputs addressed 0-99 Start Address = 0 Slave 2 might have 100 inputs addressed 100-199 Start Address = 100&nbsp;
 
+
|-
<span style="font-weight: normal;"><u>Starting Address</u></span>
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 
+
| width="90%" | Number of Addresses
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''StartAdrAI''.
+
|-
 
+
| colspan="2" | Specifies how many 16-bit analogue inputs are available on the slave. Each address consumes two RAM Bytes.&nbsp;
Start address of the Modbus analogue inputs. Referenced from 0.
+
|-
 
+
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
For example  
+
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Holding Registers - 16-bit values
 
+
|-
Slave 1 might have 100 inputs addressed 0-99 Start Address = 0
+
|-
 
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
Slave 2 might have 100 inputs addressed 100-199 Start Address = 100
+
| width="90%" | Starting Address
 
+
|-
<span style="font-weight: normal;"><u>Number of Addresses</u></span>
+
| colspan="2" | Start address of the Modbus registers. Referenced from 0. For example Slave 1 might have 100 registers addressed 0-99 Start Address = 0 Slave 2 might have 100 registers addressed 100-199 Start Address = 100&nbsp;
 
+
|-
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''NumAdrAI''.
+
| width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 
+
| width="90%" | Number of Addresses
Specifies how many 16-bit analogue inputs are available on the slave.
+
|-
 
+
| colspan="2" | Specifies how many 16-bit holding registers are available on the slave. Each address consumes two RAM Bytes.&nbsp;
Each address consumes two RAM Bytes.
+
|}
 
 
<span style="font-weight: normal;"><u>Starting Address</u></span>
 
 
 
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''StartAdrReg''.
 
 
 
Start address of the Modbus registers. Referenced from 0.
 
 
 
For example  
 
 
 
Slave 1 might have 100 registers addressed 0-99 Start Address = 0
 
 
 
Slave 2 might have 100 registers addressed 100-199 Start Address = 100
 
 
 
<span style="font-weight: normal;"><u>Number of Addresses</u></span>
 
 
 
This property is of type ''Unsigned integer'' and can be referenced with the variable name ''NumAdrReg''.
 
 
 
Specifies how many 16-bit holding registers are available on the slave.
 
 
 
Each address consumes two RAM Bytes.
 

Latest revision as of 17:21, 9 November 2022

Author Matrix Ltd.
Version 2.1
Category Comms: System


Modbus TCP Slave component

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

Component Pack

COMMSC

Detailed description

No detailed description exists yet for this component

Examples

No additional examples

Downloadable macro reference

Fc9-comp-macro.png ReadHoldingRegister
Reads the value of a single holding register. 
Fc9-u16-icon.png - UINT Address
Coil Address 
Fc9-u16-icon.png - UINT Return


Fc9-comp-macro.png SetCoil
Sets the state of a single digital coil. 
Fc9-u16-icon.png - UINT Address
Coil Address 
Fc9-u8-icon.png - BYTE State
0=off, 1=on 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png SetDigitalInput
Sets the state of a single digital input. 
Fc9-u16-icon.png - UINT Address
Coil Address 
Fc9-u8-icon.png - BYTE State
0=off, 1=on 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png SetSlaveAddress
Allows the slave address to be overridden from the default slave address specified in the component property. The number of bytes used for the address is fixed by the Slave ID Bytes property to save on RAM usage. 
Fc9-u16-icon.png - UINT SlaveAddress
 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png ReadCoils
Reads the state of a single digital coil. Can pack a max of 8-bits together in a single operation 
Fc9-u16-icon.png - UINT StartAddress
Coil Address Range 0 to (NumCoils - 1) 
Fc9-u8-icon.png - BYTE AddressCount
Range 1-8 
Fc9-u8-icon.png - BYTE Return


Fc9-comp-macro.png SetHoldingRegister
Sets the state of a single holding register. 
Fc9-u16-icon.png - UINT Address
Coil Address 
Fc9-u16-icon.png - UINT Value
Analogue Value range 0 - 65535 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png ReadAnalogInput
Reads the value of a single analogue input. 
Fc9-u16-icon.png - UINT Address
Coil Address 
Fc9-u16-icon.png - UINT Return


Fc9-comp-macro.png CheckForIncoming
Checks for an incoming message and if the data address is within range then also automatically replies with the correct reply. Returns 0 if no comms received, 1 for a succesful transaction, 255 for an error. 
Fc9-u8-icon.png - BYTE Return


Fc9-comp-macro.png ReadDigitalInputs
Reads the state of a single digital input. Can pack a max of 8-bits together in a single operation 
Fc9-u16-icon.png - UINT StartAddress
Coil Address Range 0 to (NumCoils - 1) 
Fc9-u8-icon.png - BYTE AddressCount
Range 1-8 
Fc9-u8-icon.png - BYTE Return


Fc9-comp-macro.png GetLastIncoming
Gets a value from the last incoming command. Index 0 = 0 Read / 1 Write Index 1 = 0 Coils / 1 DigInput / 2 AnInput / 3 Register Index 2 = Address Index 3 = Number 
Fc9-u8-icon.png - BYTE Index
Range: 0-3 
Fc9-u16-icon.png - UINT Return


Fc9-comp-macro.png SetAnalogInput
Sets the state of a single analogue input. 
Fc9-u16-icon.png - UINT Address
Coil Address 
Fc9-u16-icon.png - UINT Value
Analogue Value range 0 - 65535 
Fc9-void-icon.png - VOID Return


Fc9-comp-macro.png Initialise
Starts up the UART to allow communications and initialises the states of the various Modbus Coils, Inputs and Registers to 0. 
Fc9-void-icon.png - VOID Return



Property reference

Fc9-prop-icon.png Properties
Fc9-conn-icon.png Modbus TCP/IP Properties
Fc9-type-17-icon.png Network Comms Component
Redirects communications via the selected component allowing different TCP/IP modules with different macros to work. 
Fc9-type-10-icon.png Status
Shows the state of the network comms component to verify everything is configured correctly. 
Fc9-type-21-icon.png TCP/IP Port
Port used for network communications Range: 0-65535 
Fc9-type-21-icon.png Receive Buffer Size
Maximum number of bytes the receive buffer can hold 
Fc9-type-21-icon.png Receive Timeout
Maximum time to wait for reply, in mS 
Fc9-type-21-icon.png Slave Address
Address of the slave. Range: 0-255 
Fc9-type-7-icon.png Maintain Stats
Controls if the last command from the master is logged allowing for easier value updates. No - Do not log commands Yes - Commands are logged and available via the GetLastIncoming macro 
Fc9-type-7-icon.png Open and Close Socket
 
Fc9-conn-icon.png Simulation Properties
Fc9-type-10-icon.png Label
A text label to appear on the Modbus panel object. 
Fc9-conn-icon.png Modbus Coils - Single bit values
Fc9-type-21-icon.png Starting Address
Start address of the Modbus coils. Referenced from 0. For example Slave 1 might have 100 coils addressed 0-99 Start Address = 0 Slave 2 might have 100 coils addressed 100-199 Start Address = 100 
Fc9-type-21-icon.png Number of Addresses
Specifies how many Coils are available on the slave. Each address consumes a single bit of RAM, 8 Addresses are packed together into a single RAM Byte. 
Fc9-conn-icon.png Digital Inputs - Single bit values
Fc9-type-21-icon.png Starting Address
Start address of the Modbus digital inputs. Referenced from 0. For example Slave 1 might have 100 inputs addressed 0-99 Start Address = 0 Slave 2 might have 100 inputs addressed 100-199 Start Address = 100 
Fc9-type-21-icon.png Number of Addresses
Specifies how many Digital Inputs are available on the slave. Each address consumes a single bit of RAM, 8 Addresses are packed together into a single RAM Byte. 
Fc9-conn-icon.png Analog Inputs - 16-bit values
Fc9-type-21-icon.png Starting Address
Start address of the Modbus analogue inputs. Referenced from 0. For example Slave 1 might have 100 inputs addressed 0-99 Start Address = 0 Slave 2 might have 100 inputs addressed 100-199 Start Address = 100 
Fc9-type-21-icon.png Number of Addresses
Specifies how many 16-bit analogue inputs are available on the slave. Each address consumes two RAM Bytes. 
Fc9-conn-icon.png Holding Registers - 16-bit values
Fc9-type-21-icon.png Starting Address
Start address of the Modbus registers. Referenced from 0. For example Slave 1 might have 100 registers addressed 0-99 Start Address = 0 Slave 2 might have 100 registers addressed 100-199 Start Address = 100 
Fc9-type-21-icon.png Number of Addresses
Specifies how many 16-bit holding registers are available on the slave. Each address consumes two RAM Bytes.