AssociateReq

AssociateReq 1:

Diese Methode aktiviert den Dienst Associate. Mit diesem Dienst kann ein Client eine Verbindung zum Server aufbauen.

METHOD AssociateReq : BOOL
VAR_INPUT
    ipSink   : I_ScsmAssociateCnfEventSink;
END_VAR
VAR_OUTPUT
    ipResult : I_AsyncServiceResultClass;
END_VAR

ipSink: Schnittstellenzeiger vom Typ I_ScsmAssociateCnfEventSink von einem Objekt mit einer benutzerdefinierten Implementierung der Ereignisbehandlungsroutine OnAssociateCnf (Dienstrückmeldung). Dieser Parameter ist optional und für zukünftige Verwendung reserviert. Der Zeigerwert = 0 definiert den Parameter als optional.

ipResult: Schnittstellenzeiger vom Typ: I_AsyncServiceResultClass. Über diesen Zeiger kann der Status/Fortgang und das Resultat der Dienstausführung überwacht und abgefragt werden.

Rückgabeparameter: Positive Rückmeldung (TRUE) wenn die Dienstprimitive erfolgreich abgesetzt/gestartet wurde oder negative Rückmeldung (FALSE) beim Fehler.

Beispiel (Auszug):

Deklarationsteil:

FUNCTION_BLOCK FB_My61850Client IMPLEMENTS I_ScsmAbortEventSink
VAR
    fbClient         : FB_IEC61850CommonClass := ( ipIED := IED, settings := ( nRemotePort := 102, sRemoteHost := '192.168.10.145' ), ipAbort := THIS^ );
    state            : BYTE;
    bSuccess         : BOOL;
    ipAsyncResult    : I_AsyncServiceResultClass;
END_VAR

Implementierung:

CASE state OF
    0:(* idle state *)    
        IF bAssociateReq THEN(* Establish connection *)
            bAssociateReq := FALSE;
            bSuccess := fbClient.AssociateReq( ipSink := 0, ipResult=>ipAsyncResult );
            state := SEL( bSuccess, 100, 1 );
        END_IF
    1:(* wait until connection established *)
        IF ipAsyncResult <> 0 THEN
            IF NOT ipAsyncResult.IsBusy() THEN
                state := SEL( ipAsyncResult.IsCompleted(), 100, 10 );
            END_IF
        END_IF
    10:(* connection established *)
        ;
    100:(* error state *)
        state := 0;
END_CASE