FB_IEC870_5_104Slave

FB_IEC870_5_104Slave 1:

An instance of the function block FB_IEC870_5_104Slave can be used to implement an IEC 60870-5-104 substation (slave, high-level) in the TwinCAT PLC. An instance of the function block can only establish a connection with a master.

FB_IEC870_5_104Slave 2:

To implement redundant systems with two or more connections to the master, please use the FB_IEC870_5_104SlaveGrp function block.

VAR_IN_OUT

VAR_IN_OUT
    hServer : T_HSERVER;
END_VAR

hServer: TCP/IP server handle. The internal parameters of the server handle variable first have to be initialised via the F_CreateServerHnd function.

VAR_INPUT

VAR_INPUT
    protPara      : ST_IEC870_5_104ProtocolParams;
    sysPara       : ST_IEC870_5_101SystemParams;
    pAOEntries    : POINTER TO ARRAY[0..IEC870_ANYSIZE_ARRAY] OF ST_IEC870_5_101AODBEntry := 0;
    cbAOEntries   : UDINT := 0;
    pInputs       : PVOID := 0;
    cbInputs      : UDINT := 0;
    pOutputs      : PVOID := 0;
    cbOutputs     : UDINT := 0;
    pMemory       : PVOID := 0;
    cbMemory      : UDINT := 0;
    pData         : PVOID := 0;
    cbData        : UDINT := 0;
    bEnable       : BOOL := TRUE;
END_VAR

protPara: IEC 60870-5-104 protocol parameters.

sysPara: System parameter.

pAOEntries: Address of the first application object database variable.

cbAOEntries: Byte size of the application object database variables.

pInputs: Address of the PLC process data area for the inputs.

cbInputs: Byte size of the PLC process data area for the inputs.

pOutputs: Address of the PLC process data area for the outputs.

cbOutputs: Byte size of the PLC process data area for the outputs.

pMamory: Address of the PLC process data area for the flags.

cbMamory: Byte size of the PLC process data area for the flags.

pData: Address of the PLC data area.

cbData: Byte size of the PLC data area.

bEnable: Activates/deactivates the function block (communication and connection).

The addresses can be determined with the ADR operator and the byte sizes with the SIZEOF operator.

VAR_OUTPUT

VAR_OUTPUT
    system      : ST_IEC870_5_104SystemInterface;
    eConnState  : E_SocketConnectionState      := eSOCKET_DISCONNECTED;
    eDTState    : E_IEC870_5_104DataTransferState  := eIEC870_STOPDT;
END_VAR

system: System interface. This variable is used by other IEC application functions as a communication interface for the IEC device (here: substation).

eConnState: status of the TCP/IP connection with the master.

eDTState: Status of the IEC 60870-5-104 data exchange (STARTDT, STOPDT)

Examples (high-level interface):

Further examples:

Call in FBD:

PROGRAM test
VAR
    AODB            : ARRAY[0..49] OF ST_IEC870_5_101AODBEntry;
    inputs AT%IB0   : ARRAY[0..999] OF BYTE;
    outputs AT%QB0  : ARRAY[0..999] OF BYTE;
    memory AT%MB0   : ARRAY[0..999] OF BYTE;
    data            : ARRAY[0..999] OF BYTE;

    hServer         : T_HSERVER;
    server          : FB_IEC870_5_104Slave;


    bEnable         : BOOL := TRUE;
    protPara        : ST_IEC870_5_104ProtocolParams;
    sysPara         : ST_IEC870_5_101SystemParams := ( asduAddr := 7 );
    eConnState      : E_SocketConnectionState;
    eDTState        : E_IEC870_5_104DataTransferState;
    bError          : BOOL;
    iecError        : ST_IEC870_5_101ErrorFifoEntry;
END_VAR

FB_IEC870_5_104Slave 3:

In the following example, the device error FIFO is read cyclically, and the registered errors are written to the TwinCAT XAE->"Error List" window.

REPEAT
    server.system.device.errors.RemoveError( getError=>iecError, bOk=>bError );
    IF bError THEN
        ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'IEC 60870-5-104 slave error: 0x%s', 
                DWORD_TO_HEXSTR( iecError.nErrId, 8, FALSE) );
    END_IF
UNTIL NOT bError
END_REPEAT

Requirements

Development environment

Target system type

PLC libraries to be linked (category group)

TwinCAT v3.1.4012.0

PC oder CX (x86, x64, ARM)

Tc2_IEC60870_5_10x (Communication->IEC60870)
Tc2_SerialCom (Communication->Serial)
Tc2_TcpIp (Communication->TcpIp)
Tc2_Utilities (System)