# Beckhoff - TwinCAT3 Logging



## Marc33 (8 Mai 2020)

Servus SPSler,


  Bin neu in der TwinCAT3 Welt und wollte mal fragen, wie ihr das Thema Logging löst. Ich möchte Logs mehrerer PLC’s auf einem Logserver sammeln. Können Logmeldungen (m_Trace) extern ausgelesen werden (z.B. via ADS) oder gibt’s in TwinCAT3 eine Möglichkeit, die Logs in eine Datei zu schreiben? Können Platzhalter in einer Logmeldung definiert werden, um zur Laufzeit echte Werte einzusetzen? Was sind so eure "best practices" und Tipps für das Logging in der Beckhoff-TC3 Welt in Bezug auf externe Log-Analyse oder kann jemand hierfür Libs oder Tools empfehlen?



  Danke und Grüße,
Marc33


----------



## Guga (11 Mai 2020)

Ich klaube mal so ein paar Infos zusammen soweit meine Kristallkugel es erlaubt.
m_trace laesst micht darauf schliessen das du den Echtzeitcode in C++ ausführst. Nur zur Verdeutlichung : Die meisten Anwendungen sind in der PLC = IEC 61131.
Das bedeutet dann auch das du TC3 nutzt.
Ansonsten: Prinzipiell kannst du m_trace oder auch eigene Symbole dir per ADS auslesen.

Wenn die Kristallkugel jetzt keinen Sprung hat(te) würde ich dir den TC3_Eventlogger (https://download.beckhoff.com/download/Document/automation/twincat3/TC3_EventLogger_DE.pdf) ans Herz legen. Wichtig! Es muss die TC3-Variante sein sonst sieht alles anders aus.
Du kannst Events/Nachrichten an ein Event-Modul von TwinCAT schicken. Auslesen ist über ADS dann primär über eine API in einem externen (UserMode)-Program möglich, in der PLC könntest du sie auch auslesen. Die XAE hat einen Viewer für die Logs. 
Darauf aufbauend kenne ich aber keine "Tools". In der TE2000 = Visu gibt es dann auch noch einen Viewer.

Guga


----------



## bqstony (2 Juni 2020)

Hallo Marc33,

Wenn ich deine Frage richtig verstehe geht es ums Logging aus der SPS. Wie Guga geschrieben hat, gäbe es den Weg über den Eventlogger (gibt es in V1 und V2), wobei dieser meiner Meinung nach relativ schwerfällig ist.

Ich bin gerade in einem Test einer externen Library log4TC (https://mbc.dev/log4tc), die evtl. deine Bedürfnisse abdecken könnte. Wenn nicht kannst du immer noch den Eventlogger versuchen. Der Vorteil von log4TC gegenüber dem Eventlogger ist die Ausgabe in Textfiles (oder weitere Ziele, je nach Konfiguration). So kann man mit normalen Tools wie z.B. dem https://notepad-plus-plus.org/ Arbeiten oder sogar https://www.log4view.com/ verwenden um aktuelle Logmeldungen zu verfolgen.

Es lassen sich mehrere SPS Konfigurieren und die logs auf einem gemeinsamen Server ablegen.


----------



## moc (6 November 2021)

Da ich das Log-Problem auch schon öfter hatte, habe ich angefangen, eine Bibliothek (TcLog) dazu zu schreiben. Damit lassen sich beliebige Log-Dateien im lokalen Dateisystem der SPS erstellen. Neue Logdateien werden automatisch nach einem konfigurierbaren Intervall angelegt. Weiterhin gibt es die Möglichkeit eine Lebensdauer für die Logdateien anzugeben, sodass bei länger laufenden Aufzeichnungen alte Logs automatisch gelöscht werden.

Im Unterschied zu log4TC unterstützt TcLog kein strukturiertes Logging, d.h. die Daten werden direkt in das endgültige Format gebracht und als String gespeichert. Dafür kommt TcLog jedoch ohne einen zusätzlichen Windows Service aus und kann rein als Bibliothek eingebunden werden.

Eine Einführung in die Bibliothek gibt es hier, auch eine vorkompilierte Version der Bibliothek kann dort herunter geladen werden. Der Quellcode inklusive Unit- und Integrationstests findet sich auf Github.

Falls sie jemandem hilft, freut's mich und falls jemand Verbesserungsvorschläge hat oder sich beteiligen will ist er/sie auch herzlich willkommen


----------

