FB_ScopeServerControl

Der Funktionsbaustein FB_ScopeServerControl ermöglicht der SPS Daten zu sammeln, die dann später mit TwinCAT Scope 2 angezeigt werden sollen.
Eingänge
VAR_INPUT
sNetId : T_AmsNetId;
eReqState : E_ScopeServerState := SCOPE_SERVER_IDLE;
sConfigFile : STRING;
sSaveFile : STRING;
tTimeout : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
sNetID | T_AmsNetID | Hier kann ein String angegeben werden, der die Netzwerkadresse des TwinCAT Zielsystems beinhaltet. Für den lokalen Rechner kann auch ein Leerstring angegeben werden. |
eReqState | Angeforderter Scope Server Status | |
sConfigFile | STRING | Vollständiger Pfad mit dem Namen der Konfigurations-Datei (z. B.: C:\TwinCAT\TwinCATScope2\First.sv2'). |
sSaveFile | STRING | Vollständiger Pfad mit dem Namen der Daten-Datei (z. B: C:\TwinCAT\TwinCATScope2\First.svd). |
tTimeout | TIME | Gibt die Timeout-Zeit an, die bei der Ausführung des ADS-Kommandos nicht überschritten werden darf. |
Ausgänge
VAR_OUTPUT
bBusy : BOOL;
bDone : BOOL;
bError : BOOL;
nErrorId : UDINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bBusy | BOOL | Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt. |
bDone | BOOL | Wird gesetzt, wenn der angeforderte Status aktiviert wurde. |
bError | BOOL | Sollte ein Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde. |
nErrorId | UDINT | Zeigt die Fehlernummer, wenn der Fehlerausgang bError gesetzt ist. Grundsätzlich kann dies eine ADS-Fehlernummer oder ein spezifischer Fehler-Code dieser Bibliothek sein.. |
![]() | Es ist nur ein Zielsystem für die Konfigurationsdatei (*.sv2) zugelassen. |
Status-Diagramm:
*) 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
);
Beispiel:
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 Triggerereignis (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 | Zielplattform | Einzubindende SPS-Bibliotheken (Kategoriegruppe) |
---|---|---|
TwinCAT v3.1.0 | PC oder CX (x86, x64, Arm®) | Tc2_Utilities (System) |