FB_ScopeServerControl

 [Dies ist eine vorläufige Dokumentation und unterliegt noch Änderungen]

FB_ScopeServerControl 1:

Der Funktionsbaustein "FB_ScopeServerControl" ermöglicht der SPS Daten zu sammeln, die dann später mit TwinCAT Scope View 2 angezeigt werden sollen.

 VAR_INPUT

VAR_INPUT
   sNetId      : T_AmsNetId;
   eReqState   : E_ScopeServerState := SCOPE_SERVER_IDLE;
   sConfigFile : STRING;
   sSaveFile   : STRING;
   tTimeout    : TIME := DEFAULT_ADS_TIMEOUT;
ND_VAR

sNetId:Hier kann ein String angegeben werden der die Netzwerkadresse des TwinCAT Zielsystems beinhaltet. Für den lokalen Computer kann dieser String auch leer sein.

eReqState:: Angeforderter Scope Server Status.

sConfigFile:: Vollständiger Pfad mit dem Namen der Konfigurations-Datei (z.B.: 'C:\TwinCAT\TwinCATScopeView2\First.sv2' ).

sSaveFile: Vollständiger Pfad mit dem Namen der Daten-Datei (z.B: 'C:\TwinCAT\TwinCATScopeView2\First.svd').

tTimeout:: Maximal zulässige Zeit für die internen ADS Kommandos

VAR_OUTPUT

VAR_OUTPUT
    bBusy     : BOOL;
    bDone     : BOOL
    bError    : BOOL;
    nErrorId  : UDINT;
END_VAR

bBusy:Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

bDone: Wird gesetzt wenn der angeforderte Status aktiviert wurde.

bError: Sollte ein ADS-Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.

nErrorId: Zeigt die Fehlernummer, wenn der Fehlerausgang gesetzt ist. Grundsätzlich kann dies eine ADS-Fehlernummer oder eine spezifischer Fehler-Code dieser Bibliothek sein.

FB_ScopeServerControl 2:

Es ist nur ein Zielsystem für die Konfigurationsdatei (*.sv2) zugelassen.

Status-Diagramm:

FB_ScopeServerControl 3:

*) eine Statusänderung zurückzusetzen ist jederzeit möglich

Dieses Status-Diagramm zeigt die möglichen Übergänge für eReqState. Falls ein anderer Statusübergang angefordert wird, wird bError gesetzt.

TYPE E_ScopeServerState

TYPE E_ScopeServerState
(
   SCOPE_SERVER_IDLE,
   SCOPE_SERVER_CONNECT,
   SCOPE_SERVER_START,
   SCOPE_SERVER_STOP,
   SCOPE_SERVER_SAVE,
   SCOPE_SERVER_DISCONNECT,
   SCOPE_SERVER_RESET
);

Example in ST:

Deklarationsteil:

FUNCTION_BLOCK FB_ScopeServerSample
VAR_INPUT
   bExternalTriggerEvent: BOOL := FALSE;
END_VAR

VAR_OUTPUT
END_VAR

VAR
   fbScopeServerControl: FB_ScopeServerControl;
   eReqState: E_ScopeServerState := SCOPE_SERVER_IDLE;

   bBusy: BOOL := FALSE;
   bDone: BOOL := FALSE;
   bError: BOOL := FALSE;
   nErrorId: UDINT := 0;
   fbTimer: TON;
   bTriggerTimer: BOOL := FALSE;
   nState: UDINT := 0;
END_VAR

 

Implementierung des FB_ScopeServerSample

CASE nState OF
0:
   eReqState := SCOPE_SERVER_START;
   nState := 10;

10:
   IF fbScopeServerControl.bDone AND bExternalTriggerEvent THEN
      bTriggerTimer := TRUE;
      nState := 20;
   END_IF

20:
   IF fbTimer.Q THEN
      eReqState := SCOPE_SERVER_SAVE;
      bTriggerTimer := FALSE;
      nState := 30;
   END_IF

30:
   IF fbScopeServerControl.bDone THEN
      eReqState := SCOPE_SERVER_DISCONNECT;
   END_IF

END_CASE


fbTimer(IN:=bTriggerTimer, PT:=t#10s);
fbScopeServerControl(
   sNetId:= '',
   eReqState:= eReqState,
   sConfigFile:= 'C:\twinCat\scope\test.sv2',
   sSaveFile:= 'C:\twinCat\scope\test.svd',
   tTimeout:= t#5s,
   bBusy=>bBusy,
   bDone=>bDone,
   bError=>bError,
   nErrorId=>nErrorId);

Dieses Beispiel soll zeigen, wie eine Langzeitaufzeichnung mit dem Scope Server durchgeführt werden kann.

Dafür wird eine existierende Konfiguration (Test.sv2) geladen. In diesem Beispiel wurde Test.sv2 gespeichert, um im Ring-Buffer zu laufen. So wird die Datenaufzeichnung nicht enden bis sie von FB_ScopeServerControl angesteuert wird. Falls ein internes Trigger- Ereignis (dies kann ein Fehlerereignis sein) auftritt, wird ein Timer gestartet und 10 Sekunden später werden die Daten in  Test.svd gespeichert. Auf diese Weise beinhaltet die Daten-Datei Informationen vor und nach dem Trigger-Ereignis.

Voraussetzungen

Entwicklungsumgebung

Art des Zielsystems

zu inkludierende PLC-Bibliotheken

TwinCAT v2.10.0 Build >= 1329

PC or CX (x86,ARM)

TcUtilities.Lib

(Standard.Lib; TcBase.Lib; TcSystem.Lib werden automatisch inkludiert)