|  |   | 
| (6 intermediate revisions by the same user not shown) | 
| Line 16: | Line 16: | 
|  |  |  |  | 
|  | ==Component Source Code== |  | ==Component Source Code== | 
|  | + |  | 
|  | + | Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_Modbus_SCADA.fcsx FC_Comp_Source_Modbus_SCADA.fcsx] | 
|  |  |  |  | 
|  | Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_Modbus_SCADA.fcsx FC_Comp_Source_Modbus_SCADA.fcsx] |  | Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_Modbus_SCADA.fcsx FC_Comp_Source_Modbus_SCADA.fcsx] | 
|  |  |  |  | 
|  | ==Detailed description== |  | ==Detailed description== | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  |  |  |  | 
|  |  |  |  | 
| Line 40: | Line 48: | 
|  |  |  |  | 
|  | ==Examples== |  | ==Examples== | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  |  |  |  | 
|  |  |  |  | 
| Line 61: | Line 75: | 
|  |  |  |  | 
|  |  |  |  | 
| − | ==Macro reference==
 |  | 
|  |  |  |  | 
| − | {| 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;" | '''ReadHoldingRegister'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 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. 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | SlaveID
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | The ID of the MODBUS slave 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | RegAddress
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Address: 0=40001, 1=40002, ... 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | RegCount
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Number of consecutive registers to read, starting from RegAddress 
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
|  |  |  |  | 
|  |  |  |  | 
| − | {| 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;" | '''ReadCoil'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 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. 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | SlaveID
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | The ID of the MODBUS slave 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | CoilAddress
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Coil Address: 0=Coil1, 1=Coil2, 2=Coil3, ... 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | CoilCount
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Number of consecutive coils to try and read 
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
|  |  |  |  | 
|  |  |  |  | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  | + |  | 
|  | + | ==Macro reference== | 
|  | + |  | 
|  | + | ===ChangeFrameType=== | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
|  | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] |  | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetCoil''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ChangeFrameType''' | 
|  | |- |  | |- | 
| − | | colspan="2" | This command writes thecontents of a discrete coil at thelocation CoilAddress. Returns 0 for success, 1 for CRC fail and 255 for no reply.  | + | | colspan="2" | Default frame type is the type set in the component properties.  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | SlaveID
 |  | 
|  | |- |  | |- | 
| − | | colspan="2" | The ID of the MODBUS slave 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | CoilAddress
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Coil Address: 0=Coil1, 1=Coil2, 2=Coil3, ... 
 |  | 
|  | |- |  | |- | 
|  | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE |  | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | 
| − | | width="90%" | CoilState | + | | width="90%" | Type | 
|  | |- |  | |- | 
| − | | colspan="2" | 0=Off, 1=On  | + | | colspan="2" | 0 = Modbus RTU / 1 = Modbus ASCII  | 
|  | |- |  | |- | 
| − | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] -BYTE | + | | 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'' |  | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | 
|  | |} |  | |} | 
|  |  |  |  | 
|  |  |  |  | 
|  | + | ===GetResponse=== | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
| Line 160: | Line 120: | 
|  |  |  |  | 
|  |  |  |  | 
| − | {| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 | + | ===GetResponseByte=== | 
| − | |-
 |  | 
| − | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 |  | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetCoils'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 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. 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | SlaveID
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | The ID of the MODBUS slave 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | CoilAddress
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Coil Address: 0=Coil1, 1=Coil2, 2=Coil3, ... 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | CoilCount
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Number of consecutive coils to try and read 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 |  | 
| − | | width="90%" | CoilData
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | An array of bytes each containing 8 1-bit coil values 
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − |   |  | 
| − |   |  | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
| Line 211: | Line 139: | 
|  |  |  |  | 
|  |  |  |  | 
| − | {| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 | + | ===GetResponseInt=== | 
| − | |-
 |  | 
| − | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 |  | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ChangeFrameType'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Default frame type is the type set in the component properties. 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 |  | 
| − | | width="90%" | Type
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 0 = Modbus RTU / 1 = Modbus ASCII 
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − |   |  | 
| − |   |  | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
| Line 247: | Line 158: | 
|  |  |  |  | 
|  |  |  |  | 
|  | + | ===Initialise=== | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
|  | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] |  | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetHoldingRegisters''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise''' | 
|  | |- |  | |- | 
| − | | colspan="2" | This command writes thecontents of several holding registers starting at the location RegAddress through tolocation RegAddress + RegCount . Returns 0 for success, 1 for CRC fail and 255 for no reply.  | + | | colspan="2" | Starts up the UART to allow communications  | 
|  | |- |  | |- | 
|  | |- |  | |- | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 | + | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | 
| − | | width="90%" | SlaveID
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | The ID of the MODBUS slave 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | RegAddress
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Address: 0=40001, 1=40002, ... 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | RegCount
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Number of consecutive registers to write, starting from RegAddress 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | RegValue
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Array of values to send to the registers 
 |  | 
| − | |-
 |  | 
| − | | 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'' |  | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | 
|  | |} |  | |} | 
|  |  |  |  | 
|  |  |  |  | 
|  | + | ===ReadAnalogInput=== | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
| Line 308: | Line 201: | 
|  |  |  |  | 
|  |  |  |  | 
|  | + | ===ReadCoil=== | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
|  | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] |  | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetHoldingRegister''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadCoil''' | 
|  | |- |  | |- | 
| − | | colspan="2" | This command writes thecontents ofa holding register at thelocation RegAddress. Returns 0 for success, 1 for CRC fail and 255 for no reply.  | + | | colspan="2" | 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.  | 
|  | |- |  | |- | 
|  | |- |  | |- | 
| Line 322: | Line 216: | 
|  | |- |  | |- | 
|  | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT |  | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | 
| − | | width="90%" | RegAddress | + | | width="90%" | CoilAddress | 
|  | |- |  | |- | 
| − | | colspan="2" | Address: 0=40001, 1=40002, ...  | + | | colspan="2" | Coil Address: 0=Coil1, 1=Coil2, 2=Coil3, ...  | 
|  | |- |  | |- | 
|  | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT |  | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | 
| − | | width="90%" | RegValue | + | | width="90%" | CoilCount | 
|  | |- |  | |- | 
| − | | colspan="2" | Value tosend to the selected register  | + | | colspan="2" | Number of consecutive coils to try and read  | 
|  | |- |  | |- | 
|  | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE |  | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | 
| Line 336: | Line 230: | 
|  |  |  |  | 
|  |  |  |  | 
|  | + | ===ReadDigitalInput=== | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
| Line 364: | Line 259: | 
|  |  |  |  | 
|  |  |  |  | 
| − | {| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 | + | ===ReadHoldingRegister=== | 
| − | |-
 |  | 
| − | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 |  | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Starts up the UART to allow communications 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − |   |  | 
| − |   |  | 
| − |   |  | 
| − |   |  | 
| − | ==Property reference==
 |  | 
| − |   |  | 
| − | {| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
 |  | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties''' 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 |  | 
| − | | width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Modbus Properties
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 |  | 
| − | | width="90%" | Frame Type
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Switches between RTU and ASCII forms of Modbus 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 |  | 
| − | | width="90%" | Receive Buffer Size
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Maximum number of bytes the receive buffer can hold 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 |  | 
| − | | width="90%" | Slave ID Bytes
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Number of bytes used when passing a slave ID, usually 1 but sometimes 2 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 |  | 
| − | | width="90%" | Silent Interval
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 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 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 |  | 
| − | | width="90%" | UART Receive Timeout
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 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 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 |  | 
| − | | width="90%" | Receive Timeout Count
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 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 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 |  | 
| − | | width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Runtime Properties
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-10-icon.png]]
 |  | 
| − | | width="90%" | Label
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | A text label to appear on the Modbus panel object. 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-7-icon.png]]
 |  | 
| − | | width="90%" | Console Data
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Selects if the console data is automatically generated or not 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 |  | 
| − | | width="90%" | Console Columns
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Number of characters that can be displayed on a single line of the console. 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 |  | 
| − | | width="90%" | Data Source
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 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      Injector - Routes the communication data via a data injector component on the Panel. 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 |  | 
| − | | width="90%" | COM Port
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Lists all the current available COM port hardware on your PC. 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-7-icon.png]]
 |  | 
| − | | width="90%" | Refresh Ports
 |  | 
| − | |-
 |  | 
| − | | colspan="2" |  
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]]
 |  | 
| − | | width="90%" | Baud Rate
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | COM port data rate in bits per second 
 |  | 
| − | |}==Macro reference==
 |  | 
| − |   |  | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
| Line 489: | Line 288: | 
|  |  |  |  | 
|  |  |  |  | 
| − | {| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 | + | ===SetCoil=== | 
| − | |-
 |  | 
| − | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 |  | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadCoil'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 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. 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | SlaveID
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | The ID of the MODBUS slave 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | CoilAddress
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Coil Address: 0=Coil1, 1=Coil2, 2=Coil3, ... 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | CoilCount
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Number of consecutive coils to try and read 
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − |   |  | 
| − |   |  | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
| Line 545: | Line 317: | 
|  |  |  |  | 
|  |  |  |  | 
| − | {| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 | + | ===SetCoils=== | 
| − | |-
 |  | 
| − | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 |  | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetResponse'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 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 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − |   |  | 
| − |   |  | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
| Line 591: | Line 351: | 
|  |  |  |  | 
|  |  |  |  | 
|  | + | ===SetHoldingRegister=== | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
|  | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] |  | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetResponseByte''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetHoldingRegister''' | 
|  | |- |  | |- | 
| − | | colspan="2" | Reads a byte from the last received response. The Index parametes specifies which byte to read back.  
 | + | | colspan="2" | 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.  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 |  | 
| − | | width="90%" | Index
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 0=NumBytes, 1=SlaveAddress, 2=FunctionCode/ExceptionCode, 3=DataBytes, 4=data0, 5=data1, .. 
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − |   |  | 
| − |   |  | 
| − | {| 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;" | '''ChangeFrameType'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Default frame type is the type set in the component properties. 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 |  | 
| − | | width="90%" | Type
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 0 = Modbus RTU / 1 = Modbus ASCII 
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − |   |  | 
| − |   |  | 
| − | {| 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;" | '''GetResponseInt'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Reads a 16-bit value from the last received response.  The Index parametes specifies the byte index of the value to read back.  
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 |  | 
| − | | width="90%" | Index
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 4=data0, 6=data1, 8=data2, .. 
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − |   |  | 
| − |   |  | 
| − | {| 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;" | '''SetHoldingRegisters'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | This command writes the contents of several holdingregisters starting at the location RegAddressthrough to location RegAddress + RegCount . Returns 0 for success, 1 for CRC fail and 255 for no reply.  |  | 
|  | |- |  | |- | 
|  | |- |  | |- | 
| Line 662: | Line 369: | 
|  | |- |  | |- | 
|  | | colspan="2" | Address: 0=40001, 1=40002, ...  |  | | colspan="2" | Address: 0=40001, 1=40002, ...  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | RegCount
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Number of consecutive registers to write, starting from RegAddress 
 |  | 
|  | |- |  | |- | 
|  | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT |  | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | 
|  | | width="90%" | RegValue |  | | width="90%" | RegValue | 
|  | |- |  | |- | 
| − | | colspan="2" | Array of values to send to theregisters  | + | | colspan="2" | Value to send to the selected register  | 
|  | |- |  | |- | 
|  | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE |  | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | 
| Line 678: | Line 380: | 
|  |  |  |  | 
|  |  |  |  | 
|  | + | ===SetHoldingRegisters=== | 
|  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |  | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | 
|  | |- |  | |- | 
|  | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] |  | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | 
| − | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadAnalogInput''' | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetHoldingRegisters''' | 
|  | |- |  | |- | 
| − | | colspan="2" | This command requests theanalogue input register values startingfrom thestart RegAddressand going through to RegAddressplus RegCount. Returns 0 for success, 1 for CRC fail and 255 for no reply.  | + | | colspan="2" | 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.  | 
|  | |- |  | |- | 
|  | |- |  | |- | 
| Line 694: | Line 397: | 
|  | | width="90%" | RegAddress |  | | width="90%" | RegAddress | 
|  | |- |  | |- | 
| − | | colspan="2" | Input Address: 0=10001, 1=10002, 2=10003, ...  | + | | colspan="2" | Address: 0=40001, 1=40002, ...  | 
|  | |- |  | |- | 
|  | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT |  | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | 
|  | | width="90%" | RegCount |  | | width="90%" | RegCount | 
|  | |- |  | |- | 
| − | | colspan="2" | Number of consecutive inputs toread, starting from RegAddress  | + | | colspan="2" | Number of consecutive registers to write, starting from RegAddress  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − |   |  | 
| − |   |  | 
| − | {| 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" | 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. 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | SlaveID
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | The ID of the MODBUS slave 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | RegAddress
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Address: 0=40001, 1=40002, ... 
 |  | 
|  | |- |  | |- | 
|  | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT |  | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT | 
|  | | width="90%" | RegValue |  | | width="90%" | RegValue | 
|  | |- |  | |- | 
| − | | colspan="2" | Value to send to theselected register  | + | | colspan="2" | Array of values to send to the registers  | 
|  | |- |  | |- | 
|  | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE |  | | 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'' |  | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | 
|  | |} |  | |} | 
| − | 
 |  | 
| − | 
 |  | 
| − | {| 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;" | '''ReadDigitalInput'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | 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. 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | SlaveID
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | The ID of the MODBUS slave 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | DataAddress
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Input Address: 0=10001, 1=10002, 2=10003, ... 
 |  | 
| − | |-
 |  | 
| − | | width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
 |  | 
| − | | width="90%" | DataCount
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Number of consecutive inputs to read, starting from RegAddress 
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | {| 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;" | '''Initialise'''
 |  | 
| − | |-
 |  | 
| − | | colspan="2" | Starts up the UART to allow communications 
 |  | 
| − | |-
 |  | 
| − | |-
 |  | 
| − | | 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''
 |  | 
| − | |}
 |  | 
| − | 
 |  | 
| − | 
 |  | 
|  |  |  |  | 
|  |  |  |  |