FB_IEC61850Server

Mit diesem Funktionsbaustein kann in der TwinCAT SPS ein Server nach der IEC 61850 Norm realisiert werden. Über die Eingangsvariablen appPara und srvPara werden die Verbindungsparameter wie IP-Adresse und die applikationsspezifischen Parameter eingestellt.

Der Server-Baustein besitzt zwei Aktionen:

VAR_INPUT

VAR_INPUT
    appPara     : ST_MMS_ApplicationPara;    (* Application parameter *)
    srvPara     : ST_MMS_ProtocolPara;  (* Communication parameter *)
    pLD         : DWORD := 0;         (* Pointer to logical device node *)
    cbLD        : UDINT := 0;         (* Byte size of logical device node *)
END_VAR

appPara: Applikationsspezifische Konfigurationsparameter (MMS- und IEC 61850-Parameter).

srvPara: Parameter die hauptsächlich die Konfiguration des Kommunikationsstacks unterhalb von MMS betreffen.

pLD: Pointer (Adresse) auf die Instanz der Struktur mit der Modellbeschreibung des logischen Gerätes (LD). Die Adresse kann mit dem ADR-Operator ermittelt werden.

cbLD: Bytegröße der Struktur mit der Modellbeschreibung des logischen Gerätes (LD). Die Bytegröße kann mit dem SIZEOF-Operator ermittelt werden.

VAR_OUTPUT

VAR_OUTPUT
    system : ST_IED_System;
    eState : E_IED_STATE;
END_VAR

system: System-Variable.

eState : Gerätestatus.

Beispiel:

Weitere Beispiele inklusive aller Sourcen finden Sie unter: Beispiele.

PROGRAM MAIN
VAR
    bInit   : BOOL := TRUE;
    bOperate    : BOOL := TRUE;
    bServer     : FB_IEC61850Server := (    srvPara := (    sHost := '127.0.0.1',(* change the IP-Address to meet your needs *)
                            debug := ( bError := TRUE, bLog := TRUE ) ) );(* Server instance *)

    fbChange : FB_ACSI_ChangePresence;(* This function block changes the mandatory/optional presence parameter *)
 Relay   : ST_LD_Relay;(* Our logical device *)
END_VAR
IF bInit THEN
    bInit := FALSE;
    fbServer.appPara.bAccessCtrl := FALSE; (* TRUE = Use access control/authentication, FALSE = Don't use access control/authentication *)
 (* first user *)
    fbServer.appPara.accessCtrl[1].bAuthentication := TRUE;(* TRUE = access control/authentication for this user enabled, FALSE = Disabled *)
 fbServer.appPara.accessCtrl[1].authentMechanism := '2.2.3.1';
    fbServer.appPara.accessCtrl[1].authentPassword := 'PASSWORD';
    (* second user *)
    fbServer.appPara.accessCtrl[2].bAuthentication := TRUE;
    fbServer.appPara.accessCtrl[2].authentMechanism := '2.2.3.1';
    fbServer.appPara.accessCtrl[2].authentPassword := 'OTHER';

  (* at this point you can change the presence of some attributes... *)

    (* change presence of some attributes *)
(*      fbChange( pDO := ADR( Relay.LLN0.Loc.subEna ), cbDO := SIZEOF(  Relay.LLN0.Loc.subEna ), bPresence := TRUE );*)(* change to mandatory *)
(*      fbChange( pDO := ADR( Relay.LLN0.Loc.t ), cbDO := SIZEOF(  Relay.LLN0.Loc.t ), bPresence := FALSE );*)(* change to optional *)

    fbServer.A_INIT( pLD := ADR( Relay ), cbLD := SIZEOF( Relay ) );
END_IF

IF bOperate THEN(* switch to oparating state *)
    IF fbServer.eState = eIED_STATE_PREOP THEN
        bOperate := FALSE;

        (* at this point you can configure your data sets...*)

        fbServer.A_OPERATE( pLD := ADR( Relay ), cbLD := SIZEOF( Relay ) );
    END_IF
END_IF

fbServer( pLD   := ADR( Relay ), cbLD := SIZEOF( Relay ) );

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.10.0 Build >= 1340

PC oder CX (X86, ARM)

TcIEC61850Server.Lib