FB_IEC870_5_104Slave

FB_IEC870_5_104Slave 1:
FB_IEC870_5_104Slave

Mit einer Instanz des Funktionsbausteins FB_IEC870_5_104Slave kann in der TwinCAT SPS eine IEC60870-5-104 Unterstation (Slave) implementiert werden. Eine Instanz des Funktionsbausteins kann nur eine Verbindung zu einem Master aufbauen.

FB_IEC870_5_104Slave 2:

Erstellen von redundanten Systemen

Wenn Sie redundante Systeme mit zwei oder mehr Verbindungen zum Master realisieren wollen, benutzen Sie bitte den FB_IEC870_5_104SlaveGrp-Funktionsbaustein.

VAR_IN_OUT

VAR_IN_OUT
    hServer : T_HSERVER;
ND_VAR

hServer : TCP/IP Server-Handle. Die internen Parameter der Server-Handle-Variable müssen vorher mit der Funktion F_CreateServerHnd initialisiert werden.

VAR_INPUT

VAR_INPUT
    protPara        : ST_IEC870_5_104ProtocolParams;                           (* IEC60870-5-104 protocol communication params *)
    sysPara         : ST_IEC870_5_101SystemParams;                     (* IEC60870-5-104 slave system params *)
    pAOEntries      : POINTER TO ARRAY[0..IEC870_ANYSIZE_ARRAY] OF ST_IEC870_5_101AODBEntry;    (* Pointer to the first element of application database object array *)
    cbAOEntries     : UDINT;                              (* Byte size (length) of application database object array *)
    pInputs         : POINTER TO ARRAY[0..IEC870_ANYSIZE_ARRAY] OF BYTE;
    cbInputs        : UDINT;
    pOutputs        : POINTER TO ARRAY[0..IEC870_ANYSIZE_ARRAY] OF BYTE;
    cbOutputs       : UDINT;
    pMemory         : POINTER TO ARRAY[0..IEC870_ANYSIZE_ARRAY] OF BYTE;
    cbMemory        : UDINT;
    pData           : POINTER TO ARRAY[0..IEC870_ANYSIZE_ARRAY] OF BYTE;
    cbData          : UDINT;
    bEnable         : BOOL := TRUE;
END_VAR

protPara: IEC60870-5-104-Protokolparameter.

sysPara: Systemparameter.

pAOEntries: Adresse der Applikationsobjekt-Datenbankvariablen.

cbAOEntries: Bytegröße der Applikationsobjekt-Datenbankvariablen.

pInputs: Adresse des SPS-Prozessdatenbereichs der Eingänge.

cbInputs: Bytegröße des SPS-Prozessdatenbereichs der Eingänge.

pOutputs: Adresse des SPS-Prozessdatenbereichs der Ausgänge.

cbOutputs: Bytegröße des SPS-Prozessdatenbereichs der Ausgänge.

pMamory: Adresse des SPS-Prozessdatenbereichs der Merker.

cbMamory: Bytegröße des SPS-Prozessdatenbereichs der Merker.

pData: Adresse des SPS-Datenbereichs.

cbData: Bytegröße des SPS-Datenbereichs.

bEnable : Aktiviert/Deaktiviert den Funktionsbaustein (Kommunikation und Verbindung).

VAR_OUTPUT

VAR_OUTPUT
    system      : ST_IEC870_5_104SystemInterface;
    eConnState  : E_SocketConnectionState      := eSOCKET_DISCONNECTED;  (* TCP/IP connection state *)
    eDTState    : E_IEC870_5_104DataTransferState  := eIEC870_STOPDT;    (* IEC60870-5-104 data transfer state *)
END_VAR

system: System-Interface. Diese Variable dient anderen IEC-Applikationsfunktionen als Kommunikationsschnittstelle zum IEC-Gerät (hier: Unterstation).

eConnState: Status der TCP/IP-Verbindung zum Master.

eDTState: Status des IEC60870-5-104-Datenaustauschs (STARTDT, STOPDT)

Beispiel:

Beispielprojekte: IEC60870-5-104 Unterstation

Aufruf in FUP:

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:

Im folgenden ST-Beispiel wird der Gerätefehler-Fifo zyklisch ausgelesen und die registrierten Fehler ins Windows Application Log geschrieben.

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

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.9.0 Build >= 1030

PC or CX (x86)

TcIEC870_5_104Slave.Lib

( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcpIp.Lib; TcUtilities.Lib; TcSocketHelper.Lib; TcIEC870_5_104.Lib, TcIEC870_5_101.Lib werden automatisch eingebunden

TwinCAT v2.10.0 Build >= 1301

CX (ARM)