FB_AmsLogger
Der "TwinCAT AMS Logger" gehört zu den Komponenten des "TwinCAT ADS Monitors" (..\TwinCAT\AdsMonitor\Logger\TcAmsLog.exe). Der Logger zeichnet die AMS/ADS-Kommandos auf den Datenträger auf. Die Aufzeichnung kann später z.B. bei einer Fehlersuche mit dem "TwinCAT AMS ADS Viewer" angezeigt und analysiert werden.
Mit dem FB_AmsLogger-Funktionsbaustein kann die Aufzeichnung aus einem SPS-Programm gestartet bzw. gestoppt werden. Der FB_AmsLogger-Funktionsbaustein kann nur mit einer bereits existierenden/laufenden Instanz der TcAmsLog.exe kommunizieren. D.h. die TcAmsLog.exe muss vorher (z.B. manuell aus dem Start-Menue) oder mit Hilfe des NT_StartProcess-Bausteins gestartet worden sein.
VAR_INPUT
VAR_INPUT
sNetId : T_AmsNetId:= '';
eMode : E_AmsLoggerMode := AMSLOGGER_RUN;
sCfgFilePath : T_MaxString := '';
bExecute : BOOL;
tTimeout : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR
sNetId: Hier kann die AmsNetId des TwinCAT-Rechners angegeben werden, auf dem der Status des "TwinCAT AMS Loggers" geändert werden soll. Für den Logger auf dem lokalen Rechner kann auch ein Leerstring angegeben werden.
eMode: Der neue Status in den der "TwinCAT AMS Logger" versetzt werden soll (Aufzeichnung starten/stoppen).
sCfgFilePath: (Optional) Pfad für eine "TwinCAT AMS Logger"-Konfigurationsdatei. Zur Zeit noch nicht implementiert und reserviert für zukünftige Anwendungen (geben Sie bitte ein Leerstring an).
bExecute: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.
tTimeout: Gibt die Timeout-Zeit an, die bei der Ausführung des ADS-Kommandos nicht überschritten werden darf.
VAR_OUTPUT
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
END_VAR
bBuse: Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.
bError: Sollte ein ADS-Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.
nErrId: Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer.
Beispiel:
Beim SPS-Programmstart wird auf einem lokalen System eine Instanz von TcAmsLog.exe gestartet. Beim Setzen der bRecord-Variablen auf TRUE wird die Aufzeichnung AMS/ADS-Kommandos gestartet und beim zurücksetzen auf FALSE gestoppt.
Deklarationsteil:
PROGRAM MAIN
VAR
bRecord : BOOL := TRUE;(* TRUE => start recording, FALSE => stop recording *)
fbStartProcess : NT_StartProcess := ( NETID := '', PATHSTR:= 'c:\TwinCAT\AdsMonitor\Logger\TcAmsLog.exe',
DIRNAME:= 'c:\TwinCAT\AdsMonitor\Logger', COMNDLINE:= '', TMOUT := DEFAULT_ADS_TIMEOUT );
fbAmsLogger : FB_AmsLogger := ( sNetID := '', eMode := AMSLOGGER_STOP, sCfgFilePath := '', tTimeout := DEFAULT_ADS_TIMEOUT );
state : BYTE;
bBusy : BOOL;
bError : BOOL;
nErrID : UDINT;
eCurrMode : E_AmsLoggerMode := AMSLOGGER_STOP;(* Current mode/state *)
eNewMode : E_AmsLoggerMode := AMSLOGGER_STOP;(* New mode/state *)
timer : TON := ( PT := T#5s );
END_VAR
Implementierung:
CASE state OF
0:(* Start instance of TcAmsLogger.exe *)
fbStartProcess( START := FALSE );
fbStartProcess( START:= TRUE );
state := 1;
1:(* Wait until command execution started *)
fbStartProcess( START := FALSE, BUSY=>bBusy, ERR=>bError, ERRID=>nErrID );
IF NOT bBusy THEN
IF NOT bError THEN(* Success *)
state := 2;
ELSE(* Error *)
state := 100;
END_IF
END_IF
2:(*Wait until instance started or new AMS logger mode/state set *)
timer( IN := TRUE );
IF timer.Q THEN
timer( IN := FALSE );
state := 3;
END_IF
3:(* Change TcAmsLog.exe mode/state *)
eNewMode := SEL( bRecord, AMSLOGGER_STOP, AMSLOGGER_RUN);
IF ( eNewMode <> eCurrMode ) THEN
fbAmsLogger( bExecute := FALSE );
fbAmsLogger( eMode:= eNewMode, bExecute := TRUE );
state := 4;
END_IF
4:(* Wait until command execution started *)
fbAmsLogger( bExecute := FALSE, bBusy=>bBusy, bError=>bError, nErrID=>nErrID );
IF NOT bBusy THEN
IF NOT bError THEN(* Success *)
eCurrMode := eNewMode;
state := 2;
ELSE(* Error *)
state := 100;
END_IF
END_IF
100:(* Error state *)
;
END_CASE
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v2.8.0 Build > 747 | PC or CX (x86) | TcUtilities.Lib |
TwinCAT v2.10.0 Build >= 1301 | CX (ARM) |