TagDirectWriteByte - Writes Bytes Directly to a Data Source

Help Contents


The TagDirectWriteByte function block writes one or more bytes to any 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 TagDirectWriteByte 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 PLC tag to send the DirectWriteByte command to.
DATAADDRESS STRING Input The data address within the plc.
VALUE ARRAY [] OF BYTE Input The bytes to write to the PLC.
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.

Example Program

The following IEC 61131-3 Program shows:

  1. A FALSE to TRUE transition of a digital data point tag used to trigger a function block.
  2. The function block writing a block of data bytes to an address in a PLC.
  3. Example logic to check the status of the function block.
Program MAIN
        (* The function block declaration *)
        WriteByteFB : TagDirectWriteByte;

        (* 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];

    (* Call the TagDirectWriteByte function block 
       Note: Using Siemens S7 PLC addressing to write a sequence of bytes to 
             data block 01, offset 64 *)
        TAGNAME:="Siemens S7 PLC Tag",
        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 *)
            (* Any additional work on successful completion *)


Further Information

DirectWriteByte Tag Command

To learn about the DirectWriteByte tag command.

Tag Command Function Blocks

To learn about other tag command function blocks.

Elementary Data Types

To learn about the different types supported by Fernhill SCADA.

Common Elements

To learn about other IEC 61131-3 Common Elements.


For the meaning of terms used in Fernhill SCADA.