Modul-Nachrichten zum Engineering (Logging / Tracing)
Übersicht
TwinCAT 3 C++ bietet die Möglichkeit, Nachrichten aus einem C++ Modul in das TwinCAT 3 Engineering als Tracing oder Logging zu senden.
Syntax
Die Syntax zur Aufzeichnung von Meldungen ist folgende:
m_Trace.Log(TLEVEL, FNMACRO"A message", …);
Mit diesen Eigenschaften:
TLEVEL
kategorisiert eine Meldung in eine von fünf Ebenen.
Das Aufzeichnen der höheren Ebene beinhaltet immer auch das Aufzeichnen der unteren Ebenen: d.h. eine auf Ebene „tlWarning“ klassifizierte Meldung wird auftreten mit Ebene „tlAlways“, „tlError“ und „tlWarning“ - sie wird die „tlInfo“ und „tlVerbose“ Meldungen NICHT aufzeichnen.
Level 0 | tlAlways |
Level 1 | tlError |
Level 2 | tlWarning |
Level 3 | tlInfo |
Level 4 | tlVerbose |
FNMACRO
kann verwendet werden, um den Funktionsnamen vor die zu druckende Meldung zu setzen- FENTERA: Wird beim Eintritt in eine Funktion verwendet, druckt den Funktionsnamen gefolgt von „>>>“.
- FNAMEA: Wird innerhalb einer Funktion verwendet, druckt den Funktionsnamen.
- FLEAVEA: Wird beim Verlassen einer Funktion verwendet, druckt den Funktionsnamen gefolgt von „<<<“.
- Zur Ausgabe von Zeigern und anderen Variablen mit Plattform-spezifischer Größe wird der Formatspezifizierer
%q
verwendet.
Beispiel
HRESULT CModule1::CycleUpdate(ITcTask* ipTask, ITcUnknown* ipCaller, ULONG_PTR context)
{
HRESULT hr = S_OK;
FENTERA
// Sample to showcase trace logs
ULONGLONG cnt = 0;
if (SUCCEEDED(ipTask->GetCycleCounter(&cnt)))
{
if (cnt%500 == 0)
m_Trace.Log(tlAlways,"Level tlAlways: cycle=
%llu", cnt);
FENTERA
if (cnt%510 == 0)
m_Trace.Log(tlError,"Level tlError: cycle=%llu", cnt);
FENTERA
if (cnt%520 == 0)
m_Trace.Log(tlWarning,"Level tlWarning: cycle=%lld", cnt);
FENTERA
if (cnt%530 == 0)
m_Trace.Log(tlInfo,"Level tlInfo: cycle=%llu", cnt);
FENTERA
if (cnt%540 == 0)
m_Trace.Log(tlVerbose,"Level tlVerbose: cycle=%llu", cnt);
}
// TODO: Replace the sample with your cyclic code
m_counter++;
m_Outputs.Value = m_counter;
return hr;
}
Verfolgungsebene verwenden
Auf Höhe der Modulinstanz besteht die Möglichkeit, die Verfolgungsebene vorzukonfigurieren.
- 1. Navigieren Sie zur Instanz des Moduls im Solution-Baum.
- 2. Wählen Sie den Karteireiter Parameter (Init) auf der rechten Seite.
- 3. Achten Sie darauf, dass sie Show Hidden Parameters aktivieren.
- 4. Wählen Sie die Verfolgungsebene.
- 5. Um alles zu testen, wählen Sie die höchste Ebene tlVerbose.
Alternativ dazu können Sie die Verfolgungsebene auch während der Laufzeit ändern, indem Sie zur Instanz gehen, eine Ebene bei Value für TraceLevelMax-Parameter auswählen, dann einen Rechtsklick vor der ersten Spalte machen und Online Write auswählen.
Meldungskategorien filtern
Visual Studio Error List ermöglicht das Filtern der Einträge nach deren Kategorie. Die drei Kategorien Errors, Warnings und Messages können unabhängig voneinander durch einfaches Umschalten der Tasten aktiviert oder deaktiviert werden.
In diesem Screenshot ist nur Warnings aktiviert - Errors und Messages dagegen sind deaktiviert:
In diesem Screenshot ist nur Messages aktiviert - Errors und Warnings dagegen sind für die Anzeige deaktiviert: