FB_IEC870_5_104Master

FB_IEC870_5_104Master 1:

Mit einer Instanz des Funktionsbausteins FB_IEC870_5_104Master kann in der TwinCAT SPS eine IEC60870-5-104 Zentralstation (Master, High-Level) implementiert werden. Pro Instanz des Funktionsbausteins wird eine Verbindung zum Slave aufgebaut.

Der Funktionsbaustein besitzt folgende Aktionen;

Im Normalfall wird der Datenaustausch automatisch gestartet, nachdem die Verbindung hergestellt wurde. Standardmäßig ist der Funktionsbaustein auch so konfiguriert. Bei Bedarf kann der Datenaustausch durch einen Aufruf der Aktionen gestoppt, bzw. gestartet werden.

VAR_IN_OUT

VAR_IN_OUT
    hTable : T_HAODBTable;
END_VAR

hTable: Applikationsobjekt-Datenbankhandle (Hash-Tabellenhandle). Das Tabellenhandle muss vor der Benutzung einmalig mit der Funktion F_iecCreateTableHnd initialisiert werden.

VAR_INPUT

VAR_INPUT
    sSrvNetID   : T_AmsNetID := '';
    protPara    : ST_IEC870_5_104ProtocolParams := ( bControlDT := TRUE, bDTControlled := FALSE,
                  sRemoteHost := '', nRemotePort := 2404 );
    sysPara     : ST_IEC870_5_101SystemParams := ( bEndOfInit := FALSE, asduAddr := 11, tSyncTimeut := T#0s );
    acqPara     : ST_IEC870_5_101AcquisitionParams;
    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

sSrvNetID: String mit der Netzwerkadresse des TwinCAT TCP/IP Connection Servers. Für den lokalen Rechner (default) kann auch ein Leerstring angegeben werden.

protPara: IEC 60870-5-104-Protokolparameter.

sysPara: Systemparameter.

acqPara: Parameter für die zyklische Datenerfassung.

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.

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_104ExSystemInterface;
    eConnState  : E_SocketConnectionState := eSOCKET_DISCONNECTED;
    eDTState    : E_IEC870_5_104DataTransferState := eIEC870_STOPDT;
END_VAR

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

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

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

Beispiele (High-Level interface):

Weitere Beispiele:

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

...

fbClient : FB_IEC870_5_104Master;(* IEC 60870-5-104 master function
block instance *)

...
...

REPEAT

    fbClient.system.device.errors.RemoveError( );

    IF fbClient.system.device.errors.bOk THEN

    ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG,
'IEC60870-5-104 master error: 0x%s',

            DWORD_TO_HEXSTR(
fbClient.system.device.errors.getError.nErrId, 8, FALSE) );

    END_IF

UNTIL NOT fbClient.system.device.errors.bOk

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)