The TagDirectWriteByteFB Function Block writes one or more bytes to an address in a data source associated with a tag.
The function block writes the data bytes by sending a DirectWriteByte tag command to the tag. The function block provides status information to:
The TagDirectWriteByteFB Function Block is intended for use in a Program Tag that runs on the Fernhill SCADA Server. A Program Tag uses a continuous execution model, where the program code runs at a fixed interval. A program uses the function block to sample the state of the tag command as it executes.
There is no equivalent TagDirectWriteByteFB Function for use in an Operator Action.
The TagDirectWriteByteFB Function Block has this syntax:
TagDirectWriteByteFB( REQ:=Expression, TAGNAME:=Expression, DATAADDRESS:=Expression, VALUE:=Variable-Reference, BUSY=>Variable-Reference, DONE=>Variable-Reference, ERROR=>Variable-Reference, ERRORMSG=>Variable-Reference );
Note: All parameters are optional.
The TagDirectWriteByteFB Function Block has these parameters:
Parameter | Type | Direction | Description |
---|---|---|---|
REQ | BOOL R_EDGE | Input | A rising edge starts the DirectWriteByte command. |
TAGNAME | STRING | Input | The name of the tag to send the DirectWriteByte command to. This can be an absolute tag name, or a relative tag name. Relative tag names are resolved relative to the full name of the host program. |
DATAADDRESS | STRING | Input | The "Address" of the data within the data source. See Data Address Format to understand how to set the "Address". |
VALUE | ARRAY [] OF BYTE | Input | The bytes to write to the data source. |
BUSY | BOOL | Output | Set to TRUE while the DirectWriteByte command is in progress. |
DONE | BOOL | Output | Set to TRUE for 1 execution after the DirectWriteByte command has completed. |
ERROR | BOOL | Output | Set to TRUE if the DirectWriteByte command failed. |
ERRORMSG | WSTRING | Output | If ERROR is TRUE, the reason why the DirectWriteByte command failed. |
Once the DirectWriteByte command begins, additional requests from the input signal REQ are ignored until the tag command completes.
These timing diagrams show the relationship of the REQ, BUSY, DONE, and ERROR signals processing two requests. The first request completes with an error, the second request completes normally:
+--------+ +-+ +------+ REQ | | | | | | --+ +-----+ +-+ +------ +------+ +------+ BUSY | | | | --+ +-------+ +---------- ++ ++ DONE || || ---------++-------------++--------- +-------+ ERROR | | ---------+ +-----------------
The BUSY signal is TRUE while the tag command is in progress. The DONE signal is TRUE for 1 execution after the completion of the tag command.
The following IEC 61131-3 Program shows:
Program MAIN VAR (* The function block declaration *) WriteByteFB : TagDirectWriteByteFB; (* The tag used to trigger the write operation Note: Uses a relative tag reference to 'Digital Trigger Tag' located in the same folder as this program *) TriggerTag AT %".Digital Trigger Tag" : BOOL; (* The data to write *) Data : ARRAY [0..5] OF BYTE := [1,2,3,4,5,6]; END_VAR (* Call the TagDirectWriteByteFB function block Note: Using Siemens S7 PLC addressing to write a sequence of bytes to data block 01, offset 64 *) WriteByteFB( REQ:=TriggerTag, TAGNAME:="Siemens S7 PLC Tag", DATAADDRESS:="DB01.64", VALUE:=DATA ); (* The DONE output is active for one cycle when the function block completes *) IF WriteByteFB.DONE THEN (* Was there an error ? *) IF WriteByteFB.ERROR THEN (* Handle any error *) ELSE (* Any additional work on successful completion *) END_IF; END_IF; END_PROGRAM
To learn about the DirectWriteByte Tag Command.
To learn about other tag command function blocks.
To learn about the different types of expression to use as function parameters.
To learn about the different types of expression to use as function parameters.
To learn about the different types supported by Fernhill SCADA.
To learn about other IEC 61131-3 Common Elements.
For the meaning of terms used in Fernhill SCADA.