AssociateReq
![AssociateReq 1:](Images/png/3404008459__Web.png)
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