Component: Modbus Slave (SCADA) (Comms: System): Difference between revisions
Appearance
No edit summary |
m Text replacement - "style="background-color:#EAE1EA;"" to "class="mtx-class-propfolder"" |
||
| (5 intermediate revisions by the same user not shown) | |||
| Line 90: | Line 90: | ||
===ChangeFrameType=== | ===ChangeFrameType=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ChangeFrameType''' | ||
|- | |- | ||
| colspan="2" | Default frame type is the type set in the component properties. | | colspan="2" | Default frame type is the type set in the component properties. | ||
| Line 109: | Line 109: | ||
===CheckForIncoming=== | ===CheckForIncoming=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''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. | | 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. | ||
| Line 123: | Line 123: | ||
===GetLastIncoming=== | ===GetLastIncoming=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''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 | | 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 | ||
| Line 142: | Line 142: | ||
===Initialise=== | ===Initialise=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Initialise''' | ||
|- | |- | ||
| colspan="2" | Starts up the UART to allow communications and initialises the states of the various Modbus Coils, Inputs and Registers to 0. | | colspan="2" | Starts up the UART to allow communications and initialises the states of the various Modbus Coils, Inputs and Registers to 0. | ||
| Line 156: | Line 156: | ||
===ReadAnalogInput=== | ===ReadAnalogInput=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadAnalogInput''' | ||
|- | |- | ||
| colspan="2" | Reads the value of a single analogue input. | | colspan="2" | Reads the value of a single analogue input. | ||
| Line 175: | Line 175: | ||
===ReadCoils=== | ===ReadCoils=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadCoils''' | ||
|- | |- | ||
| colspan="2" | Reads the state of up to eight digital coils. Can pack a max of 8-bits together in a single operation | | colspan="2" | Reads the state of up to eight digital coils. Can pack a max of 8-bits together in a single operation | ||
| Line 199: | Line 199: | ||
===ReadDigitalInputs=== | ===ReadDigitalInputs=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadDigitalInputs''' | ||
|- | |- | ||
| colspan="2" | Reads the state of up to eight digital inputs. Can pack a max of 8-bits together in a single operation | | colspan="2" | Reads the state of up to eight digital inputs. Can pack a max of 8-bits together in a single operation | ||
| Line 223: | Line 223: | ||
===ReadHoldingRegister=== | ===ReadHoldingRegister=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''ReadHoldingRegister''' | ||
|- | |- | ||
| colspan="2" | Reads the value of a single holding register. | | colspan="2" | Reads the value of a single holding register. | ||
| Line 242: | Line 242: | ||
===SetAnalogInput=== | ===SetAnalogInput=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''SetAnalogInput''' | ||
|- | |- | ||
| colspan="2" | Sets the state of a single analogue input. | | colspan="2" | Sets the state of a single analogue input. | ||
| Line 266: | Line 266: | ||
===SetCoil=== | ===SetCoil=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''SetCoil''' | ||
|- | |- | ||
| colspan="2" | Sets the state of a single digital coil. | | colspan="2" | Sets the state of a single digital coil. | ||
| Line 290: | Line 290: | ||
===SetDigitalInput=== | ===SetDigitalInput=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''SetDigitalInput''' | ||
|- | |- | ||
| colspan="2" | Sets the state of a single digital input. | | colspan="2" | Sets the state of a single digital input. | ||
| Line 314: | Line 314: | ||
===SetHoldingRegister=== | ===SetHoldingRegister=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''SetHoldingRegister''' | ||
|- | |- | ||
| colspan="2" | Sets the state of a single holding register. | | colspan="2" | Sets the state of a single holding register. | ||
| Line 338: | Line 338: | ||
===SetSlaveAddress=== | ===SetSlaveAddress=== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''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. | | 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. | ||
| Line 358: | Line 358: | ||
==Property reference== | ==Property reference== | ||
{| class="wikitable | {| class="mtx-class-macrotable wikitable" | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-prop-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-macrohead" | '''Properties''' | ||
|- | |- | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | Modbus Properties | ||
|- | |- | ||
|- | |- | ||
| Line 403: | Line 403: | ||
| 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 | | 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 | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | Runtime Properties | ||
|- | |- | ||
|- | |- | ||
| Line 442: | Line 442: | ||
| colspan="2" | COM port data rate in bits per second | | colspan="2" | COM port data rate in bits per second | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | Modbus Coils - Single bit values | ||
|- | |- | ||
|- | |- | ||
| Line 456: | Line 456: | ||
| 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. | | 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. | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | Digital Inputs - Single bit values | ||
|- | |- | ||
|- | |- | ||
| Line 470: | Line 470: | ||
| 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. | | 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. | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | Analog Inputs - 16-bit values | ||
|- | |- | ||
|- | |- | ||
| Line 484: | Line 484: | ||
| colspan="2" | Specifies how many 16-bit analogue inputs are available on the slave. Each address consumes two RAM Bytes. | | colspan="2" | Specifies how many 16-bit analogue inputs are available on the slave. Each address consumes two RAM Bytes. | ||
|- | |- | ||
| width="10%" align="center" | | width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]] | ||
| width="90%" | | width="90%" class="mtx-class-propfolder" | Holding Registers - 16-bit values | ||
|- | |- | ||
|- | |- | ||
Latest revision as of 14:36, 13 July 2026
| Author | Matrix TSL |
| Version | 1.0 |
| Category | Comms: System |
Modbus Slave (SCADA) component
Modbus component for creating Modbus compatible slave hardware via RS232 or RS485.
Component Source Code
Please click here to download the component source project: FC_Comp_Source_Modbus_Slave_SCADA.fcsx
Please click here to view the component source code (Beta): FC_Comp_Source_Modbus_Slave_SCADA.fcsx
Detailed description
No detailed description exists yet for this component
Examples
No additional examples
Macro reference
ChangeFrameType
| ChangeFrameType | |
| Default frame type is the type set in the component properties. | |
| Type | |
| 0 = Modbus RTU / 1 = Modbus ASCII | |
| Return | |
CheckForIncoming
GetLastIncoming
Initialise
| Initialise | |
| Starts up the UART to allow communications and initialises the states of the various Modbus Coils, Inputs and Registers to 0. | |
| Return | |
ReadAnalogInput
| ReadAnalogInput | |
| Reads the value of a single analogue input. | |
| Address | |
| Coil Address | |
| Return | |
ReadCoils
ReadDigitalInputs
ReadHoldingRegister
| ReadHoldingRegister | |
| Reads the value of a single holding register. | |
| Address | |
| Coil Address | |
| Return | |
SetAnalogInput
| SetAnalogInput | |
| Sets the state of a single analogue input. | |
| Address | |
| Coil Address | |
| Value | |
| Analogue Value range 0 - 65535 | |
| Return | |
SetCoil
| SetCoil | |
| Sets the state of a single digital coil. | |
| Address | |
| Coil Address | |
| State | |
| 0=off, 1=on | |
| Return | |
SetDigitalInput
| SetDigitalInput | |
| Sets the state of a single digital input. | |
| Address | |
| Coil Address | |
| State | |
| 0=off, 1=on | |
| Return | |
SetHoldingRegister
| SetHoldingRegister | |
| Sets the state of a single holding register. | |
| Address | |
| Coil Address | |
| Value | |
| Analogue Value range 0 - 65535 | |
| Return | |
SetSlaveAddress