FB_IEC870_5_104SlaveGrp

FB_IEC870_5_104SlaveGrp 1:

Mit einer Instanz des Funktionsbausteins FB_IEC870_5_104SlaveGrp kann in der TwinCAT SPS eine IEC 60870-5-104 Unterstation (Slave, High-Level) implementiert werden. Mit einer Instanz können einfache Systeme mit einer Verbindung oder Systeme mit mehreren Verbindungen zum Master realisiert werden (redundantes System).

Die maximale Anzahl der Verbindungen kann durch die Anzahl der ST_IEC870_5_104ServerConnection-Arrayelemente festgelegt werden. Die Adresse der Arrayvariablen und die Bytegröße der Arrayvariablen müssen dann an die Instanz des FB_IEC870_5_104SlaveGrp-Funktionsbausteins übergeben werden.

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;
    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;
    pConnections    : POINTER TO ARRAY[0..IEC870_ANYSIZE_ARRAY] OF ST_IEC870_5_104ServerConnection := 0;
    cbConnections   : UDINT := 0;
    bEnable         : BOOL := TRUE;
END_VAR

protPara: IEC 60870-5-104-Protokolparameter.

sysPara: Systemparameter.

pAOEntries: Adresse der ersten 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.

pConnections: Adresse der ST_IEC870_5_104ServerConnection-Arrayvariablen.

cbConnections: Bytegröße der ST_IEC870_5_104ServerConnection-Arrayvariablen.

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

Die Adressen können mit dem ADR- und die Bytegrößen mit dem SIZEOF-Operator ermittelt werden.

VAR_OUTPUT

VAR_OUTPUT
    system  : ST_IEC870_5_104SystemInterface;
    status  : ST_IEC870_5_104GrpStatus;
ND_VAR

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

status: Verbindungs- und Datentransfer-Statusinformationen.

Beispiel (High-Level Interface):

Weitere Beispiele:

Aufruf in FUP mit max. 2 Master-Verbindungen:

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_104SlaveGrp;
    connections     : ARRAY[0..1] OF ST_IEC870_5_104ServerConnection; (* Two master connections *)


    bEnable         : BOOL := TRUE;
    protPara        : ST_IEC870_5_104ProtocolParams;
    sysPara         : ST_IEC870_5_101SystemParams := ( asduAddr := 7 );
    status          : ST_IEC870_5_104GrpStatus;
    bError          : BOOL;
    iecError        : ST_IEC870_5_101ErrorFifoEntry;
END_VAR

FB_IEC870_5_104SlaveGrp 2:

Im folgenden ST-Beispiel wird der Gerätefehler-Fifo zyklisch ausgelesen und die registrierten Fehler ins TwinCAT XAE->"Error List"-Fenster geschrieben.

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

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken (Kategoriegruppe)

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)