Einführung

Der TcEventLogger ist Beckhoffs Standardmechanismus zum Verwalten von Meldungen aus der SPS. Mithilfe des TcEventLoggers können Warnungen, Fehlermeldungen, Informationen oder Statusmeldungen in einem SPS Programm ausgelöst und durch Visualisierungen angezeigt werden. Durch die Verwendung des TcEventLoggers können sie folgende Anforderungen realisieren:

  1. Meldungen und Alarme in der SPS auslösen oder zurücksetzen
  2. Meldungen durch den Eventlogger verwalten lassen
  3. COM APIs zur HMI Entwicklung
  4. Umfangreiches ActiveX Control zur Anzeige von Meldungen
  5. Unterstützung für die Realisierung verteilter Systeme: Das HMI kann mühelos die Meldungen eines remote Systems anzeigen
  6. Meldungstexte werden sprachabhängig aus einer Datenbank geladen

Das TwinCAT Meldungs-Konzept

Meldungen (Events)

Die Meldungen des TcEventLoggers werden anhand einer Source- und einer EventID identifiziert. Hierdurch wird eine möglichst realitätsnahe Sicht auf Meldungen ermöglicht. Die SourceID wird einer Maschine und die EventID einer Meldung dieser Maschine zugeordnet.

Zusätzlich können zu jeder Meldung beliebig viele DocLinks gespeichert werden.
Ein DocLink wird durch einen Namen identifiziert und enthält einen Link zu einer Datei. Diese verlinkten Dateien können zusätzliche Informationen enthalten, z.B. Maßnahmen zum Beheben von Fehlern . Der TcEventlogger verarbeitet diese DocLinks nicht! Es bleibt letztlich den Clients überlassen die DocLinks abzufragen und zu verarbeiten. Die DocLinks werden mit den Meldungstexten gespeichert und durch den entsprechenden Formatter (siehe 'Formatieren von Meldungen') verarbeitet.

Auslösen von Meldungen

Aus einem SPS Programm heraus kann ein einfacher Funktionsbaustein aufgerufen werden, welcher dem TcEventlogger intern eine Meldung signalisiert. Diese Meldung wird nur anhand ihrer Source- und EventID identifiziert

Sobald der TcEventLogger eine Meldung erhält informiert er alle verbundenen Clients hierüber und verarbeitet die Meldung intern. Die Clients erhalten mit dem Rückruf ein Meldungsobjekt - ein COM-Objekt von Typ TcEvent.

Die Visualisierung erhält nun das Meldungsobjekt, welches die Event- und SourceID enthält. Sie kann an dem Event Objekt den zugehörigen Meldungstext abfragen. Der Meldungstext wird dann in der gewünschten Sprache aus einer Datenbank geladen.

Formatieren von Meldungen

Zum Laden der Meldungstexte bietet der TcEventlogger das TcEventFormatter Konzept:
Ein Formatter ist für das Laden der Meldungstexte aus der entsprechenden Datenbank zuständig.

Formatter können kundenspezifisch implementiert und in das System integriert werden. Mit dem TcEventlogger werden zwei Standardlösungen angeboten:

Formatter | Beschreibung
TcEventFormatter | Laden von Meldungstexten aus dem Projekt Storage.
TcXMLFormatter | Datensätze werden aus XML Dateien geladen.

Der zu verwendende Formatter wird schon beim Auslösen der Meldung (am PLC Baustein) ausgewählt.

Der Formatter ist auch für das Laden der entsprechenden DocLinks verantwortlich.

Konfigurieren von Meldungen

Um Meldungstexte aus einer Datenbank zu laden muss die Datenbank zunächst gefüllt werden. Hierfür bietet Beckhoff den TcEventKonfigurator als grafische Benutzeroberfläche an.

Der TcEventKonfigurator unterstützt die Formate der beiden Standard-Formatter sowie ein Plain Text Format. Dieses Plain Text Format kann z.B. an Übersetzungsbüros weitergegeben werden.

Mithilfe des TcEventkonfigurators kann der gesamte Vorgang zum Generieren von Meldungen realisiert werden:

  • Meldungen werden konfiguriert
  • Daten werden in einem wählbaren Format gespeichert
  • SPS Sample Code wird generiert.

Der Funktionskern des TcEventKonfigurators ist in Form von COM Komponenten realisiert, so dass er auch in eine Kundenapplikation integriert werden kann.

Visualisierungen

Wenn sich auch eine minimale Implementierung einer Visualisierung mit einigen wenigen Zeilen Quellcode erreichen lässt, so fällt für die Implementierung einer voll funktionalen Visualisierung trotzdem ein verhältnismäßig großer Programmieraufwand an.

Da sich die Implementierungen oft ähneln, bietet Beckhoff seinen Kunden hier eine Standard Implementierung zur Anzeige von Meldungen an : den TcEventViewer. Der TcEventViewer ist ein umfassend konfigurierbares ActiveX Control zur Einbindung in die Kundenapplikation.

Als beispielhafte Implementierung und zum Betrachten von Meldungen bietet Beckhoff die TcEventbar an. Die TcEventbar ist eine Visualisierung, die den TcEventViewer nutzt um Meldungen anzuzeigen.

Die TcEventBar liegt im 'TwinCAT/EventLogger' Verzeichniss.

Einstellungen der TcEventBar

Die TcEventBar nutzt (seit der v.2.9.0.11) einen Registry Key (HKEY_CURRENT_USER\Software\TwinCAT\TcEventBar), um die Einstellungen des Kontext Menüs zu speichern. Die folgenden Flags können in "ContextMenuFlags" gesetzt werden um die Menü Einträge zu deaktivieren.

TcEventView: | Beschreibung
0x00000001 | "Aktive Meldungen löschen"
0x00000002 | "Logbuch löschen"
0x00000004 | "Filter setzen"
0x00000008 | "Quittieren"
0x00000010 | "Rücksetzen"
0x00000020 | "Details"
0x0000FFFF | Deaktivierung des gesamten Kontextmenüs

Hauptfenster Kontextmenü: | Beschreibung
0x00010000 | "Always on top"
0x00020000 | "Autohide"
0x00040000 | "Exit"
0xFFFF0000 | Deaktivierung des gesamten Kontextmenüs

Connectivity

Der TcEventLogger bietet zwei Wege zur Realisierung von verteilten Systemen:

DCOM

DCOM wird nur auf NT / XP Plattformen unterstützt. Die Konfiguration von DCOM ist oft problematisch in Hinblick auf Konfiguration und Netzwerk-Timeouts

ADS Stream Interface

The TcEventLogger bietet ein binäres ADS basiertes Netzwerk Interface.

Um den Aufwand zur Entwicklungt gering zu halten bietet Beckhoff eine Proxy Implementierung welche binäre Codierung und Datenaustauch kapselt. Die TcEventLogAdsProxy Klasse bietet alle Methoden der TcEventLogger COM API, benutzt statt DCOM jedoch ADS um die Verbindung zu remote Systemen herzustellen.


Hinweise zur Dokumentation

Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- und Automatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist.
Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der Dokumentation und der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.
Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem Zeitpunkt veröffentlichte Dokumentation zu verwenden.

Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungen und Normen erfüllt.

Disclaimer

Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiter entwickelt.
Wir behalten uns das Recht vor, die Dokumentation jederzeit und ohne Ankündigung zu überarbeiten und zu ändern.
Aus den Angaben, Abbildungen und Beschreibungen in dieser Dokumentation können keine Ansprüche auf Änderung bereits gelieferter Produkte geltend gemacht werden.

Marken

Beckhoff®, TwinCAT®, EtherCAT®, EtherCAT G®, EtherCAT G10®, EtherCAT P®, Safety over EtherCAT®, TwinSAFE®, XFC®, XTS® und XPlanar® sind eingetragene und lizenzierte Marken der Beckhoff Automation GmbH.
Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen.

Patente

Die EtherCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP1590927, EP1789857, EP1456722, EP2137893, DE102015105702
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

EtherCAT® ist eine eingetragene Marke und patentierte Technologie lizenziert durch die Beckhoff Automation GmbH, Deutschland.

Copyright

© Beckhoff Automation GmbH & Co. KG, Deutschland.
Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sind verboten, soweit nicht ausdrücklich gestattet.
Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmuster- oder Geschmacksmustereintragung vorbehalten.


Alarm & Event für Windows NT/2000/XP/Vista

TwinCAT Systemfehler Loggen

Ab TwinCAT 2.8 kann das TwinCAT System NC Fehler und I/O Fehler im TcEventLogger protokollieren.

Das Protokollierverhalten kann durch den folgenden Registereintrag kontrolliert werden:

HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT\System[LogMessageType]

Mögliche Werte für LogMesssageType sind:

Wert | Beschreibung
0 | TwinCAT System Meldung in das Betriebssystem eingeloggt.
1 | TwinCAT System Meldung in den TcEventLoggereingeloggt. Sie sind für das Benutzerprogramm wie das HMI in der Liste der protokollierten Events verfügbar. System Meldungen verwenden den TcXmlFormatter.
2 | Defaultmodus , wie 0 und 1. TwinCAT System Meldung in das Betriebssystem und den TcEventLoggereingeloggt.

Meldungsquellen, Datenhaltung und Anzeige auf einem TwinCAT System in Übersicht:

Meldungen auf einem TwinCAT (PC) System
Quelle | Meldungstext als XML-Datei | Datenbank |  | Anzeige
 |  | TcEventLogger (TwinCAT Projektspeicher *.tps - Datei) | Ereignisanzeige des Betriebssystems | TcEventViewer-Client z.B. TcEventBar.exe | Ereignisanzeige des Betriebssystems | TwinCAT System Manager Logger
Betriebssystem | - | - | X | - | X | -
ADSLOGSTR, ADSLOGDINT, ADSLOGLREAL Funktionen | - | - | X | - | X | X
ADSLOGEVENT Funktionsbaustein | X* | X | - | X | - | -
TwinCAT System NC und IO-Meldungen | X ab TwinCAT 2.8 | X** nur bei LogMessageType 1 oder 2 | X nur bei LogMessageType 0 oder 2 | X** nur bei LogMessageType 1 oder 2 | X nur bei LogMessageType 0 oder 2 | X

- : Nicht möglich

X : Ja, möglich

* Nur bei der Benutztung vom TcXmlFormatter.

** Es werden nicht alle Meldungen gelogt um die Systemauslastung zu minimieren.

Logbuch abschalten

Der TcEventlogger hält sich ein kleines Logbuch von max 128 Meldungen. Dieses Logbuch speichert der TcEventlogger mit seiner Konfiguration im Projekt Storage. Um das Speichern im Storage zu unterbinden und auf temporäre Log Files umzuschalten kann ein Wert in der Registry gesetzt werden:

HKLM\SYSTEM\CurrentControlSet\Services\TcEventLogger\LogToTcStg (REG_BINARY)

  • Nicht vorhanden, oder = 0x1 lässt in den Storage Loggen.
  • Vorhanden und Wert = 0x0 verhindert das Loggen in den Storage.

DCOM Security

Ab TwinCAT 2.11. werden die Rechte des TcEventLoggers implizit gesetzt. Um die Rechte (z.B. für remote Zugriff) mittels dcomcnfg zu konfigurieren muss folgender Wert in der Registry gesetzt werden:

HKLM\SYSTEM\CurrentControlSet\Services\TcEventLogger\UseAppIdSecurity (REG_DWORD)

  • Nicht vorhanden oder = 0 : implizite Konfiguration der Zugriffsrechte
  • >= 1 : Konfiguration via Registry/ Dcomcnfg


Alarm & Events für Windows CE

Der TcEventLoggerCE ist auf Beckhoffs WindowsCE Plattformen verfügbar seit Image Version

  • 2.20a
  • 3.06a

Unter WindowsCe wird nur der ADS Kommunikationskanal unterstützt. Benutzen sie die TcEventLogAdsProxy Library um eventlogging Lösungen zu realisieren.


Overview

Certain pruduction environments may require the possibility for displaying events of certain machines on a host computer. The TcEventLogger does support two ways for implementing such systems:

  • DCOM
    This is a propietary protocol developed by Microsoft. Method calls are serialized over the network so that one can call methods inside the remote TcEventLogger. This protocol is only avalable on Windows NT/ XP based systems.
  • ADS
    Beckhoff has defined a binary protocol for exchange of event states and state callbacks. This protocol is supported on NT/ XP as well as on Windows CE.
Exchanging the communication layer during the development process or even at runtime is possible with minimal effort.


Overview

TwinCAT EventLogger - Connectivity

Übersicht

Allgemein

Der TcEventLogger unterstützt DCOM Verbindungen zu Remote Systemen. DCOM erlaubt die Erzeugung virtueller lokaler Instanzen eines Objekts, welches physikalisch auf einem Remote PC läuft. Durch die Verwendung von DCOM können Sie eine Instanz auf einem Remote Evenlogger erzeugen und seine aktiven oder geloggten Events programmtechnisch abfragen.

EventViewer/ HMI

Der TcEventViewer ActiveX unterstützt DCOM Remote Verbindungen. Verwenden Sie die Methode AddConnection um einen Remote Eventlogger hinzu zu fügen. Der TcEventViewer unterstützt Verbindungen zu einer unbegrenzten Anzahl von virtuellen Remote Maschinen.

Hinweise

DCOM muss konfiguriert werden, um den Zugriff auf einen anderen Rechner zu erlauben. Weitere Informationen finden Sie im MSDN.

DCOM wird nicht von der Beckhoff Windows CE Plattform unterstützt.


Beispiele

C++

void ConnectComputer(BSTR computer)
{
ITcEventLogPtr spTcEventLog
COSERVERINFO comServerInfo={0};

comServerInfo.pwszName = computer;
MULTI_QI mQI={&IID_ITcEventLog, NULL, 0};

hr=::CoCreateInstanceEx( CLSID_TcEventLog,
NULL,
CLSCTX_SERVER,
&comServerInfo,
1,
&mQI);
if ( SUCCEEDED(hr) )
{
spTcEventLog = mQI.pItf;
mQI.pItf->Release();
}
//...
}


Übersicht

TwinCAT EventLogger - TcEventLogAdsProxy

Overview

General

Use the TcEventLogAdsProxy for connecting your application to an instance of the TcEventLogger. The EventLogger may either be running locally or on a remote computer.

This class implements the ITcEventLogAdsProxy interface for creating ADS connections and inherits from the ITcEventlog interfaces. The ITcEventLog provides an object oriented and easy to use programming interface

Requirements

Connections to the AdsProxy are supported

  • on Windows NT/ XP/ Vista since TwinCAT 2.10.1327
  • on Windows CE since image version 2.20a or 3.06a

Setup

  1. Create an ADS route between local and remote system (Not neccesary for local connections)
  2. Call the ITcEventLogAdsProxy::Connect() method


Übersicht

TwinCAT EventLogger - TcEventLoggerCE

Compatibility

The WindowsCE Eventlogger offers a high degree of compatibility to the standard Win32 based logger. Minimal effort is reqired to develop an application that supports both versions. This document provides some implementation hints on developing a compatible application.

See samples for

  • C#
  • C++
  • TcEventViewer
  • TcEventBar

Developing a C# application that supports both versions of the TcEventLogger

  1. Add references to the "Beckhoff TcEventLogger" and the "Beckhoff TcEventLogAdsProxy" COM type libraries
  2. Add one global instance of the TcEventLogger

    TcEventLog m_logger = null;

  3. Use theese two methods to connect either to a local PC Based TcEventLogger or an remote WindowsCE system. If your application is a Windows CE and shall connect the local logger pass Null for the NetId

    void ConnectRemoteLogger( String strNetId )
    {
    TcEventLogAdsProxyLib.TcEventLogger adsLogCLient = new TcEventLogAdsProxyLib.TcEventLogger();
    adsLogCLient.Connect( strNetId );
    m_logger = (TcEventLog)adsLogCLient;
    }

    void ConnectLocalPC()
    {
    m_logger = new TCEVENTLOGGERLib.TcEventLog();
    }

  4. Write currently active events to the console window

    foreach( TcEvent evt in m_logger.EnumActiveEventsEx() )
    Console.WriteLine( evt.GetMsgString(1033) );

Developing a C++ application that supports both versions of the TcEventLogger

  1. Import type libraries of the "Beckhoff TcEventLogger" and the "Beckhoff TcEventLogCEProxy"

    2. #pragma warning(disable: 4192)
    #import "C:\TwinCAT\TcEventLogger\TcEventlogger.exe" no_namespace, named_guids
    #import "C:\TwinCAT\TcEventLogger\TcEventLogAdsProxy.dll" no_namespace, named_guids
    #pragma warning(default: 4192)

  2. Add a member variable for the TcEventLogger object

    ITcEventLogPtr m_spTcEventLog;

  3. Use theese two methods to connect either to a local PC Based TcEventLogger or an remote WindowsCE system. If your application is a Windows CE and shall connect the local logger pass Null for the NetId

    HRESULT ConnectRemoteLogger( BSTR strNetId )
{
HRESULT hr = E_FAIL;
if ( m_spTcEventLog == NULL )
{
hr =
        m_spTcEventLog.CreateInstance(CLSID_TcEventLogAdsProxy);
if ( SUCCEEDED(hr) )
{
ITcEventLogAdsProxyPtr spLogCE =
        m_spTcEventLog;
hr = spLogCE->Connect(
        strNetId ); // 5.1.47.197.1.1
}
}
}

void ConnectPC( BSTR strComputer )
{
HRESULT hr=E_FAIL;

COSERVERINFO comServerInfo={0};

comServerInfo.pwszName = strComputer ;
MULTI_QI mQI={&IID_ITcEventLog, NULL, 0};

if ( m_spTcEventLog == NULL )
hr=::CoCreateInstanceEx(CLSID_TcEventLog,
NULL,
CLSCTX_SERVER,
&comServerInfo,
1,
&mQI);
if ( SUCCEEDED(hr) )
{
m_spTcEventLog = mQI.pItf;
mQI.pItf->Release();
}
}

Connect the TcEventViewer with the TcEventLoggerCE

  1. TcEventViewer version 2.9.0.73 is required (Shipped with TwinCAT build 2.10.1317 or higher)
  2. For connecting a WindowsCE device pass "ADS://<AmsNetId>" to the ITcEventView::AddConnection() method

Using the TcEventBar with the TcEventLoggerCE

  1. TcEventViwer version 2.9.0.73 is required (Shipped with TwinCAT build 2.10.1317 or higher)
  2. In the Connect field type "ADS://<AmsNetId>"


Übersicht

TwinCAT EventLogger - TcEventLogAdsProxy

Overview

Supported Interfaces :

Interface | Description
ITcEventLogAdsProxy | This is the main Interface of the TcEventLogAdsProxy. Use this interface to connect an instance of the TcEventLogger. After the proxy has successfully connected continue using the standard TcEventLogger interfaces
ITcEventLog | This it the main Interface of the TcEventLogger for COM Clients like HMI. It offers functions to control active and logged alarms and to add and remove alarms.
ITcEventLogC | This is the basic interface of ITcEventLogC3 and ITcEventLogC2.
ITcEventLogC2 | This interface derives from ITcEventLogC and is the basic interface for ITcEventLogC3.
ITcEventLogC3 | This is a application-specific interface of the TcEventLoggers for COM Clients that use application-specific interfaces like HMI. is interface derives from ITcEventLogC2.
ITcEventLogEvents | Callback functions for callbacks from the TcEventlogger to COM-Clients. Clients can use this to get informations when an event occurs or is cancelled.


Overview

The ITcEventLogAdsProxy interface provides the basic functionality for connecting to a Eventlogger.

ITcEventLog Methods and Properties | Description
Connect | Connect to a remote TcEventLoggerCE by passing the target AmsNetId or Computer Name as a string. Pass NULL or 'localhost' to connect to a local instance of the TcEventLogger. NOTE: precondition for a successful connection to a remote instance is that an ADS route has been configured.
Disconnect | Disconnect from the TcEvenLoggerCE. This method is called internally upon destruction of the object.
Connected | Gets whether the proxy is currently connected to an Instance of the TcEventloggerCE.


Übersicht

BECKHOFF TcEventConfig

Beckhoff TcEventConfigurator

Der TcEventConfigurator ist ein Tool zur Einrichtung des Event Systems ohne Kenntnisse über das gesamte komplexe TcEventLogger System zu besitzen.
Die Dokumentation deckt folgende Themen ab:

  1. First Steps - Einführung in den TcEventConfigurator (Erstellen von Konfigurationen mit dem Wizard).
  2. Referenz für die UI des Konfigurators.
  3. COM Interface Dokumentation (für Entwickler die den Konfigurator in ihren eigenem Programm nutzen möchten).
  4. Formate des Konfigurators.

Der Beckhoff EventConfirator ist seit TwinCAT Version 2.10.0 (Build 1253) verfügbar.
Windows 7 support wird seit Version 2.0.0 (Build 68) des EventConfirators unterstützt.

Anforderungen:
.NET Framework 2.0


First Steps

Dieses Tutorial gibt Ihnen Schritt für Schritt Anweisungen zum Erstellen Ihrer ersten Meldung. Mit Hilfe eines übersichtlichen WIzards können Sie die Meldung konfigurieren und danach mit dem Konfigurator bearbeiten und weitere Meldungen hinzufügen.

Wenn die Meldungen konfiguriert sind können Sie sich von dem EventKonfigurator vollständigen SPS Sample Code erzeugen lassen um die Meldung auszulösen.

  1. Starten Sie den TcEventConfigurator.
  2. Falls Sie den Configurator zum ersten mal starten wird der Wizard automatisch starten.
    Anderenfalls müssen Sie den Wizard aus der Toolbar starten.
    Folgen Sie den Anweisungen des Wizards um eine Source und einen Event zu erstellen.
  3. Falls Sie mehrere Events erstellen wollen wiederholen Sie Schritt 2.
  4. Speichern Sie ihre Konfiguration im .ecp oder .xml Format.
  5. Den SPS Code zum Auslösen einer Meldung können Sie sich nun vom Konfigurator erzeugen lassen, indem Sie die entsprechende Meldung auswählen und im Kontext Menü den Punkt 'Sample Code' wählen.

  6. Fügen Sie den Code in Ihr SPS Programm ein und lösen Sie durch toggeln der Variablen 'bSetEventXXX' die Meldung aus.
    Zur Anzeige der Meldungen können Sie die TcEventbar oder den EventKonfigurator nutzen.


TcEventConfigurator - Referenz

TwinCAT EventLogger - TcEventConfigurator

TcEventConfigurator Referenz

Der TcEventConfigurator besteht aus einen TreeView links und einer vom Kontext abhängigen Eigenschaftsseite rechts.

  • Die TreeView zeigt die Struktur der Event Konfiguration an.
    Per Rechtsclick kann man alle Items bearbeiten/löschen.
    Source. Jede Source wird durch ein Source Icon dargestellt
    Der Ordner enthält alle Sourcenamen
    Der Event tag. Erweitern um alle Events zu sehen
    Message Tag. Erweitern um alle Message Strings des aktuellen Events zu sehen
    Document links zum aktuellen Event
  • Das rechte Panel zeigt detailierte Eigenschaften zum ausgewählteb Item.

    Hinzufügen/Bearbeiten vonSource Names, Messages oder URLs

    Wählen sie im Tree aus was sie hinzufügen wollen, wenn eine Source ausgewählt ist kann ein Sourcename geadded werden, wenn ein Event ausgewählt ist können Messages geadded werden und wenn ein DokLink ausgewählt ist können URLs geadded werden. Sie bekommen eine editierbare Liste mit einträgen für das ausgewählte Item. Geben sie eine LangID ins erste Feld und den text/namen ins zweite Feld ein und klicken sie auf 'Add'.

    Events Bearbeiten

    Wenn sie die Eigenschaften eines events ändern wollen müssen sie einen Event im Tree auswählen. Sie werden eine Eigenschaftsseite im rechten Panel bekommen in dem sie die Eigenschaften ändern können. Vergessen sie nicht auf 'Update' zu klicken nachdem sie die eigenschaften geändert haben.

    Löschen und kopieren von Einträgen

    Sie können die Liste der messages benutzen um Messages zu kopieren oder zu löschen. Einfach eine oder mehrere Zeilen auswählen und Rechtsklicken.


TcEventConfigurator - Dateiformate

Der TcEventConfigurator bietet die folgenden Dateiformate an:

Format | Datei Endung | Beschreibung
Event Configuration Project Ex | ecpx | Natives TcEventConfigurator Format. Verbesserte Variante des ecp Formates
Event Configuration Project | ecp | Natives TcEventConfigurator Format. Dieses Format wurde duch das ecpx Format ersetzt.
TcXMLFormatter | xml | Lädt/Speichert Daten im XML Format.
TcEventFormatter | tps | Lädt/Speichert Datem im TwinCAT Projekt Storage
Excel | xls | Lädt/Speichert Daten im Excel xls Format zur weitergabe an Übersetztungsbüros
Plain Text Format | txt | Lädt/Speichert Daten in txt Dateien

Format features

Nicht jedes Format unterstützt alle Features des TcEventKonfigurators. Die untenstehende Tabelle zeigt wellches Format welche Features unterstützt.

Wenn ihr Projekt keine besonderen Ansprüche hat welche das die Verwendung eines anderen Formats als des ecp Formats nötig machen, so sollten sie immer das Native Format bevorzugen. Das ecp format wird zu jeder Zeit alle Fautures des TcEventKonfiguartors unterstützen.

Format | Aktivierung * | Speichern der Meldungs Eigenschaften ** | Speichern von multiplen Quellen IDs ***
ecpx | x | x | x
ecp | x | x | x
xml | x | x | x
tps | x | x |
xls |  | x | x
txt |  |  |

* Wenn eine Konfiguration aktiviert ist wird der TcEventlogger diese Datei nach Meldungstexten durchsuchen.
** Meldungseigenschaften sind der Meldungs Typ(Warnung/Nachricht/...), Priorität usw.
*** Das Multiple Source ID Feature bedeutet das eine tatsächliche Quelle mit mehreren Quellen IDs verknüpft wird

Plain Text Format Beschreibung

Das PlainText Format kann zur Weitergabe an Übersetzungs Büros verwendet werden. Die Daten werden hier in Menschlich lesbarer Form gespeichert und die Datei kann händich um weitere Sprachen erweitert werden.

Dieses Beispiel zeigt eine kleine Event-Konfiguration mit dem Plain Text Format und den Sprachen Deutsch and Englisch.

Size[1,1,1]
Sourcename [0,1031] ='Ursprung'
Sourcename [0,1033] ='Source'
Message [0,1,1031] ='Meldungstext'
Message [0,1,1033] ='Message String'
DocLink [0,1,'New Doklink 1',1031] ='www.anyurl.de'
DocLink [0,1,'New Doklink 1',1033] ='www.anyurl.com'

Um eine dritte Sprache zur Konfiguration hinzuzufügen müssen sie eine Zeile kopieren und die Language ID (blau) und den dazugehörigen Text (grün) ändern.

Genaueres wird im folgendem Beispiel beschrieben:

Size[1,1,1]
Sourcename [0,1031] ='Ursprung'
Sourcename [0,1033] ='Source'
Sourcename [0,1034] ='Fuente'
Message [0,1,1031] ='Meldungstext'
Message [0,1,1033] ='Message String'
Message [0,1,1034] ='Texto'
DocLink [0,1,'New Doklink 1',1031] ='www.anyurl.de'
DocLink [0,1,'New Doklink 1',1033] ='www.anyurl.com'
DocLink [0,1,'New Doklink 1',1034] ='www.anyurl.es'

Die folgende Tabelle gibt Informationen über einige language *LCIDs.

LCID | Beschreibung
1031 | Deutsch
1033 | US Englisch
1034 | Spanisch
1036 | Französisch

*LCID: mehr Informationen gibt es in der MSDN Library.


BECKHOFF TcEventConfig

EventConfiguration on Windows CE

The TcEventConfigurator is not available for Windows CE. You can create event configurations on your Desktop System and manually activate these files on the embedded device.

To manually activate a configuration:

  1. Save it in Xml or Ecpx format.
  2. Activate the file(s) as described in the TcXmlFormatter section.


TcEventConfig Übersicht

Das TcEvtConfiguration Objekt ist die Kernkomponente des Konfigurators. Es stellt seine funktionalität durch COM mit dem ITcEvtConfig Interface zur Verfügung. Durch die Methoden kann man Konfigurationen erstellen, öffnen und bearbeiten.
Mit der TcEventConfig Library werden einige standard import und export Filter zur Verfügung gestellt. Wenn sie eine eigene Datanbank zum speichern der Informationen wollen müssen sie einfach einen eigenen Parser implementieren. Für genauere Informationen schauen sie sich das ITcEvtCfgParser Interface an.

Benutzen sie diese Interfaces um die Konfiguration zu bearbeiten:
Interface | Beschreibung
IEvtConfiguration | Kernkomponente des Konfigurators. Von hier werden Dateien geladen, gespeichert und verändert.
IEvtCfgSource | Diese Komponente repräsentiert eine Source. Damit können Sourcenamen eingestellt werden und zur Source gehörende events angesprochen werden.
IEvtCfgEvent | Diese Komponente repräsentiert einen Event. Damit können zB Messages hinzugefügt werden. Ausserden kann auf DokLinks die zum Event gehören angesprochen werden.
IEvtCfgDocLink | Diese Komponente repräsentiert einen DokLink.
IEvtCfgEnumParsers | Listet alle registrierten Parser auf.
IEvtCfgParser | Importiert und exportiert Konfigurationen in verschiedenen Formaten.


TcEventConfigEditor ActiveX

Der TcEvtCfgEditor ist ein simples TreeView Control das eine Konfiguration anzeigen und bearbeiten kann.
Es bietet basisfunktionen um eine komplette Konfiguration für den TcEventLogger zu erstellen.

Für weitergehende Funktionen werden sie die TcEvtConfiguration COM Interfaces benutzen müssen, so wie es die EventConfigApp macht.
Um das verhalten des editors anzupassen kann das IEvtCfgEditor Interface benutzt werden.


ITcEvtConfig::Übersicht

TwinCAT EventLogger - TcEventConfigurator

Übersicht

Das IEvtConfiguration Interface ist die Kernkomponente des Konfigurators. Durch seine Methoden können Konfigurationen gespeichert, geladen und bearbeitet werden.
Es implementiert ausserdem das _IEvtCfgEvents Interface um die Applikation über änderungen in der Konfiguration zu benachrichten.

IEvtConfiguration Methoden und Eigenschaften nach Vtable sortiert

IEvtConfiguration Methods | Description
AddSource | Fügt eine Source zur Konfigutation hinzu
GetSource | Bekommt eine Source von der Konfiguration
RemoveSource | Entfernt eine Source aus der Konfiguration
GetFirstSource | Startet eine Auflistung aller Sources in der Konfiguration
GetNextSource | Führt die Auflistung der Sources fort
EnumParsers | Bekommt ein enum Objekt um die registrierten Parser aufzulisten
SourceCount | Zählt die Anzahl der Sources in der Konfiguration
ClearConfig | Setzt die ganze Konfiguration zurück
GetConfigSize | Bekommt die Anzahl der Sources, Events und DokLinks in der Konfiguration
CopyTo | Kopiert die Konfiguration zu einer anderen oder zu einer neuen Konfiguration

_IEvtCfgEvents Methoden und Eigenschaften nach Vtable sortiert

_IEvtCfgEvents Methods | Description
OnNewSource | Eine neue Source wurde hinzugefügt
OnEditSource | Eine Source wurde bearbeitet
OnDeleteSource | Eine Source wurde gelöscht
OnNewEvent | Ein Event wurde hinzugefügt
OnEditEvent | Ein Event wurde bearbeitet
OnDeleteEvent | Ein Event wurde gelöscht
OnNewLink | Ein Link wurde hinzugefügt
OnEditLink | Ein Link wurde bearbeitet
OnDeleteLink | Ein Link wurde gelöscht


ITcEvtConfig::AddSource

Fügt eine Source zur Konfigutation hinzu.
Sources werden anhand ihrer Id Identifiziert, doppelte Ids sind nicht erlaubt.

HRESULT AddSource([in] IEvtCfgSource* pSource);

Parameters

pSource

[in] Pointer zu einem neuen Source Objekt

Return Values

S_OK

Die Source wurde erfolgreich zur Konfiguration hinzugefügt. Der OnNewSource Event wurde ausgelöst.

E_FAIL

pSource konnte nicht zur Konfiguration hinzugefügt werden. Das kann passieren wenn die Source bereits Child einer anderen Konfiguration ist oder die Id bereits verwendet wird.

E_POINTER

pSource ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtConfig::ClearConfig

Setzt die ganze Konfiguration zurück.

HRESULT ClearConfig();

Parameters

Return Values

S_OK

Die Konfiguration wurde geleert

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtConfig::CopyTo

Kopiert die Konfiguration zu einer anderen oder zu einer neuen Konfiguration.

HRESULT CopyTo([out, retval] IEvtConfiguration** ppConfiguration);

Parameters

ppConfiguration

[out, retval] Pointer zu einem Pointer zur Zielkonfiguration. Wenn *ppConfiguration NULL ist wird eine neue Konfiguration erstellt.

Return Values

S_OK

ppConfiguration enthält eine Kopie der Konfiguration

E_POINTER

pSource ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtConfig::EnumParsers

Bekommt ein IEvtCfgEnumParser Objekt um die registrierten Parser aufzulisten .

HRESULT EnumParsers([out, retval] IDispatch** ppEnum);

Parameters

ppEnum

[out, retval] Pointer zu einem Pointer der das zurückgegebene Aufzählungsobjekt speichern soll.

Return Values

S_OK

ppEnum enthält einen gültigen pointer zu einem IDispatch Pointer, mit dem sie auf das IEvtCfgEnumParser Interface zugreifen können.

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtConfig::GetConfigSize

Bekommt die Anzahl der Sources, Events und DokLinks in der Konfiguration.

HRESULT GetConfigSize([out] long* nSources, [out] long* nEvents, [out] long* nDocLinks);

Parameters

nSources

[out] Pointer zu einer Variable die die Anzahl der Sourcen speichern soll. Falls null wird die Anzahl nicht zurückgegeben.

nEvents

[out] Pointer zu einer Variable die die Anzahl der Events speichern soll. Falls null wird die Anzahl nicht zurückgegeben.

nDocLinks

[out] Pointer zu einer Variable die die Anzahl der DocLinks speichern soll. Falls null wird die Anzahl nicht zurückgegeben.

Return Values

S_OK

Die Funktion wurde erfolgreich ausgeführt

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtConfig::GetFirstSource

Bekommt eine Source von der Konfiguration.
Diese Methode resettet den internen Iterator und ruft GetNextSource auf.
Um die Aufzählung fortzusetzen rufen sie GetNextSource auf.

HRESULT GetFirstSource([out, retval] IEvtCfgSource** ppSource);

Parameters

[out, retval] Pointer zu einem Pointer der die zurückgegebene Source speichert.

Return Values

S_OK

ppSource enthält einen gültigen Pointer zu einem IEvtCfgSource Objekt.

S_FALSE

Die Konfiguration hat keine Sourcen. *ppSource wurde auf NULL gesetzt.

E_POINTER

ppSource ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtConfig::GetNextSource

Bekommt die nächste Source der Konfiguration im bezug auf den internen Iterator.
Bevor sie eine Auflistung starten rufen sie GetFirstSource auf.
Nachdem Sourcen hinzugefügt oder entfernt wurden müssen sie die Aufzählung mit GetFirstSource neu starten.

HRESULT GetNextSource([out, retval] IEvtCfgSource** ppSource);

Parameters

[out, retval] Pointer zu einem Pointer der die zurückgegebene Source speichert.

Return Values

S_OK

ppSource enthält einen gültigen Pointer zu einem IEvtCfgSource Objekt.

S_FALSE

Die Konfiguration hat keine weiteren Sourcen. *ppSource wurde auf NULL gesetzt.

E_POINTER

ppSource ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtConfig::GetSource

Bekommt eine Source von der Konfiguration
Die Source wird anhand ihrer Id identifiziert. Wenn die Id unbekannt ist können sie die Sourcen mit GetFistSource und GetNextSource auflusten.

HRESULT GetSource([in] long nId, [out,retval] IEvtCfgSource** ppSource);

Parameters

nId

[in] Id der Source

ppSource

[out, retval] Pointer zu einem Pointer der die Source speichern soll.

Return Values

S_OK

ppSource enthält einen gültigen Pointer zu einem IEvtCfgSource Objekt.

E_INVALIDARG

Es existiert keine Source mit dieser Id in der Konfiguration.

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtConfig::RemoveSource

Entfernt eine Source aus der Konfiguration.
Die Source wird anhand ihrer Id identifiziert.

HRESULT RemoveSource([in] long nId);

Parameters

nId

[in] Id der Source die entfernt werden soll

Return Values

S_OK

Die angegebene Source wurde aus der Konfiguration entfernt.

E_INVALIDARG

Es existiert keine Source mit dieser Id in der Konfiguration.

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtConfig::SourceCount

Zählt die Anzahl der Sources in der Konfiguration.

HRESULT SourceCount([out, retval] long *pVal);

Parameters

pVal

[out, retval] Pointer zu einer Variable die den Rückgabewert speichern soll.

Return Values

S_OK

ppSource enthält ein gültiges IEvtCfgSource Objekt.

E_POINTER

pVal ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource Übersicht

Das ITcEvtCfgSource Interface beitet zugriff auf Objekte die eine Source in der Konfiguration repräsentieren. Jede Source wird an ihere eindeutigen Id identifiziert und kann Namen in mehreren Sprachen haben. Wenn Sources teil einer Konfiguration sind haben sie genau einen Parent vom Typ IEvtConfiguration. Eine Source kann nicht Child von mehreren Konfigurationen sein. Eine source kann mehere Childs vom Typ ITcEvtCfgEvent haben.

Methoden und Eigenschaften nach Vtable sortiert

ITcEvtConfig Methods | Description
Name | Setzt/Bekommt den Sourcenamen in der angegebenen Sprache
AddEvent | Fügt einen Event zur Source hinzu
GetEvent | Bekommt den Event mit der angegebenen Id
RemoveEvent | Entfernt einen Event
Id | Setzt oder bekommt die Source Id
GetFirstName | Startet eine Aufzählung der Sourcenamen
GetNextName | Setzt die Aufzählung der Sourcenamen fort
GetFirstEvent | Startet eine Aufzählung der Events
GetNextEvent | Setzt die Aufzählung der Events fort
GetDefaultName | Holt den standard Sourcenamen im Bezug auf die Systemsprache
RemoveName | Entfernt den Sourcename in der angegebenen Sprache
Parent | Setzt oder bekommt den Parent der Source
IsParentOnlyReference | Prüft ob die Source die einzige Referenz ist
EventCount | Zählt die Anzahl der Events die Children der aktuellen Source sind
CopyTo | Kopiert die Source zu einem anderen EvtCfgSource Objekt


ITcEvtCfgSource::AddEvent

Fügt einen Event zur Source hinzu.
Events werden anhand ihrer Id identifiziert - doppelte Ids sind nicht möglich. Events dürfen auch nur einen Parent haben, wenn der Event bereits Child einer anderen Source ist wird die Funktion fehlschlagen.

HRESULT AddEvent([in] IEvtCfgEvent* pEvent);

Parameters

pEvent

[in] Pointer zum Event Objekt das hinzugefügt werden soll

Return Values

S_OK

Der neue event wurde erfolgreich hinzugefügt. Der OnNewEvent Event wurde ausgelöst.

E_FAIL

pEvent konnte nicht zur Konfiguration hinzugefügt werden. Das kann passieren weil die Source bereits einen Event mit dieser Id hat oder der Event zu einer anderen Source gehört.

E_POINTER

pEvent ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::CopyTo

Kopiert die Source zu einem anderen EvtCfgSource Objekt.

HRESULT CopyTo([out, retval] ITcEvtCfgSource** ppSource);

Parameters

ppSource

[out, retval] Pointer zu einen Pointer zur Zielsource. Wenn *ppSource NULL ist wird eine neue Source erstellt.

Return Values

S_OK

ppSource enthält eine Kopie der Source

E_POINTER

ppSource ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::EventCount

Zählt die Anzahl der Events die Children der aktuellen Source sind.

Property get

HRESULT EventCount([out, retval] long *pVal);

Parameters

pVal

[out, retval] Pointer zu einer long Variable die die Anzahl der Children bekommt.

Return Values

S_OK

Funktion erfolgreich ausgeführt

E_POINTER

pVal ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::GetDefaultName

Holt den standard Sourcenamen.
Es wird in folgender reihenfolge geprüft und der erste 'Treffer' wird übergeben.

  1. Language des Systems
  2. Englisch (1031 / 9)
  3. Deutsch (1033 / 7)
  4. Niedringste lcid

Property get

HRESULT Name([out, retval] BSTR *name);

Parameters

name

[out, retval] Pointer zu einer BSTR Variable die den Sourcenamen bekommen soll

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt

S_FALSE

Es ist kein Name für die Source vorhanden, name ist NULL

E_POINTER

name ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::GetEvent

Bekommt den Event mit der angegebenen Id.
Wenn die event Id unbekannt ist können sie alle Events der Source mit GetFistEvent und GetNextEvent auflisten.

HRESULT GetEvent([in] long nId, [out,retval] IEvtCfgEvent** ppEvent);

Parameters

nId

[in] Id des Events

ppSource

[out, retval] Pointer zu einem Pointer der das zurückgegebene Objekt speichern soll

Return Values

S_OK

ppSource enthält einen gütigen Pointer auf ein IEvtCfgSource Objekt.

E_INVALIDARG

Es existiert kein Event mit der angegebenen Id in der Source-

E_POINTER

ppEvent ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::GetFirstEvent

Bekommt den ersten Event der Source.
Diese Funktion resetet den internen Iterator und ruft GetNextEvent auf.
Um die Aufzählung fortzusetzen rufen sie GetNextEvent auf.
Wenn die Source von einer asynchronen Operation gesperrt ist, wird nicht E_FAIL zurückgegeben sondern gewartet bis die sperrung aufgehoben ist.

HRESULT GetFirstEvent([out,retval] IEvtCfgEvent** ppEvent);

Parameters

ppEvent

[out, retval] Pointer zu einem IEvtCfgEvent interface Pointer in dem das erste Child gespeichert wird.

Return Values

S_OK

Funktion erfolgreich ausgeführt.

S_FALSE

Die Source hat keine Events. *ppEvent ist NULL.

E_POINTER

ppEvent ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::GetFirstName

Bekommt den ersten Namen der Source.
Diese Funktion resetet den internen Iterator und ruft GetNextName auf.
Um die Aufzählung fortzusetzen rufen sie GetNextName auf.

HRESULT GetFirstName([out] BSTR* pName, [out,retval] long* pLangId);

Parameters

name

[out] Pointer zu einer BSTR Variable die den Namen bekommen soll.

pLangId

[out, retval] Pointer zu einer long Variable die die lang id bekommen soll

Return Values

S_OK

name enthält den ersten Namen der Source

S_FALSE

Die Source hat keine Namen. *name ist NULL.

E_POINTER

name ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::GetFirstName

Bekommt das nächste Child ausgehend vom internen Iterator.
Vor dem start einer Aufzählung müssen sie GetFirstEvent aufrufen.
Nachdem Events hinzugefügt oder entfernt wurden müssen sie den internen Iterator resetten indem sie GetFirstEvent aufrufen.
Wenn die Source von einer asynchronen Operation gesperrt ist, wird nicht E_FAIL zurückgegeben sondern gewartet bis die sperrung aufgehoben ist.

HRESULT GetNextEvent([out, retval] IEvtCfgSEvent** ppEvent);

Parameters

ppEvent

[out, retval] Pointer zu einem IEvtCfgEvent interface Pointer in dem das erste Child gespeichert wird.

Return Values

S_OK

Funktion erfolgreich ausgeführt

S_FALSE

Die Source hat keine Events. *ppEvent ist NULL.

E_POINTER

ppEvent ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::GetNextName

Bekommt den nächsten Namen ausgehend vom internen Iterator.
Vor dem start einer Aufzählung müssen sie GetFirstName aufrufen.
Nachdem Events hinzugefügt oder entfernt wurden müssen sie den internen Iterator resetten indem sie GetFirstName aufrufen.

HRESULT GetNextName([out, retval] BSTR* name);

Parameters

name

[out] Pointer zu der BSTR Variable die den Sourcenamen bekommen soll

pLangId

[out, retval] Pointer zu der long Variable die die lang id bekommen soll

Return Values

S_OK

Funktion erfolgreich ausgeführt

S_FALSE

Die Source hat keine Namen. *name ist NULL.

E_POINTER

name ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::Id

Setzt oder bekommt die Source Id.
Wenn die Source bereits Child einer Konfiguration ist, wird sie entfernt und mit der neuen Id hinzugefügt. Der SourceRemoved und der NewSource Event werden ausgelöst.

Property get

HRESULT Id([out, retval] long *pVal);

Parameters

pVal

[out, retval] pointer zu einer long Variable die die Source Id bekommen soll

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt

E_POINTER

pVa ist kein gültiger Pointer

Property set

HRESULT Id([in] long newVal);

Parameters

newVal

[in] long Variable mit der neuen Source Id

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt

E_FAIL
Die Source ist Child einer Konfiguration die bereits eine andere Source mit der angegebenen Id hat.
Die Id bleibt unverändert.

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::IsParentOnlyReference

Prüft ob die Source die einzige Referenz ist.

HRESULT IsParentOnlyReference([out, retval] BOOL* pVal);

Parameters

pVal

[out, retval] Pointer zu einer BOOL Variable die das Ergebnis speichern soll.

Return Values

S_OK

Erfolg.

S_FALSE

Die Source hat keinen Parent. *pVal ist False.

E_POINTER

pVal ist kein gültiger Pointer


ITcEvtCfgSource::Name

Setzt/Bekommt den Sourcenamen in der angegebenen Sprache

Property get

HRESULT Name([in] long langId, [out, retval] BSTR *pVal);

Parameters

langId

[in] long Variable die die lang id für den gewünschten String enthält.

pVal

[out, retval] Pointer zu einer BSTR Variable die den Sourcenamen bekommen soll.

Return Values

S_OK

Funktion erfolgreich ausgeführt.

E_FAIL

Es existiert kein Sourcename für die angegebene Sprache

E_POINTER

pVal ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.

Property set

HRESULT Name([in] long langId, [in] BSTR *pVal);

Parameters

langId

[in] long Value mit der lang id die der Sourcename bekommen soll.

pVal

[in] BSTR Variable die den Namen der hinzugefügt werden soll enthält.

Return Values

S_OK

Funktion erfolgreich ausgeführt.

E_FAIL

A name for the language Id does already exist

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::Parent

Setzt oder bekommt den Parent der Source.
Den Parent zu setzen ist nur für internen gebrauch. Wenn man den Parent auf ungültige Werte setzt kann das zu Nebeneffekten führen. Wenn sie den Parent ändern wollen benutzen sie IEvtConfiguration:: AddSource oder IEvtConfiguration:: RemoveSource.

Property get

HRESULT Name([out, retval] IDispatch** ppVal);

Parameters

ppVal

[out, retval] Pointer zu einer IDispatch* Variable die den Parent der Source bekommt

Return Values

S_OK

Funktion erfolgreich, wenn die source einen Parent hat ist *ppVal gültig, sonst NULL

E_POINTER

ppVal ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::RemoveEvent

Entfernt einen Event.
Der zu entfernende Event wird anhand seiner Id Identifiziert.

HRESULT RemoveEvent([in] long nId);

Parameters

nId

[in] Id des evetns der entfernt werden soll.

Return Values

S_OK

Der angegebene Event wurde aus der Konfiguration gelöscht.

E_INVALIDARG

Es existiert kein Event mit der angegebenen Id in der Source

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgSource::RemoveName

Entfernt den Sourcename in der angegebenen Sprache.

HRESULT RemoveName([in] long nId);

Parameters

nId

[in] Lang Id des Namens der gelsöcht werden soll.

Return Values

S_OK

Der angegebene Name wurde entfernt

E_INVALIDARG

Der Name mit der angegebenen Lang Id existiert nicht.

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


IEvtCfgEvent Interface Übersicht

Das IEvtCfgEvent Interface repräsentiert einen Event der Konfiguration. Durch seine Methoden können Events Erstellt und verändert werden.

Methoden und eigenschaften nach Vtable sortiert

IEvtCfgEvent Methods | Description
Id | Setzt oder holt die Event Id
Class | Setzt oder holt die Event Klasse
Priority | Setzt oder holt die Event Priority
MustConfirm | Prüft ob der Event Bestätigt werden muss
MsgString | Setzt oder holt den Message String in einer bestimmten Sprache
AddDocLink | Fügt einen DocLink zum Event hinzu
RemoveDocLink | Entfernt einen DocLink vom Event
GetDocLink | Holt einen DocLink
GetFirstMessage | Startet die Auflistung der Message Strings
GetNextMessage | Führt die Auflistung der Message Strings fort
GetFirstFormatString | Startet die Auflistung der Format Strings
GetNextFormatString | Führt die Auflistung der format Strings fort
GetFirstDocLink | Startet die Auflistung der DocLinks
GetNextDocLink | Führt die Auflistung der DocLinks fort
Parent | Setzt oder holt den Parent des Events
IsParentOnlyReference | Prüft ob der Event die einzige Referenz ist
DocLinkCount | Zählt die DokLinks vom Event
CopyTo | Erstellt eine Kopie des Events


ITcEvtCfgEvent::AddDocLink

Fügt einen DocLink zum Event hinzu.
DocLinks werden durch ihren Namen identifiziert. DocLinks können nur einen Parent haben. Wenn ein DocLink bereits Child eines anderen Events ist wird die Methode fehlschlagen.

HRESULT AddDocLink([in] IEvtCfgDocLinkt* pLink);

Parameters

pLink

[in] Pointer zu dem neuen DocLink Objekt das hinzugefügt werden soll.

Return Values

S_OK

Der neue DokLink wurde erfolgreich hinzugefügt

E_FAIL

pLink konnte nicht zum Event hinzugefügt werden. Das kann passieren wenn der Link bereits Child eines anderen Events ist.

E_POINTER

pLink ist kein gültiger Pointer

E_ACCESSDENIED
Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgEvent::Class

Setzt oder holt die Event Klasse.

Property get

HRESULT Class([out, retval] long *pVal);

Parameters

pVal

[out, retval] Pointer zu einer long Variable die die Event Klasse bekommt.

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt.

E_POINTER

pVal ist kein gültiger Pointer

Property set

HRESULT Class([in] long newVal);

Parameters

newVal

[in] long Variable mit der neuen Event Klasse.

Return Values

S_OK

Die Event Klasse wurde erfolgreich geändert.


ITcEvtCfgEvent::CopyTo

Erstellt eine Kopie des Events.

HRESULT CopyTo([out, retval] ITcEvtCfgSource** ppEvent);

Parameters

ppEvent

[out, retval] Pointer zu einem Pointer zum Zielevent. Wenn *ppEvent NULL ist wird ein neuer Event erstellt.

Return Values

S_OK

ppEvent erhält eine exacte Kopie des Events

E_POINTER

ppEvent ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgEvent::DocLinkCount

Zählt die DokLinks vom Event.

Property get

HRESULT DocLinkCount([out, retval] long *pVal);

Parameters

pVal

[out, retval] Pointer zu einer long Variable die die Anzahl der DokLinks bekommt

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt.

E_POINTER

pVal ist kein gültiger Pointer


ITcEvtCfgEvent::GetDocLink

Holt einen DocLink.

HRESULT GetDocLink([in] BSTR name, [out,retval] IEvtCfgDocLink** ppLink);

Parameters

name

[in] Name des Links der geholt werden soll.

ppLink

[out, retval] Pointer zu einem Pointer der das zurückgegebene DocLink Objekt.

Return Values

S_OK

ppLink enthält einen gültigen pointer zu einem IEvtCfgSource Objekt.

E_INVALIDARG

Es existiert kein DocLink mit dem angegebenen Namen im Event.

E_POINTER

ppLink ist kein gültiger Pointer


ITcEvtCfgEvent::GetFirstMessage

Startet die Auflistung der Message Strings.
Diese Funktion resettet den internen Iterator und ruft GetNextMessage auf.
Um die Aufzählung fortzusetzen rufen sie GetNextMessagee auf.

HRESULT GetFirstMessage([out] BSTR* message, [out,retval] long* pLangId);

Parameters

message

[out] Pointer zu einer BSTR Variable die die erste Message des Events bekommen soll.

pLangId

[out, retval] Pointer zu einer long Variable die die lang Id der Message speichert.

Return Values

S_OK

message enthält die erste Message des Events.

S_FALSE

Die Source hat keine Messages. *message ist NULL.

E_POINTER

message ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgEvent::GetNextMessage

Führt die Auflistung der Message Strings fort.
Bevor sie die Auflustung starten rufen sie GetFirstMessage auf.
Nachdem Messages hinzugefügt oder entfernt wurden muss die Aufzählung mit GetFirstMessage neu gestartet werden.

HRESULT GetNextMessage([out] BSTR* message, [out, retval] long* langId);

Parameters

message

[out] Pointer zu einer BSTR Variable die die nächste Message des Events bekommen soll.

langId

[out, retval] Pointer zu einer long Variable die die lang Id der Message speichert.

S_OK

message enthält die nächste Message des Events.

S_FALSE

Die Source hat keine Messages. *message ist NULL.

E_POINTER

message ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgEvent::Id

Setzt oder holt die Event Id.
Wenn der Event bereits das Child einer Source ist wird er entfernt und neu hinzugefügt. die EventRemoved und NewEvent events werden ausgelöst.

Property get

HRESULT Id([out, retval] long *pVal);

Parameters

pVal

[out, retval] Pointer zu einer long Variable die die Event Id bekommt

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt.

E_POINTER

pVal ist kein gültiger Pointer

Property set

HRESULT Id([in] long newVal);

Parameters

newVal

[in] long Variable mit der neuen Event Id

Return Values

S_OK

The Event Id wurde erfolgreich auf newVal gesetzt

E_FAIL

Der Event ist das child eines Source Objekts welches bereits einen anderen Event mit dieser id enthält.
Die id wurde nicht verändert.

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgEvent::IsParentOnlyReference

Prüft ob der Event die einzige Referenz ist.

HRESULT IsParentOnlyReference([out, retval] BOOL* pVal);

Parameters

pVal

[out, retval] Pointer auf eine BOOL Variable die das Ergebnis speichert.

Return Values

S_OK

Erfolg.

S_FALSE

Der Event hat keinen Parent. *pVal ist False.

E_POINTER

pVal ist kein gültiger Pointer


ITcEvtCfgEvent::MsgString

Setzt oder holt den Message String in einer bestimmten Sprache.

Property get

HRESULT MsgString([in] long langId, [out, retval] BSTR *pVal);

Parameters

langId

[in] Die language id die Message die zurückgegeben werden soll.

pVal

[out, retval] Pointer zu einer BSTR Variable die den String bekommt.

Return Values

S_OK

Funktion wurde Erfolgreich ausgeführt.

E_POINTER

pVal ist kein gültiger Pointer

E_FAIL

Es existiert keine Message für die angegebene Sprache

Property set

HRESULT MsgString([in] long langId, [in] BSTR newVal);

Parameters

langId

[in] Die language id für den message String der gesetzt werden soll.

newVal

[in] BSTR Variable die den String der geschrieben werden soll enthält.

Return Values

S_OK

Funktion wurde Erfolgreich ausgeführt.

E_FAIL

Ein message String für die angegebene Sprache existiert bereits


ITcEvtCfgEvent::MustConfirm

Prüft ob der Event bestätigt werden muss.

Property get

HRESULT MustConfirm([out, retval] BOOL *pVal);

Parameters

pVal

[out, retval] Pointer zu einer BOOL Variable die den aktuellen Status bekommt

Return Values

S_OK

Funktion wurde Erfolgreich ausgeführt

E_POINTER

pVal ist kein gültiger Pointer

Property set

HRESULT MustConfirm([in] BOOL newVal);

Parameters

newVal

[in] BOOL Variable mit dem neuen Wert

Return Values

S_OK

Funktion wurde Erfolgreich ausgeführt


ITcEvtCfgEvent::Parent

Setzt oder holt den Parent des Events.
Den Parent setzen ist nur für den internen gebrauch. Den Wert auf unpassende Werte setzen kann zu nebeneffekten führen.
Um den Parent eines Events zu setzen benutzen siedie Funktionen IEvtCfgSource:: AddEvent oderIEvtCfgSource:: RemoveEvent.

Property get

HRESULT Name([out, retval] IDispatch** ppVal);

Parameters

ppVal

[out, retval] Pointer zu einer IDispatch* Variable die den Parent des Events bekommt.

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt. Wenn der Event einen Paerent hat ist *ppVal gültig, sonst NULL

E_POINTER

ppVal war kein gültiger Pointer

E_ACCESSDENIED
Das Objekt ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgEvent::Priority

Setzt oder holt die Event Priority.

Property get

HRESULT Priority([out, retval] long *pVal);

Parameters

pVal

[out, retval] Pointer zu einer long Variable die die Event Priority bekommt.

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt

E_POINTER

pVal ist kein gültiger Pointer

Property set

HRESULT Priority([in] long newVal);

Parameters

newVal

[in] long Variable mit der neuen Event Priority

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt


ITcEvtCfgEvent::RemoveDocLink

Entfernt einen DocLink vom Event.

HRESULT RemoveDocLink([in] IEvtCfgDocLink* pLink);

Parameters

pLink

[in] the DocLink der entfernt werden soll.

Return Values

S_OK

Der angegebene Link wurde vom Event entfernt.

E_INVALIDARG

Der link ist kein child des Events

E_POINTER

pLink ist kein gültiger Pointer

E_ACCESSDENIED

Das Objekt ist wegen einer asynchronen Operation gesperrt.


IEvtCfgDocLink Interface Übversicht

Das IEvtCfgDocLink Interface ermöglicht Zugriff auf die DocLink Eigenschaften.
DocLinks können benutzt werden um zusätzliche Informationen zum Event anzugeben. Ein DocLink besteht aus einen einzugartigen Namen und mehreren Links.

Methoden und Eigenschaften nach Vtable sortiert

IEvtCfgDocLink Methods | Description
Name | Setzt oder Bekommt den Namen des DocLinks
Link | Setzt oder Bekommt einen Link in der angegebenen Sprache
GetFirstLink | Startet Auflistung der Links
GetNextLink | Führt die Auflistung fort
RemoveLink | Entfernt den Link in der angegebenen Sprache
Parent | Setzt oder Bekommt den Parent des DokLinks
IsParentOnlyReference | Prüft ob der DocLink die einzige Referenz ist
CopyTo | Erstellt eine neue Kopie des DocLinks


IEvtCfgDocLink::CopyTo

Erstellt eine Kopie des DocLink Objekts.

HRESULT CopyTo([out, retval] ITcEvtCfgDocLink** ppLink);

Parameters

ppLink

[out, retval] Pointer zu einem Pointer zum Ziellink. Wenn *ppLink NULL ist wird ein neue DocLink erstellt.

Return Values

S_OK

ppLink enthät eine genaue Kopie des Doklinks

E_POINTER

ppLink war ein ungültiger Pointer


GetFirstLink

TwinCAT EventLogger - TcEventConfigurator

ITcEvtCfgDocLink::GetFirstLink

Gibt den ersten Link des Objekts zurück.
Diese Funktion setzt den internen Iterator zurück und rugt GetNextLink auf.
Um die Aufzählung fortzusetzen rufen sie GetNextLink auf.

HRESULT GetFirstLink([out] BSTR* name, [out,retval] long* pLangId);

Parameters

name

[out] Pointer zu einer BSTR Variable die die erste URL vom aktuellen Event enthält.

pLangId

[out, retval] Pointer zu einer long Variable die die lang Id URL enthält.

Return Values

S_OK

name enthält die erste URL des Doklinks.

S_FALSE

Der Doklink hat keine URLs. *name wurde auf NULL gesetzt.

E_POINTER

name war kein gültiger Pointer.


IEvtCfgDocLink::GetNextLink

Holt dem nächsten Link ausgehend vom internen Iterator.
Bevor sie eine Auflistung der Links starten rufen sie GetFirstLink auf.
Nachdem sie Links hinzugefügt oder entfernt haben müssen sie die aufzählung neu starten indem sie GetFirstLink aufrufen.

HRESULT GetNextLink([out] BSTR* link, [out, retval] long* langId);

Parameters

link

[out] Pointer zu einer BSTR Variable die den nächsten Link speichert.

langId

[out, retval] Pointer zu einer long Variable die die lang Id des Links speichert.

Return Values

S_OK

link enthält den nächsten Link.

S_FALSE

Der DocLink hat keine weiteren Links. *link wurde auf NULL gesetzt.

E_POINTER

link war ein ungültiger Pointer.


IEvtCfgDocLink::IsParentOnlyReference

Prüft ob der DokLink die einzige Referenz ist.

HRESULT IsParentOnlyReference([out, retval] BOOL* pVal);

Parameters

pVal

[out, retval] Pointer zu einer BOOL Variable.

Return Values

S_OK

Erfolg.

S_FALSE

Der DocLink hat keinen Parent. *pVal ist False.

E_POINTER

pVal ist kein gültiger Pointer


IEvtCfgDocLink::Link

Setzt oder bekommt den link für eine bestimmte Sprache.

Property get

HRESULT Link([in] long langId, [out, retval] BSTR *pVal);

Parameters

langId

[in] Dielanguage id für den Link

pVal

[out, retval] Pointer zu einer BSTR Variable in der der Link gespeichert wird.

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt

E_POINTER

pVal war kein gültiger Pointer

E_FAIL

für die angegebene language id existiert kein Link

Property set

HRESULT Link([in] long langId, [in] BSTR newVal);

Parameters

langId

[in] Die language id für den Link der gespeichert werden soll

newVal

[in] BSTR Variable in der der neue Link gespeichert ist.

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt

E_FAIL

Ein Link für die angegebenen language id existiert bereits


IEvtCfgDocLink::Name

Setzt oder Bekommt den Namen des DocLinks.

Property get

HRESULT Name([out, retval] BSTR *pVal);

Parameters

pVal

[out, retval] Pointer zu einer BSTR Variable in der der Name gespeichert wird.

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt

E_POINTER

pVal war kein gültiger Pointer

Property set

HRESULT Name([in] BSTR *pVal);

Parameters

pVal

[in] BSTR Variable die den neuen Namen enthält

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt


IEvtCfgDocLink::Parent

Setzt oder Bekommt den Parent des DokLinks.
Den Parent setzen ist nur für den internen gebrauch. Den Wert auf unpassende Werte setzen kann zu Nebeneffekten führen.
Um den Parent eines Events zu setzen benutzen Sie die Funktionen IEvtCfgDocLink::AddDocLink und IEvtCfgIEvtCfgDocLink::RemoveDocLink.

Property get

HRESULT Name([out, retval] IDispatch** ppVal);

Parameters

ppVal

[out, retval] Pointer zu einer IDispatch* Variable die den Parent des DocLinks bekommt. The Parent ist immer vom Typ IEvtCfgEvent

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt. Wenn der DokLink einen Parent hat ist *ppVal gültig, sonst NULL

E_POINTER

ppVal war kein gültiger Pointer

E_ACCESSDENIED
Das Objekt ist wegen einer asynchronen Operation gesperrt.


IEvtCfgDocLink::RemoveLink

Entfernt den Link in der angegebenen Sprache

HRESULT RemoveLink([in] long langId);

Parameters

langId

[in] Die langId vom Link der entfernt werden soll

Return Values

S_OK

Der angegebene Link wurde entfernt.

E_INVALIDARG

Es existiert kein Link mit der angegebenen langid.


IEvtCfgEnumParser Interface

Das IEvtCfgEnumParser Interface wird benutzt um alle registrierten Parser aufzulisten.
EvtCfgParser Objekte werden durch dieIEvtConfiguration:: EnumParsers Funktion erstellt.

Methoden und Eigenschaften nach Vtable sortiert

IEvtCfgEnumParser Methods | Description
Next | Listet die nächsten X Parser Objekte auf
Reset | Resettet den zähler
Skip | Überspringe die nächsten X Parser Objekte
VbNext | VB und .NET kompatible Next() Funktion


IEvtCfgParser Interface

Die TcEventConfig library liefert einige standard Parser, zB den Xml und den Tps Parser.
Jeder dieser Parser implementiert das IEvtCfgParser Interface.
Mit diesen System können auch eigene Parser hinzugefügt werden. Dazu sind nur die Implementierung des Interfaces und eine Registrierung nötig. (Beispiel)
Die Folgende Interface Beschreibung zeigt wie das EvtCfgParser Interface definiert ist und wie jede Implementation auf Funktionsaufrufe reagieren muss.

IEvtCfgParser Methoden und Eigenschaften nach Vtable sortiert

IEvtCfgParser Methods | Description
OpenConfiguration | Öffnet eine existierende Konfiguration
Import | Importiert von einer geöffneten Datei
Export | Exportiert eine geöffnete Datei
CloseConfiguration | Schliesst eine Konfigurationsdatei
DefFileExt | Bekommt die standard Dateiendung für das implementierte import Format
DefFileType | Bekommt eine kurze beschreibung des Filetyps für das implementierte Format
CreateConfiguration | Erstellt und öffnet eine neue Konfigurationsdatei
ActivateConfiguration | Aktiviert die aktuelle Konfigutration
GetConfigSize | Bekommt die grösser der aktuellen Konfiguration
AsyncImport | Importiert eine Konfiguration asynchron
AsyncExport | Exportiert eine Konfiguration asynchron

_IEvtCfgParserEvents Methoden und Eigenschaften nach Vtable sortiert

_IEvtCfgParserEvents Methods | Description
SourceLoaded | Source wurde geladen
SourceSaved | Source wurde gespeichert
EventLoaded | Event wurde geladen
EventSaved | Event wurde gespeichert
LinkLoaded | Link wurde geladen
LinkSaved | Link wurde gespeichert
LoadComplete | Laden abgeschlossen
SaveComplete | Speichern abgeschlossen

Parser implementations

Parser | Description
EvtCfgTpsParser | Nach TwinCAT Stroage exportieren/importieren
EvtCfgXMLParser | Nach XML exportieren/importieren


ITcEvtCfgParser::ActivateConfiguration

Aktiviert die aktuelle Konfigutration.
Dieses verhalten ist Parserspezifisch.

HRESULT ActivateConfiguration();

Parameters

Return Values

S_OK

Die Konfiguration wurde aktiviert.

E_ACCESSDENIED

Der Parser ist wegen einer asynchronen Operation gesperrt.

E_FAIL

Die Konfiguration konnte nicht aktiviert werden.


ITcEvtCfgParser::AsyncExport

Asynchrone Alternative zu Export().
Die Funktion wird sofort beended und sie müssen auf IEvtCfgParser Events achten um den Vortschritt zu prüfen.


ITcEvtCfgParser::AsyncImport

Asynchrone Alternative zu Import().
Die Funktion wird sofort beended und sie müssen auf IEvtCfgParser Events achten um den Vortschritt zu prüfen.


ITcEvtCfgParser::CloseConfiguration

Schliesst eine Konfigurationsdatei

HRESULT CloseConfiguration();

Parameters

Return Values

S_OK

Die Konfiguration wurde geschlossen.

E_ACCESSDENIED

Der Parser ist wegen einer asynchronen Operation gesperrt.


ITcEvtCfgParser::CreateConfiguration

Erstellt und öffnet eine neue Konfigurationsdatei
Die angegebene Datei muss nicht existieren.

HRESULT CreateConfiguration([in] BSTR filename);

Parameters

filename

[in] Pfad und Dateiname

Return Values

S_OK

Die Konfiguration wurde erstellt und geöffnet

E_ACCESSDENIED

Der Parser ist wegen einer asynchronen Operation gesperrt.

E_FAIL

Die Konfiguration konnte nicht erstellt werden.


ITcEvtCfgParser::DefFileExt

Bekommt die standard Dateiendung für das implementierte import Format

Property get

HRESULT DefFileExt([out, retval] BSTR *pVal);

Parameters

pVal

[out, retval] Pointer zu einer BSTR Variable die die Dateiendung bekommt.

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt.

E_POINTER

pVal ist kein gültiger Pointer.


ITcEvtCfgParser::DefFileType

Bekommt eine kurze beschreibung des Filetyps für das implementierte Format

Property get

HRESULT DefFileType([out, retval] BSTR *pVal);

Parameters

pVal

[out, retval] Pointer zu einer BSTR Variable die die Beschreibung bekommt.

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt.

E_POINTER

pVal ist kein gültiger Pointer.


ITcEvtCfgParser::Export

Exportiert von dem übergebenen IEvtConfiguration Objekt in die geöffnete Konfigurationsdatei.

HRESULT Export([in] IEvtConfiguration* pConfig);

Parameters

pConfig

[in] Konfiguration.

Return Values

S_OK

pConfig wurde erfolgreich exportiert.

E_ACCESSDENIED

Der Parser ist wegen einer asynchronen Operation gesperrt.

E_FAIL

Die Konfiguration konnte nicht exportiert werden


ITcEvtCfgParser::GetConfigSize

Bekommt die Anzahl der Sourcen, Events und DocLinks der Konfigurationsdatei.
Diese Methode funktioniert nur mit geöffneten Dateien. Um die Grösse einer Konfiguration bekommen bevor sie epxortiert wurde rufern sie IEvtConfiguration::GetConfigSize() auf.

HRESULT GetConfigSize([out] long* nSources, [out] long* nEvents, [out] long* nLinks);

Parameters

nSources

[out] Anzahl der Sourcen

nEvents

[out] Anzahl der Events

nLinks

[out] Anzahl der DocLinks

Return Values

S_OK

Erfolg.

E_ACCESSDENIED

Der Parser ist wegen einer asynchronen Operation gesperrt.

E_FAIL

Fehler.

Remarks

Die weidergegebenen werte müssen nicht richtig sein, Parser können die grösser der Konfiguration aus Performancegründen schätzen.
Die XML und Tps Parser geben zB 0 zurück wenn sie eine selbst erstellte Konfiguration zum ersten mal öffnen. Diese Methode Funktioniert nur mit Dateien die mit dem Parser erstellt wurden.


ITcEvtCfgParser::Import

Importiert die geöffnete Konfiguration in ein übergebenes Konfigurationsobjekt.

HRESULT Import([in] IEvtConfiguration* pConfig);

Parameters

pConfig

[in] Zielkonfiguration

Return Values

S_OK

Konfiguration wurde erfolgreich in pConfig importiert.

E_ACCESSDENIED

Der Parser ist wegen einer asynchronen Operation gesperrt.

E_FAIL

Die Konfiguration konnte nicht importiert werden.


ITcEvtCfgParser::OpenConfiguration

Öffnet eine Konfigurationsdatei. Alle Nachfolgenden Aufrufe sind an diese Datei gerichtet.
Wenn der Vorgang abgeschlossen wurde rufen sie CloseConfiguration auf.

HRESULT OpenConfiguration([in]BSTR name);

Parameters

name

[in] Pfad und Dateiname

Return Values

S_OK

Die Konfiguration wurde geöffnet

E_ACCESSDENIED

Der Parser ist wegen einer asynchronen Operation gesperrt.

E_FAIL

Die Datei konnte nicht geöffnet werden.


EvtCfgTpsParser

Der EvtCfgTpsParser arbeitet mit dem TwinCAT Storage Dateiformat.
Die standard Storage Datei ist 'TwinCAT\default.tps'.

Wenn sie Event Messages aus der TwinCAT Storage auslesen wollen müssen sie den TcEventFormatter wählen wenn sie Events aus der PLC auslösen.
Dies können sie durch das benutzen von 'TcEventLogger.TcEventFormatter' als progid in der TcEvent Struktur.

Wenn sie ActivateConfiguration aufrufen wird der Parser die geöffnete Konfigurationsdatei als TwinCATs aktuelles Projekt festlegen.

Wenn sie eine neue Konfiguration erstellen und Registrieren haben sie 2 Nebeneffekte:

  • Die Liste der Geloggten Events des EventLoggers geht verloren.
  • Zusätzlich TwinCAT server sind nicht mehr vorhanden.
Wenn sie die vorherige Konfiguration aktivieren sind die Nebeneffekte nicht mehr vorhanden.
Sie müssen TwinCAT neu starten damit das wechseln der aktiven Konfiguration wirksam wird.


EvtCfgXmlParser

DerEvtCfgTpsParser arbeitet mit dem XML Format.
Jede Quelle und ihre Dateien werden in ihrere eigenen Datei gespeichert.
Alle vorhandenen source ids werden mit Links zu den source XML files in der Projektdatei gespeichert.

Wenn sie Event Messages aus der XML Datei auslesen wollen müssen sie den TcEventFormatter wählen wenn sie Events aus der PLC auslösen.
Dies können sie durch das benutzen von 'TcEventLogger.TcXmlFormatter' als progid in der TcEvent Struktur.

Wenn sie ActivateConfiguration aufrufen wird der Parser ihr Projekt in die TcEventSourceLocation.xml im TwinCAT\Resource Verzeichnis hinzufügen.
Alle vorher gespeicherten Informationen werden nicht verändert, neue einträge werden als neu markiert. Nur die markierten Einträge werden gelöscht wenn sie eine andere Konfiguration aktivieren.


IEvtCfgEditor Interface

The IEvtCfgEditor Iterface provides access to the EventEditors properties.

Methoden und Eigenschaften nach Vtable sortiert

IEvtCfgEditor Methods | Description
GetConfiguration | Holt das EventConfiguration Objekt
SelectItem | Wählt ein item in der TreeView aus
GetSelectedItem | Holt das ausgewählte TreeView Item
ExpandSelection | Klappt das gewählte Item auf
CollapseSelection | Klappt das gewählte Item zu
Copy | Kopiert den ausgewählten Text
Paste | Fügt den kopierten Text ein
CanCopy | Prüft ob das aktuelle Item Kopierbar ist
CanPaste | Prüft ob eingefügt werden kann
_IEvtCfgEditorEvents Methods | Description
SelChanged | Es wurde ein anderes Item ausgewählt

Enums

Name | Description
EVTCFGEDITOR_ITEMTYPES | Stellt fest welches Item ausgewählt ist.


IEvtCfgEditor::CanCopy

Prüft ob das aktuelle Item Kopierbar ist.

HRESULT CanCopy([out, retval] BOOL *pVal);

Parameters

pVal

[out, retval] TRUE wenn kopieren möglich ist, sonst FALSE.

Return Values

S_OK

Erfolg.


IEvtCfgEditor::CanPaste

Prüft ob eingefügt werden kann.

HRESULT CanPaste([out, retval] BOOL *pVal);

Parameters

pVal

[out, retval] TRUE wenn einfügen möglich ist, sonst FALSE.

Return Values

S_OK

Erfolg.


IEvtCfgEditor::CollapseSelection

Klappt das gewählte Item zu.

HRESULT CollapseSelection();

Parameters

Return Values

S_OK

Das Item wurde zugeklappt.


IEvtCfgEditor::Copy

Kopiert den ausgewählten Text.
Die Daten des Kopiervorgangs sind nicht Systemweit gespeichert - sie gehen verloren wenn der Editor geschlossen wird und können nicht in mehreren Instanzen genutzt werden.

HRESULT Copy();

Parameters

Return Values

E_FAIL

Das aktuelle Item kann nicht kopiert werden. Rufen sie CanCopy auf um zu prüfen ob ein Item kopiert werden kann oder nicht.

S_OK

Das Item wurde Kopiert.


IEvtCfgEditor::ExpandSelection

Klappt das gewählte Item auf.

HRESULT ExpandSelection();

Parameters

Return Values

S_OK

Das Item wurde aufgeklappt.


IEvtCfgEditor::GetConfiguration

Holt das EventConfiguration Objekt

HRESULT GetConfiguration([out, retval] IEvtConfiguration** ppConfig);

Parameters

ppConfig

[out, retval] Pointer zu einem Pointer zur Konfiguration.

Return Values

S_OK

*ppConfig enthält einen gültigen Pointer.

E_FAIL
Der Editor wurde nicht initialisiert und enthält kein Konfigurationsobjekt.

E_POINTER

ppConfig ist kein gültiger Pointer


IEvtCfgEditor::GetSelectedItem

Holt das ausgewählte TreeView Item.
Das Item wird am Typ des COM Onjekts identifiziert (IEvtCfgSource, IEvtCfgEvent or IEvtCfgDocLink).
Unteritems werden mit dem enum EVTCFGEDITOR_ITEMTYPES und der language Id identifiziert.

HRESULT GetSelectedItem([out] IDispatch** ppItem, [out] EVTCFGEDITOR_ITEMTYPES* subItem, [out] LONG* langId);

Parameters

ppItem

[out] Pointer zu einem IDispatch Pointer. Es enthält einen Pointern zu einer der oben genannten Instanzen.

subItem

[out] Das ausgewählte Unteritem. Wenn TYPE_NULL ist das item selbst ausgewählt. Hier gibt es mehr Details.
Wenn das Unteritem TYPE_SRCNAME, TYPE_EVTMSG oder TYPE_URL ist dann enthält langId gültige Daten.

langId

[out] Die language id für das gewählte Item.

Return Values

S_OK

Funktion wurde erfolgreich ausgeführt.

E_POINTER

ppItem ist kein gültiger Pointer.


IEvtCfgEditor::Paste

Fügt den kopierten Text ein. Wenn das kopierte Item nicht als Child vom aktuellem Item eingefügt werden kann schlägt die Funktion fehl.

HRESULT Paste();

Parameters

Return Values

E_FAIL

Item kann nicht als Child vom aktuellem Item eingefügt werden. Rufen sie CanPase auf um zu prüfen ob Einfügen möglich ist.

S_OK

Das Item wurde eingefügt.


IEvtCfgEditor::SelectItem

Wählt ein item in der TreeView aus.
Das Item wird am Typ des COM Onjekts identifiziert (IEvtCfgSource, IEvtCfgEvent or IEvtCfgDocLink).
Unteritems werden mit dem enum EVTCFGEDITOR_ITEMTYPES und der language Id identifiziert.

HRESULT SelectItem([in] IDispatch* pItem, [in, defaultvalue(TYPE_NULL)] EVTCFGEDITOR_ITEMTYPES subItem, [in, defaultvalue(0)] LONG langId);

Parameters

pItem

[in] IDispatch Pointer der einen Pointer zu einen der oben angegebenen Interfaces enthält.

subItem

[in] Das Subitem adas ausgewählt werden soll. Wenn TYPE_NULL wird das Item Selbst ausgewählt. Hier gibt es mehr Details.
Wenn das Unteritem TYPE_SRCNAME, TYPE_EVTMSG oder TYPE_URL ist dann muss eine language id angegeben werden.

langId

[in] Die language id für das Item dass ausgewählt werden soll.

Return Values

S_OK

Das Item wurde asugewählt

E_FAIL

Das Item konnte nicht ausgewählt werden, zB wei les nicht den übergeben Itemtyp entspricht oder es konnte kein Item für die angegebene Sprache gefunden werden.

E_POINTER

pItem ist kein gültiger Pointer.


EVTCFGEDITOR_ITEMTYPES

TwinCAT EventLogger - TcEventConfigurator

Enum EVTCFGEDITOR_ITEMTYPES

Stellt fest welches Item ausgewählt ist.

typedef enum { TYPE_NULL = 0,
TYPE_SRC,
TYPE_SRCNAMETAG,
TYPE_SRCNAME,
TYPE_EVTTAG,
TYPE_EVT,
TYPE_EVTMSG,
TYPE_EVTMSGTAG,
TYPE_LNKTAG,
TYPE_LNK,
TYPE_URL
}EVTCFGEDITOR_ITEMTYPES;

Value | Description | Editor Icon
TYPE_NULL | Undefiniert, ein Zeichen für einen Fehler
TYPE_SRC | Ein Source Item |
TYPE_SRCNAMETAG | Namen Tag unter TYPE_SRC |
TYPE_SRCNAME | Ein Sourcename unter TYPE_SRCNAMETAG |
TYPE_EVTTAG | Ein Event Tag unter TYPE_SRC |
TYPE_EVT | Ein Event |
TYPE_EVTMSGTAG | Ein Message Tag unter TYPE_EVT |
TYPE_EVTMSG | Ein Message String unter TYPE_EVT |
TYPE_LNKTAG | Ein DocLink Tag unter TYPE_EVT |
TYPE_LNK | Ein Doc Link Item. |
TYPE_URL | Eine URL unter TYPE_LNK |


Übersicht

Die TcEventViewer.dll stellt den Beckhoff TcEventViewer zur Verfügung. Der EventViewer ist ein ActiveX Control, das sich im HMI Baustein des TcEvent Loggers befindet. Durch das Eintragen in Form1und der Konfiguration einiger Eigenschaften kann es verwendet werden, um in weniger als 5 Minuten den sichtbaren Teil des TcEvent Loggers zu implementieren.

Der nächste Screenshot zeigt ein Visual Basic Programm, dass den TcEventLogger zur Anzeige der logged Alarms verwendet.

Der TcEventViewer kann Aktive und logged Alarme anzeigen. Die Spalten des TcEventViewers können aus dem Code ausgeblendet und in der Größe verändert werden.
Alle Eventstrings werden in der ausgesuchten Sprache dargestellt, da die Sprachumschaltung durch den Formatter erfolgt.

Ab Version 2.9.0.56 ist der EventViewer in zwei Komponenten aufgeteilt: TcEventview und TcEventviewLight. Die Light Version des Viewers ist auf Performance optiemiert, während der TcEventviewer eine vielzahl von Methoden zur Steuerung der Darstellung bietet.

Interfaces

Der TcEventViewer kommuniziert über seine Schnittstelle mit anderen Komponenten.

Die nächste Abbildung zeigt eine Übersicht der Hauptschnittstelle des TcEventViewers:

Schnittstelle | Beschreibung
ITcEventView | Hauptschnittstelle des TcEventViewer zu COM Clients wie das HMI. Hauptfeatures: Das Auftreten des ActiveX ist zu kontrollieren.
ITcEventViewLight | Auf Performance optimierte Version des EventViewers.
ITcEventLogEvents | Die Event Schnittstelle wird vom TcEventLogger zur Verfügung gestellt. Wenn das TcEvent gestartet ist, bekommt es eine Liste der logged und aktiven Events durch einen Aufruf der Methoden ITcEventLog::EnumActiveEvents oder ITcEventLog::EnumLoggedEvents derTcEventLog Klasse und zeigt die Events an. Danach meldet der TcEventLogger den TcEventViewer an die ITcEventLogEvents Schnittstelle. Diese Meldung wird zur Synchronisierung der Liste der angezeigten Events mit dem Server verwendet.

Klassen

Der TcEventViewer unterstützt nur eine Klasse nach außen: TcEventView

Client Server.

Der TcEventLogger stellt eine Client Server Architektur zur Verfügung. Der TcEventLogger ist der Server, der alle Informationen über aktive und logged Events enthält , selbst derer, die nicht auf einem Display zu sehen sind. Der TcEventViewer ist ein Client des TcEventLoggers. Wenn der EventViewer gestartet ist, bekommt er zuerst die Liste der aktiven und logged Events, zeigt sie an und synchronisiert die Liste durch das Event, dass durch die implementierte Schnittstelle ITcEventLoggEvents ausgegeben wird.

Der TcEventViewer kann mit drei verschiedene Client Server Konfigurationen verwendet werden.

  1. Ein TcEventViewer zeigt das Event eines TcEventLoggers an. In diesem Fall befindet sich das HMI mit dem TcEvenViewer und dem TcEventLogger auf der gleichen Maschine.
  2. Ein TcEventViewer zeigt die Alarme auf verschiedenen TcEventLoggers an, die sich auf unterschiedlichen Maschinen PCs befinden. Die Remoteverbindung ist über *DCOM hergestellt.
  3. Mehrere TcEventViewer zeigen die Events auf TcEventLoggern an. Die Remoteverbindung ist über *DCOM hergestellt.

*DCOM DCOM muss mit Hilfe von dcomcnfg.exe richtig auf dem Client und den Maschinen PC Server konfiguriert werden. Weitere Informationen über DCOM finden Sie in der MSDN Library.

Da DCOM sehr lange timeout Zeiten benutzt, sollte es nur in sehr stabilen Netzwerkverbindungen verwendet werden. Ein weiteres Problem ist die Tatsache, dass der EventLogger nicht multithreaded ist, der TcEventViewer blockiert also den TcEventLogger. Wenn die 2. Konfiguration verwendet wird, blockiert die Anzeige der Events eines TcEventLoggers den anderen.


TcEventViewer::TcEventView

Die Hauptklasse des TcEventViewer stellt Schnittstellen zum COM Client wie das HMI zur Verfügung. Diese Klasse stellt den Alarm in einer Listenansicht dar.

Die Klasse ist durch die folgenden Schnittstellen steuerbar.

Schnittstelle | Beschreibung
ITcEventView | Hauptschnittstelle des TcEventViewers zu COM Clients wie das HMI. Hauptfeatures: das Auftreten des ActiveX Controls ist zu steuern..
ITcEventLogEvents | Die Event Schnittstelle wird vom TcEventLogger zur Verfügung gestellt. Wenn TcEvent gestartet wird, bekommt es eine Auflistung der logged oder active Events durch einen Aufruf der Methoden ITcEventLog::EnumActiveEvents oder ITcEventLog::EnumLoggedEvents der TcEventLog Klasse und zeigt die Events an. Danach meldet der TcEventLogger dem TcEventViewer die ITcEventLogEvents Schnittstelle. Diese Benachrichtigung wird zur Synchronisierung der aufgelisteten und angezeigten Events mit dem Server verwendet.


Übersicht

Die Schnittstelle ITcEventView wird zur Kontrolle der Eigenschaften des TcEventViewer ActiveX Control verwendet. Die Schnittstelle leitet sich von IDispatch ab, so dass sie von allen Sprachen verwendet werden kann, die die COM Automation Schnittstellen unterstützen. IDispatch selbst leitet sich von IUnknown ab.

Methoden und Eigenschaften in

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück.
AddRef | Inkrementiert den Referenzzähler.
Release | Dekrementiert den Referenzzähler.

IDispatch Methoden | Beschreibung
GetIDsOfNames | Mappt einen einzelnen Teilnehmernamen und einen Satz optionaler Parameternamen mit einem entsprechenden Satz gesendeter Integer Identifier (DISPIDs). Diese können dann als Folgeabrufe an IDispatch::Invoke benutzt werden.
GetTypeInfo | Ruft die Typ Informationen für ein Objekt ab.
GetTypeInfoCount | Ruft die Anzahl der Typ Informations-Schnittstellen ab, die ein Objekt zur Verfügung stellt, entweder 0 oder 1.
Invoke | Stellt den Zugriff auf Eigenschaften und Methoden, ausgestellt durch ein Objekt, zur Verfügung.

ITcEventView Methoden und Eigenschaften | Beschreibung
ShowLoggedEvents | Zeigt die logged Events an.
ShowActiveEvents | Zeigt die akiven Events an.
ConfirmEvent | Bestätigt ein Event.
ResetEvent | Setzt ein Event zurück.
LangId | Setzt die Sprache, die zur Anzeige der Event Meldung und des Source Namens verwendet wird, zurück.
DisableMenuItems | Setzt oder gibt den abgeschalteten Status des Kontextmenüs zurück.
SelectEvent | Markiert ein Event als ausgewählt.
AddConnection | Addiert eine Remoteverbindung zu einem EventLogger.
DeleteConnection | Entfernt eine Remoteverbindung zu einem EventLogger.
DisplayComputerName | Aktiviert/Deaktiviert die Spalte, die den Computernamen anzeigt oder den Status zurückgibt.
DisplayEventId | Aktiviert/Deaktiviert die Spalte, die die Event Id anzeigt oder den Status zurückgibt.
AlarmTextColor | Setzt oder gibt die zur Anzeige der Alarme verwendete Farbe zurück.
WarningTextColor | Setzt oder gibt die zur Anzeige der Warnungen verwendete Farbe zurück.
InstructionTextColor | Setzt oder gibt die zur Anzeige der Anweisungen verwendete Farbe zurück.
ParamErrorTextColor | Setzt oder gibt die zur Anzeige der Parameterfehler verwendete Farbe zurück.
StateInfoTextColor | Setzt oder gibt die zur Anzeige der Statusinformationen verwendete Farbe zurück.
HintTextColor | Setzt oder gibt die zur Anzeige der Hinweise verwendete Farbe zurück.
MessageTextColor | Setzt oder gibt die zur Anzeige der Meldungen verwendete Farbe zurück.
MaintenanceTextColor | Setzt oder gibt die zur Anzeige der Informationen zur Instandhaltung verwendete Farbe zurück.
UndefTextColor | Setzt oder gibt die zur Anzeige der undefinierten Events verwendete Farbe zurück.
ColWidthClass | Setzt oder gibt die Weite der Spalte Event Klasse zurück.
ColWidthMustCon | Setzt oder gibt die Weite der Spalte Bestätigungsstatus (confirm state) zurück.
ColWidthState | Setzt oder gibt die Weite der Spalte Event Status zurück.
ColWidthSource | Setzt oder gibt die Weite der Spalte Event Source zurück.
ColWidthDate | Setzt oder gibt die Weite der Spalte Event Datum zurück.
ColWidthTime | Setzt oder gibt die Weite der Spalte Event Zeit zurück.
ColWidthEventId | Setzt oder gibt die Weite der Spalte Event Id zurück.
ColWidthComputer | Setzt oder gibt die Weite der Spalte Computername zurück.
ColWidthMsg | Setzt oder gibt die Weite der Spalte Event Meldung zurück.
DisplayClass | Aktiviert/Deaktiviert die Spalte, die die Event Klasse anzeigt oder gibt den Status zurück.
DisplayMustCon | Aktiviert/Deaktiviert die Spalte, die den Bestätigungsstatus (confirm State) anzeigt, oder gibt den Status zurück.
DisplayState | Aktiviert/Deaktiviert die Spalte, die den Eventstatus anzeigt, oder gibt den Status zurück.
DisplaySource | Aktiviert/Deaktiviert die Spalte, die den Sourcenamen anzeigt, oder gibt den Status zurück.
DisplayDate | Aktiviert/Deaktiviert die Spalte, die das Eventdatum anzeigt, oder gibt den Status zurück.
DisplayTime | Aktiviert/Deaktiviert die Spalte, die die Eventzeit anzeigt, oder gibt den Status zurück.
DisplayMsg | Aktiviert/deaktiviert die Spalte, die die Eventmeldung anzeigt, oder gibt den Status zurück.
GetSelectedEvent | Gibt den Index des Events zurück, dass vom Benutzer ausgewählt wurde.
Mode | Setzt oder gibt den Anzeigemodus des TcEventViewers zurück.
MaxEvents | Setzt oder gibt die maximale Anzahl der angezeigten Events zurück.
DisplayTitlebar | Aktiviert/Deaktiviert den Columnheader.
DisplayUserComment | Aktiviert/Deaktiviert die Spalte, die den Benutzer Kommentar anzeigt, oder gibt den Status zurück.
DisableContextMenu | Aktiviert/Deaktiviert das Kontext Menu.
DisableScrollbars | Aktiviert/Deaktiviert die Scrollbars.
SortMode | Setzt oder gibt das Sortierverfahren zurück.
putFont | Setzt die Schriftart für das control.
getExtendedInfo | Gibt erweiterte Informationen für ein Event zurück.
UseExternalLanguageResource | Aktiviert/Deaktiviert die Nutzung einer externen resourcen Datei.
BackgroundColor | Setzt oder gibt die Hintergrund Farbe zurück.
ModifyLVStyle | Leitet die Parameter an die CWindow::ModifyStyle Methode weiter.
SetFilter | Ermöglicht das Setzen eines Anzeigefilters.


ShowLoggedEvents

TwinCAT EventLogger - TcEventLogger

ITcEventView::ShowLoggedEvents

Diese Methode zeigt alle logged Events aller EventLogger mit denen TcEventView verbunden ist. Bevor sie die Events anzeigt, werden die alten Events gelöscht.

HRESULT ShowLoggedEvents();

Parameter

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ShowLoggedEvents
End Sub

Anmerkungen


ShowActiveEvents

TwinCAT EventLogger - TcEventLogger

ITcEventView::ShowActiveEvents

Diese Methode zeigt alle aktiven Events aller EventLogger mit denen TcEventView verbunden ist. Bevor sie die Events anzeigt, werden die alten Events gelöscht.

HRESULT ShowActivedEvents();

Parameter

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ShowActiveEvents
End Sub

Anmerkungen


ConfirmEvent

TwinCAT EventLogger - TcEventLogger

ITcEventView::ConfirmEvent

Diese Methode bestätigt (confirms) ein angezeigtes Event durch den vorgegebenen Index in der Liste Ansicht und Bestätigungscode.

HRESULT ConfirmEvent(long nIndex, long nCode);

Parameter

nIndex

[in] Index des Events, das bestätigt werden soll. Der Index in der Liste Ansicht startet oben mit dem Index 0.

nCode

[in] Bestätigungscode, der durch das Enum TcEventConCodes beschrieben wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
Call TcEventView1.ConfirmEvent(0, 0)
End Sub

Anmerkungen


ResetEvent

TwinCAT EventLogger - TcEventLogger

ITcEventView::ResetEvent

Diese Methode setzt ein angezeigtes Event durch den gegebenen Index in der Listenansicht zurück.

HRESULT Reset Event(long nIndex);

Parameter

nIndex

[in] Index des Events, das zurückgesetzt werden soll. Der Index in der Listenansicht startet oben mit dem Index 0.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
Call TcEventView1.ResetEvent(0)
End Sub

Anmerkungen


TwinCAT EventLogger - TcEventLogger

ITcEventView::LangId

Diese Eigenschaft setzt und gibt die Sprache zurück, in welcher der TcEventViewer, Meldungstexte und Quellen angezeigt werden.
Es kann entweder nur die primäre Sprach Id (z.B. ENG = 9; GER = 7) oder eine komplette LCID (z.B. ENG = 1033; GER = 1031) angegeben werden. Der TcEventViewer wird die Parametern entsprechend interpretieren. Das setzen der Sprache hat zwei Effekte : zum einen werden die intern benutzten String Tables geändert, zum anderen wird der übergebene Parameter an den TcEventFormatter weitergeleitet. Es ist wichtig, dass der Parameter nur weitergeleitet wird. Das heisst, wenn 7 für Deutsch als Sprache übergeben wird, sucht der Formatter in seinen Resoucen nach dem String '7'. Ist die deutsche Meldung in der Ressource als '1031' definiert, wird sie nicht gefunden.

Property get

HRESULT get_LangId([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf eine long Variable, die die aktuell angewählte Sprach-Id erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_LangId([in] long newVal);

Parameter

newVal

[in] Die Sprach-Id der angefragten Sprache. Die gewünschte Sprache sollte mit *LCIDs markiert werden. Die nächste Tabelle zeigt ein Beispiel für einige Sprach-Ids. In der Konfiguration des Event Formatters werden die Sprachen mit der gleichen Sprach-Id gekennzeichnet.

LCID | Beschreibung
1031 | Deutsch
1033 | US Englisch
1034 | Spanisch
1036 | Französisch

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' prints the old language id
Debug.Print TcEventView1.LangId
' sets the language id to English
TcEventView1.LangId = 1033
End Sub

Anmerkungen

Wenn eine neue Sprache zugeordnet wird, werden alle angezeigten Events erneut in der neu ausgewählten Sprache aufgerufen.


DisableMenuItems

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisableMenuItems

Diese Eigenschaft setzt oder gibt den abgeschalteten Status des Kontextmenüs zurück.

Property get

HRESULT get_DisableMenuItems([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf eine Long Variable, die den aktuell abgeschalteten Status des Kontextmenüs erhält. Der abgeschaltete Status wird durch die Verknüpfung des Enum Typs TCEVENTVIEW_CONTEXTMENUFLAGS dargestellt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_DisableMenuItems([in] long newVal);

Parameter

newVal

[in] Eine long Variable, die den neuen abgeschalteten Status des Kontektmenüs enthält. Der abgeschaltete Status wird durch die Verknüpfung des Enum Typs TCEVENTVIEW_CONTEXTMENUFLAGS dargestellt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
Dim state As Long
' get the actual context menu state
state = TcEventView1.DisableMenuItems
' disable the confirm menu item of the context menu
state = state Or TCEVENTVIEW_DISABLECONFIRM
TcEventView1.DisableMenuItems = state
End Sub

Anmerkungen


SelectEvent

TwinCAT EventLogger - TcEventLogger

ITcEventView::SelectEvent

Diese Methode markiert ein Event in der Listenansicht durch den vorgegebenen Index als ausgewählt. Das ausgewählte Event wird hervorgehoben dargestellt.

HRESULT SelectEvent(long nIndex);

Parameter

nIndex

[in] Index des Events, das ausgewählt werden soll. Der Index in der Listenansicht startet oben mit dem Index 0.

Return Values

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
Call TcEventView1.SelectEvent(1)
End Sub

Anmerkungen

Diese Methode hat das gleiche Verhalten wie ein Alarm, der durch einen Klick mit der linken Maustaste auf den Eventeintrag in der Listenansicht ausgewählt wird.


AddConnection

TwinCAT EventLogger - TcEventLogger

ITcEventView::AddConnection

Diese Methode fügt eine neue Verbindung zu einem PC im Netzwerk hinzu.

Standardmässig wird die Remoteverbindung via *DCOM hergestellt, durch das Präfix ADS:// wird die Kommunikationsstrecke per **ADS überbrückt.

HRESULT AddConnection(BSTR strComputerName);

Parameter

strComputerName

[in] BSTR Name des remote PC mit dem der TcEventViewer eine Verbindung herstellen soll.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

TCEVTVIEWERR_ADVISESINK = 0xF1000000

Eine Verbindung mit dem remote EventLogger konnte hergestellt werden aber das Anmelden der EventSink ist fehlgeschlagen. In diesem Fall müssen Meldungen durch Aufrufe der ShowEvents Methode gepollt werden. Das high order Byte beschreibt den Fehlerfall, die low order Bytes stellen den ursprünglichen Win32 Fehler Code dar, der vom DispEventAdvise Aufruf zurückgegeben wurde.

TCEVENTERR_ADS = 0x98200000

Bei Verwendung der ADS Schnitstelle werden ADS Fehler gegebenenfalls durchgereicht. Das Lowword enthält dann den Zugrundeliegenden Ads Fehlercode.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
Call TcEventView1.AddConnection("BeltPC1")
End Sub

Anmerkungen

*DCOM: DCOM sollte nur in stabilen Netzwerken verwendet werden. DCOM muss korrekt auf dem PC eingerichtet sein, der TcEvenView verwendet, und auf dem PC, der den TcEventLogger durch die Verwendung von dcomcnfg.exe bereitstellt. Weitere Informatinen finden Sie in der MSDN Library.

**ADS: Um ADS zur Verbindung mit einem Remotesystem zu nutzen, muss die Verbindung zunächst eingerichtet werden. Beide Systeme müssen gewisse Mindestanforderungen werfüllen. Weitere Informationen hierzu finden sie hier


DeleteConnection

TwinCAT EventLogger - TcEventLogger

ITcEventView::DeleteConnection

Diese Methode entfernt die Verbindung eines EventLoggers zu einem remote TcEventLogger auf einem anderen Rechner, die durch AddConnection hergestellt wurde.

HRESULT DeleteConnection(BSTR strComputerName);

Parameter

strComputerName

[in] BSTR String, der den Namen des remote PC enthält, von dem EventView getrennt werden soll.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
Call TcEventView1.DeleteConnection("BeltPC1")
End Sub

Anmerkungen


DisplayComputerName

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplayComputerName

Diese Eigenschaft aktiviert/deaktiviert die Spalte, die den Computernamen anzeigt oder den Status zurückgibt.

Property get

HRESULT get_DisplayComputerName([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer auf eine VARIANT_BOOL Variable, die den sichtbaren Status der Spalte Computername in der Listenansicht erhält. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_DisplayComputerName([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Variable, die den sichtbaren Status der Spalte Computername in der Listenansicht setzt. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplayComputerName = True
End Sub

Anmerkungen


DisplayEventId

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplayEventId

Aktiviert/Deaktiviert die Spalte, die die Event Id anzeigt oder den Status zurückgibt.

Property get

HRESULT get_DisplayEventId([out, retval] VARIANT_BOOL*pVal);

Parameters

pVal

[out, retval] Pointer auf eine VARIANT_BOOL Variable, die den sichtbaren Status der Spalte Event Id in der Listenansicht erhält. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funkion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_DisplayEventId([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Variable, die den sichtbaren Status der Spalte Event Id in der Listenansicht setzt. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funkion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplayEventId = True
End Sub

Anmerkungen


AlarmTextColor

 ITcEventView::AlarmTextColor
TwinCAT EventLogger - TcEventLogger

ITcEventView::AlarmTextColor

Diese Eigenschaft setzt oder gibt die zur Anzeige der Alarme verwendeten Farbe zurück. Der Alarm wurde vom SPS Funktionsblock ADSLOGEVENT ausgegeben, indem ein Merker von FALSE auf TRUE gesetzt wurde (oder ein anderes ADS Gerät), oder durch den Aufruf einer Report Event Funktion, wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent (dabei ist die TcEventClass auf TCEVENTCLASS_ALARM gesetzt).

Property get

HRESULT get_AlarmTextColor([out, retval] OLE_COLOR* pVal);

Parameter

pVal

[out, retval] Pointer auf eine OLE_COLOR Variable, welche die Textfarbe erhält, die zur Anzeige der Alarme verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_AlarmTextColor([in] OLE_COLOR newVal);

Parameter

newVal

[in] Variable, welche die Textfarbe setzt, die zur Anzeige der Alarme verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' display alarms with red text color
TcEventView1.AlarmTextColor = RGB(255, 0, 0)
End Sub

Anmerkungen


WarningTextColor

 ITcEventView::WarningTextColor
TwinCAT EventLogger - TcEventLogger

ITcEventView::WarningTextColor

Diese Eigenschaft setzt oder gibt die zur Anzeige der Warnungen verwendeten Farbe zurück. Die Warnung wurde vom SPS Funktionsblock ADSLOGEVENT ausgegeben, indem ein Merker von FALSE auf TRUE gesetzt wurde (oder ein anderes ADS Gerät) oder durch den Aufruf einer Report Event Funktion, wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent (dabei ist TcEventClass auf TCEVENTCLASS_WARNING gesetzt).

Property get

HRESULT get_WarningTextColor([out, retval] OLE_COLOR* pVal);

Parameter

pVal

[out, retval] Pointer auf eine OLE_COLOR Variable, welche die Textfarbe erhält, die zur Anzeige der Warnungen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_WarningTextColor([in] OLE_COLOR newVal);

Parameter

newVal

[in] Variable, welche die Textfarbe setzt, die zur Anzeige der Warnungen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' display warning with red text color
TcEventView1.WarningTextColor = RGB(255, 0, 0)
End Sub

Anmerkungen


InstructionTextColor

 ITcEventView::InstructionTextColor
TwinCAT EventLogger - TcEventLogger

ITcEventView::InstructionTextColor

Diese Eigenschaft setzt oder gibt die zur Anzeige der Anweisungen verwendeten Farbe zurück. Die Anweisung wurde vom SPS Funktionsblock ADSLOGEVENT ausgegeben, indem ein Merker von FALSE auf TRUE gesetzt wurde (oder ein anderes ADS Gerät) oder durch den Aufruf einer Report Event Funktion, wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent (dabei ist TcEventClass auf TCEVENTCLASS_INSTRUCTION gesetzt).

Property get

HRESULT get_InstructionTextColor([out, retval] OLE_COLOR* pVal);

Parameter

pVal

[out, retval] Pointer auf eine OLE_COLOR Variable, welche die Textfarbe erhält, die zur Anzeige der Anweisungen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_InstructionTextColor([in] OLE_COLOR newVal);

Parameter

newVal

[in] Variable, welche die Textfarbe setzt, die zur Anzeige der Anweisungen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' display instruction with red text color
TcEventView1.InstructionTextColor = RGB(255, 0, 0)
End Sub

Anmerkungen


ParamErrorTextColor

 ITcEventView::ParamErrorTextColor
TwinCAT EventLogger - TcEventLogger

ITcEventView::ParamErrorTextColor

Diese Eigenschaft setzt oder gibt die zur Anzeige der Parameterfehler verwendeten Farbe zurück. Der Parameterfehler wurde vom SPS Funktionsblock ADSLOGEVENT ausgegeben, indem ein Merker von FALSE auf TRUE gesetzt wurde (oder ein anderes ADS Gerät) oder durch den Aufruf einer Report Event Funktion, wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent (dabei ist TcEventClass auf TCEVENTCLASS_PARAMERROR gesetzt).

Property get

HRESULT get_ParamErrorTextColor([out, retval] OLE_COLOR* pVal);

Parameter

pVal

[out, retval] Pointer auf eine OLE_COLOR Variable, welche die Textfarbe erhält, die zur Anzeige der Parameterfehler verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_ParamErrorTextColor([in] OLE_COLOR newVal);

Parameter

newVal

[in] Variable, welche die Textfarbe setzt, die zur Anzeige der Parameterfehler verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' display parameter error with red text color
TcEventView1.ParamErrorTextColor = RGB(255, 0, 0)
End Sub

Anmerkungen


StateInfoTextColor

 ITcEventView::StateInfoTextColor
TwinCAT EventLogger - TcEventLogger

ITcEventView::StateInfoTextColor

Diese Eigenschaft setzt oder gibt die zur Anzeige der Statusinformation verwendeten Farbe zurück. Die Statusinformation wurde vom SPS Funktionsblock ADSLOGEVENT ausgegeben, indem ein Merker von FALSE auf TRUE gesetzt wurde (oder ein anderes ADS Gerät) oder durch den Aufruf einer Report Event Funktion, wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent (dabei ist TcEventClass auf TCEVENTCLASS_STATEINFO gesetzt).

Property get

HRESULT get_StateInfoTextColor([out, retval] OLE_COLOR* pVal);

Parameter

pVal

[out, retval] Pointer auf eine OLE_COLOR Variable, welche die Textfarbe erhält, die zur Anzeige der Statusinformationen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_StateInfoTextColor([in] OLE_COLOR newVal);

Parameter

newVal

[in] Variable, welche die Textfarbe setzt, die zur Anzeige der Statusinformationen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' display state information with red text color
TcEventView1.StateInfoTextColor = RGB(255, 0, 0)
End Sub

Anmerkungen


HintTextColor

 ITcEventView::HintTextColor
TwinCAT EventLogger - TcEventLogger

ITcEventView::HintTextColor

Diese Eigenschaft setzt oder gibt die zur Anzeige der Hinweise verwendeten Farbe zurück. Der Hinweis wurde vom SPS Funktionsblock ADSLOGEVENT ausgegeben, indem ein Merker von FALSE auf TRUE gesetzt wurde (oder ein anderes ADS Gerät) oder durch den Aufruf einer Report Event Funktion, wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent (dabei ist TcEventClass auf TCEVENTCLASS_HINT gesetzt).

Property get

HRESULT get_HintTextColor([out, retval] OLE_COLOR* pVal);

Parameter

pVal

[out, retval] Pointer auf eine OLE_COLOR Variable, welche die Textfarbe erhält, die zur Anzeige der Hinweise verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_HintTextColor([in] OLE_COLOR newVal);

Parameter

newVal

[in] Variable, welche die Textfarbe setzt, die zur Anzeige der Hinweise verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' display hints with red text color
TcEventView1.HintTextColor = RGB(255, 0, 0)
End Sub

Anmerkungen


MessageTextColor

 ITcEventView::MessageTextColor
TwinCAT EventLogger - TcEventLogger

ITcEventView::MessageTextColor

Diese Eigenschaft setzt oder gibt die zur Anzeige der Meldungen verwendeten Farbe zurück. Die Meldung wurde vom SPS Funktionsblock ADSLOGEVENT ausgegeben, indem ein Merker von FALSE auf TRUE gesetzt wurde (oder ein anderes ADS Gerät) oder durch den Aufruf einer Report Event Funktion, wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent (dabei ist TcEventClass auf TCEVENTCLASS_MESSAGE gesetzt).

Property get

HRESULT get_MessageTextColor([out, retval] OLE_COLOR* pVal);

Parameter

pVal

[out, retval] Pointer auf eine OLE_COLOR Variable, welche die Textfarbe erhält, die zur Anzeige der Meldungen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_MessageTextColor([in] OLE_COLOR newVal);

Parameter

Parameter

newVal

[in] Variable, welche die Textfarbe setzt, die zur Anzeige der Meldungen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' display messages with red text color
TcEventView1.MessageTextColor = RGB(255, 0, 0)
End Sub

Anmerkungen


MaintenanceTextColor

TwinCAT EventLogger - TcEventLogger

ITcEventView::MaintenanceTextColor

Diese Eigenschaft setzt oder gibt die zur Anzeige der Instandhaltungsmeldung verwendeten Farbe zurück. Die Instandhaltungsmeldung wurde vom SPS Funktionsblock ADSLOGEVENT ausgegeben, indem ein Merker von FALSE auf TRUE gesetzt wurde (oder ein anderes ADS Gerät) oder durch den Aufruf einer Report Event Funktion, wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent (dabei ist TcEventClass auf TCEVENTCLASS_MAINTENANCE gesetzt).

Property get

HRESULT get_MaintenanceTextColor([out, retval] OLE_COLOR* pVal);

Parameter

pVal

[out, retval] Pointer auf eine OLE_COLOR Variable, welche die Textfarbe erhält, die zur Anzeige der Instandhaltungsmeldungen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_MaintenanceTextColor([in] OLE_COLOR newVal);

Parameter

newVal
[in] Variable, welche die Textfarbe setzt, die zur Anzeige der Instandhaltungsmeldungen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' display maintenance messages with red text color
TcEventView1.MaintenanceTextColor = RGB(255, 0, 0)
End Sub

Anmerkungen


UndefTextColor

 ITcEventView::UndefTextColor
TwinCAT EventLogger - TcEventLogger

ITcEventView::UndefTextColor

Diese Eigenschaft setzt oder gibt die zur Anzeige der undefinierten Meldungen verwendeten Farbe zurück. Die undefinierte Meldung wurde vom SPS Funktionsblock ADSLOGEVENT ausgegeben, indem ein Merker von FALSE auf TRUE gesetzt wurde (oder ein anderes ADS Gerät) oder durch den Aufruf einer Report Event Funktion, wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent (dabei ist TcEventClass auf einen nicht definierten Wert gesetzt).

Property get

HRESULT get_UndefTextColor([out, retval] OLE_COLOR* pVal);

Parameter

pVal

[out, retval] Pointer auf eine OLE_COLOR Variable, welche die Textfarbe erhält, die zur Anzeige der undefinierten Meldungen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_UndefTextColor([in] OLE_COLOR newVal);

Parameter

newVal

[in] Variable, welche die Textfarbe setzt, die zur Anzeige der undefinierten Meldungen verwendet wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' display undefined messages with red text color
TcEventView1.UndefTextColor = RGB(255, 0, 0)
End Sub

Anmerkungen


ColWidthClass

TwinCAT EventLogger - TcEventLogger

ITcEventView::ColWidthClass

Diese Eigenschaft setzt oder gibt die Weite der Spalte Event Klasse zurück.

Property get

HRESULT get_ColWidthClass([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, welche die Weite der Spalte Event Klasse in der Listenansicht erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_ColWidthClass([in] long newVal);

Parameter

newVal
[in] Variable, welche die Weite der Spalte Event Klasse in der Listenansicht setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ColWidthClass = 200
End Sub

Anmerkungen


ColWidthMustCon

TwinCAT EventLogger - TcEventLogger

ITcEventView::ColWidthMustCon

Diese Eigenschaft setzt oder gibt die Weite der Spalte Bestätigungsstatus (confirm state) zurück.

Property get

HRESULT get_ColWidthMustCon([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, welche die Weite der Spalte Bestätigungsstatus in der Listenansicht erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT set_ColWidthMustCon([in] long newVal);

Parameter

newVal
[in] Variable, welche die Weite der Spalte Bestätigungsstatus in der Listenansicht setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ColWidthMustCon = 200
End Sub

Anmerkungen


ColWidthState

TwinCAT EventLogger - TcEventLogger

ITcEventView::ColWidthState

Diese Eigenschaft setzt oder gibt die Weite der Spalte Event Status zurück.

Property get

HRESULT get_ColWidthState([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, welche die Weite der Spalte Event Status in der Listenansicht erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_ColWidthState([in] long newVal);

Parameter

newVal
[in] Variable, welche die Weite der Spalte Event Status in der Listenansicht setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ColWidthState = 200
End Sub

Anmerkungen


ColWidthSource

TwinCAT EventLogger - TcEventLogger

ITcEventView::ColWidthSource

Diese Eigenschaft setzt oder gibt die Weite der Spalte Event Source zurück.

Property get

HRESULT get_ColWidthSource([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, welche die Weite der Spalte Event Source in der Listenansicht erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_ColWidthSource([in] long newVal);

Parameter

newVal
[in] Variable, welche die Weite der Spalte Event Source in der Listenansicht setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ColWidthSource = 200
End Sub

Anmerkungen


ColWidthDate

TwinCAT EventLogger - TcEventLogger

ITcEventView::ColWidthDate

Diese Eigenschaft setzt oder gibt die Weite der Spalte Event Datum zurück.

Property get

HRESULT get_ColWidthDate([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, welche die Weite der Spalte Event Datum in der Listenansicht erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_ColWidthDate([in] long newVal);

Parameter

newVal
[in] Variable, welche die Weite der Spalte Event Datum in der Listenansicht setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ColWidthDate = 200
End Sub

Anmerkungen


ColWidthTime

TwinCAT EventLogger - TcEventLogger

ITcEventView::ColWidthTime

Diese Eigenschaft setzt oder gibt die Weite der Spalte Event Zeit zurück.

Property get

HRESULT get_ColWidthTime([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, welche die Weite der Spalte Event Zeit in der Listenansicht erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_ColWidthTime([in] long newVal);

Parameter

newVal
[in] Variable, welche die Weite der Spalte Event Zeit in der Listenansicht setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ColWidthTime = 200
End Sub

Anmerkungen


ColWidthEventId

TwinCAT EventLogger - TcEventLogger

ITcEventView::ColWidthEventId

Diese Eigenschaft setzt oder gibt die Weite der Spalte Event Id zurück.

Property get

HRESULT get_ColWidthEventId([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, welche die Weite der Spalte Event Id in der Listenansicht erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_ColWidthEventId([in] long newVal);

Parameter

newVal
[in] Variable, welche die Weite der Spalte Event Id in der Listenansicht setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ColWidthEventId = 200
End Sub

Anmerkungen


ColWidthComputer

TwinCAT EventLogger - TcEventLogger

ITcEventView::ColWidthComputer

Diese Eigenschaft setzt oder gibt die Weite der Spalte Computername zurück.

Property get

HRESULT get_ColWidthComputer([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, welche die Weite der Spalte Computername in der Listenansicht erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_ColWidthComputer[in] long newVal);

Parameter

newVal
[in] Variable, welche die Weite der Spalte Computername in der Listenansicht setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ColWidthComputer= 200
End Sub

Anmerkungen


DisplayClass

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplayClass

Diese Eigenschaft aktiviert/deaktiviert die Spalte, die die Event Klasse anzeigt oder gibt den Status zurück.

Property get

HRESULT get_DisplayClass([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer auf eine VARIANT_BOOL Variable, die den sichtbaren Status der Spalte Event Klasse in der Listenansicht erhält. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_DisplayClass([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Variable, die den sichtbaren Status der Spalte Event Klasse in der Listenansicht setzt. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplayClass = True
End Sub

Amerkungen


DisplayMustCon

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplayMustCon

Diese Eigenschaft aktiviert/deaktiviert die Spalte, die den Bestätigungsstatus anzeigt oder gibt den Status zurück.

Property get

HRESULT get_DisplayMustCon([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer auf eine VARIANT_BOOL Variable, die den sichtbaren Status der Spalte Bestätigungsstatus in der Listenansicht erhält. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_DisplayMustCon([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Variable, die den sichtbaren Status der Spalte Bestätigungsstatus in der Listenansicht setzt. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplayMustCon = True
End Sub

Anmerkungen


DisplayState

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplayState

Diese Eigenschaft aktiviert/deaktiviert die Spalte, die den Event Status anzeigt oder gibt den Status zurück.

Property get

HRESULT get_DisplayState([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer auf eine VARIANT_BOOL Variable, die den sichtbaren Status der Spalte Event Status in der Listenansicht erhält. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_DisplayState([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Variable, die den sichtbaren Status der Spalte Event Status in der Listenansicht setzt. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplayState = True
End Sub

Anmerkungen


DisplaySource

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplaySource

Diese Eigenschaft aktiviert/deaktiviert die Spalte, die die Event Source anzeigt oder gibt den Status zurück.

Property get

HRESULT get_DisplaySource([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer auf eine VARIANT_BOOL Variable, die den sichtbaren Status der Spalte Event Source in der Listenansicht erhält. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_DisplaySource([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Variable, die den sichtbaren Status der Spalte Event Source in der Listenansicht setzt. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplaySource = True
End Sub

Anmerkungen


DisplayDate

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplayDate

Diese Eigenschaft aktiviert/deaktiviert die Spalte, die das Event Datum anzeigt oder gibt den Status zurück.

Property get

HRESULT get_DisplayDate([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer auf eine VARIANT_BOOL Variable, die den sichtbaren Status der Spalte Event Datum in der Listenansicht erhält. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_DisplayDate([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Variable, die den sichtbaren Status der Spalte Event Datum in der Listenansicht setzt. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplayDate = True
End Sub

Anmerkungen


DisplayTime

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplayTime

Diese Eigenschaft aktiviert/deaktiviert die Spalte, die die Event Zeit anzeigt oder gibt den Status zurück.

Property get

HRESULT get_DisplayTime([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer auf eine VARIANT_BOOL Variable, die den sichtbaren Status der Spalte Event Zeit in der Listenansicht erhält. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_DisplayTime([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Variable, die den sichtbaren Status der Spalte Event Zeit in der Listenansicht setzt. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplayTime = True
End Sub

Anmerkungen


DisplayMsg

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplayMsg

Diese Eigenschaft aktiviert/deaktiviert die Spalte, die den Event Meldungstext anzeigt oder gibt den Status zurück.

Property get

HRESULT get_DisplayMsg([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer auf eine VARIANT_BOOL Variable, die den sichtbaren Status der Spalte Event Meldungstext in der Listenansicht erhält. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_DisplayMsg([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Variable, die den sichtbaren Status der Spalte Event Meldungstext in der Listenansicht setzt. Der Status ist sichtbar, wenn die Variable VARIANT_TRUE (TRUE) ist, und unsichtbar, wenn die Variable VARIANT_FALSE (FALSE) ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplayMsg = True
End Sub

Anmerkungen


GetSelectedEvent

TwinCAT EventLogger - TcEventLogger

ITcEventView::GetSelectedEvent

Diese Methode gibt den Index des ausgewählten Events zurück.. Die Auswahl wird durch einen Klick mit der linken Maustaste auf den Eventeintrag in der Listenansicht getroffen, oder durch die Methode SelectEvent.

HRESULT GetSelectedEvent([out,retval] long* pSelEvent);

Parameter

pSelEvent

[out, retval] Pointer auf eine Variable, die den Index des ausgewählten Events erhält. Der Index in der Listenansicht startet oben mit dem Index 0.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pSelEvent war kein gültiger Pointer.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1
' place a command button on the form, and assign the name Command1

Private Sub Command1_Click()
' get the selected event
Dim index As Long
index = TcEventView1.GetSelectedEvent()
' reset the event
Call TcEventView1.ResetEvent(index)
End Sub

Anmerkungen


Mode

 ITcEventView::Mode
TwinCAT EventLogger - TcEventLogger

ITcEventView::Mode

Diese Eigenschaft setzt oder gibt den Anzeigemodus des TcEventViewers zurück. Die Anzeigemodi sind durch das Enum TCEVENTVIEW_DISPLAYMODE definiert.

Property get

HRESULT get_Mode([out, retval] long* pVal);

Parameters

pVal

[out, retval] Pointer auf eine Variable, die den Anzeigemodus vom Typ TCEVENTVIEW_DISPLAYMODE erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_Mode[in] long newVal);

Parameter

newVal

[in] Variable, die den Anzeigemodus des Typs TCEVENTVIEW_DISPLAYMODE setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.Mode = TCEVENTVIEW_MODE_TRACE
End Sub

Anmerkungen


MaxEvents

TwinCAT EventLogger - TcEventLogger

ITcEventView::MaxEvents

Diese Eigenschaft setzt oder gibt die maximale Anzahl der angezeigten Events im TcEventViewer zurück.

Property get

HRESULT get_MaxEvents([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, die die maximale Anzahle der Events erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_MaxEvents[in] long newVal);

Parameters

newVal

[in] Variable, die die maximale Anzahl der Events setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.MaxEvents = 20
End Sub

Anmerkungen

Wenn MaxEvent auf 0 gesetzt ist, werden alle Events angezeigt. Die Reduzierung der maximalen Eventanzahl kann die Leistung des TcEventView erhöhen.


SetFilter

TwinCAT EventLogger - TcEventLogger

ITcEventView::SetFilter

Mit dieser Methode kann ein Display-Filter eingeschaltet werden. Der TcEventViewer wird dann nur noch die ausgewählten Events anzeigen - (z.B. nur Alarms oder Events von einer bestimmten Quelle)

HRESULT SetFilter([in]TCEVENTVIEW_FILTER Filter, [in]VARIANT Value);

Parameters

Filter

[in] Art des Filters. Dieser Wert ist durch das TCEVENTVIEW_FILTER Enum definiert

Value

[in] Wert, welcher gefiltert wird. Die folgende Tabelle zeigt, welcher Vartype für welchen Filter erwartet wird.

Filter | Vartype
TCEVENTVIEW_FILTER_NONE | Wird Ignoriert.
TCEVENTVIEW_FILTER_CLASS TCEVENTVIEW_FILTER_SOURCEID TCEVENTVIEW_FILTER_ID | Werte, die sich zu Long (VT_I4) konvertieren lassen.
TCEVENTVIEW_FILTER_SOURCENAME | String (VT_BSTR).

Return Values

S_OK

Funktion erfolgreich ausgeführt.

E_INVALIDARG

Entweder ist der Filter Typ ungültig, oder Value lässt sich nicht in einen entsprechenden Wert konvertieren.


Übersicht

Die Schnittstelle ITcEventViewLight wird zur Kontrolle der Eigenschaften der Light Version des EventViewers verwendet. Sie leitet sich von IDispatch ab, so dass sie von allen Sprachen verwendet werden kann, die die COM Automation Schnittstellen unterstützen. IDispatch selbst leitet sich von IUnknown ab.

Methoden und Eigenschaften in

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück.
AddRef | Inkrementiert den Referenzzähler.
Release | Dekrementiert den Referenzzähler.

IDispatch Methoden | Beschreibung
GetIDsOfNames | Mappt einen einzelnen Teilnehmernamen und einen Satz optionaler Parameternamen mit einem entsprechenden Satz gesendeter Integer Identifier (DISPIDs). Diese können dann als Folgeabrufe an IDispatch::Invoke benutzt werden.
GetTypeInfo | Ruft die Typ Informationen für ein Objekt ab.
GetTypeInfoCount | Ruft die Anzahl der Typ Informations-Schnittstellen ab, die ein Objekt zur Verfügung stellt, entweder 0 oder 1.
Invoke | Stellt den Zugriff auf Eigenschaften und Methoden, ausgestellt durch ein Objekt, zur Verfügung.

ITcEventView Methoden und Eigenschaften | Beschreibung
ShowLoggedEvents | Zeigt die logged Events an.
ShowActiveEvents | Zeigt die aktiven Events an.
ConfirmEvent | Bestätigt ein Event.
ResetEvent | Setzt ein Event zurück.
LangId | Setzt die Sprache, die zur Anzeige der Event Meldung und des Source Namens verwendet wird, zurück.
DisableMenuItems | Setzt oder gibt den abgeschalteten Status des Kontextmenüs zurück.
SelectEvent | Markiert ein Event als ausgewählt.
AddConnection | Addiert eine Remoteverbindung zu einem EventLogger.
DeleteConnection | Entfernt eine Remoteverbindung zu einem EventLogger.
DisplayComputerName | Aktiviert/Deaktiviert die Spalte, die den Computernamen anzeigt oder den Status zurückgibt.
DisplayEventId | Aktiviert/Deaktiviert die Spalte, die die Event Id anzeigt oder den Status zurückgibt.
ColWidthClass | Setzt oder gibt die Weite der Spalte Event Klasse zurück.
ColWidthMustCon | Setzt oder gibt die Weite der Spalte Bestätigungsstatus (confirm state) zurück.
ColWidthState | Setzt oder gibt die Weite der Spalte Event Status zurück.
ColWidthSource | Setzt oder gibt die Weite der Spalte Event Source zurück.
ColWidthDate | Setzt oder gibt die Weite der Spalte Event Datum zurück.
ColWidthTime | Setzt oder gibt die Weite der Spalte Event Zeit zurück.
ColWidthEventId | Setzt oder gibt die Weite der Spalte Event Id zurück.
ColWidthComputer | Setzt oder gibt die Weite der Spalte Computername zurück.
ColWidthMsg | Setzt oder gibt die Weite der Spalte Event Meldung zurück.
DisplayClass | Aktiviert/Deaktiviert die Spalte, die die Event Klasse anzeigt, oder gibt den Status zurück.
DisplayMustCon | Aktiviert/Deaktiviert die Spalte, die den Bestätigungsstatus (confirm State) anzeigt, oder gibt den Status zurück.
DisplayState | Aktiviert/Deaktiviert die Spalte, die den Eventstatus anzeigt, oder gibt den Status zurück.
DisplaySource | Aktiviert/Deaktiviert die Spalte, die den Sourcenamen anzeigt, oder gibt den Status zurück.
DisplayDate | Aktiviert/Deaktiviert die Spalte, die das Eventdatum anzeigt, oder gibt den Status zurück.
DisplayTime | Aktiviert/Deaktiviert die Spalte, die die Eventzeit anzeigt, oder gibt den Status zurück.
DisplayMsg | Aktiviert/Deaktiviert die Spalte, die die Eventmeldung anzeigt, oder gibt den Status zurück.
GetSelectedEvent | Gibt den Index des Events zurück, dass vom Benutzer ausgewählt wurde.
Mode | Setzt oder gibt den Anzeigemodus des TcEventViewers zurück.
MaxEvents | Setzt oder gibt die maximale Anzahl der angezeigten Events zurück.
DisplayTitlebar | Aktiviert/Deaktiviert den Columnheader.
DisableContextMenu | Aktiviert/Deaktiviert das Kontext Menu.
DisableScrollbars | Aktiviert/Deaktiviert die Scrollbars.


TCEVENTVIEW_CONTEXTMENUFLAGS

Dieses Enum wird zur Abschaltung von Funktionen im Kontextmenü verwendet.

enum TCEVENTVIEW_CONTEXTMENUFLAGS
{
TCEVENTVIEW_NOTHINGDISABLED =0x0000,
TCEVENTVIEW_DISABLECONFIRM =0x0001,
TCEVENTVIEW_DISABLERESET =0x0002,
TCEVENTVIEW_DISABLEDETAILS =0x0004,
TCEVENTVIEW_DISABLEDOCLINKS =0x0008,
TCEVENTVIEW_DISABLECLEARACTIVEALL =0x0010,
TCEVENTVIEW_DISABLECLEARLOGGEDALL =0x0020,
TCEVENTVIEW_DISABLEALL =0xFFFF
}

Parameter

Eintrag | Beschreibung
TCEVENTVIEW_NOTHINGDISABLED | Alle Funktionen des Kontextmenüs sind aktiviert.
TCEVENTVIEW_DISABLECONFIRM | Entfernt bestätigte Funktionen aus dem Kontextmenü.
TCEVENTVIEW_DISABLERESET | Entfernt Reset-Funktioinen aus dem Kontextmenü.
TCEVENTVIEW_DISABLEDETAILS | Entfernt Detail-Funktionen aus dem Kontextmenü.
TCEVENTVIEW_DISABLEDOCLINKS | Entfernt verlinkte Dokument-Funktionen aus dem Kontextmenü.
TCEVENTVIEW_DISABLECLEARACTIVEALL | Entfernt alle aktiven Funktionen aus dem Kontektmenü.
TCEVENTVIEW_DISABLECLEARLOGGEDALL | Entfernt alle gelöschten und geloggten Funktionen aus dem Kontextmenü.
TCEVENTVIEW_DISABLEALL | Deaktiviert alle Funktionen des Kontextmenüs.


TCEVENTVIEW_DISPLAYMODE

Dieses Enum wird zu Einstellung des Anzeigemodus des TcEventView verwendet.

enum TCEVENTVIEW_DISPLAYMODE
{
TCEVENTVIEW_MODE_ACTVIVE =0x00000000,
TCEVENTVIEW_MODE_LOGGEGED =0x00000001,
TCEVENTVIEW_MODE_SNAPSHOT =0x00000002,
TCEVENTVIEW_MODE_TRACE =0x00000003
}

Parameter

Eintrag | Beschreibung
TCEVENTVIEW_MODE_ACTVIVE | Anzeige aktiver Events. Die TcEventView wird synchron zur Liste der aktiven Events des angeschlossenen TcEventLog Servers gehalten.
TCEVENTVIEW_MODE_LOGGEGED | Anzeige aktiver Events. Die TcEventView wird synchron zur Liste der logged Events des angeschlossenen TcEventLog Servers gehalten.
TCEVENTVIEW_MODE_SNAPSHOT | Gibt eine Momentaufnahme der logged oder aktiven Events zurück. Die TcEventView wird nicht synchron zur Liste der aktiven Events des angeschlossenen TcEventLog Servers gehalten. Eine neue Momentaufnahme der aktiven Events wird durch einen Aufruf des ITcEventView::ShowActiveEvents angezeigt. Eine neue Momentaufnahme der logged Events wird durch einen Aufruf des ITcEventView::ShowLoggedEvents angezeigt.
TCEVENTVIEW_MODE_TRACE | Neu auftretende Events werden zum TcEventView addiert; kein Event wird gelöscht.


TCEVENTVIEW_CONTEXTMENUFLAGS

TwinCAT EventLogger - TcEventLogger

TC_SORTMODE

Dieses Enum wird benutzt, um die Reihenfolge einzustellen, in welcher angezeigte Events sortiert werden.

enum TC_SORTMODE
{
SORT_BY_CLASS_ASCENDING = 0x00000000,
SORT_BY_CLASS_DESCENDING = 0x00000001,
SORT_BY_SOURCE_ASCENDING = 0x00000002,
SORT_BY_SOURCE_DESCENDING = 0x00000003,
SORT_BY_DATE_ASCENDING = 0x00000004,
SORT_BY_DATE_DESCENDING = 0x00000005,
SORT_BY_TIME_ASCENDING = 0x00000006,
SORT_BY_TIME_DESCENDING = 0x00000007,
SORT_BY_EVT_ID_ASCENDING = 0x00000008,
SORT_BY_EVT_ID_DESCENDING = 0x00000009,
SORT_BY_COMPUTER_ASCENDING = 0x0000000A,
SORT_BY_COMPUTER_DESCENDING = 0x0000000B
}

Parameters

Item | Description
SORT_BY_CLASS_ASCENDING | Events werden aufsteigend nach ihrer Klasse sortiert.
SORT_BY_CLASS_DESCENDING | Events werden absteigend nach ihrer Klasse sortiert.
SORT_BY_SOURCE_ASCENDING | Events werden aufsteigend nach ihrer Quelle sortiert.
SORT_BY_SOURCE_DESCENDING | Events werden absteigend nach ihrer Quelle sortiert.
SORT_BY_DATE_ASCENDING | Events werden aufsteigend nach Datum sortiert.
SORT_BY_DATE_DESCENDING | Events werden absteigend nach Datum sortiert.
SORT_BY_TIME_ASCENDING | Events werden aufsteigend nach Zeit sortiert.
SORT_BY_TIME_DESCENDING | Events werden absteigend nach Zeit sortiert.
SORT_BY_EVT_ID_ASCENDING | Events werden aufsteigend nach Id sortiert.
SORT_BY_EVT_ID_DESCENDING | Events werden absteigend nach Id sortiert.
SORT_BY_COMPUTER_ASCENDING | Events werden aufsteigend nach Computer sortiert.
SORT_BY_COMPUTER_DESCENDING | Events werden absteigend nach Computer sortiert.


Übersicht

Der EventFormatter wird benutzt, um Meldungs- und sprachspezifisch Texte aus einer Datenbank zu laden. language from a database.

Beckhoff bietet standard Formatter Implementierungen. Die EventFormatter API ist dokumentiert, so dass kundenspezifische Formatter implementiert werden können um proprietäre Formate zu unterstützen.

Wen ein Event in der SPS ausgelöst wird muss eine Formatter ProgId angegeben werden. Der TcEvenlogger versucht nun eine Instanz des COM Objectes mit dieser ProgId zu erzeugen. Wenn dieses Objekt existiert und das ITcLogFormatterC Interface implementiert wird der Meldungstest nun an diesem Objekt abgefragt.

TwinCAT standard formatters:

Formatter | Description | Supported Platforms
TcEventFormatter | Lädt Meldungstexte aus dem TwinCAT Project Storage (*.tps). | NT/2000/XP/Vista.
TcXMLFormatter | Lädt Meldungstexte aus XML Dateien. | NT/2000/XP/Vista/CE.


Overview

Methods and Properties in Vtable Order

IUnknown Methods | Description
QueryInterface | returns a pointer to the interface you query for
AddRef | Increment the reference counter
Release | Decrements the reference counter

ITcLogFormatterC Methods | Description
GetFormatString | Gibt den Formatstring zurück
GetCompleteString | Gibt einen formatierten Meldungstext in einer bestimmten Sprache zurück
SetFormatString | Setzt den Formatstring für ein bestimmtes Event
GetClassPrio | Gibt die Event Klasse und Priorität zurück
EnumDocLinks | Gibt einen enumerator zurück
GetSourceName | Gibt den Sourcename in einer bestimmten Sprache zurück.


GetFormatString

TwinCAT EventLogger - TcEventFormatter

ITcLogFormatterC::GetFormatString

Diese Methode gibt den Formatstring zurück wie er von TcEvent.DataFormatStrAddress zugeordnet wurde, als das Event vom SPS Funktionsblock ADSLOGEVENT ausgegeben wurde.

HRESULT GetFormatString([in]long nEventId,
[in]long nSrcId,
[in] langId,
[out, retval] BSTR * szFormat)

Parameter

nEventId

[in] Variable, die die Event Id darstellt.

nSrcId

[in] Variable, die die Source Id darstellt.

langId

[in] Die Sprach-Id der angefragten Sprache. Die gewünschte Sprache sollte mit *LCIDs markiert werden. Die nächste Tabelle zeigt ein Beispiel für einige Sprach-Ids. In der Konfiguration des Event Formatters werden die Sprachen mit der gleichen Sprach-Id gekennzeichnet.

LCID | Beschreibung
1031 | Deutsch
1033 | US Englisch
1034 | Spanisch
1036 | Französisch

szFormat

[out, retval] Pointer auf einen BSTR String, der das Format zurückgibt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

szFormat war kein gültiger Pointer.

E_NOTIMPL

Die Methode ist nicht implementiert.

Anmerkungen

Der TcXmlFormatter unterstützt diese Methode nicht.

*LCID: weitere Informationen finden Sie in der MSDN Library


GetCompleteString

TwinCAT EventLogger - TcEventFormatter

ITcLogFormatterC::GetCompleteString

Die Methode GetCompleteString gibt den formatierten Meldungsstring der angefragten Sprache zurück. Diese Methode wird von der TcEvent Objekt Methode ITcEvent::GetMsgString aufgerufen.

HRESULT GetCompleteString([in]long nEventId,
[in]long nSrcId,
[in] langId,
[in] TcEventHeader* pEventHead,
[in] SAFEARRAY(VARIANT)* eventData,
[out, retval] BSTR* msg)

Parameter

nEventId

[in] Variable, die die Event Id darstellt.

nSrcId

[in] Variable, die die Source Id darstellt.

langId

[in] Die Sprach-Id der angefragten Sprache. Die gewünschte Sprache sollte mit *LCIDs markiert werden. Die nächste Tabelle zeigt ein Beispiel für einige Sprach-Ids. In der Konfiguration des Event Formatters werden die Sprachen mit der gleichen Sprach-Id gekennzeichnet.

LCID | Beschreibung
1031 | Deutsch
1033 | US Englisch
1034 | Spanisch
1036 | Französisch

pEventHead

[in] Pointer auf ein Objekt vom Typ TcEventHeader. Das Objekt stellt die Eventkonfiguration dar.

eventData

[in] Pointer auf ein Safearray, das die Event Argumente darstellt. In der Konfiguration des Event Formatters ist definiert, wie die Event Argumente in der angezeigten Event Meldung platziert werden.

Die folgenden Datentypen werden von Standard Formatter unterstützt:

int (16bit), long (32bit), float(32bit), double(64bit), string(BSTR). Die Eventdaten werden zugeordnet, wenn das Event ausgegeben wird.

msg

[out, retval] PPointer auf einen BSTR String der den formatierten String für die angefragte Sprache zurückgibt

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

szFormat war kein gültiger Pointer.

E_NOTIMPL

Die Methode ist nicht implementiert.

Anmerkungen

Die meisten Standard Formatter, wie der XML basierende Formatter (TcEventFormatter.TcXmlFormatter), versuchen, einen String für die Default-Sprache zurückzugeben, falls die angefragte Sprache nicht in der Konfiguration des Formatters existiert.

*LCID: weitere Informationen finden Sie in der MSDN Library.


SetFormatString

TwinCAT EventLogger - TcEventFormatter

ITcLogFormatterC::SetFormatString

Diese Methode ordnet einen neuen Formatstring an, wie er von TcEvent.DataFormatStrAddress zugeordnet wurde, als das Event vom SPS Funktionsblock ADSLOGEVENT ausgegeben wurde.

HRESULT SetFormatString([in]long nEventId,
[in]long nSrcId,
[in] langId,
[in] BSTR * szFormatString)

Parameter

nEventId

[in] Variable, die die Event Id darstellt.

nSrcId

[in] Variable, die die Source Id darstellt.

langId

[in] Die Sprach-Id der angefragten Sprache. Die gewünschte Sprache sollte mit *LCIDs markiert werden. Die nächste Tabelle zeigt ein Beispiel für einige Sprach-Ids. In der Konfiguration des Event Formatters werden die Sprachen mit der gleichen Sprach-Id gekennzeichnet.

LCID | Beschreibung
1031 | Deutsch
1033 | US Englisch
1034 | Spanisch
1036 | Französisch

msg

[in] Ein BSTR String, der den Formatstring enthält.

S_OK

Funktion wurde erfolgreich aufgerufen.

E_NOTIMPL

Die Methode ist nicht implementiert.

Anmerkungen

Der TcXmlFormatter unterstützt diese Methode nicht.

*LCID: weitere Informationen finden Sie in der MSDN Library


GetClassPrio

TwinCAT EventLogger - TcEventFormatter

ITcLogFormatterC::GetClassPrio

Diese Methode gibt die Event Klasse und Priorität zurück. Dies wird von Alarmen benutzt, die vom SPS Funktionsblock ADSLOGEVENT ausgegeben werden, indem das Flag von FALSE auf TRUE gesetzt wird (oder eines anderen ADS Geräts), oder durch den Aufruf einer Report Funktion wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent mit den TcEventFlags auf TCEVENTFLAG_PRIOCLASS gesetzt.

HRESULT GetClassPrio([in]long nEventId,
[in]long nSrcId,
[out] TcEventClass * pClass,
[out] long * pPriority)

Parameter

nEventId

[in] Variable, die die Event Id darstellt.

nSrcId

[in] Variable, die die Source Id darstellt.

pClass

[in] Pointer auf einen TcEventClass Wert, der die Eventklasse erhält.

pPriority

[out, retval] Pointer auf eine long Variable, die die Event Priorität erhält. Die Event Priority wird durch den Typ TcEventPriority definiert.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pClass oder Priorität sind keine gültigen Pointer.

Anmerkungen


EnumDocLinks

TwinCAT EventLogger - TcEventFormatter

ITcLogFormatterC::EnumDocLinks

Die Methode gibt ein Aufzählungsobjekt zurück, das zur Wiederholung aufgelisteter Events verwendet wird. Dokumentverknüpfungen sind der Pfad und die Dateinamen der Dokumente ,wie HTML Seiten und Bilder, die eine genauere Beschreibung über einen einzelnen Alarm für die angewählte Sprache ausgeben. Diese Methode wird von der TcEvent Objekt Methode ITcEvent::EnumDocLinks aufgerufen.

HRESULT EnumDocLinks([in]long nEventId,
[in]long nSrcId,
[in] langId,
[out, retval] ITcEnumEventDocLink ** ppEnum)

Parameter

nEventId

[in] Variable, die die Event Id darstellt.

nSrcId

[in] Variable, die die Source Id darstellt.

langId

[in] Die Sprach-Id der angefragten Sprache. Die gewünschte Sprache sollte mit *LCIDs markiert werden. Die nächste Tabelle zeigt ein Beispiel für einige Sprach-Ids. In der Konfiguration des Event Formatters werden die Sprachen mit der gleichen Sprach-Id gekennzeichnet.

LCID | Beschreibung
1031 | Deutsch
1033 | US Englisch
1034 | Spanisch
1036 | Französisch

ppEnum

[out, retval] Pointer auf den I ITcEnumEventDocLink Schnittstellen-Pointer, der die Aufzählungsobjekte der Dokumentverknüpfungen erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

ppEnum war kein gültiger Pointer.

Anmerkungen

*LCID: weitere Informationen finden Sie in der MSDN Library.


GetSourceName

TwinCAT EventLogger - TcEventFormatter

ITcLogFormatterC::GetSourceName

Die Methode GetSourceName gibt einen formatierten Sourcenamen für die angefragte Sprache zurück. Diese Methode wird von der TcEvent Objekt Methode ITcEvent::SourceName aufgerufen.

HRESULT GetSourceName( [in]long nSrcId,
[in] langId,
[out, retval] BSTR* szName)

Parameter

nSrcId

[in] Variable, die die Event Source Id darstellt.

langId

[in] Die Sprach-Id der angefragten Sprache. Die gewünschte Sprache sollte mit *LCIDs markiert werden. Die nächste Tabelle zeigt ein Beispiel für einige Sprach-Ids. In der Konfiguration des Event Formatters werden die Sprachen mit der gleichen Sprach-Id gekennzeichnet.

LCID | Beschreibung
1031 | Deutsch
1033 | US Englisch
1034 | Spanisch
1036 | Französisch

szName

[out, retval]

Pointer auf einen BSTR String, der den formatierten String für den Event Sourcenamen zurückgibt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

szName war kein gültiger Pointer.

Anmerkungen

Die meisten Standard Formatter, wie der XML basierende Formatter (TcEventFormatter.TcXmlFormatter), versuchen, einen String für die Defaultsprache zurückzugeben, wenn die angefragte Sprache in der Konfiguration des Formatters nicht existiert.

*LCID: weitere Informationen finden Sie in der MSDN Library


Übersicht

Der TcXmlFormatter stellt die Textformatierungsfunktionen für TcEventLogger Events zur Verfügung. Er kann mehrere Sprachen bedienen und optional Event Argumente wie Integer, Floating Point Numbers und Strings in den ausgegebenen String einfügen. Die ausgegebenen Strings werden in einer XML Datei eingerichtet. Der TcEventFormatter befindet sich in der TcEventFormatter.dll.

Datenbank

Der TcXmlFormatter benutzt XML files als Datenbank. Die Konfiguration erfolgt mit zwei verschiedenen XML Dateien:

  1. In der Datei TcEventSourceLocation.xml werden die Meldungs Quellen definiert. Für jede Quelle wird hier eine Source ID und der Name der Meldungs-konfigurations Datei angegeben.
  2. Die Meldungen werden durch eine XmlEventConfguration beschrieben.

Wenn Veränderungen an einer der XML Dateien durchgeführt wurden, muss der TcEventLogger neu gestartet (oder Die ITcServer Methode Reset() am Eventlogger aufgerufen) werden.

Um den Eventlogger neu zu starten

1) Stoppen Sie alle Clients, die den TcEventLogger verwenden, wie z.B. HMI, TcEventbar.

2) Stoppen Sie das TwinCAT System.

3) Starten Sie den Task Manager und stellen Sie sicher, dass das Programm TcEventLogger.exe nicht in der Liste der Prozesse existiert.

4) Starten Sie das TwinCAT System erneut. Die neue Eventkonfiguration ist jetzt gültig.

Falls der TcEventLogger nicht wie unter 3) beschrieben gestoppt werden kann, ist evtl. ein Neustart des Betriebssystems erforderlich.


TcEventSourceLocation

Die Datei TcEventSourceLocation.xml definiert den Standort der Event Konfiguration eines jeden Event Source für den TcXmlFormatter. Die Datei befindet sich im TwinCAT Resource Verzeichnis.

Der aktuelle Pfad des Resource Verzeichnis kann aus der Registry ausgelesen werden. Unter dem Key-Wert HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT\System\[ResourcePath] befindet sich der gesuchte Pfad.

Der nächste Screenshot zeigt den Wert im Registry Editor regedit.exe.

Schema

Die Abbildung zeigt das XML Schema, das die Struktur der TcEventSourceLocation XML Datei beschreibt.

Die Tabelle beschreibt die Knoten des XML Dokuments:

Schnittstelle | Beschreibung
TcEventSourceLocation | Das einzige Rootelement. Es enthält eine Liste der Location Knoten von 0 bis unendlich.
Location | Location stellt den Ort der XML Dateien mit Source Ids dar, die die XmlEventConfguration enthält. Der Knoten hat zwei erforderliche Unterknoten: SourceId und Path
SourceId | Integer, der die Event Source Id darstellt.
Path | String, der den relativen Pfad oder Dateinamen der XmlEventConfguration für eine Source Id enthält.

Beispiel

Der nächste Textauszug zeigt eine Beispielkonfiguration der TcEventSourceLocation.xml Datei.

<?xml version="1.0" encoding="UTF-8"?>
<TcEventSourceLocation>
<Location>
<SourceId>300</SourceId>
<Path>TcIoMessages.xml</Path>
</Location>
<Location>
<SourceId>500</SourceId>
<Path>TcNcMessages.xml</Path>
</Location>
<Location>
<SourceId>1</SourceId>
<Path>user.xml</Path>
</Location>
</TcEventSourceLocation>

Das Beispiel zeigt den Ort der I/O Meldungen, NC Meldungen und benutzerdefinierter Meldungen mit der Source Id 1 in der Datei user.xml, die sich im gleichen Verzeichnis befindet.


XmlEventConfguration

Die Datei XmlEventConfguration definiert die Event Konfiguration einer Sourde Id für verschiedene Sprachen. Die XmlEventConfguration Source id und der Standortpfad müssen zur TcEventSourceLocation als ein Location node (Knoten) eingetragen werden.

Schema

Der folgende Screenshot zeigt das XML Schema, das die Struktur des XmlEventConfguration xml file beschreibt.

Die folgende Tabelle beschreibt die Nodes des XML Dokuments

Schnittstelle | Beschreibung
TcEventSource | Das einzige Rootelement. Es enthält eine Liste der Source Knoten von 0 bis unendlich.
Source | Unterelement des TcEventSource Knoten. Der Knoten stellt die Konfiguration eines Event Source dar.. Die Unterelemente sind die ids des Sources.1 bis unendlich für die Source Name der verschiedenen Sprachen und jeweils 0 bis unendlich für die Events und Properties.
id | Unterelement des Source Knoten. Ein Integer, der die Event Source darstellt.
Name | Unterelement des Source Knoten. Der Event Source Name für die verschiedenen Sprachen. Die Sprache wird durch das Attribut *LcId definiert. Wenn kein *LcId Attribut existiert, wird die *LcId 1033 (US-Englisch) verwendet.
Event | Unterelement des Source Knoten. Stellt die Event Konfiguration für ein Event dar. Die Unterelemente sind Event id, ein Message String für die verschiedenen Sprachen von 1 bis unendlich, ParaFormat der Formatstring für die Eventdaten, das MustConfirm Flag, die UserFlags, Dokumentverknüpfungen von 0 bis unendlich und Property von 0 bis unendlich.
Property | Unterelement des Source Knoten. Die Property wird durch Name, Value and Comment dargestellt.
id | Unterelement des Event Knoten. Ein Integer, der die Event Id darstellt.
Message | Unterelement des Event Knoten. Die Event Meldung für die verschiedenen Sprachen. Die Sprache wird durch das Attribut *LcId definiert. Wenn kein *LcId Attribut existiert, wird die *LcId 1033 (US-Englisch) verwendet. Das eventData wurde zugeordnet, als das Event vom SPS Funktionsblock ADSLOGEVENT durch Setzen des Flags von FALSE auf TRUE ( oder eines anderen ADS Geräts) ausgegeben wurde, oder vom Aufruf einer Report Event Funktion wie ITcEventLogC::ReportEvent, ITcEventC3 ::ReportEventEx oder ITcEventLog:: ReportEvent. Es kann der Meldung durch %1, %2, %,3 ... hinzugefügt werden, wobei die Ziffer den Index des eventData Parameter darstellt.
ParaFormat | Unterelement des Event Knoten. Definiert eine printf Formatbeschreibung, die für einen Eintrag im eventData verwendet wird. Das Attribut ParaNo repräsentiert den Index des eventData für den der Formatstring verwendet wird.
UserFlags | Unterelement des Event Knoten. Ein Integer, der die benutzerdefinierten Flags definiert.
Link | Unterelement des Event Knoten. Eine Dokumentverknüpfung, die den Link auf ein Dokument darstellt, das weitere Informationen über ein Event für die verschiedenen Sprachen bereitstellt. Der Zugriff auf die DocLink Eigenschaft erfolgt über das TcEvent Objekt ITcEvent:: EnumDocLink und ist im Kontextmenü des TcEventViewers verfügbar. Die mit dem Dokument verknüpfte Sprache wird durch das Attribut *LcId definiert. Die Dokumentverknüpfung hat ein Unterelement Text, das den angezeigten Text für die ausgewählte *LcId und den URL Knoten darstellt. Der URL Knoten enthält die Url zum Dokument für die ausgewählte *LcId, die angezeigt werden soll.
Property | Unterelement des Event Knoten. Die Property wird durch Name, Value and Comment dargestellt.

Beispiel

Der Ausschnitt zeigt eine Beispielkonfiguration einer XmlEventConfguration Datei.

<?xml version="1.0" encoding="UTF-8"?>
<TcEventSources>
<Source>
<Id>1</Id>
<Name LcId="1033">Axis Controller</Name>
<Name LcId="1031">Achsen Controller</Name>

<Event>
<Id>1</Id>

<Message LcId="1033">The Axis:%1 stop at the position %2 mm</Message>
<Message LcId="1031">Die Achse:%1 hielt an der Position %2 mm</Message>

<!-- format for the seconf parameter -->
<ParaFormat ParaNo="2">%.3f</ParaFormat>

<!--the event class and prio is defined here -->

<!-- the event class is a WARNING -->
<Class>6</Class>

<!-- the event priority is implicit -->
<Priority>0</Priority>

<MustConfirm>true</MustConfirm>

<Link LcId="1033">
<Text>Help</Text>
<URL>file:///C:/1033/AxisError.html</URL>
</Link>
<Link LcId="1031">
<Text>Help</Text>
<URL>file:///C:/1031/AxisError.html</URL>
</Link>
<Property>
<Name>Log</Name>
<Value>true</Value>
</Property>
</Event>

<Event>
<Id>2</Id>

<Message LcId="1033">Emergency Stop!</Message>
<Message LcId="1031">Not Stopp!</Message>
</Event>
</Source>
</TcEventSources>

Das Beispiel zeigt die Eventkonfiguration für zwei Events für die unterstützten Sprachen Deutsch und Englisch.

* Die folgende Tabelle zeigt einige häufig verwendete *LCIDs:

LCID | Beschreibung
1031 | Deutsch
1033 | US English
1034 | Spanisch
1036 | Französisch

*LCID: weitere Informationen finden Sie in der MSDN Library.


Übersicht

Der TcEventlogger ist ein Mechanismus zum Verwalten von Meldungen ( z.B. aus der SPS). Er ist als TcCOM-Server realisiert und wird vom TwinCAT System gesteuert. Er bietet umfassende COM Interfaces zum Abfragen und Manipulieren von Meldungen:

Schnittstelle | Beschreibung
ITcServer | Intern vom TwinCAT System verwendet, um diesen Server zu regeln.
ITcAdsAsync | Wird intern benutzt, um die ADS Funktionalität im TcEventLogger zu implementieren. Der TcEvent Logger bekommt die ADS Befehle über den ADS Port 110 durch seine Schnittstelle.
ITcEventLog | Dies ist die Haupt-Schnittstelle des TcEventLoggers für COM Clients wie das HMI. Hauptfeatures um aktive und logged Alarme zu regeln und auch um neue Alarme hinzuzufügen und Bestehende zu löschen.
ITcEventLogC | Diese Schnittstelle ist die Basis-Schnittstelle von ITcEventLogC3 und ITcEventLogC2.
ITcEventLogC2 | Die Schnittstelle leitet sich von ITcEventLogC ab und ist die Basis-Schnittstelle von ITcEventLogC3
ITcEventLogC3 | Dies ist eine anwendungsspezifische Schnittstelle des TcEventLoggers für COM Clients wie HMI, die anwendungsspezifische Schnittstellen unterstützen. Die Schnittstelle leitet sich von ITcEventLogC2 ab.
ITcEventLogEvents | Callback Funktionen für Rückrufe an COM-Clients des TcEventloggers. Hierdurch können sich die Clients z.B. über das auftreten und zurücksetzen von Meldungen informieren lassen.
ITcEvent | Meldungsobjekt. Mithilfe dieses Objektes können die Eigenschaften einer Meldung (z.B. Event- und Source ID) oder der Meldungstext abgefragt werden. Mithilfe dieses Objektes können Meldungen z.B. auch programmatisch zurückgesetzt werden.
ITcEnumEvents | Mithilfe dieser Schnittstelle lassen sich die aktiven oder geloggten Meldungen enumerieren.
ITcEnumEventDocLink | Mithilfe dieser Schnittstelle lassen sich die Doc Links einer Meldung enumerieren.


Übersicht

TwinCAT EventLogger - TcEventLogger

TcEventLogger Return Codes

Code (hex) | Description
0x00000000 | Kein Fehler
0x98210001 | Event Objekt ist signalisiert
0x98210002 | Event Objekt ist quittiert
0x98210003 | Event Objekt ist zurückgesetzt
0x98210004 | Event Objekt ist quittiert aber nicht zurückgesetzt
0x98210005 | Event braucht keine Quittierung
0x98210006 | Reset oder Quittierung für ein unbekanntes Event
0x98210007 | Event wird aus dem Storage geladen
0x98210008 | Event Konfiguration konnte im Storage nicht gefunden werden
0x98210009 | es konnte nicht auf den Storage zugegriffen werden


TcEventLogger::TcEventLog

Die Hauptklasse des TcEvent Loggers. Stellt die Schnittstelle vom COM Client zur ADS Welt zur Verfügung. Diese Klasse implementiert die State Machine zum Handling des Verhaltens von Alarmen und dem Signal Transfer zwischen SPS und den COM Clients. Intern regelt sie die TcEventKeyToEventMap. Diese listet die aktiven Alarme und ein Objekt vom Typ IEnumSTATSTGPtr auf, welches die Liste der Streams enthält, die die Logged Alarme präsentieren. Bei Anfrage eines Methodenaufrufs an die ITEventLog Schnittstelle wird ein Aufzählungsobjekt für aktive Events und eines für Logged Events zurückgegeben.

Schnittstelle | Beschreibung
ITcServer | Intern vom TwinCAT System verwendet, um diesen Server zu regeln.
ITcAdsAsync | Wird intern benutzt, um die ADS Funktionalität im TcEventLogger zu implementieren. Der TcEvent Logger bekommt die ADS Befehle über den ADS Port 110 durch seine Schnittstelle.
ITcEventLog | Dies ist die Haupt-Schnittstelle des TcEventLoggers für COM Clients wie das HMI. Hauptfeatures um aktive und logged Alarme zu regeln und auch um neue Alarme hinzuzufügen und Bestehende zu löschen.
ITcEventLogC3 | Dies ist eine anwendungsspezifische Schnittstelle des TcEventLoggers für COM Clients wie HMI, die anwendungsspezifische Schnittstellen unterstützen. Die Schnittstelle leitet sich von ITcEventLogC2 ab.
ITcEventLogC2 | Die Schnittstelle leitet sich von ITcEventLogC ab und ist die Basis-Schnittstelle von ITcEventLogC3
ITcEventLogC | Diese Schnittstelle ist die Basis-Schnittstelle von ITcEventLogC3 und ITcEventLogC2.
ITcEventLogBaseC | unbenutzt

Zusätzlich bietet diese Klasse die Event Schnittstelle _ITcEventLogEvents die durch den Client implementiert werden kann.


TcEventLogger::TcEvent

Diese Klasse stellt ein einzelnes Event dar. Die Klasse bietet Schnittstellen zu den COM Clients. Objekte dieser Klasse werden vom TcEventLog erstellt, der Hauptklasse des TcEventLoggers. Die Klasse bietet über seine Schnittstelle alle Parameter des Alarms und benutzt intern das zugewiesene Formatter Objekt um die Sprache Event-Meldung unabhängig zurückzugeben.

Schnittstelle | Beschreibung
ITcEvent | Die Hauptschittstelle stellt alle Parameter eines Event Objekts zur Verfügung.
ITcEventC | Diese kundenspezifische Schnittstelle stellt weitere Alarmparameter zur Verfügung.


Überblick

Der ITcEventLog ist eine Standard-Schnittstelle der Hauptklasse des TcEventLoggers. Die Schnittstelle bietet die Hauptfeatures um aktive und logged Alarme zu regeln und auch um neue Alarme hinzuzufügen und Bestehende zu löschen. Die Schnittstelle leitet sich von IDispatch ab, so dass es von allen Sprachen verwendet werden kann, die COM Automation Schnittstellen unterstützen. IDispatch selbst leitet sich von IUnknown ab.

Methoden und Eigenschaften

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück.
AddRef | Inkrementiert den Referenzzähler.
Release | Dekrementiert den Referenzzähler.

IDispatch Methoden | Beschreibung
GetIDsOfNames | Mappt einen einzelnen Teilnehmernamen und einen Satz optionaler Parameternamen mit einem entsprechenden Satz gesendeter Integer Identifier (DISPIDs). Diese können dann als Folgeabrufe an IDispatch::Invoke benutzt werden.
GetTypeInfo | Ruft die Typ Informationen für ein Objekt ab.
GetTypeInfoCount | Ruft die Anzahl der Typ Informations-Schnittstellen ab, die ein Objekt zur Verfügung stellt, entweder 0 oder 1.
Invoke | Stellt den Zugriff auf Eigenschaften und Methoden, ausgestellt durch ein Objekt, zur Verfügung.

ITcEventLog Methoden und Eigenschaften | Beschreibung
ReportEvent | Diese Methode wird verwendet, um vom Client ein neues Event auszugeben.
ClearActiveEvents | Diese Methode setzt alle aktiven Events zurück.
GetLastEvent | Diese Methode gibt die letzten Events zurück.
EnumActiveEvents | Gibt ein Aufzählungsobjekt zurück, welches zur Wiederholung der aufgelisteten aktiven Events benutzt wird.
EnumActiveEventsEx | Liefert einen Standard Enumerator zum Aufzählen der aktiven Meldungen.
EnumLoggedEvents | Gibt ein Aufzählungsobjekt zurück, welches zur Wiederholung der aufgelisteten logged Events benutzt wird.
EnumLoggedEventsEx | Liefert einen Standard Enumerator zum Aufzählen der geloggten Meldungen.
Export | Kopiert die Liste der Logged Events in einen strukturierten Storage und gibt den Storage zurück.
ExportText | Nicht implementiert
ActiveEvents | Setzt die Anzahl der aktiven Events zurück.
LoggedEvents | Setzt die Anzahl der Logged Events zurück.
ClearLoggedEvents | Diese Methode setzt alle Logged Events zurück.


TwinCAT EventLogger - TcEventLogger

ITcEventLog::ReportEvent

Diese Methode wird verwendet, um von einem COM Client (z.B. ein HMI Programm) ein neues Event auszugeben (an den TcEventLogger).

HRESULT ReportEvent([in] SAFEARRAY(VARIANT)* eventHead, [in] SAFEARRAY(VARIANT)* eventData));

Parameter

eventHead

[in] Pointer auf ein Safearray mit den Grenzen 0 bis 9, dass den Event Header darstellt. Das Array besitzt die gleiche Information wie der TcEventHeader. Die Punkte des Arrays sind in der folgenden Tabelle erklärt.

Index | TcEventHeader Punkt | Datentyp | Beschreibung
0 | nClass | TcEventClass | Die Klasse des Events, wie Alarm, Warnung, Hinweis.
1 | nPriority | TcEventPriority (long) | Die Eventpriorität. Ab jetzt ist die Priorität immer: TcEventPriority.TCEVENTPRIO_IMPLICIT=0
2 | dwFlags | TcEventFlags (long) | Die Merker regeln das Verhalten des Alarms. Dies kann mit einer OR Verknüpfung kombiniert werden.
3 | dwUserData | long | Reservevariable, die vom Benutzer verwendet werden kann.
4 | nId | long | Die Event Id, die eindeutig den Eventtyp für diesen einzelnen Event Source darstellt.
5 | nInvokeId | long |
6 | fDate | VARIANT-DATE | Datum und Zeit des Fehlerauftritts.
7 | nMs | long | Der millisekunden Anteil des Event Datums.
8 | varSource | variant | Source id und Source Name. Die Event Source wird zu Kennzeichnung verschiedener Geräte verwendet ( z. B. I/O Event, oder verschiedene Teile des SPS Programms.)
9 | szFmtProgId | BSTR string | Die PrgId des Formatters. Wenn der Standard XML Formatter verwendet werden soll, muss der String auf "TcEventFormatter.TcXmlFormatter" gesetzt werden.

eventData

[in] Pointer auf ein Safearray, das die Event Argumente darstellt. In der Konfiguration des Event Formatters ist definiert, wie die Event Argumente in der angezeigten Event Meldung darzustellen sind. Die folgenden Datentypen werden durch den Standard Formatter unterstützt: int (16bit), long (32bit), float(32bit), double(64bit), string(BSTR).

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

TCEVENTERR_ISSIGNALED

Das Event mit dieser Source Id und Event Id wurde bereits angezeigt.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' create event header
Dim arrHeader(0 To 9) As Variant
arrHeader(0) = TcEventClass.TCEVENTCLASS_ALARM ' event class
arrHeader(1) = TcEventPriority.TCEVENTPRIO_IMPLICIT ' event priority
arrHeader(2) = TcEventFlags.TCEVENTFLAG_LOG ' event flags
arrHeader(3) = 0 'user data
arrHeader(4) = 1 ' event id
arrHeader(5) = 0 'invoke id
arrHeader(6) = Now ' event date and time
arrHeader(7) = 123 ' millisecond part of the event date and time
arrHeader(8) = 1 ' event soruce id
arrHeader(9) = "TcEventFormatter.TcXmlFormatter" ' XML formatter ProgId
' create event parameters
Dim arrParam(0 To 1) As Variant
arrParam(0) = 1234 ' first parameter as long
arrParam(1) = 1234.777 ' second parameter as double
' log the event
Call evtLogger.ReportEvent(arrHeader, arrParam)

Anmerkungen

Nach diesem Methodenaufruf wird der Event Logger das Event OnNewEvent auf allen Clients, die die Event-Schnittstelle _ITcEventLogEvents (VB: Dim WithEvents) implementieren, erhöhen.

Für C++ und Visual Basic Programmierer ist es bequemer, die Methode ITcEventLogC::ReportEvent oder ITcEventC3::ReportEventEx zu benutzen.


TwinCAT EventLogger - TcEventLogger

ITcEventLog::ClearActiveEvents

Diese Methode setzt alle aktiven Events zurück.

HRESULT ClearActiveEvents();

Parameter

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' clear all active alarms
evtLogger.ClearActiveEvents

Anmerkungen

Nach diesem Methodenaufruf wird der Event Logger das Event OnActiveEventsCleared auf allen Clients, die die Event-Schnittstelle _ITcEventLogEvents (VB: Dim WithEvents) implementieren, erhöhen.


TwinCAT EventLogger - TcEventLogger

ITcEventLog::GetLastEvent

Diese Methode gibt die letzten aktiven Events zurück.

HRESULT GetLastEvent([out,retval] IDispatch** lastEvent);

Parameter

lastEvent

[out, retval] Pointer auf ein Objekt vom Schnittstellentyp IDispatch, welches das letzte aktive Event zurückgibt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

Die Pointerzuweisung an lastEvent war nicht gültig.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent logged event
Dim resentEvt As TcEvent
Set resentEvt = evtLogger.GetLastEvent

Anmerkungen


TwinCAT EventLogger - TcEventLogger

ITcEventLog::EnumActiveEvents

Gibt ein Aufzählungsobjekt zurück, welches zum Iterieren über die aufgelisteten aktiven Events benutzt wird.

HRESULT EnumActiveEvents([out,retval] IUnknown** ppEnum);

Parameter

ppEnum

[out, retval] Pointer auf den ITcEnumEvents Schnittstellen-Pointer, der die Aufzählungsobjekte der aktiven Events erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

ppEnum war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the active event enumaration object
Dim enumEvt As ITcEnumEvents
Set enumEvt = evtLogger.EnumActiveEvents
' try to get max events an loop through the event list
Const coMax As Long = 20
Dim i As Long
Dim nFetched As Long
Dim evt As TcEvent
Dim arrEvt(1 To coMax) As Object
Do
nFetched = enumEvt.Next(coMax, arrEvt(1))
For i = 1 To nFetched
Set evt = arrEvt(i)
' print the event message in english
Debug.Print evt.GetMsgString(1033)
' release the evt object
Set arrEvt(i) = Nothing
Next i
Loop While (nFetched >= coMax)

Anmerkungen

Die importierten TcEventLogger-Typblibliotheken verhalten sich unter CodeGear C++Builder 2009 anders als unter Visual Studio C++. Beide Entwicklungsumgebungen generieren dabei einen unterschiedlichen Code. In C++Builder wird das zurückgelieferte Auzählungsobjekt nicht automatisch freigegeben wenn es den Sichtbarkeitsbereich verlässt ("out of scope" geht). Z.B. nach der Zuweisung:

ITcEnumEventsPtr enumEvt = evtLogger->EnumActiveEvents();

muss in C++Builder das nicht mehr benötigte Objekt explizit freigegeben werden:

enumEvt->Release();

Hier gibt es einen Unterschied zu Microsoft Visual Studio C++ Implementierung. Dort ist der Release-Aufruf nicht notwendig. Aus diesem Grund verwenden Sie bitte in C++Builder die EnumActiveEventsEx()-Methode. Bei dieser Methode wird das zurückgelieferte Objekt auch unter C++Builder automatisch freigegeben.


ITcEventLog::EnumActiveEvents

TwinCAT EventLogger - TcEventLogger

ITcEventLog::EnumActiveEventsEx

Liefert ein enumerator mit dessen Hilfe durch die Liste der aktiven Events iteriert werden kann.

Dieses Interface wird für eine bessere Kompatibilität mit Programmiersprachen aus der .NET Familie bereitgestellt. Für die Programmierung in C++ kann in einigen fällen die ursprüngliche ITcEnumEvents Schnitstelle besser geignet sein

HRESULT EnumActiveEventsEx([out,retval] ITcEnumEventEx** ppEnum);

Parameters

ppEnum

[out, retval] Zeiger auf einen Zeiger zur ITcEnumEventsEx Schnittstelle.

Return Values

S_OK

Der Aufruf ist erfolgreich abgeschlossen.

E_POINTER

ppEnum ist kein gültiger Zeiger.

Visual Studio 2005 C# Sample Code:

foreach (TcEvent evt in new TcEventLog().EnumActiveEventsEx())
evt.Reset();


TwinCAT EventLogger - TcEventLogger

ITcEventLog::EnumLoggedEvents

Gibt ein Aufzählungsobjekt zurück, welches zum Iterieren über die aufgelisteten geloggten Events benutzt wird.

HRESULT EnumLoggedEvents([out,retval] IUnknown** ppEnum);

Parameter

ppEnum

[out, retval] Pointer auf den ITcEnumEvents Schnittstellen-Pointer, der die Aufzählungsobjekte der logged Events erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

ppEnum war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the active event enumaration object
Dim enumEvt As ITcEnumEvents
Set enumEvt = evtLogger.EnumLoggedEvents
' try to get max events an loop through the event list
Const coMax As Long = 20
Dim i As Long
Dim nFetched As Long
Dim evt As TcEvent
Dim arrEvt(1 To coMax) As Object
Do
nFetched = enumEvt.Next(coMax, arrEvt(1))
For i = 1 To nFetched
Set evt = arrEvt(i)
' print the event message in english
Debug.Print evt.GetMsgString(1033)
' release the evt object
Set arrEvt(i) = Nothing
Next i
Loop While (nFetched >= coMax)

Anmerkungen

Die importierten TcEventLogger-Typblibliotheken verhalten sich unter CodeGear C++Builder 2009 anders als unter Visual Studio C++. Beide Entwicklungsumgebungen generieren dabei einen unterschiedlichen Code. In C++Builder wird das zurückgelieferte Auzählungsobjekt nicht automatisch freigegeben wenn es den Sichtbarkeitsbereich verlässt ("out of scope" geht). Z.B. nach der Zuweisung:

ITcEnumEventsPtr enumEvt = evtLogger->EnumLoggedEvents();

muss in C++Builder das nicht mehr benötigte Objekt explizit freigegeben werden:

enumEvt->Release();

Hier gibt es einen Unterschied zu Microsoft Visual Studio C++ Implementierung. Dort ist der Release-Aufruf nicht notwendig. Aus diesem Grund verwenden Sie bitte in C++Builder die EnumLoggedEventsEx()-Methode. Bei dieser Methode wird das zurückgelieferte Objekt auch unter C++Builder automatisch freigegeben.


ITcEventLog::EnumActiveEvents

TwinCAT EventLogger - TcEventLogger

ITcEventLog::EnumLoggedEventsEx

Liefert ein enumerator mit dessen Hilfe durch die Liste der geloggten Events iteriert werden kann.

Dieses Interface wird für eine bessere Kompatibilität mit Programmiersprachen aus der .NET Familie bereitgestellt. Für die Programmierung in C++ kann in einigen fällen die ursprüngliche ITcEnumEvents Schnitstelle besser geignet sein

HRESULT EnumLoggedEventsEx([out,retval] ITcEnumEventEx** ppEnum);

Parameters

ppEnum

[out, retval] Zeiger auf einen Zeiger zur ITcEnumEventsEx Schnittstelle.

Return Values

S_OK

Der Aufruf ist erfolgreich abgeschlossen.

E_POINTER

ppEnum ist kein gültiger Zeiger.

Visual Studio 2005 C# Sample Code:

foreach (TcEvent evt in new TcEventLog().EnumLoggedEventsEx())
evt.Reset();


TwinCAT EventLogger - TcEventLogger

ITcEventLog::Export

Kopiert die Liste der Logged Events in einen strukturierten Storage und gibt den Storage zurück.

HRESULT Export([in] IUnknown *pExport);

Parameter

ppEnum

[in] IUnknown Pointer auf eine IStorage Schnittstelle, die die Kopie des strukturierten Storage erhält, der die Liste der logged Events in Streams enthält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pExport war kein gültiger Pointer.

Anmerkungen

Da der strukturierte Strorage das systemspezifische Datenbankformat ist und der Strukturentwurf nicht dokumentiert ist, sollte die Exportfunktion nicht von Benutzerprogrammen verwendet werden.


TwinCAT EventLogger - TcEventLogger

ITcEventLog::ActiveEvents

Diese Eigenschaft setzt die Anzahl der aktiven Events zurück.

HRESULT ActiveEvents([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen langen Wert, der die aktuelle Anzahl von aktiven Events zurückgibt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the number of active events
Dim countActive As Long
countActive = evtLogger.ActiveEvents

Anmerkungen


TwinCAT EventLogger - TcEventLogger

ITcEventLog::LoggedEvents

Diese Eigenschaft setzt die Anzahl der Logged Events zurück.

HRESULT LoggedEvents([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen langen Wert, der die aktuelle Anzahl von logged Events zurückgibt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the number of logged events
Dim countLogged As Long
countLogged = evtLogger.LoggedEvents

Anmerkungen


TwinCAT EventLogger - TcEventLogger

ITcEventLog::ClearLoggedEvents

Diese Methode setzt alle logged Events zurück.

HRESULT ClearLoggedEvents();

Parameter

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' clear all logged alarms
evtLogger.ClearLoggedEvents

Anmerkungen

Nach diesem Methodenaufruf wird der Event Logger das Event OnLoggedEventsCleared auf allen Clients, die die Event-Schnittstelle _ITcEventLogEvents (VB: Dim WithEvents) implementieren, erhöhen.


Übersicht

Das ITcEventLogC ist eine Schnittstelle der Hauptklasse des TcEventLoggers . Die Schnittstelle stellt die Features zur Verfügung und fügt neue Alarme hinzu. Die Schnittstelle leitet sich ab von IUnknown , so dass sie von allen Sprachen verwendet werden kann, die kundenspezifische COM Schnittstellen unterstützen.

Methoden

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück.
AddRef | Inkrementiert den Referenzzähler.
Release | Dekrementiert den Referenzzähler.

ITcEventLogC Methoden | Beschreibung
ReportEvent | Diese Methode wird verwendet, um vom Client ein neues Event auszugeben.
EnumEventSources | Abgelehnt. Wurde im abgelehnten strukurierten Storage basierenden Formatter verwendet, um die Liste der Event Source Storages zu durchschleifen.
OpenEventSource | Abgelehnt. Wurde im abgelehnten strukturierten Storage basierenden Formatter verwendet, um ein einzelnes Event Source Storage zurückzugeben.


TwinCAT EventLogger - TcEventLogger

ITcEventLogC::ReportEvent

Diese Methode wird verwendet, um von einem COM Client (z.B. ein HMI Programm) ein neues Event auszugeben (an den TcEventLogger).

HRESULT ReportEvent([in] TcEventHeader* pEventHead, [in] SAFEARRAY(VARIANT)* pEventData);

Parameter

pEventHead

[in] Pointer auf ein Objekt des Typs TcEventHeader. Das Objekt stellt die Alarm Konfiguration dar.

eventData

[in] Pointer auf ein Safearray, das die Event Argumente darstellt. In der Konfiguration des Event Formatters ist definiert, wie die Event Argumente in der Event Meldung zu platzieren sind.

Die folgenden Datentypen werden vom Standard Formatter unterstützt: int (16bit), long (32bit), float(32bit), double(64bit), string(BSTR).

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

TCEVENTERR_ISSIGNALED

Das Event mit dieser Source id und dieser Event id wurde bereits angezeigt.

E_POINTER

pEventHead oder pEventData waren keine gültigen Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' cast to ITcEventLogC interface
Dim evtLoggerC As TCEVENTLOGGERLib.ITcEventLogC
Set evtLoggerC = evtLogger
' create event header
Dim header As TcEventHeader
header.nClass = TcEventClass.TCEVENTCLASS_ALARM ' event class
header.nPriority = TcEventPriority.TCEVENTPRIO_IMPLICIT ' event priority
header.dwFlags = TcEventFlags.TCEVENTFLAG_LOG ' event flags
header.dwUserData = 0 'user data
header.nId = 1 ' event id
header.nInvokeId = 0 'invoke id
header.fDate = Now ' event date and time
header.nMs = 123 ' milli second part of the event date and time
header.varSource = 1 ' event soruce id
header.szFmtProgId = "TcEventFormatter.TcXmlFormatter" ' event prog id
' creade event params
Dim arrParam() As Variant
ReDim arrParam(0 To 1) As Variant
arrParam(0) = 1234 ' first parameter as long
arrParam(1) = 1234.777 ' second parameter as double
' log the event
Call evtLoggerC.ReportEvent(header, arrParam)

Anmerkungen

Nach diesem Methodenaufruf wird der Event Logger das Event OnNewEvent auf allen Clients, die die Event-Schnittstelle _ITcEventLogEvents (VB: Dim WithEvents) implementieren, erhöhen.

Die Methode kann gerade verwendet werden, um ein Alarmsignal auszugeben. Ein zweiter Aufruf zur Rücksetzung des Alarms ist mit dieser Methode nicht möglich. Um den Status eines bereits ausgelösten Alarms zu ändern, ist das Event Objekt selber erforderlich.

Komfortabler arbeitet die Methode ITcEventLogC3::ReportEventEx . Sie gibt das neu erstellte Event Objekt direkt zurück.


Übersicht

Das ITcEventLogC2 ist eine Schnittstelle der Hauptklasse des TcEventLoggers. Die Schnittstelle stellt die abgelehnten Features zur Verfügung, um die abgelehnten strukturierten Storage basierenden Formatter zu kontrollieren.

Die Schnittstelle leitet sich von ITcEventLogC und IUnknown ab, so dass sie von allen Sprachen verwendet werden kann, die kundenspezifische COM Schnittstellen unterstützen.

Methoden

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück.
AddRef | Inkrementiert den Referenzzähler.
Release | Dekrementiert den Referenzzähler.

ITcEventLogC Methoden | Beschreibung
ReportEvent | Diese Methode wird verwendet, um vom Client ein neues Event auszugeben.
EnumEventSources | Abgelehnt. Wurde im abgelehnten strukurierten Storage basierenden Formatter verwendet, um die Liste der Event Source Storages zu durchschleifen.
OpenEventSource | Abgelehnt. Wurde im abgelehnten strukturierten Storage basierenden Formatter verwendet, um ein einzelnes Event Source Storage zurückzugeben.

ITcEventLogC2 Methoden | Beschreibung
CreateEventSource | Abgelehnt. Wurde im abgelehnten strukurierten Storage basierenden Formatter verwendet, um ein neues Event Source Stroage zu bilden.
RemoveEventSource | Abgelehnt. Wurde im abgelehnten strukurierten Storage basierenden Formatter verwendet, um eine bestehende Event Source Storage zu entfernen.
RenameEventSource | Abgelehnt. Wurde im abgelehnten strukurierten Storage basierenden Formatter verwendet, um eine bestehende Event Source Storage umzubenennen.


Übersicht

Das ITcEventLogC3 ist eine Schnittstelle der Hauptklasse des TcEventLoggers. Die Schnittstelle stellt die Features zur Verfügung und fügt neue Alarme hinzu. Die Schnittstelle leitet sich ab von ITcEventLogC2, ITcEventLogC und IUnknown, so dass sie von allen Sprachen verwendet werden kann, die kundenspezifische COM Schnittstellen unterstützen.

Methoden

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück.
AddRef | Inkrementiert den Referenzzähler.
Release | Dekrementiert den Referenzzähler.

ITcEventLogC Methoden | Beschreibung
ReportEvent | Diese Methode wird verwendet, um vom Client ein neues Event auszugeben.
EnumEventSources | Abgelehnt. Wurde im abgelehnten strukturierten Storage basierenden Formatter verwendet, um die Liste der Event Source Storages zu durchschleifen.
OpenEventSource | Abgelehnt. Wurde im abgelehnten strukturierten Storage basierenden Formatter verwendet, um ein einzelnes Event Source Storage zurückzugeben.

ITcEventLogC2 Methoden | Beschreibung
CreateEventSource | Abgelehnt. Wurde im abgelehnten strukurierten Storage basierenden Formatter verwendet, um ein neues Event Source Storage zu bilden.
RemoveEventSource | Abgelehnt. Wurde im abgelehnten strukurierten Storage basierenden Formatter verwendet, um eine bestehende Event Source Storage zu entfernen.
RenameEventSource | Abgelehnt. Wurde im abgelehnten strukurierten Storage basierenden Formatter verwendet, um eine bestehende Event Source Storage umzubenennen.

ITcEventLogC3 Methoden | Beschreibung
ReportEventEx | Diese Methode wird verwendet, um vom Client ein neues Event auszugeben. Die Funktion gibt den neu ausgelösten Alarm zur weiteren Regelung zurück.


TwinCAT EventLogger - TcEventLogger

ITcEventLogC3::ReportEventEx

Diese Methode wird verwendet, um von einem COM Client (z.B. ein HMI Programm) ein neues Event auszugeben (an den TcEventLogger).

HRESULT ReportEventEx([in] TcEventHeader* pEventHead,
[in] SAFEARRAY(VARIANT)* pEventData
[out, retval] [out,retval] ITcEvent** pEvent);

Parameter

pEventHead

[in] Pointer auf ein Objekt vom Typ TcEventHeader. Das Objket stellt die Alarm Konfiguration dar.

eventData

[in] Pointer auf ein Safearray , das die Event Argumente darstellt. In der Konfiguration des Event Formatters ist definiert, wie die Event Argumente in der angezeigten Event Meldung darzustellen sind. Die folgenden Datentypen werden vom Standardformatter unterstützt: int (16bit), long (32bit), float(32bit), double(64bit), string(BSTR).

pEvent

[out, retval] Pointer auf ein ITcEvent Pointer, der das neue logged Event Objekt erhält.

Return Values

S_OK

Funktion wurde erfolgreich aufgerufen.

TCEVENTERR_ISSIGNALED

Das Event mit dieser Source Id und Event Id wurde bereits angezeigt.

E_POINTER

pEventHead oder pEventData oder pEvent waren keine gültigen Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' cast to ITcEventLogC3 interface
Dim evtLoggerC As TCEVENTLOGGERLib.ITcEventLogC3
Set evtLoggerC = evtLogger
' create event header
Dim header As TcEventHeader
header.nClass = TcEventClass.TCEVENTCLASS_ALARM ' event class
header.nPriority = TcEventPriority.TCEVENTPRIO_IMPLICIT ' event priority
header.dwFlags = TcEventFlags.TCEVENTFLAG_LOG ' event flags
header.dwUserData = 0 'user data
header.nId = 1 ' event id
header.nInvokeId = 0 'invoke id
header.fDate = Now ' event date and time
header.nMs = 123 ' milli second part of the event date and time
header.varSource = 1 ' event soruce id
header.szFmtProgId = "TcEventFormatter.TcXmlFormatter" ' event prog id
' creade event params
Dim arrParam() As Variant
ReDim arrParam(0 To 1) As Variant
arrParam(0) = 1234 ' first parameter as long
arrParam(1) = 1234.777 ' second parameter as double
' log the event
Dim evt As TcEvent
Set evt = evtLoggerC.ReportEventEx(header, arrParam)
' reset the event
evt.Reset

Anmerkungen

Nach diesem Methodenaufruf wird der Event Logger das Event OnNewEvent auf allen Clients, die die Event-Schnittstelle _ITcEventLogEvents (VB: Dim WithEvents) implementieren, erhöhen.


Übersicht

Das _ITcEventLogEvent ist die Standard Event Schnittstelle der Hauptklasse des TcEventLoggers. Die Schnittstelle stellt eine Callback Methode zu Verfügung mit der ein Client mit dem Ist-Status des TcEvent Loggers synchronisiert werden kann. Die Schnittstelle leitet sich von IDispatch ab, so dass sie von allen Sprachen verwendet werden kann, die kundenspezifische COM Schnittstellen unterstützen. IDispatch leitet sich wiederum von IUnknown ab.

Methoden in

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück.
AddRef | Inkrementiert den Referenzzähler.
Release | Dekrementiert den Referenzzähler.

IDispatch Methoden | Beschreibung
GetIDsOfNames | Mappt einen einzelnen Teilnehmernamen und einen Satz optionaler Parameternamen mit einem entsprechenden Satz gesendeter Integer Identifier (DISPIDs). Diese können dann als Folgeabrufe an IDispatch::Invoke benutzt werden.
GetTypeInfo | Ruft die Typ Informationen für ein Objekt ab.
GetTypeInfoCount | Ruft die Anzahl der Typ Informations-Schnittstellen ab, die ein Objekt zur Verfügung stellt, entweder 0 oder 1.
Invoke | Stellt den Zugriff auf Eigenschaften und Methoden, ausgestellt durch ein Objekt, zur Verfügung.

ITcEventLog Methoden | Beschreibung
OnNewEvent | Diese Methode wird aufgerufen wenn ein neues Event ausgegeben wird.
OnConfirmEvent | Diese Methode wird aufgerufen wenn ein Event bestätigt wird.
OnResetEvent | Diese Methode wird aufgerufen wenn ein Event zurückgesetzt wird.
OnSignalEvent | Diese Methode wird aufgerufen wenn ein Event signalisiert wird.
OnActiveEventsCleared | Diese Methode wird aufgerufen wenn alle aktiven Events gelöscht werden.
OnLoggedEventsCleared | Diese Methode wird aufgerufen wenn alle logged Events gelöscht werden.
OnClearEvent | Diese Methode wird aufgerufen wenn ein Event gelöscht wird.
OnShutdown | Diese Methode wird aufgerufen wenn das Betriebssystem heruntergefahren wird (shut down).
OnNewEventConfiguration | Diese Methode wird aufgerufen wenn ein eine neue Konfiguration geladen wurde.


_ITcEventLogEvents::OnNewEvent

Diese Event Methode wird auf allen Clients aufgerufen, die diese Event Schnittstelle implementieren und verbinden, wenn ein neues Event ausgegeben wird. Das Event wurde vom SPS Funktionsblock ADSLOGEVENT ausgegeben, indem ein Merker von FALSE auf TRUE gesetzt wurde (oder ein anderes ADS Gerät) oder durch den Aufruf einer Report Event Funktion, wie IT cEventLogC:: ReportEvent,ITcEventC3:: ReportEventEx oder ITcEventLog::ReportEvent.

HRESULT OnNewEvent([in] IDispatch* evtObj);

Parameter

evtObj

[in] IDispatch Pointer auf ein neues Eventobjekt der Klasse TvEvent. Das Eventobjekt stellt den vollen Zugriff auf die Neuausgabe des Events zur Verfügung. Jeder Client erhält einen Hinweis auf das Eventobjekt und eine Kopie.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

evtObj war kein gültiger Pointer.

Visual Basic Beispielcode

Option Explicit
Dim WithEvents evtLogger As TCEVENTLOGGERLib.TcEventLog

' form load
Private Sub Form_Load()
' get the one and only event logger
Set evtLogger = New TcEventLog
End Sub

' event method
Private Sub evtLogger_OnNewEvent(ByVal evtObj As Object)
Dim evt As TcEvent
Set evt = evtObj
' print the message string in English
Debug.Print evt.GetMsgString(1033)
End Sub

Anmerkungen


_ITcEventLogEvents::OnConfirmEvent

Diese Event Methode wird auf allen Clients aufgerufen, die diese Event Schnittstelle implementieren und verbinden, wenn ein Event bestätigt (confirmed) wird. Das Event wurde durch den SPS Funktionsblock bestätigt, indem EventQuit=TRUE (oder eines anderen ADS Gerätes) gesetzt wurde, oder durch einen Aufruf von ITcEvent::Confirm.

HRESULT OnConfirmEvent([in] IDispatch* evtObj);

Parameter

evtObj

[in] IDispatch Pointer auf ein Eventobjekt der Klasse TvEvent. Das Eventobjekt bietet den vollen Zugriff auf das bestätigte Event. Jeder Client erhält einen Hinweis auf das Eventobjekt und eine Kopie.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

evtObj war kein gültiger Pointer.

Visual Basic Beispielcode

Option Explicit
Dim WithEvents evtLogger As TCEVENTLOGGERLib.TcEventLog

' form load
Private Sub Form_Load()
' get the one and only event logger
Set evtLogger = New TcEventLog
End Sub

' event method
Private Sub evtLogger_OnConfirmEvent(ByVal evtObj As Object)
Dim evt As TcEvent
Set evt = evtObj
' print the date and time of the confirmation
Debug.Print evt.DateConfirmed
End Sub

Anmerkungen


_ITcEventLogEvents::OnResetEvent

Diese Event Methode wird auf allen Clients aufgerufen, die diese Event Schnittstelle implementieren und verbinden, wenn ein Event zurückgesetzt wird. Das Event wurde vom SPS Funktionsblock ADSLOGEVENT durch Setzen des Events von TRUE auf FALSE (oder eines anderes ADS Gerätes) oder durch ITcEvent::Reset aufgerufen.

HRESULT OnResetEvent([in] IDispatch* evtObj);

Parameter

evtObj

[in] IDispatch Pointer auf ein Eventobjekt der Klasse TvEvent. Das Eventobjekt bietet den vollen Zugriff auf das zurückgesetzte Event. Jeder Client erhält einen Hinweis auf das Eventobjekt und eine Kopie.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

evtObj war kein gültiger Pointer.

Visual Basic Beispielcode

Option Explicit
Dim WithEvents evtLogger As TCEVENTLOGGERLib.TcEventLog

' form load
Private Sub Form_Load()
' get the one and only event logger
Set evtLogger = New TcEventLog
End Sub

' event method
Private Sub evtLogger_OnResetEvent(ByVal evtObj As Object)
Dim evt As TcEvent
Set evt = evtObj
' print the date and time of the reset
Debug.Print evt.DateReset
End Sub

Anmerkungen


_ITcEventLogEvents::OnSignalEvent

Diese Event Methode wird auf allen Clients aufgerufen, die diese Event Schnittstelle implementieren und verbinden, wenn ein Event signalisiert wird. Nur Events, die confirmed werden müssen, können signalisiert werden. Ein signalisiertes Event wartet auf seine confirmation, und wurde vorher zurückgesetzt. Das Event wurde vom SPS Funktionsblock ADSLOGEVENT durch Setzen des Events von TRUE auf FALSE (oder eines anderes ADS Gerätes) oder durch ITcEvent::Signal aufgerufen.

HRESULT OnSignalEvent([in] IDispatch* evtObj);

Parameter

evtObj

[in] IDispatch Pointer auf ein Eventobjekt der Klasse TvEvent. Das Eventobjekt bietet den vollen Zugriff auf das signalisierte Event. Jeder Client erhält einen Hinweis auf das Eventobjekt und eine Kopie.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

evtObj war kein gültiger Pointer.

Visual Basic Beispielcode

Option Explicit
Dim WithEvents evtLogger As TCEVENTLOGGERLib.TcEventLog

' form load
Private Sub Form_Load()
' get the one and only event logger
Set evtLogger = New TcEventLog
End Sub

' event method
Private Sub evtLogger_OnSignalEvent(ByVal evtObj As Object)
Dim evt As TcEvent
Set evt = evtObj
' print the date and time
Debug.Print evt.Date
End Sub

Anmerkungen


_ITcEventLogEvents::OnActiveEventsCleared

Diese Event Methode wird auf allen Clients aufgerufen, die diese Event Schnittstelle implementieren und verbinden, wenn alle aktiven Events gelöscht sind.

Vorausgesetzt:

· Das TwinCAT System wird heruntergefahren.

· Die Methode wird vom SPS Funktionsblock ADSCLEAREVENTS ausgeführt. Dabei muss der iMode auf TCEEVENTLOGIOFFS_CLEARACTIVE bzw. TCEVENTLOGIOFFS_CLEARALL gesetzt sein.

· Die Methode wird durch ITcEventLog::ClearActiveEvents aufgerufen.

HRESULT OnActiveEventsCleared();

Parameter

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
Dim WithEvents evtLogger As TCEVENTLOGGERLib.TcEventLog

' form load
Private Sub Form_Load()
' get the one and only event logger
Set evtLogger = New TcEventLog
End Sub

' event method
Private Sub evtLogger_OnActiveEventsCleared()
Debug.Print "Active Event are cleared!"
End Sub

Anmerkungen


_ITcEventLogEvents::OnLoggedEventsCleared

Diese Event Methode wird auf allen Clients aufgerufen, die diese Event Schnittstelle implementieren und verbinden.

Vorausgesetzt:

· Alle logged Events sind gelöscht.

· Die Methode wird vom SPS Funktionsblock ADSCLEAREVENTS ausgeführt. Dabei muss der iMode auf TCEVENTLOGIOFFS_CLEARLOGGED oder TCEVENTLOGIOFFS_CLEARALL gesetzt sein.

· Die Methode wird durch ITcEventLog::ClearLoggedEvents aufgerufen.

HRESULT OnLoggedEventsCleared();

Parameter

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
Dim WithEvents evtLogger As TCEVENTLOGGERLib.TcEventLog

' form load
Private Sub Form_Load()
' get the one and only event logger
Set evtLogger = New TcEventLog
End Sub

' event method
Private Sub evtLogger_OnLoggedEventsCleared()
Debug.Print "Logged Event are cleared!"
End Sub

Anmerkungen


_ITcEventLogEvents::OnClearEvent

Diese Event Methode wird auf allen Clients aufgerufen, die diese Event Schnittstelle implementieren und verbinden, wenn ein Event gelöscht wird. Diese Methode wird auf allen Events aufgerufen, für eine Source ID nach einem Aufruf des SPS Funktionsblocks ADSCLEAREVENTS mit dem gesetzten iMode TCEVENTLOGIOFFS_CLEAREVENTSRCID.

HRESULT OnClearEvent(ByVal evtObj As Object);

Parameter

evtObj

[in] IDispatch Pointer auf ein neues Eventobjekt der Klasse TvEvent. Das Eventobjekt bietet den vollen Zugriff auf das gelöschte Event. Jeder Client erhält einen Hinweis auf das Eventobjekt und eine Kopie.

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
Dim WithEvents evtLogger As TCEVENTLOGGERLib.TcEventLog

' form load
Private Sub Form_Load()
' get the one and only event logger
Set evtLogger = New TcEventLog
End Sub

' event method
Private Sub evtLogger_OnClearEvent(ByVal evtObj As Object)
Dim evt As TcEvent
Set evt = evtObj
' print the message string in English
Debug.Print evt.GetMsgString(1033)
End Sub

Anmerkungen


_ITcEventLogEvents::OnShutdown

Diese Event Methode wird benutzt, wenn das Betriebssystem heruntergefahren wird. Dies kann von DCOM Clients zur Freigabe der Verbindung verwendet werden.

HRESULT OnShutdown([in] VARIANT shutdownParm);

Parameter

shutdownParm

[in] Eine Variante, die den Grund für den Shutdown beschreibt (hier immer REASON_SYSSHUTDOWN).

Die Einträge des Arrays sind in der folgenden Tabelle erklärt.

index | TcEventHeader Eintrag | Beschreibung
0 | REASON_INVALID | ungültig
1 | REASON_TCSTOP | Das TwinCAT System fährt herunter
2 | REASON_SYSSHUTDOWN | Das Betriebssystem fährt herunter

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
Dim WithEvents evtLogger As TCEVENTLOGGERLib.TcEventLog

' form load
Private Sub Form_Load()
' get the one and only event logger
Set evtLogger = New TcEventLog
End Sub

' event method
Private Sub evtLogger_OnShutdown(ByVal shutdownParm As Variant)
Debug.Print shutdownParm
End Sub

Anmerkungen


_ITcEventLogEvents::OnNewEventConfiguration

Diese Event Methode wird auf allen Clients aufgerufen, die diese Event Schnittstelle implementieren und verbinden, wenn die ITcEventLog::Reset Methode aufgerufen wurde und ein Eventformatter neu initialisiert wurde. Die Methode wird nicht aufgerufen wenn ITcEventLog::Reset ausgelöst wurde, aber kein Formatter neu initialisiert werden musste.

HRESULT OnNewEventConfiguration();

Parameter

S_OK

Die Funktion wurde erfolgreich ausgeführt

C# sample code

using TCEVENTLOGGERLib;
.
.
.
TcEventLog tcEventLogger = new TcEventLog();
tcEventLogger.OnNewEventConfiguration += new _ITcEventLogEvents_OnNewEventConfigurationEventHandler(tcEventLogger_OnNewEventConfiguration);
. . .
void tcEventLogger_OnNewEventConfiguration()
{
Console.WriteLine("tcEventLogger_OnNewEventConfiguration");
}

Remarks


Übersicht

Die Schnittstelle ITcEnumEvents wird zum Abfragen von Events verwendet. Aufzählungen von Events werden in einem Array Typ zurückgegeben. Die Schnittstelle leitet sich von IUnknown ab, so dass sie von allen Sprachen verwendet werden kann, die COM Schnittstellen unterstützen.

Methoden und Eigenschaften in Vtable Reihenfolge

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück.
AddRef | Inkrementiert den Referenzzähler.
Release | Dekrementiert den Referenzzähler.

ITcEnumEvents Methoden | Beschreibung
Next | Gibt die nächste Nummer des Events in der Aufzählungsreihenfolge zurück.
Skip | Überspringt die nächste Nummer der Events in der Aufzählungsreihenfolge.
Reset | Setzt die Aufzählungsreihenfolge auf das erste Element zurück.
Clone | Bildet das Aufzählungsobjekt nach.
VBNext | Gibt die nächste Nummer des Events zurück, die in ein Safearray der Aufzählungsreihenfolge übernommen wurden.


TwinCAT EventLogger: Interface

ITcEnumEvents ::Next

Diese Methode gibt die nächsten Events in der Aufzählungsreihenfolge zurück.

HRESULT Next(
[in] long celt,
[out,size_is(celt),length_is(*pceltFetched)]IDispatch** ppElements,
[out, retval] long *pceltFetched);

Parameter

celt

[in] Anzahl der angefragten Elemente der Aufzählungsreihenfolge.

ppElements

[out, size_is(celt), length_is(*pceltFetched)] Pointer auf das erste Element eines Arrays aus Events. Gibt die durch pceltFetched vergebene Anzahl der Events zurück.

pceltFetched

Gibt die Anzahl der zurückgegebenen Events zurück.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

S_FALSE

Die Anzahl der zurückgegebenen Elemente war kleiner als die der Angefragten.

E_POINTER

Elemente oder pceltFetched waren keine gültigen Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the active event enumaration object
Dim enumEvt As ITcEnumEvents
Set enumEvt = evtLogger.EnumActiveEvents
' try to get max events an loop through the event list
Const coMax As Long = 20
Dim i As Long
Dim nFetched As Long
Dim evt As TcEvent
Dim arrEvt(1 To coMax) As Object
Do
nFetched = enumEvt.Next(coMax, arrEvt(1))
For i = 1 To nFetched
Set evt = arrEvt(i)
' print the event message in english
Debug.Print evt.GetMsgString(1033)
' release the evt object
Set arrEvt(i) = Nothing
Next i
Loop While (nFetched >= coMax)

Anmerkungen

Die Next Methode funktioniert nur, wenn die aufrufende Sprache eine echte Referenz auf den Array übergibt.
.NET Sprachen tun dies z.B. nicht. Aus solchen Sprachen benutzen Sie die VBNext Methode.


TwinCAT EventLogger: Interface

ITcEnumEvents ::Skip

Diese Methode überspringt die nächste Nummer der Events in der Aufzählungsreihenfolge.

HRESULT Skip(
[in] long cSkipElem);

Parameter

cSkipElem

[in] Anzahl der zu überspringenden Elemente.

Return Value

S_OK

Die Funktion wurde erfolgreich aufgerufen.

S_FALSE

Die Anzahl der übersprungenen Elemente war nicht identisch mit cSkipElem.

E_NOTIMPL

Die Methode ist nicht implementiert.

Anmerkungen

Die Methode ist nicht implementiert für die Enum Objekte, die durch ITcEventLog::EnumActiveEvents und ITcEventLog::EnumLoggedEvents der Klasse

TcEventLog zurückgegeben werden.


TwinCAT EventLogger: Interface

ITcEnumEvents ::Reset

Diese Methode setzt die Aufzählungsreihenfolge auf das erste Element zurück.

HRESULT Reset(
void);

Parameter

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

S_FALSE

Die Anzahl der übersprungenen Elemente ist nicht identisch mit cSkipElem.

E_NOTIMPL

Die Methode ist nicht implementiert.

Anmerkungen

Die Methode ist nicht implementiert für die Enum Objekte, die durch ITcEventLog::EnumActiveEvents und ITcEventLog::EnumLoggedEvents der Klasse

TcEventLog zurückgegeben werden.


TwinCAT EventLogger: Interface

ITcEnumEvents ::Clone

DIese Methode bildet das Aufzählungsobjekt nach.

HRESULT Clone(
[out] ITcEnumEvents** ppEnum);

Parameter

[out] Pointer vom Typ ITcEnumEvents auf einen Pointer, der eine Kopie des Aufzählungsobjekts erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

ppEnum war kein gültiger Pointer.

E_NOTIMPL

Die Methode ist nicht implementiert.

Anmerkungen

Die Methode ist nicht implementiert für die Enum Objekte, die durch ITcEventLog::EnumActiveEvents und ITcEventLog::EnumLoggedEvents der Klasse

TcEventLog zurückgegeben werden.


TwinCAT EventLogger: Interface

ITcEnumEvents ::VbNext

Diese Methode gibt die nächsten Events in der Aufzählungsreihenfolge zurück.

HRESULT Next(
[in] long celt,
[in,out]SAFEARRAY(VARIANT)* elements,
[out, retval] long *pceltFetched);

Parameter

celt

[in] Anzahl der angefragten Elemente der Aufzählungsphase.

ppElements

[in] Pointer auf ein safearray, das mit pceltFetched Event Objekten gefüllt wird.

pceltFetched

Gibt die Anzahl der zurückgegebenen Events zurück.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

S_FALSE

Die Anzahl der zurückgegebenen Elemente war kleiner als die der Angefragten.

E_POINTER

Elements oder pceltFetched waren keine gültigen Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the active event enumaration object
Dim enumEvt As ITcEnumEvents
Set enumEvt = evtLogger.EnumActiveEvents
' try to get max events an loop through the event list
Const coMax As Long = 20
Dim i As Long
Dim nFetched As Long
Dim evt As TcEvent
Dim arrEvt() As Variant
Do
nFetched = enumEvt.VbNext(coMax, arrEvt)
For i = LBound(arrEvt) To UBound(arrEvt)
Set evt = arrEvt(i)
' print the event message in english
Debug.Print evt.GetMsgString(1033)
' release the evt object
Set arrEvt(i) = Nothing
Next i
Loop While (nFetched >= coMax)

Anmerkungen


Overview

Mit der ITcEnumEventsEx Schnitstelle kann durch eine Liste von Events iteriert werden.

Dieses Interface wird für eine bessere Kompatibilität mit Programmiersprachen aus der .NET Familie bereitgestellt.Es implementiert IEnumVARIANT um einen standard enumerator zu erzeugen. Für die Programmierung in C++ kann in einigen fällen die ursprüngliche ITcEnumEvents Schnitstelle besser geignet sein

Methoden und Properties in Vtable Reihenfolge

IUnknown Methode | Beschreibung
QueryInterface | Liefert einen Zeiger auf das angefragte Interface
AddRef | Inkrementiert den Referenz Zähler
Release | Dekrementiert den Referenz Zähler

ITcEnumEventsEx Methods | Description
Item | Liefert ein Event zurück
Add | Fügt ein Event hinzu
Count | Liefert die menge der Events zurück
Remove | Entfern ein Event.
GetEnumerator | Returns a standard IEnumerator object

Visual Studio 2005 C# Sample Code:

foreach (TcEvent evt in new TcEventLog().EnumActiveEventsEx())
evt.Reset();


ITcEnumEvents::Next

TwinCAT EventLogger: Interface

ITcEnumEvents ::Item

Diese Methode liefert ein Event aus der Liste.

HRESULT Item(
[in] int Index,
[out, retval]ITcEvent** pVal );

Parameter

Index

[in] Index des angefragten Events

pVal

[out] Element an der angefragten position.

return Values

S_OK

Der Aufruf ist erfolgreich abgeschlossen.


ITcEnumEvents::Clone

TwinCAT EventLogger: Interface

ITcEnumEvents ::Add

Fügt ein Event hinzu.

HRESULT Add(
[out] ITcEvent* pEvent);

Parameter

[out] Zeiger zu einem ITcEvent welches der Liste hinzugefügt werden soll.

Return Value

S_OK

Der Aufruf ist erfolgreich abgeschlossen

Remarks

Die Enumeratoren sollten mittels der Methoden ITcEventLog::EnumActiveEventsEx und ITcEventLog::EnumLoggedEventsEx erzeugt und keine Events nachträglich hinzugefügt werden


ITcEnumEvents::Next

TwinCAT EventLogger: Interface

ITcEnumEvents ::Count

Diese Methode liefert die Anzahl der Events

HRESULT Count(
[out, retval]long* pVal );

Parameter

pVal

[out, retval] Zeiger auf eine long Variable welche den Wert erhält.

return Values

S_OK

Der Aufruf ist erfolgreich abgeschlossen.


ITcEnumEvents::Next

TwinCAT EventLogger: Interface

ITcEnumEvents ::Remove

Entfernt ein Event aus der Liste

HRESULT Remove(
[in]int Index );

Parameter

Index

[in] Index des angefragten Events.

return Values

S_OK

Der Aufruf ist erfolgreich abgeschlossen.


Übersicht

Die Schnittstelle ITcEvent ermöglicht den Zugriff auf die Eigenschaften eines einzelnen Alarms. Die Schnittstelle leitet sich von IDispatch ab, so dass sie von allen Sprachen verwendet werden kann, die die COM Automation Schnittstelle unterstützen. IDispatch selbst leitet sich von IUnknown ab.

Methoden und Eigenschaften in

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück
AddRef | Inkrementiert den Referenzzähler
Release | Dekrementiert den Referenzzähler

IDispatch Methoden | Beschreibung
GetIDsOfNames | Mappt einen einzelnen Teilnehmernamen und einen Satz optionaler Parameternamen mit einem entsprechenden Satz gesendeter Integer Identifier (DISPIDs). Diese können dann als Folgeabrufe an IDispatch::Invoke benutzt werden.
GetTypeInfo | Ruft die Typ Informationen für ein Objekt ab.
GetTypeInfoCount | Ruft die Anzahl der Typ Informations-Schnittstellen ab, die ein Objekt zur Verfügung stellt, entweder 0 oder 1.
Invoke | Stellt den Zugriff auf Eigenschaften und Methoden, ausgestellt durch ein Objekt, zur Verfügung.

ITcEvent Methoden u. Eigenschaften | Beschreibung
GetMsgString | Gibt den formatierten Meldestring für die angefragte Sprache zurück.
Id | Gibt die Event Id zurück.
SrcId | Gibt die Id der Event source zurück.
InvokeId | Gibt die invoke id zurück.
Class | Gibt die Event Klasse zurück.
Priority | Gibt die Event Priorität zurück.
Flags | Gibt die Event Flags zurück.
Ms | Gibt die tausendstel Sekunde des Event Datums zurück.
SourceName | Gibt den Namen der Events source für die angefragte Sprache zurück.
FmtProgId | Gibt die ProgId für den Event Formatter zurück.
Date | Gibt das Event Datum und die Zeit zurück.
GetData | Gibt die Event Daten Parameter zurück.
GetHeader | Gibt den Event Header als Safearray zurück.
Confirm | Bestätigt den Alarm.
Reset | Setzt den Alarm zurück.
State | Gibt den Event Status zurück.
MustConfirm | Gibt den Alram zurück, wenn der Alarm bestätigt werden muss.
DateConfirmed | Gibt das Datum und die Zeit der Bestätigung zurück.
MsConfirmed | Gibt die tausendstel Sekunde der Bestätigungszeit zurück.
DateReset | Gibt das Datum und die Zeit zurück, zu der das Event zurückgesetzt wurde.
MsReset | Gibt die tausendstel Sekunde der Rücksetzzeit zurück.
UserData | Gibt die Benutzerdaten zurück.
EnumDocLinks | Gibt ein Aufzählungsobjekt zurück, das zur Aufzählung aufgelisteter Dokumentverknüpfungen verwendet werden kann.
TcId | nicht implementiert.
Signal | Signalisiert den Alarm.


GetMsgString

TwinCAT EventLogger - TcEventLogger

ITcEvent::GetMsgString

Die Methode GetMsgString gibt den formatierten Meldungsstring für die angefragte Sprache zurück. Intern ruft sie die Methode TcLogFormatter::GetCompleteString des Formatters auf, der zugeordnet wurde, als das Event von einem COM Client ausgegeben wurde, oder durch einen ADS Aufruf an das Objekt TcEventLog des TcEventLoggers.

HRESULT GetMsgString([in] long langId, [out,retval] BSTR* msg);

Parameter

langId

[in] Die Sprach-Id der angefragten Sprache. Die gewünschte Sprache sollte mit *LCIDs markiert werden. Die nächste Tabelle zeigt ein Beispiel für einige Sprach-Ids. In der Konfiguration des Event Formatters werden die Sprachen mit der gleichen Sprach-Id gekennzeichnet.

LCID | Beschreibung
1031 | Deutsch
1033 | US Englisch
1034 | Spanisch
1036 | Französisch

msg

[out, retval] Pointer auf ein BSTR String, der den formatierten String für die angefragte Sprache zurückgibt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

msg war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the message in English
Dim strMessage As String
strMessage = evt.GetMsgString(1033)
Debug.Print strMessage

Anmerkungen

Die meisten standardisierten Formatter wie der XML basierende Formatter (TcEventFormatter.TcXmlFormatter) werden versuchen, den String für die Standard-Sprache zurückzugeben, falls die angefragte Sprache nicht in der Konfiguration des Formatters existiert.
*LCID: weitere Informationen finden Sie in der MSDN Library.


Id

TwinCAT EventLogger - TcEventLogger

ITcEvent::Id

Diese Eigenschaft gibt die Event Id zurück. Zusammen mit der Source Id beschreibt die Event Id ein einzelnes Event.

HRESULT Id([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der die Event id erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event id
Dim id As Long
id = evt.id
Debug.Print id

Anmerkungen


SrcId

TwinCAT EventLogger - TcEventLogger

ITcEvent::SrcId

Diese Eigenschaft gibt die Event Source Id zurück. Zusammen mit der Event Id beschreibt die Source Id ein einzelnes Event.

HRESULT SrcId([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der die Source id erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the source id
Dim id As Long
id = evt.SrcId
Debug.Print id

Anmerkungen


InvokeId

TwinCAT EventLogger - TcEventLogger

ITcEvent::InvokeId

Diese Eigenschaft gibt die Invoke Id zurück.

HRESULT InvokeId([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der die InvokeId erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event id
Dim id As Long
id = evt.InvokeId
Debug.Print id

Anmerkungen


Class

TwinCAT EventLogger - TcEventLogger

ITcEvent::Class

Diese Eigenschaft gibt die Klasse des Events, wie Alarm, Warnung, Hinweis zurück. Die Alarmklassen werden durch das Enum TcEventClass beschrieben.

HRESULT Class([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen longWert, der die Event Klasse beschreibt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event class
Dim class As TcEventClass
class = evt.Class

Anmerkungen


Priority

TwinCAT EventLogger - TcEventLogger

ITcEvent::Priority

Diese Eigenschaft gibt die Priorität des Events zurück. Die Event Priorität wird durch das Enum TcEventPriority beschrieben.

HRESULT Priorty([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der die Event Priorität erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event priorty
Dim prio As TcEventPriority
prio = evt.Priority

Anmerkungen


Flags

TwinCAT EventLogger - TcEventLogger

ITcEvent::Flags

Diese Eigenschaft gibt das Event Flag zurück. Die Event Flags werden durch das Enum TcEventFlags beschrieben.

HRESULT Flags([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der die Event Flags erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event flags
Dim flags As TcEventFlags
flags = evt.Flags

Anmerkungen


Ms

TwinCAT EventLogger - TcEventLogger

ITcEvent::Ms

Diese Eigenschaft gibt den Millisekundenanteil des Events "Datum und Zeit" zurück. Das Event "Datum und Zeit" ist die Zeit, zu der das Event ausgegeben wurde.

HRESULT Ms([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der den Millisekundenanteil des Events "Datum und Zeit" erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the millisecond part
Dim timeMs As Long
timeMs = evt.Ms
Debug.Print timeMs

Anmerkungen


SourceName

TwinCAT EventLogger - TcEventLogger

ITcEvent::SourceName

Die Eigenschaft SourceName gibt den formatierten Sourcenamen für die angefragte Sprache zurück. Intern ruft sie die Methode TcLogFormatter::GetCompleteString des Formatters auf, der zugeordnet wurde, als das Event von einem COM Client ausgegeben wurde, oder durch einen ADS Aufruf an das Objekt TcEventLog des TcEventLoggers.

HRESULT SourceName([in] long langId, [out,retval] BSTR* szName);

Parameter

langId

[in] Die Sprach Id der angefragten Sprache. Die angeforderte Sprache sollte durch *LCIDs markiert werden. Die nächste Tabelle zeigt Beispiele für einige Sprach Ids. In der Konfiguration des Event Formatters sind die Sprachen mit der gleichen Sprach Id gekennzeichnet.

LCID | Beschreibung
1031 | Deutsch
1033 | US Englisch
1034 | Spanisch
1036 | Französisch

szName

[out, retval] Pointer auf ein BSTR String, der den formatierten String für das Event SourceName zurückgibt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

szName war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the source name in English
Dim name As String
name = evt.SourceName(1033)
Debug.Print name

Anmerkungen

Die meisten standardisierten Formatter, wie der XML basierende Formatter (TcEventFormatter.TcXmlFormatter), werden versuchen, den String für die Standard-Sprache zurückzugeben, falls die angefragte Sprache nicht in der Konfiguration des Formatters existiert.
*LCID: weitere Informationen finden Sie in der MSDN Library.


FmtProgId

TwinCAT EventLogger - TcEventLogger

ITcEvent::FmtProgId

Die Eigenschaft gibt die Formatter ProgId zurück. Die ProgId ist die Verknüpfung mit dem ausgewählten Formatter. Der Formatter wurde ausgesucht, indem das Event vom SPS Funktionsblock (oder von einem anderen ADS Gerät), oder von einem Aufruf der Report Event Funktion wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent ausgegeben wurde.

HRESULT FmtProgId([out, retval] BSTR *pVal);

Parameter

pVal

[out, retval] Pointer auf ein BSTR String, der die Formatter ProgId erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the formatter ProgId
Dim progId As String
progId = evt.FmtProgId
Debug.Print progId

Anmerkungen


Date

TwinCAT EventLogger - TcEventLogger

ITcEvent::Date

Die Eigenschaft gibt das Event "Datum und Zeit" zurück. Das Event "Datum und Zeit" ist die Zeit, zu der das Event ausgegeben wurde.

HRESULT Date([out, retval] DATE *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der das Event Datum und Zeit erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event date and time
Dim dateTime As Date
dateTime = evt.Date
Debug.Print dateTime

Anmerkungen


GetData

TwinCAT EventLogger - TcEventLogger

ITcEvent::GetData

Die Eigenschaft gibt ein Safearray von Daten zurück, das an das Event angehangen wurde, als es eingeloggt war. Die Daten können durch den Formatter in die Event Meldung eingefügt werden. Die Daten wurden hinzugefügt, indem das Event vom SPS Funktionsblock (oder einem anderen ADS Gerät) oder von einem Aufruf der Report Event Funktion wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent ausgegeben wurde.

HRESULT GetData([in,out] SAFEARRAY(VARIANT)* data);

Parameter

data

[out, retval] Pointer auf ein Safearray von Varianten, das die Event Daten erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

Daten waren kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event data
Dim data() As Variant
Call evt.GetData(data)
' loop though the list of data
Dim i As Long
For i = LBound(data) To UBound(data)
Debug.Print data(i)
Next i

Anmerkungen


GetHeader

TwinCAT EventLogger - TcEventLogger

ITcEvent::GetHeader

Die Eigenschaft gibt ein Safearray zurück, das die gleiche Information wie der TcEventHeader enthält. Die Header Daten wurden hinzugefügt, indem das Event vom SPS Funktionsblock (oder einem anderen ADS Gerät) oder von einem Aufruf der Report Event Funktion wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent ausgegeben wurde.

HRESULT GetHeader([in,out] SAFEARRAY(VARIANT)* data);

Parameter

data

[in] Pointer auf ein Safearray mit den Grenzen 0 bis 9, das den Event Haeder darstellt. Das Array repräsentiert die gleiche Information wie der TcEventHeader. Die Einträge des Arrays sind in der folgenden Tabelle erklärt.

Index | TcEventHeader Eintrag | Datentyp | Beschreibung
0 | nClass | TcEventClass | Die Klasse des Events, wie Alarm, Warnung, Hinweis.
1 | nPriority | TcEventPriority (long) | Die Event Priorität. Ab jetzt ist die Priorität immer: TcEventPriority.TCEVENTPRIO_IMPLICIT=0
2 | dwFlags | TcEventFlags (long) | Die Flags regeln das Verhalten des Alarms. Das kann mit einer OR Verknüpfung kombiniert werden.
3 | dwUserData | long | Reservevariable, die vom Nutzer verwendet werden kann.
4 | nId | long | Die Event Id, die eindeutig diesen Eventtyp für diesen einzelnen Event Source darstellt.
5 | nInvokeId | long |
6 | fDate | VARIANT-DATE | Datum und Zeit zu dem dieses Event auftritt.
7 | nMs | long | Der Millisekundenanteil des Events Datum.
8 | varSource | variant | Die Source Id SourceName. Das Event Source wird verwendet, um verschiedene Geräte zu unterscheiden, wie I/O Event, oder verscheidene Teile des SPS Programms.
9 | szFmtProgId | BSTR string | Die PrgId des Formatters. Wenn der Standard XML Formatter benutzt werden soll, muss der String auf "TcEventFormatter.TcXmlFormatter" gesetzt werden.

Rückgabewerte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

Daten waren kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event header
Dim data() As Variant
Call evt.GetHeader(data)
' loop though the list of data
Dim i As Long
For i = LBound(data) To UBound(data)
Debug.Print data(i)
Next i

Anmerkungen

Für C++ und Visual Basic Programmierer ist es bequemer, die MethodeITcEventC::GetHeader zu benutzen.


Übersicht

TwinCAT EventLogger - TcEventLogger

ITcEvent::Confirm

Diese Methode wird zur Bestätigung eines Alarms verwendet. Alarme, die vom SPS Funktionsblock (oder einem anderen ADS Gerät) oder von einem Aufruf des Reports EventFunktion wie IT cEventLogC::ReportEvent, ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent mit den TcEventFlags TCEVENTFLAG_REQMUSTCON ausgegeben worden sind, müssen durch den Aufruf der ConfirmMethode des COM clients oder aus der SPS bestätigt werden (confirm).

HRESULT Confirm([in] long code);

Parameter

pVal

[in] Bestätigungscode, der durch das Enum TcEventConCodes beschrieben wird.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

TCEVENTERR_NOCONFIRM

Der Fehler war kein beweisbarer Fehler (TcEventFlags TCEVENTFLAG_REQMUSTCON war nicht gesetzt).

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' confirm the alarm
Call evt.Confirm(TcEventConCodes.TCEVENTCON_OK)

Anmerkungen

Nach diesem Methodenaufruf wird der Event Logger das Event OnConfirmEvent auf allen Clients, die die Event-Schnittstelle _ITcEventLogEvents (VB: Dim WithEvents) implementieren, erhöhen. Falls der Alarm durch die SPS ausgelöst wurde wird das TCEVENTSTATE_CONFIRMED am EventState Ausgang des SPS Funktionsblocks gekennzeichnet.


Reset

TwinCAT EventLogger - TcEventLogger

ITcEvent::Reset

Diese Methode wird zum Rücksetzen eines Events verwendet. Events, die vom SPS Funktionsblock (oder einem anderen ADS Gerät), oder einem Aufruf der Report Event Funktion wie IT cEventLogC::ReportEvent,ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent ausgegeben worden sind, könnten durch diesen Methodenaufruf zurückgestetzt werden. Sie sind direkt von dem SPS Funktionsblock, der diesen Alarm ausgegeben hat.

Wenn das Event zurückgesetzt ist, wird den Zeitstempeln DateReset + MsReset das aktuelle Datum und die aktuelle Zeit zugewiesen.

HRESULT Reset();

Parameter

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' reset the alarm
Call evt.Reset

Anmerkungen

Nach diesem Methodenaufruf wird der Event Logger das Event OnResetEvent auf allen Clients, die die Event-Schnittstelle _ITcEventLogEvents (VB: Dim WithEvents) implementieren, erhöhen. Falls der Alarm durch die SPS ausgelöst wurde wird das TCEVENTSTATE_RESET am EventState Ausgang des SPS Funktionsblocks gekennzeichnet.


State

TwinCAT EventLogger - TcEventLogger

ITcEvent::State

Diese Eigenschaft gibt den Event Status zurück. Der Event Status wird durch das Enum TcEventStates beschrieben.

HRESULT State([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der den Event Status mit den Werten des Enum TcEventStates erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event state
Dim states As TcEventStates
states = evt.state

Anmerkungen


MustConfirm

TwinCAT EventLogger - TcEventLogger

ITcEvent::MustConfirm

Die Eigenschaft gibt den Alarm zurück, wenn der Alarm bestätigt werden muss. Dieses Flag ist TRUE, wenn das Event vom SPS Funktionsblock (oder einem anderen ADS Gerät) oder durch einen Aufruf einer Report Event Funktion wie IT cEventLogC::ReportEvent, ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent mit den TcEventFlags TCEVENTFLAG_REQMUSTCON ausgegeben wurde.

HRESULT MustConfirm([out, retval] BOOL *pVal);

Parameter

pVal

[out, retval] Pointer auf einen BOOL Wert, der das Bestätigungs-Flag erhält. Es ist FALSE, wenn der Wert 0 ist, und TRUE, wenn der Wert ungleich 0 ist.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the MustConfirm flag
Dim mustConf As Long
mustConf = evt.mustConfirm
If mustConf <> 0 Then
Debug.Print "Must Confirmed!"
Else
Debug.Print "Must Not Confirmed!"
End If

Anmerkungen

Der zurückgegebene Wert ist nicht vom Typ VARIANT_BOOL des Visual Basic Typs BOOLEAN. In Visual Basic tritt er als long Wert auf. Es muss überprüft werden ob der Wert ungleich 0 ist, wenn das Flag gesetzt ist.


DateConfirmed

TwinCAT EventLogger - TcEventLogger

ITcEvent::DateConfirmed

Diese Eigenschaft gibt das Datum und die Zeit der Event Bestätigung (confirm) zurück. Die Event Bestätigung Datum und Zeit ist die Zeit, wenn das Event vom SPS Funktionsblock durch das Setzen des EventQuit=TRUE (oder eines anderen ADS Geräts) oder durch den Aufruf von ITcEvent::Confirm bestätigt wird.

HRESULT DateConfirmed([out, retval] DATE *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der die Event Bestätigung Datum und Zeit erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen

E_POINTER

pVal war kein gültiger Pointer

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event confirmation date and time
Dim dateTime As Date
dateTime = evt.DateConfirmed
Debug.Print dateTime

Anmerkungen

Die Event Bestätigung Datum und Zeit wird nur bei den Events gesetzt, die bestätigt werden müssen, siehe ITcEvent::MustConfirm.


MsConfirmed

TwinCAT EventLogger - TcEventLogger

ITcEvent::MsConfirmed

Diese Eigenschaft gibt die Millisekunde der Event Bestätigung Datum und Zeit an. Die Event Bestätigung Datum und Zeit ist die Zeit, zu der das Event vom SPS Funktionsblock durch Setzen des EventQuit=TRUE (oder eines anderen ADS Geräts) oder von einem Aufruf ITcEvent::Confirm bestätigt wird.

HRESULT Ms Confirmed([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der die tausendstel Sekunde der Event Bestätigung Datum und Zeit erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the millisecond part of the event confirmation date and time
Dim timeMs As Long
timeMs = evt.MsConfirmed
Debug.Print timeMs

Anmerkungen

Die tausendstel Sekunde der Event Bestätigung Datum und Zeit ist genau auf diese Events gesetzt, die bestätigt werden müssen, siehe ITcEvent::MustConfirm.


DateReset

TwinCAT EventLogger - TcEventLogger

ITcEvent::DateReset

Diese Eigenschaft gibt das Event Reset Datum und Zeit zurück. Das Event Reset Datum und Zeit ist der Zeitpunkt, an dem das Event vom SPS Funktionsblock durch Setzen des Events von TRUE auf FALSE (oder von einen anderen ADS Gerät) oder von einem Aufruf von ITcEvent::Reset zurückgesetzt wird.

HRESULT DateReset([out, retval] DATE *pVal);

Parameter

pVal

[out, retval] Pointer auf einen Long Wert, der das Event Reset Datum und Zeit erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the event reset date and time
Dim dateTime As Date
dateTime = evt.DateReset
Debug.Print dateTime

Anmerkungen


MsReset

TwinCAT EventLogger - TcEventLogger

ITcEvent::MsReset

Die Eigenschaft gibt den Millisekundenteil des Events Reset Datum und Zeit. Das Event Reset Datum und Zeit ist die Zeit, wenn das Event vom SPS Funktionsblock zurückgesetzt wird, durch Setzen des Event von TRUE auf FALSE (oder eines anderen ADS Geräts) oder durch den Aufruf von ITcEvent::Reset.

HRESULT MsReset([out, retval] long *pVal);

Parameter

pVal
[out, retval] Pointer auf eine long Wert, der den Millisekundenteil des Event Datum und Zeit erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' get the millisecond part of the event reset date and time
Dim timeMs As Long
timeMs = evt.MsReset
Debug.Print timeMs

Anmerkungen


UserData

TwinCAT EventLogger - TcEventLogger

ITcEvent::UserData

Die Eigenschaft gibt die benutzerdefinierten Daten des Events zurück. Die Benutzerdaten wurden zugeordnet, als das Event vom SPS Funktionsblock (oder eines anderen ADS Geräts) oder durch den Aufruf der Report EventFunction wie IT cEventLogC::ReportEvent, ITcEventC3::ReportEventEx oder ITcEventLog::ReportEvent mit den TcEventFlags ausgegeben wurde.

HRESULT UserData([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf einen long Wert, der die Benutzerdaten enthält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Anmerkungen


EnumDocLinks

TwinCAT EventLogger - TcEventLogger

ITcEvent::EnumDocLinks

Gibt ein Aufzählungsobjekt zurück, das zur Wiederholung aufgelisteter Dokumentverknüpfungen verwendet wird. Dokumentverknüpfungen sind der Pfad und die Dateinamen der Dokumente ,wie HTML Seiten und Bilder, die eine genauere Beschreibung über einen einzelnen Alarm für die angewählte Sprache ausgeben. Intern beziehen sich die EnumDocLinks auf die Formatter Methode ITcLogFormatter::EnumDocLinks. Die Dokumentverknüpfungen müssen in der Formatter Konfiguration des Events eingerichtet sein.

HRESULT EnumDocLinks([in] long langId, [out,retval] IUnknown** ppEnum);

Parameter

langId

[in]

Die Sprach-Id der angefragten Sprache. Die gewünschte Sprache sollte mit *LCIDs markiert werden. Die nächste Tabelle zeigt ein Beispiel für einige Sprach-Ids. In der Konfiguration des Event Formatters werden die Sprachen mit der gleichen Sprach-Id gekennzeichnet.

LCID | Beschreibung
1031 | Deutsch
1033 | US Englisch
1034 | Spanisch
1036 | Französisch

ppEnum

[out, retval] Pointer auf den ITcEnumEventDocLink Schnittstellen.Pionter, der die Aufzählungsobjekte der Doumentverknüpfungen erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

ppEnum war kein gültiger Pointer.

Anmerkungen

Diese Methode funktioniert nicht mit Visual Basic.

*LCID: weitere Informationen finden Sie in der MSDN Library.


Signal

TwinCAT EventLogger - TcEventLogger

ITcEvent::Signal

Diese Methode wird verwendet, um ein rückgesetztes Event erneut anzuzeigen. Diese funktioniert nur bei einem Alarm, der eine Bestätigung benötigt, siehe ITcEvent::MustConfirm.

HRESULT Signal();

Parameter

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As TcEvent
Set evt = evtLogger.GetLastEvent
' signal the alarm
Call evt.Signal

Anmerkungen

Nach diesem Methodenaufruf wird der Event Logger das Event OnSignalEvent auf allen Clients, die die Event-Schnittstelle_ITcEventLogEvents (VB: Dim WithEvents) implementieren, erhöhen.


Übersicht

Die Schnittstelle ITcEvent gibt einen Zugriff auf die Eigenschaften eines einzelnen Alarms. Die Schnittstelle leitet sich von IUnknown ab, so dass sie von allen Sprachen verwendet werden kann, die die COM Custom Interfaces unterstützen.

Methoden und Eigenschaften

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück.
AddRef | Inkrementiert den Referenzzähler.
Release | Dekrementiert den Referenzzähler.

ITcEventC Methoden | Beschreibung
GetHeader | Gibt den Event Header zurück, der die meisten der Eventparameter in einem Bündel erfasst.


TwinCAT EventLogger - TcEventLogger

ITcEventC::GetHeader

Diese Methode gibt den Event Header zurück, der die meisten Eventparameter in einem Bündel erfasst.

HRESULT GetHeader([out]TcEventHeader* pHead);

Parameter

pHead

[in] Pointer auf ein Objekt des Typs TcEventHeader. Das Objekt stellt die Alarm Konfiguration dar.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal wwar kein gültiger Pointer.

Visual Basic Beispielcode

' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the most resent active event
Dim evt As ITcEventC
Set evt = evtLogger.GetLastEvent
' get the event header
Dim head As TcEventHeader
Call evt.GetHeader(head)

Anmerkungen


Übersicht

Die Schnittstelle ITcEnumEventDocLink wird zur Aufzählung der Dokumentverbindungen für ein einzelnes Event für die gewählte Sprache verwendet. Die Schnittstelle leitet sich von IUnknown ab, so dass sie von allen Sprachen verwendet werden kann, die COM Custom Schnittstellen unterstützen.

Methoden in

IUnknown Methoden | Beschreibung
QueryInterface | Gibt einen Pointer zur angefragten Schnittstelle zurück
AddRef | Inkrementiert den Referenzzähler
Release | Dekrementiert den Referenzzähler

ITcEnumEventDocLink Methoden | Beschreibung
Next | Gibt die nächste Nummer des TcEventDocLink Objekts in der Aufzählungsreihenfolge zurück.
Skip | Überspringt in der Aufzählungsreihenfolge eine Anzahl von TcEventDocLink Objekten.
Reset | Setzt die Aufzählungsreihenfolge auf das erste Element zurück.
Clone | Bildet das Aufzählungsobjekt nach.


Next

TwinCAT EventLogger: Interface

ITcEnumEventDocLink::Next

Gibt die nächste Nummer des TcEventDocLink Objekts in der Aufzählungsreihenfolge zurück.

HRESULT Next(
[in] long celt,
[out, size_is(celt), length_is(*pceltFetched)] TcEventDocLink** ppElements,
[out, retval] long *pceltFetched);

Parameter

celt

[in] Anzahl der angefragten Elemente in der Aufzählungsreihenfolge.

ppElements

[out, size_is(celt), length_is(*pceltFetched)] Pointer auf das erste Element des Arrays mit TcEventDocLink Objekten. Gibt die Anzahl der Dokumentverknüpfungen durch pceltFetched zurück.

pceltFetched

Gibt die Anzahl der zurückgegebenen Dokumentverknüpfungen zurück.

Return Values

S_OK

Funktion wurde erfolgreich aufgerufen.

S_FALSE

Die Anzahl der zurückgegebenen Elemente ist geringer als die der Angefragten.

E_POINTER

Elemente oder pceltFetched sind keine gültigen Pointer.

Anmerkungen

Die Methode kann nicht aus Visual Basic aufgerufen werden.


Skip

TwinCAT EventLogger: Interface

ITcEnumEventDocLink::Skip

Diese Methode überspringt in der Aufzählungsreihenfolge eine Anzahl von TcEventDocLink Objekten.

HRESULT Skip(
[in] long cSkipElem);

Parameter

cSkipElem

[in] Anzahl der zu überspringenden Elemente.

Rückgabe Werte

S_OK

Die Methode wurde erfolgreich aufgerufen.

S_FALSE

Die Anzahl der übersprungenen Elemente ist ungleich cSkipElem.

E_NOTIMPL

Die Methode ist nicht implementiert.

Anmerkungen


Reset

TwinCAT EventLogger: Interface

ITcEnumEventDocLink::Reset

Diese Methode setzt die Aufzählungsreihenfolge auf das erste Element zurück.

HRESULT Reset(
void);

Parameter

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

S_FALSE

Die Anzahl der übersprungenen Elemente ist nicht identisch mit cSkipElem.

E_NOTIMPL

Die Methode ist nicht implementiert.

Anmerkungen


Clone

TwinCAT EventLogger: Interface

ITcEnumEventDocLink::Clone

Diese Methode bildet das Aufzählungsobjekt nach.

HRESULT Clone(
[out] ITcEnumEventDocLink** ppEnum);

Parameter

[out] Pointer vom Typ ITcEnumEventDocLink auf einen Pointer, der eine Kopie des Aufzählungsobjektes erhält.

Rückgabe Werte

S_OK

Methode wurde erfolgreich aufgerufen.

E_POINTER

ppEnum war kein gültiger Pointer.

E_NOTIMPL

Die Methode ist nicht implementiert.

Anmerkungen


TcEventClass

Dieses Enum beschreibt die Event Klasse. Die Event Klasse kann beim Ausgeben eines Alarmsignals gesetzt werden und kann von den Clients verwendet werden, um zwischen verschiedenen Alarmsignalen zu unterscheiden. Der Formatter, zum Beispiel, zeigt für die verschiedenen Alarmklassen verschiedene Icons an.

enum TcEventClass
{
TCEVENTCLASS_NONE =0,
TCEVENTCLASS_MAINTENANCE =1,
TCEVENTCLASS_MESSAGE =2,
TCEVENTCLASS_HINT =3,
TCEVENTCLASS_STATEINFO =4,
TCEVENTCLASS_INSTRUCTION =5,
TCEVENTCLASS_WARNING =6,
TCEVENTCLASS_ALARM =7,
TCEVENTCLASS_PARAMERROR =8,
TCEVENTCLASS_MAX
};

Parameter

Eintrag | Beschreibung
TCEVENTCLASS_NONE | Keine bestimmte Event Klasse
TCEVENTCLASS_MAINTENANCE | Das Event ist als Wartungsalarm klassifiziert.
TCEVENTCLASS_MESSAGE | Das Event ist als Meldung klassifiziert.
TCEVENTCLASS_HINT | Das Event ist als Hinweis klassifiziert.
TCEVENTCLASS_STATEINFO | Das Event ist als Statusinformation klassifiziert.
TCEVENTCLASS_INSTRUCTION | Das Event ist als Anleitung klassifiziert.
TCEVENTCLASS_WARNING | Das Event ist als Warnung klassifiziert.
TCEVENTCLASS_PARAMERROR | Das Event ist als Parameterfehler klassifiziert.
TCEVENTCLASS_MAX | Die Event Klasse Max wird nicht als Classifier benutzt, sondern beschreibt den maximalen Wert des Enums.


TcEventConCodes

Dieses Enum beschreibt die Event Bestätigungscodes (confirm). Der Bestätigungscode wird zur Beschreibung der Event Bestätigung verwendet.

enum TcEventConCodes
{
TCEVENTCON_OK =0,
TCEVENTCON_ABORT =1,
TCEVENTCON_IGNORE =2,
TCEVENTCON_RETRY =3
};

Parameter

Eintrag | Beschreibung
TCEVENTCON_OK | Die Bestätigung war in Ordnung
TCEVENTCON_ABORT | Die Bestätigung wurde abgebrochen
TCEVENTCON_IGNORE | Die Bestätigung wurde ignoriert
TCEVENTCON_RETRY | Die Bestätigung wurde wiederholt


TcEventFlags

Dieses Enum beschreibt die Event Klasse. Die Event Klasse kann beim Ausgeben eines Alarmsignals gesetzt werden und kann von den Clients verwendet werden, um zwischen verschiedenen Alarmsignalen zu unterscheiden. Der Formatter, zum Beispiel, zeigt für die verschiedenen Alarmklassen verschiedene Icons an.

enum TcEventClass
{
TCEVENTFLAG_REQ=0x0001,
TCEVENTFLAG_REQMUSTCON=0x0002,
TCEVENTFLAG_CON=0x0004,
TCEVENTFLAG_RESET=0x0008,
TCEVENTFLAG_PRIOCLASS=0x0010,
TCEVENTFLAG_FMTSELF=0x0020,
TCEVENTFLAG_LOG=0x0040,
TCEVENTFLAG_MSGBOX=0x0080,
TCEVENTFLAG_SRCID=0x0100,
TCEVENTFLAG_SELFRESET=0x0200,
TCEVENTFLAG_TCID=0x0400,
TCEVENTFLAG_SIGNAL=0x0800,
TCEVENTFLAG_ADS=0x8000,
};

Parameter

Eintrag | Beschreibung
TCEVENTFLAG_REQ | Setzt den Alarm, der nicht beweisbar ist.
TCEVENTFLAG_REQMUSTCON | Setzt den Alarm, der beweisbar ist.
TCEVENTFLAG_CON | Setzt die Bestätigung
TCEVENTFLAG_RESET | Setzt das Event zurück
TCEVENTFLAG_PRIOCLASS | Die Event Priorität und Klasse wird von der Formatter Konfiguration gelesen.
TCEVENTFLAG_FMTSELF | noch unbenutzt
TCEVENTFLAG_LOG | Schreibt das Event in die Liste der logged Events
TCEVENTFLAG_MSGBOX | noch unbenutzt
TCEVENTFLAG_SRCID | Es wird eine Source Id statt eines Source Namens verwendet.
TCEVENTFLAG_SELFRESET | Das Event setzt sich selber direkt zurück. Wenn TCEVENTFLAG_LOG gesetzt ist, ist das Event in der Liste der logged Alarme sichtbar.
CEVENTFLAG_TCID | unbenutzt
TCEVENTFLAG_SIGNAL | Signalisiert erneut einen Alarm
TCEVENTFLAG_ADS | Zeigt an, dass das Event via ADS erzeugt wurde.


TcEventPriority

Dieses Enum beschreibt die Event Priorität. Nur die implizite Priorität ist verfügbar.

enum TcEventPriority
{
TCEVENTPRIO_IMPLICIT=0,
};

Parameter

Eintrag | Beschreibung
TCEVENTPRIO_IMPLICIT | Die Standard Priorität

Anmerkungen

Die einzige Priorität, die durch ein Enum definiert wird, ist TCEVENTPRIO_IMPLICIT. Für höhere Prioritäten verwendet der Benutzer einen Integer > TCEVENTPRIO_IMPLICIT. In jeder Methode, in der eine Priorität verwendet wird, wird der Typ Long verwendet, nicht der Typ TcEventPriority.


TcEventStates

Dieses Enum beschreibt den Event Status.

enum TcEventStates
{
CEVENTSTATE_INVALID =0x00,
TCEVENTSTATE_SIGNALED =0x01,
TCEVENTSTATE_RESET =0x02,
TCEVENTSTATE_CONFIRMED =0x10,
TCEVENTSTATE_RESETCON =0x12
}

Parameter

Eintrag | Beschreibung
CEVENTSTATE_INVALID | Ungültiger Status, Fehler sind aufgetreten
TCEVENTSTATE_SIGNALED | Das Event ist signalisiert.
TCEVENTSTATE_RESET | Das Event ist zurückgesetzt
TCEVENTSTATE_CONFIRMED | Das Event ist bestätigt (confirmed)
TCEVENTSTATE_RESETCON | Das Event ist zurückgesetzt und bestätigt.


TcEventDocLink

Diese Struktur beschreibt eine Dokumentverknüpfung.

struct TcEventDocLink
{
BSTR strDocType;
BSTR strDocLink;
}

Parameter

TcEventHeader Eintrag | Beschreibung
strDocType | Ein BSTR String, der den Typ der Dokumentverknüpfung beschreibt.
strDocLink | Ein BSTR String, der den Dateipfad zum Dokument enthält.


TcEventHeader

Diese Struktur beschreibt den Header eines Event Objekts. Mit dem Header kann der Parameter des Events konfiguriert werden.

struct TcEventHeader
{
TcEventClass nClass;
TcEventPriority nPriority;
long dwFlags;
long dwUserData;
long nId;
long nInvokeId;
DATE fDate;
long nMs;
VARIANT varSource;
BSTR szFmtProgId;
};

Parameter

TcEventHeader Eintrag | DataType | Beschreibung
nClass | TcEventClass | Die Klasse des Alarms, wie Alarm, Warnung, Hinweis.
nPriority | TcEventPriority (long) | Die Event Priorität. Ab jetzt ist die Priorität immer: TcEventPriority.TCEVENTPRIO_IMPLICIT=0
dwFlags | TcEventFlags (long) | Die Flags steuern das Alarmverhalten. Dies kann mit einer OR Verknüpfung kombiniert werden.
dwUserData | long | Eine Reserve Variable, die vom Benutzer verwendet werden kann.
nId | long | Die Event Id, die allein diesen Typ des Events für diesen einzelnen Event Source repräsentiert.
nInvokeId | long |
fDate | VARIANT-DATE | Datum und Zeit wenn dieses Event auftritt.
nMs | long | Der Millisekundenteil des Events Datum.
varSource | variant | Die Source Id Source Name. Das Event Source wird zur Unterscheidung zwischen verschiedenen Geräten verwendet, wie I/O Events, oder verschiedene Teile des SPS Programms.
szFmtProgId | BSTR string | Die PrgId des Formatters. Wenn der Standard XML Formatter benutzt werden soll, muss der String auf "TcEventFormatter.TcXmlFormatter" gesetzt werden.


Beispiele: Übersicht

TwinCAT EventLogger - Beispiele

Beispiele

Eventkonfiguration

Beschreibung
Formatierung der Meldungstexte mit dem TcEventConfigurator

TwinCAT SPS-Schnittstelle (Strukturierter Text)

Beschreibung | Quellcode
Auslösen einer einfachen Meldung | Sample01.zip
Auslösen einer komplexen Meldung | Sample02.zip
Übergabe von Parametern an die Meldung | Sample03.zip

Microsoft Visual Studio C++

Beschreibung | Quellcode
Einbinde von TcEventViewer-ActiveX-Control | Sample01.zip (in Vorbereigung)
Konsolenanwendung - Geloggte Events via DCOM-Schnittstelle lesen | Sample02.zip
Connection Points (EventSink) | Sample03.zip
TcEventConfigurator ActiveX | Sample04.zip (in Vorbereitung)

Microsoft Visual Studio C#

Beschreibung | Quellcode
C# Visualisierung - Geloggte Meldungen | Sample01.zip
C# Visualisierung - Aktive Meldungen | Sample02.zip

Microsoft Visual Basic

Beschreibung | Quellcode
Einbinden von TcEventViewer-ActiveX-Control | Sample01.zip (in Vorbereitung)
Aktive Alarme in einer benutzerdefinierten Listenansicht | Sample02.zip

CodeGear C++Builder 2009

Beschreibung | Quellcode
Einbinden in CodeGear C++Builder 2009 | -
Konsolenanwendung - Geloggte Meldungen via DCOM-Schnittstelle | Sample01.zip
Konsolenanwendung - Geloggte Meldungen via ADS-Proxy-Schnittstelle | Sample02.zip
Aktive Alarme in einer benutzerdefinierten Listenansicht | Sample03.zip
Einbinden von TcEventViewer-ActiveX-Control | Sample04.zip


Konfigurieren von Meldungen

In diesem Sample wird die Verwendung des TcEventkonfigurators beschrieben.

Mithilfe des TcEventkonfigurators können Sie Ihr Meldungssystem konfigurieren und mehrsprachige Meldungstexte erzeugen. Es ist nicht nötig, Konfigurationsdateien manuell zu editieren, wodurch viel Zeit gespart und eine Fehlerquelle eliminiert werden kann.

Nach erfolgreicher Konfiguration wird ein SPS Programm erzeugt und Meldungen mithilfe der TcEventbar angezeigt.

  1. Installieren und starten Sie den TcEventkonfigurator .

  2. Der Konfigurator startet nun mit einem einfachen Wizard zum Erzeugen von Meldungen. Füllen Sie alle Felder wie in den Screenshots dargestellt aus.

  3. Nach Fertigstellung des Wizards haben Sie Ihre erste Meldung erzeugt. Die Meldung steht in deutscher und englischer Sprache zur Verfügung.
  4. Der TcEventkonfigurator bietet eine übersichtliche Oberfläche zum Bearbeiten und Erzeugen von Meldungen. Mit minimalem Aufwand können Sie nun weitere Meldungen und Sprachen erzeugen.
  5. Speichern Sie Ihre Konfiguration. Als Dateityp wählen Sie den TcXmlFormatter aus und bestätigen die folgende Message Box mit OK. - Ihre Konfiguration ist nun aktiv.

  6. Mit einem Rechtsklick auf eine beliebige Meldung können Sie sich nun den SPS Code zum Auslösen dieser Meldung generieren lassen.

    Fügen Sie diesen Code in ihr SPS Programm ein und lösen Sie die Meldung aus.

    Starten Sie die TcEventbar. Die Meldung wird nun vollständig angezeigt.


Auslösen von Meldungen

TwinCAT EventLogger - SPS Beispiele

Auslösen von einfachen Meldungen

Meldungen können auf zwei wegen ausgelöst werden : einfach und komplex.

In diesem Sample wird das Auslösen einer einfachen Meldung aus der SPS erklärt. Einfache Meldungen lassen sich mit deutlich weniger Code auslösen, bieten jedoch kaum Freiraum zur Konfiguration.

  1. Erstellen Sie ein neues SPS-Projekt.

    • Als Zielsystem wählen Sie PC (i386)

    • Behalten Sie die standard Einstellungen der Taskkonfiguration bei.

    • Erzeugen Sie ein neues Programm. Als Sprache wählen sie Strukturierten Text.

    • Öffnen Sie über den Menüpunkt Fenster->Bibliotheksverwaltung den Bibliotheksverwalter und fügen die TcSystem.lib zum Projekt hinzu.

      Nun steht Ihnen der ADSLOGEVENT Baustein zur Verfügung.

  2. Benutzen sie den TcEventKonfigurator um eine quittierungspflichtige Meldung mit der SourceID 17001 und EventID 1 zu erzeugen.
  3. Fügen Sie nun folgenden Code in Ihr Projekt ein

    (*Variablendeklaration*)
    VAR
    event : FB_SimpleAdsLogEvent;
    bEvent : BOOL;
    bQuitEvt : BOOL;
    END_VAR

    (*SPS Code*)
    Event( SourceID := 17001,
    EventID := 1,
    bSetEvent := bEvent,
    bQuit := bQuitEvt);

  4. Starten Sie nun das PLC Programm.
  5. Starten Sie die TcEventbar (im 'TwinCAT/Eventlogger' Verzeichnis).

  6. Durch Toggeln der Variable bSetEvent1 wird nun die entsprechende Meldung ausgelöst. Mit steigender Flanke kommt die Meldung, mit fallender wird sie zurückgesetzt.

  7. Beim Toggeln von bSetEvent wird die Meldung nicht zurückgesetzt, da es sich um eine quittierungspflichtige Meldung handelt. Sie wird erst gelöscht wenn bSetEvent zurückgesetzt wird und bQuitEvent gesetzt wird.
Sprache / IDE | Beispielprogram auspacken
TwinCAT PLC (Structured Text) | Sample01.zip


Auslösen von Meldungen

TwinCAT EventLogger - SPS Beispiele

Auslösen von komplexen Meldungen

Meldungen können auf zwei wegen ausgelöst werden : einfach und komplex.

In diesem Sample soll gezeigt werden, wie eine komplexe Meldung aus der SPS ausgelöst werden kann. Der Code Aufwand für komplexe Meldungen ist höher als der für einfache Meldungen - es bleibt jedoch deutlich mehr Freiraum zur Konfiguration.

Es werden 2 Meldungen erzeugt - eine einfache Meldung und eine quittierungspflichtige.

Die Meldungen werden dann mithilfe der TcEventbar angezeigt.

  1. Erstellen Sie ein neues SPS-Projekt.

    • Als Zielsystem wählen Sie PC (i386)

    • Behalten Sie die standard Einstellungen der Taskkonfiguration bei.

    • Erzeugen Sie ein neues Programm. Als Sprache wählen sie Strukturierten Text.

    • Öffnen Sie über den Menüpunkt Fenster->Bibliotheksverwaltung den Bibliotheksverwalter und fügen die TcSystem.lib zum Projekt hinzu.

      Nun steht Ihnen der ADSLOGEVENT Baustein zur Verfügung.

  2. Fügen Sie nun folgenden Code in Ihr Projekt ein

    (*Variablendeklaration*)
    VAR
    bSetEvent1 : BOOL;
    bSetEvent2 : BOOL;
    bQuitEvent2 : BOOL;

    event1: ADSLOGEVENT;
    event2: ADSLOGEVENT;

    CfgEvent1 : TcEvent;
    CfgEvent2 : TcEvent;
    END_VAR

    (*SPS Code*)
(* Einstellung des Parameters für Ereignis
        1 *)
CfgEvent1.Prio := 0;
CfgEvent1.bQuitRequired := FALSE;
CfgEvent1.Flags := TCEVENTFLAG_LOG OR TCEVENTFLAG_SRCID;
CfgEvent1.StreamType := TCEVENTSTREAM_SIMPLE;
CfgEvent1.ProgId := 'TcEventFormatter.TcXmlFormatter';
CfgEvent1.Id := 1; (* Meldung 1*)
CfgEvent1.SourceId := 17001; (* 17001: Achsregelung *)
CfgEvent1.Class := TCEVENTCLASS_MESSAGE;

(* Einstellung des Parameters für Ereignis 2 *)
CfgEvent2.Prio := 0;
CfgEvent2.bQuitRequired := TRUE;
CfgEvent2.Flags := TCEVENTFLAG_LOG OR TCEVENTFLAG_SRCID;
CfgEvent2.StreamType := TCEVENTSTREAM_SIMPLE;
CfgEvent2.ProgId := 'TcEventFormatter.TcXmlFormatter';
CfgEvent2.Id := 2; (* Meldung 2*)
CfgEvent2.SourceId := 17001; (* 17001: Achsregelung *)
CfgEvent2.Class := TCEVENTCLASS_ALARM;

event1(
NETID:= '',
PORT:= 110,
Event:= bSetEvent1,
EventConfigData:= CfgEvent1,
TMOUT:= t#10s);

event2(
NETID:= '',
PORT:= 110,
Event:= bSetEvent2,
EventQuit:= bQuitEvent2,
EventConfigData:= CfgEvent2,
TMOUT:= t#10s);

  3. Starten Sie nun das PLC Programm.
  4. Starten Sie die TcEventbar (im 'TwinCAT/Eventlogger' Verzeichniss).

  5. Durch toggeln der Variable bSetEvent1 wird nun die entsprechende Meldung ausgelöst. Mit steigender Flanke kommt die Meldung, mit fallender wird sie zurückgesetzt.

    Da noch keine Meldungstexte eingerichtet sind wird in den Feldern Quelle und Meldung ein Fehler gemeldet.
  6. beim Toggeln von bSetEvent2 wird die Meldung nicht zurückgesetzt, da es sich um eine quittierungspflichtige Meldung handelt. Sie wird erst gelöscht wenn bSetEvent2 zurückgesetzt wird und bQuitEvent2 gesetzt wird.
  7. Fahren Sie nun mit dem Einrichten der Meldungstexte fort.
Sprache / IDE | Beispielprogram auspacken
TwinCAT PLC (Structured Text) | Sample02.zip


Übertragen von Variablen mit der Meldung

Es ist möglich mit einer Meldung eine oder mehrere Variablen zu übertragen. In diesem Beispiel werden die dafür nötigen Schritte beschrieben.

  1. Generieren Sie ein PLC Projekt wie im vorherigen Beispiel beschrieben.

  2. Fügen Sie die folgenden Variablen zur Variablenkonfiguration hinzu.

    Der Wert 'value' soll übertragen werden; Der String 'format' beschreibt das Datenformat zum Übertragen der Werte.

    value : DWORD := 0;
    format : STRING := '%d';

  3. Nun ändern Sie die Konfiguration für das Event, so dass es folgendermaßen aussieht:

    (* Einstellung des Parameters für Ereignis 2 *)
    CfgEvent2.Prio := 0;
    CfgEvent2.bQuitRequired := TRUE;
    CfgEvent2.Flags := TCEVENTFLAG_LOG OR TCEVENTFLAG_SRCID;
    CfgEvent2.StreamType := TCEVENTSTREAM_SIMPLE;
    CfgEvent2.ProgId := 'TcEventFormatter.TcXmlFormatter';
    CfgEvent2.Id := 2; (* Meldung 2*)
    CfgEvent2.SourceId := 17001; (* 17001: Achsregelung *)
    CfgEvent2.DataFormatStrAddress := ADR(format);
    CfgEvent2.Class := TCEVENTCLASS_ALARM;

    event2(
    NETID:= '',
    PORT:= 110,
    Event:= bSetEvent2,
    EventQuit:= bQuitEvent2,
    EventConfigData:= CfgEvent2,
    EventDataAddress := ADR(value),
    EventDataLength := SIZEOF(value),
    TMOUT:= t#10s);

  4. Lösen Sie das Event aus.

Es können auch mehrere Variablen übertragen werden, indem Sie eine Struktur übergeben. Der Formatstring muss dann die Anordnung der Variablen in der Struktur wiedergeben.

Wird ein zusätzlicher Text als Parameter übertragen, muss dieser als letztes Element in der Struktur deklariert werden. Es kann nur ein String übertragen werden.

(*Datentypen*)
TYPE ST_EventData1 :
STRUCT
axis : UDINT;
pos : LREAL;
message : STRING;
END_STRUCT
END_TYPE

(*Variablendeklaration*)
...
format : STRING := '%d%f%s'
Eventdata1 : ST_EventData1;
...

(*SPS Code*)
...
EventDataAddress := ADR(Eventdata1),
EventDataLength := SIZEOF(Eventdata1),
...

Sprache / IDE | Beispielprogram auspacken
TwinCAT PLC (Structured Text) | Sample03.zip


Einbinden von TcEventViewer-ActiveX-Control

  1. Erstellen Sie ein neues MFC exe Projekt.
  2. Als Applikations Typ wählen Sie Dialogbasiert aus.

  3. Rechtsklicken Sie auf den Dialog in der Layoutansicht und wählen 'Insert ActiveX Control'

  4. Wählen Sie 'BECKHOFF TcEventView Class' aus

Sprache / IDE | Beispielprogram auspacken
Visual Studio 6 C++ | Sample01.zip (in Vorbereitung)


Konsolenanwendung - Geloggte Events via DCOM-Schnittstelle lesen

Das folgende Beispiel zeigt, wie in C++ eine Liste von geloggten Meldungen ausgegeben werden kann.

  1. Erstellen Sie eine standard Konsolen Applikation.
  2. Fügen Sie folgenden Sourcecode hinzu.

if( SUCCEEDED(CoInitialize( 0 )) )
{
ITcEventLogPtr spEventLogger;
ITcEnumEventsPtr spEnumEvts;
ITcEventPtr spEvent;
IDispatchPtr spDisp;

if( SUCCEEDED( spEventLogger.CreateInstance( CLSID_TcEventLog ) ) )
{
spEnumEvts = spEventLogger->EnumLoggedEvents();
if(spEnumEvts)
{
while( spEnumEvts->Next(1, &spDisp) == 1 )
{
spEvent = spDisp;
spEvent->GetMsgString(1033);
printf( "Event %i; Source %i\n Message = %s\n", spEvent->GetId(), spEvent->GetSrcId(), (char*)spEvent->GetMsgString(1033) );
spDisp = NULL;
}
}
}
spEnumEvts = NULL;
spEvent = NULL;
spEventLogger = NULL;

CoUninitialize();
}
return 0;

Das Programm benutzt das ITcEnumEvents Interface um die geloggten Meldungen zu enumerieren.

Für alle geloggten Meldungen wird im Konsolenfenster der Meldungstext ausgegeben.

Sprache / IDE | Beispielprogram auspacken
Visual Studio 6 C++ | Sample02.zip


Connection Points

Dieses Sample Programm enthält eine komplette Implementierung eines ConnectionPoint zum TcEventLogger.

Sprache / IDE | Beispielprogram auspacken
Visual Studio 6 C++ | Sample03.zip


Hinzufügen des ActiveX TcEvtCfgEditor zu einem Dialog

Um den TcEvtCfgEditor zu einem Dialog, der auf einer MFC Applikation basiert, hinzuzufügen folgen Sie einfach diesem Tutorial.

  1. Start Sie das MSVisual Studio 6.
  2. Erstellen Sie einen neuen auf einer MFC Applikation basierten Dialog.
  3. Klicken Sie im Design Modus mit der rechen Maustaste auf die Dialog Ressource und wählen Sie 'Add ActiveX Control'.
  4. Wähen Sie den Beckhoff EvtCfgEditor und platzieren Sie ihn auf dem Dialog.
  5. Öffnen Sie den Class Wizzard wählen Sie den 'Member Variables' Reiter
  6. Wählen Sie IDC_EVTCFGEDITOR1 und klicken Sie auf on 'AddVariable'
  7. Im folgenden Dialog wählen Sie OK um eine automatisch generierte Wrapper-Klasse zu bekommen.
  9. Im folgenden Dialog lassen Sie alle Items ausgewählt und klicken OK.
  10. Nun müssen Ssie den Namen der Member-Variable eingeben.
  11. Das ActiveX Control ist fertig und kann benutzt werden.
    Rufen Sie GetConfiguration auf um Zugriff auf das darunterliegende Konfigurationsobjekt zu bekommen

Sprache / IDE | Beispielprogram auspacken
Visual Studio 6 C++ | Sample04.zip (in Vorbereitung)


Anzeige von Logged Events in C#

Diese Beispiel bezieht sich auf

  • Visual Studio 2005
  • TcEventLogger 2.9.0.90 und höher ( TwinCAT 2.10. Build1244)

Bevor Sie mit dem Beispiel starten beachten Sie, dass der TcEventViewer ActiveX keine komplette Implementation einer Event HMI bietet, die einfach an ihre Applikation angefügt werden kann. Wenn Sie spezielle Anforderungen haben, die nicht mit dem standard TcEventViewer realisiert werden können, fahren Sie mit dem Beispiel zur Anzeige geloggter Events fort.

  1. Erzeugen Sie eine Win32 C# Applikation.
  2. Fügen Sie dem Beckhoff TcEventLogger eine Referenz hinzu:
  3. Über Form1.cs ergänzen Sie:

    using TCEVENTLOGGERLib;

  4. Erzeugen Sie eine globale Instanz im TcEventlogger.

    TcEventLog tcEventLogger = new TcEventLog();

  5. Fügen Sie eine ListView in ihre Main Form ein und benennen es eventView1
  6. Intialisieren Sie in Form1_Load die ListView:

    eventView1.View = View.Details;
    eventView1.Columns.Add(    "Time", "Time");
    eventView1.Columns.Add(    "Type", "Type");
    eventView1.Columns.Add(    "Source", "Source");
    eventView1.Columns.Add(    "Message", "Message");

  7. Fügen Sie Code zur Anzeige von Events in die ListView control hinzu:

    /// <summary>
     /// Display an event on top of the ListView control
     /// </summary>
     /// <param name="evt">Event to be added</param>
     private void AddEvent(TcEvent evt)
    {
     ListViewItem lvi = new ListViewItem();
    lvi.Name =     "Time";
     try
     { lvi.Text = Convert.ToString(evt.Date); }
     catch (Exception)
    { lvi.Text =     ""; }
    eventView1.Items.Insert(0, lvi);
    PrepareListViewItem(lvi);

     try
     { AddListViewSubItem(lvi, "Type", GetEventClassName(evt)); }
     catch (Exception)
    { }
    try
    { AddListViewSubItem(lvi, "Source", evt.get_SourceName(langId)); }
     catch (Exception)
    { }

    try
    { AddListViewSubItem(lvi, "Message", evt.GetMsgString(langId)); }
     catch (Exception)
    { }
    }
    /// <summary>
     /// Prepare the listview item by padding its subitems with empty items
    /// </summary>
     /// <param name="lvi"> ListViewItem to be prepared</param>
    private void PrepareListViewItem(ListViewItem lvi)
    {
     for (int i = 0; i < eventView1.Columns.Count; i++)
    lvi.SubItems.Add(     "???" ); // pad items with question marks.
    }
    /// <summary>
     /// Add one sub item at an indexed position to the ListViewItem
     /// </summary>
     /// <param name="lvi"> Parent item. The item must have been inserted to a ListView control</param>
    /// <param name="name"> Item name (index) of the item. A coulumn with such index must exist in the ListView control</param>
    /// <param name="text"> Display text </param>
     private void AddListViewSubItem(ListViewItem lvi, string name, string text)
    {
    ListViewItem.ListViewSubItem lvsi = new ListViewItem.ListViewSubItem();
    lvsi.Name = name;
    lvsi.Text = text;
    lvi.SubItems.Insert(lvi.ListView.Columns.IndexOfKey(lvsi.Name), lvsi);
    }
    /// <summary>
     /// Get a textual representation for the event class.
     /// </summary>
     /// <param name="evt">Event object</param>
     /// <returns>Classname</returns>
    private string GetEventClassName(TcEvent evt)
    {
    switch( (TcEventClass)evt.Class)
    {
     case TcEventClass.TCEVENTCLASS_ALARM:
    return "Alarm";
    case TcEventClass.TCEVENTCLASS_HINT:
    return "Hint";
    case TcEventClass.TCEVENTCLASS_INSTRUCTION:
    return "Instruction";
    case TcEventClass.TCEVENTCLASS_MAINTENANCE:
    return "Maintenance";
    case TcEventClass.TCEVENTCLASS_MESSAGE:
    return "Message";
    case TcEventClass.TCEVENTCLASS_PARAMERROR:
    return "Paramerror";
    case TcEventClass.TCEVENTCLASS_STATEINFO:
    return "State info";
    case TcEventClass.TCEVENTCLASS_WARNING:
    return "Warning";
    default:
    return "?";
    }
    }

  8. Zum Schluss lesen Sie die Liste der aktiven Alarme des TcEventLogger in Form1_Load.

    foreach (TcEvent evt in tcEventLogger.EnumLoggedEventsEx() )
        AddEvent(evt);

  9. Starten Sie ein SPS Programm um ein paar Events auszugeben.

Sprache / IDE | Beispielprogram auspacken
Visual Studio 2005 | Sample01.zip


Displaying Active Events in C#

Diese Beispiel bezieht sich auf

  • Visual Studio 2005
  • TcEventLogger 2.9.0.90 und höher ( TwinCAT 2.10. Build1244)

Bevor Sie mit dem Beispiel starten beachten Sie, dass der TcEventViewer ActiveX keine komplette Implementation einer Event HMI bietet, die einfach an ihre Applikation angefügt werden kann. Wenn Sie spezielle Anforderungen haben, die nicht mit dem standard TcEventViewer realisiert werden können, fahren Sie mit dem Beispiel zur Anzeige geloggter Events fort.

  • Diese Beispiel baut auf das Beispiel 'Displaying Logged Events in C#' auf.
  • To implement a program capable of displaying active events we will need to extend the previous sample with the folowing features:
    • Add events dynamically as they occur
    • Remove inactive events from the listview.
    • Associate an event with one entry in the listview.
  • If we use the Eventloggers callback methods to be notified about event state changes we need to make our application threadsafe. This will include defining some critical sections, using the lock directive on the one hand and access to the ListView on the other hand. Accessing Windows controls from different threads does not work in general. You can use delegate methods and the ListViews Invoke method for synchronization.
  • See the complete project for a very basic implementation of the points mentioned above.
    This implementation does not deal with event confirmations.

Sprache / IDE | Beispielprogram auspacken
Visual Studio 2005 | Sample02.zip


Einbinden von TcEventViewer-ActiveX-Control

  1. Erstellen Sie ein neues standard exe projekt.
  2. Rechtsklicken Sie in die Toolbox und wählen den Menüpunkt Components...

  3. Fügen Sie den TcEventViewer hinzu

  4. Der TcEventviewer befindet sich nun in der Toolbox. Fügen Sie ihn in die Form ein

Sprache / IDE | Beispielprogram auspacken
Visual Basic 6.0 | Sample01.zip (in Vorbereitung)


Aktive Alarme in einer benutzerdefinierten Listenansicht

Das folgende Beispiel zeigt, wie man eine benutzerdefinierte Listenansicht, die aktive Alarme in Visual Basic anzeigt, für den TcEventLogger erstellt.

Die folgenden Schritte müssen ausgeführt werden, um das Beispiel zu erstellen.

  1. Erstellen Sie ein Standard EXE Projekt mit einem Formular.
  2. Fügen Sie die Microsoft Standardsteuerelemente 6 in die Liste der Steuerelemente ein.
  3. Fügen Sie die Beckhoff TcEventLogger Bibliothek zu der Referenzliste hinzu.
  4. Fügen Sie ein Listenansicht ActiveX Steuerelement in das Formular ein.
  5. Benennen Sie die Listenansicht in lvwAlarm um.
  6. Kopieren Sie den folgenden Code in das Formular.
Option Explicit
Dim WithEvents objEventLogger As TcEventLog

'------------------------------------------------------
' this method is called when the form is loaded
'
Private Sub Form_Load()
  Set objEventLogger = New TcEventLog
  Call initListView
  Call DisplayActiveAlarms
End Sub

'------------------------------------------------------
' this method is called when a new alarm is issued
'
Private Sub objEventLogger_OnNewEvent(ByVal evtObj As Object)
  ' cast to TcEvent interface
  Dim objEvent As TcEvent
  Set objEvent = evtObj
  ' get the key
  Dim newKey As String
  newKey = GetKeyFromIDs(objEvent.SrcId, objEvent.Id)
  'get the Event Message Text
  Dim strMessage As String
  strMessage = objEvent.GetMsgString(1033)
  'add the Message to the listview
  Dim objListItem As ListItem
  Set objListItem = lvwAlarm.ListItems.Add(, newKey, strMessage & objEvent.Date)
End Sub

'------------------------------------------------------
' this method is called when a alarm is reset
'
Private Sub objEventLogger_OnResetEvent(ByVal evtObj As Object)
  ' cast to TcEvent interface
  Dim objEvent As TcEvent
  Set objEvent = evtObj
  ' get the key
  Dim newKey As String
  newKey = GetKeyFromIDs(objEvent.SrcId, objEvent.Id)
  'remove the event from the listview
  Call lvwAlarm.ListItems.Remove(newKey)
End Sub

'------------------------------------------------------
' initalize the list view
'
Sub initListView()
  lvwAlarm.View = lvwReport
  lvwAlarm.GridLines = True
  'init the Header
  Dim objColHdr As ColumnHeaders
  Set objColHdr = lvwAlarm.ColumnHeaders
  Debug.Assert Not objColHdr Is Nothing
  Call objColHdr.Clear
  Call objColHdr.Add(1, "Message", "Message", 5000)
End Sub

'------------------------------------------------------
' display all active alarms
'
Private Sub DisplayActiveAlarms()
 'clear the listview
 Call lvwAlarm.ListItems.Clear

 Debug.Assert Not objEventLogger Is Nothing

 Dim objEvent As TcEvent
 'get the number of active Events
 For Each objEvent In objEventLogger.EnumActiveEventsEx
  If (Not objEvent Is Nothing) Then
   'here we get one Event from the collection
   Dim strMessage As String
   'get the Event Message Text
   strMessage = objEvent.GetMsgString(1033)
   'get the key
   Dim newKey As String
   newKey = GetKeyFromIDs(objEvent.SrcId, objEvent.Id)
   'add the Message to the listview
   Dim objListItem As ListItem
   Set objListItem = lvwAlarm.ListItems.Add(, newKey, strMessage & objEvent.Date)
  End If
 Next
End Sub

'------------------------------------------------------
' create unique key from event group and event id
'
Public Function GetKeyFromIDs(ByVal SourceId As Long, ByVal EventId As Long) As String
  GetKeyFromIDs = SourceId & "-" & EventId
End Function

Beim Aufruf des Formulars wird eine Referenz zu dem einzigen EventLogger erzeugt, selbst dann wenn wir einen neuen Operator verwenden. Dann wird die Listenansicht initialisiert. Die Listenansicht enthält eine Spalte in der die Ereignismeldung in Englisch angezeigt wird. Die Methode DisplayActiveAlarms holt die Liste der aktiven Alarme vom EventLogger und zeigt sie anschließend an. Wenn ein neuer Alarm ausgegeben wird oder bestehende Alarme zurückgesetzt werden, fügt die Ereignisfunktion OnNewEvent Ereignisse in die Listenansicht ein und die Ereignisfunktion OnResetEvent entfernt Ereignisse aus der Listenansicht. Die Methode GetKeyFromIDs erzeugt einen einmaligen Schlüssel von der Ereignisgruppe und der Ereignis-ID.

Die benutzerdefinierte Ereignisansicht unterstützt nur Ereignisse, die nicht quittiert werden müssen. Um die benutzerdefinierte Ereignisansicht für quittierungspflichtige Alarme verwenden zu können, müssen die Ereignisse ITcEventLogEvents::OnSignalEvent und ITcEventLogEvents::OnConfirmEvent angelegt werden.

Sprache / IDE | Beispielprogram auspacken
Visual Basic 6.0 | Sample02.zip


Einbinden in CodeGear C++Builder 2009

Die Komponenten der EventLogger-Typbibliotheken werden importiert und einem neuen Package hinzugefügt. Das Package wird anschliessend in der ActiveX-Komponentenpalette installiert.

Systemvoraussetzungen

  • CodeGear C++Builder 2009;
  • Delphi and C++Builder 2009 Update 3;
  • Delphi and C++Builder 2009 Update 4 (Database Pack Update);
  • C++Builder 2009 Boost Update;
  • RAD Studio 2009 Hotfix 2 (dieser Hotfix behebt u.a. folgende Probleme beim Debuggen unter Windows 7: Assertion :... "(!SetThreadContext fehlgeschlagen"));
  • TwinCAT v2.11 oder höher;

Neues Package-Projekt erstellen

Erstellen Sie in CodeGear C++Builder 2009 ein neues Projekt vom Typ: "Package - C++Builder".

Speichern Sie das neue Projekt mit dem Menübefehl: Datei->Projekt speichern unter... unter einem neuen Namen z.B. TcEventLogPackage.cbproj.

Typbibliotheken importieren

Schritt 1: Im Menue rufen Sie den Befehl: Komponente -> Komponente importieren... auf.

Schritt 2: Wählen Sie die Option: Typbibliothek importieren aus und bestätigen Sie mit Weiter.

Schritt 3: In der Komponentenliste wählen Sie die erste EventLogger Komponente: Beckhoff TcEventConfig 1.0 Type Library aus und bestätigen Sie mit Weiter.

Schritt 4: Konfigurieren Sie als Palettenseite: ActiveX aus und bestätigen Sie mit Weiter.

Schritt 5: Im nächsten Dialog wählen Sie die Option: Unit dem Projekt TcEventLogPackage.cbproj hinzufügen und bestätigen Sie mit Fertig stellen.

Schritt 6: Wiederholen Sie die Schritte 1 bis 5 für alle anderen EventLogger-Komponenten:

  • Beckhoff TcEventFormatter 1.0 Type Library;
  • Beckhoff TcEventLogAdsProxy 1.0 Type Library;
  • Beckhoff TcEventLogger 1.0 Type Library;
  • Beckhoff TcEventViewer 1.0 Type Library;

Package installieren

Wählen Sie aus dem Kontextmenu den Befehl: Erstellen aus und übersetzen Sie das Package. Das Package muss fehlerfrei übersetzbar sein.

Als nächstes wählen Sie aus dem Kontextmenu den Befehl: Installieren aus und installieren Sie die Komponenten in der Komponentenpalettenseite (in unserem Fall unter ActiveX).

Die erfolgreiche Installation der Komponenten wird im folgenden Dialog bestätigt. Schliessen Sie den Dialog mit OK.

Speichern Sie die letzten Projektänderungen mit dem Befehl: Datei->Alles speichern. Schliessen Sie das Projekt mit dem Befehl: Datei->Alle schliessen. Die EventLogger-Komponenten können ab jetzt von der Komponentenpalette: ActiveX auf die Form gezogen werden.

Imports-Pfad zum globalen Include-Pfad hinzufügen

Fügen Sie den Imports-Pfad zum globalen Include-Pfad hinzu wenn beim Zugriff auf die neuen Komponenten die Headerdateien nicht gefunden werden können.

Dies muss normalerweise nur einmalig gemacht werden. Navigieren Sie hierfür zum Imports-Ordner in dem sich die Headerdateien der importierten Typbibliotheken befinden.

Wählen Sie die Option an: Add path to global include path und bestätigen Sie mit OK.


Konsolenanwendung - Geloggte Meldungen via DCOM-Schnittstelle

Systemvoraussetzungen:

  • CodeGear C++Builder 2009;
  • TwinCAT v2.11 B2228 oder höher;
  • Die Typbibiothek der TcEventLogger.exe muss importiert werden (TCEVENTLOGGERLib_TLB.h);

Das Beispiel baut eine DCOM-Verbindung zu einem Remote-EventLogger auf und zeigt in der Konsole alle dort geloggten EventLogger Meldungen.

#include <vcl.h>
#pragma hdrstop

#include <tchar.h>
#include <stdio.h>
#include <string.h>
#include <iostream.h>
#include <TCEVENTLOGGERLib_TLB.h>

//---------------------------------------------------------------------------
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
    // Create connection via DCOM
    ITcEventLogPtr	spTcEventLog;
    COSERVERINFO 	comServerInfo={0};
    // comServerInfo.pwszName = SysAllocString( L"172.17.60.234" );// ToDo: Configure the IP address if connecting to remote TwinCAT System
    comServerInfo.pwszName = SysAllocString( L"localhost" );
    long langID = 1033;// ToDo: Select language ID (e.g. english)
    MULTI_QI mQI={&IID_ITcEventLog, NULL, 0};
    HRESULT hr = ::CoCreateInstanceEx( CLSID_TcEventLog, NULL, CLSCTX_SERVER, &comServerInfo, 1, &mQI);
    if (SUCCEEDED(hr) && mQI.pItf  )
    {
        spTcEventLog = mQI.pItf;

        long nLoggedEvents = 0;
        long nActiveEvents = 0;
        hr = spTcEventLog->get_LoggedEvents(&nLoggedEvents);
        hr = spTcEventLog->get_ActiveEvents(&nActiveEvents);
        wprintf( L"Max. number of events: %d logged, %d active.\n", nLoggedEvents, nActiveEvents );

        ITcEnumEventsExPtr spEnumEvts;
        hr = spTcEventLog->EnumLoggedEventsEx(&spEnumEvts);// get collection of logged events
        if (SUCCEEDED(hr))
        {
            if (spEnumEvts->Count > 0)
            {
                for (long i = 0; i < spEnumEvts->Count; i++)
                {
                    ITcEventPtr spEvent;
                    hr = spEnumEvts->Item(i, &spEvent); // get event
                    if (SUCCEEDED(hr)) {

                        BSTR msgString = 0;
                        BSTR fmtProgId = 0;
                        BSTR srcName = 0;
                        DATE dtCreated = 0;
                        DATE dtConfirmed = 0;
                        DATE dtReset= 0;
                        long msCreated = 0;
                        long msConfirmed = 0;
                        long msReset = 0;

                        hr = spEvent->get_Date(&dtCreated);
                        hr = spEvent->get_DateConfirmed(&dtConfirmed);
                        hr = spEvent->get_DateReset(&dtReset);
                        hr = spEvent->get_Ms(&msCreated);
                        hr = spEvent->get_MsConfirmed(&msConfirmed);
                        hr = spEvent->get_MsReset(&msReset);

                        wprintf( L"Event number: %d, Id: %d, SrcId: %d, InvokeId: %d\n", i+1, spEvent->Id, spEvent->SrcId, spEvent->InvokeId );
                        wprintf( L"Class: %d, Priority: %d, Flags: 0x%X\n", spEvent->Class, spEvent->Priority, spEvent->Flags );
                        wprintf( L"State: 0x%X, MustConfirm: %d, UserData: %d\n", spEvent->State, spEvent->MustConfirm, spEvent->UserData );
                        wprintf( L"Date created: %s.%d\n", FormatDateTime( L"dddd, mmmm d, yyyy ' at ' hh:mm:ss", dtCreated ),	msCreated );
                        wprintf( L"Date confirmed: %s.%d\n", FormatDateTime( L"dddd, mmmm d, yyyy ' at ' hh:mm:ss", dtConfirmed ), msConfirmed );
                        wprintf( L"Date reset: %s.%d\n", FormatDateTime( L"dddd, mmmm d, yyyy ' at ' hh:mm:ss", dtReset ), msReset );

                        hr = spEvent->get_FmtProgId(&fmtProgId);
                        if (SUCCEEDED(hr)) {
                            wprintf( L"FmtProgId: \"%s\"\n", fmtProgId );
                            SysFreeString( fmtProgId );
                        }

                        hr = spEvent->get_SourceName( langID, &srcName );
                        if (SUCCEEDED(hr)) {
                            wprintf( L"SourceName: \"%s\"\n", srcName );
                            SysFreeString( srcName );
                        }

                        hr = spEvent->GetMsgString( langID, &msgString );
                        if (SUCCEEDED(hr)) {
                            wprintf( L"Message: \"%s\"\n\n", msgString );
                            SysFreeString( msgString );
                        }

                    }// if (SUCCEEDED(hr)), spEvent
                }// for (long i ...
            }// if (spEnumEvts->Count > 0)
        }// if (SUCCEEDED(hr)), spEnumEvts
    }// if (SUCCEEDED(hr)),  spTcEventLog

    SysFreeString(comServerInfo.pwszName);
    wprintf( L"Press ENTER to continue...\n" );
    _gettchar();
    return 0;
}

Sprache / IDE | Beispielprogram auspacken
CodeGear C++Builder 2009 | Sample01.zip


Konsolenanwendung - Geloggte Meldungen via ADS-Proxy-Schnittstelle

Systemvoraussetzungen:

  • CodeGear C++Builder 2009;
  • TwinCAT v2.11 B2228 oder höher;
  • Die Typbibiothek der TcEventLogger.exe muss importiert werden (TCEVENTLOGGERLib_TLB.h);
  • Die Typbibliothek der TcEventLogAdsProxy.dll muss importiert werden (TCEVENTLOGPROXYLib_TLB.h):

Das Beispiel baut eine ADS-Proxy-Verbindung zu einem Remote-EventLogger auf und zeigt in der Konsole alle dort geloggten EventLogger Meldungen.

#include <vcl.h>
#pragma hdrstop

#include <tchar.h>
#include <stdio.h>
#include <string.h>
#include <iostream.h>
#include <TCEVENTLOGGERLib_TLB.h>
#include <TCEVENTLOGPROXYLib_TLB.h>

//---------------------------------------------------------------------------
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
    // Connect via ADS
    // BSTR netID = SysAllocString( L"10.1.128.220.1.1" );// ToDo: Configure ams net id if connection to remote TwinCAT System
    BSTR netID = SysAllocString( L"" );
    long langID = 1033;
    ITcEventLogAdsProxyPtr spAdsProxy;
    HRESULT hr = spAdsProxy.CreateInstance(CLSID_TcEventLogAdsProxy);
    if (SUCCEEDED(hr))
    {
        hr = spAdsProxy->Connect( netID );// connect to the remote/local TwinCAT system
        if (SUCCEEDED(hr))
        {
            ITcEventLogPtr 	spTcEventLog;
            hr = spAdsProxy->QueryInterface( IID_ITcEventLog, (void**)&spTcEventLog);
            if (SUCCEEDED(hr))
            {
                long nLoggedEvents = 0;
                long nActiveEvents = 0;
                hr = spTcEventLog->get_LoggedEvents(&nLoggedEvents);
                hr = spTcEventLog->get_ActiveEvents(&nActiveEvents);
                wprintf( L"Max. number of events: %d logged, %d active.\n", nLoggedEvents, nActiveEvents );

                ITcEnumEventsExPtr spEnumEvts;
                hr = spTcEventLog->EnumLoggedEventsEx(&spEnumEvts);// get collection of logged events
                if (SUCCEEDED(hr))
                {
                    if (spEnumEvts->Count > 0)
                    {
                        for (long i = 0; i < spEnumEvts->Count; i++)
                        {
                            ITcEventPtr spEvent;
                            hr = spEnumEvts->Item(i, &spEvent); // get event
                            if (SUCCEEDED(hr))
                            {

                                BSTR msgString = 0;
                                BSTR fmtProgId = 0;
                                BSTR srcName = 0;
                                DATE dtCreated = 0;
                                DATE dtConfirmed = 0;
                                DATE dtReset= 0;
                                long msCreated = 0;
                                long msConfirmed = 0;
                                long msReset = 0;

                                hr = spEvent->get_Date(&dtCreated);
                                hr = spEvent->get_DateConfirmed(&dtConfirmed);
                                hr = spEvent->get_DateReset(&dtReset);
                                hr = spEvent->get_Ms(&msCreated);
                                hr = spEvent->get_MsConfirmed(&msConfirmed);
                                hr = spEvent->get_MsReset(&msReset);

                                wprintf( L"Event number: %d, Id: %d, SrcId: %d, InvokeId: %d\n", i+1, spEvent->Id, spEvent->SrcId, spEvent->InvokeId );
                                wprintf( L"Class: %d, Priority: %d, Flags: 0x%X\n", spEvent->Class, spEvent->Priority, spEvent->Flags );
                                wprintf( L"State: 0x%X, MustConfirm: %d, UserData: %d\n", spEvent->State, spEvent->MustConfirm, spEvent->UserData );
                                wprintf( L"Date created: %s.%d\n", FormatDateTime( L"dddd, mmmm d, yyyy ' at ' hh:mm:ss", dtCreated ),	msCreated );
                                wprintf( L"Date confirmed: %s.%d\n", FormatDateTime( L"dddd, mmmm d, yyyy ' at ' hh:mm:ss", dtConfirmed ), msConfirmed );
                                wprintf( L"Date reset: %s.%d\n", FormatDateTime( L"dddd, mmmm d, yyyy ' at ' hh:mm:ss", dtReset ), msReset );

                                hr = spEvent->get_FmtProgId(&fmtProgId);
                                if (SUCCEEDED(hr)) {
                                    wprintf( L"FmtProgId: \"%s\"\n", fmtProgId );
                                    SysFreeString( fmtProgId );
                                }

                                hr = spEvent->get_SourceName( langID, &srcName );
                                if (SUCCEEDED(hr)) {
                                    wprintf( L"SourceName: \"%s\"\n", srcName );
                                    SysFreeString( srcName );
                                }

                                hr = spEvent->GetMsgString( langID, &msgString );
                                if (SUCCEEDED(hr)) {
                                    wprintf( L"Message: \"%s\"\n\n", msgString );
                                    SysFreeString( msgString );
                                }
                            }// if (SUCCEEDED(hr)), spEvent
                        }// for (long i ...
                    }// if (spEnumEvts->Count > 0)
                }// if (SUCCEEDED(hr)), spEnumEvts
            }//if (SUCCEEDED(hr)), spTcEventLog

            spAdsProxy->Disconnect();

        }//if (SUCCEEDED(hr)), Connect(...
    }// if (SUCCEEDED(hr)), CreateInstance(..

    SysFreeString(netID);
    wprintf( L"Press ENTER to continue...\n" );
    _gettchar();
    return 0;
}

Sprache / IDE | Beispielprogram auspacken
CodeGear C++Builder 2009 | Sample02.zip


Aktive Alarme in einer benutzerdefinierten Listenansicht

Systemvoraussetzungen:

  • CodeGear C++Builder 2009;
  • TwinCAT v2.11 B2228 oder höher;
  • Die Typbibiothek der TcEventLogger.exe muss importiert werden (TCEVENTLOGGERLib_OCX.h);

Das Beispiel zeigt die aktiven Alarme in einer benutzerdefinierten C++Builder Listenansicht (TListView-Control).

Folgende Schritte müssen ausgeführt werden, um das Beispiel zu erstellen:

  1. Erstellen Sie eine neue VCL-Formularanwendung.
  2. Ziehen Sie von der Komponentenpalette die TTcEventLog und TStatusBar-ActiveX-Komponenten auf die Form.
  3. Implementieren Sie die Methoden: FormCreate(), FormClose(). In FormCreate() wird die Verbindung zum EventLogger konfiguriert/ hergestellt und in FormClose() getrennt;
  4. Implementieren Sie die Ereignisroutinen: OnNewEvent, OnResetEvent. Das Beispielprojekt unterstützt dadurch Alarme die nicht quittiert werden müssen. Um Ereignisse für quittierungspflichtige Alarme empfangen zu können müssen Sie weitere Ereignisroutinen implementieren: OnSignalEvent() und OnConfirmEvent();
  5. Implementieren Sie die Ereignisroutine OnShutdown(). Diese Routine wird aufgerufen wenn die Instanz des Eventloggers (z.B. beim Herunterfahren des Systems) komplett entladen wird;
  6. Implementieren Sie die Hilfsmethoden: AddNewEvent() und DisplayActiveAlarms(). Diese Methoden werden benutzt um die aktiven Meldungen zu lesen und in der Liste anzuzeigen;
  7. Implementieren Sie die Hilfsmethode: GetEventPosByID(). Diese Methode sucht in der Listenansicht nach einer bestimmten Meldung anhand der SourceId und ID und liefert beim Erfolg die Zeilennummer (itemIndex). Mit Hilfe der Zeilennummer kann die Meldung aus der Liste entfernt werden;

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "TCEVENTLOGGERLib_OCX"
#pragma resource "*.dfm"
TForm2 *Form2;

//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
}

const char ColH[6][10] = { "SrcId", "Id", "Class", "Source", "Date/Time", "Message" };

//---------------------------------------------------------------------------
// This method is called when the form is loaded
void __fastcall TForm2::FormCreate(TObject *Sender)
{
    bool bRemote = true;
    if (bRemote) {
        TcEventLog1->ConnectKind = ckRemote;
        TcEventLog1->RemoteMachineName = "172.17.60.234";
        TcEventLog1->AutoConnect = true;
    }
    langID = 1033;// language id

    // initialize ListView
    ListView1->ViewStyle = vsReport;
    ListView1->GridLines = true;
    ListView1->RowSelect = true;

    // init/add column header
    ListView1->Columns->Clear();
    for (int i = 0; i < 6; i++)
    {
        TListColumn *pCol = ListView1->Columns->Add();
        if (pCol)
        {
            pCol->Caption = ColH[i];
            pCol->AutoSize = true;
        }
    }

    long v = 0, r = 0, b = 0;
    TcEventLog1->GetVersion(&v, &r, &b);

    StatusBar1->SimplePanel = true;
    StatusBar1->SimpleText = Format( "Machine name: \"%s\", version: %d.%d.%d", ARRAYOFCONST((TcEventLog1->RemoteMachineName, v, r, b)));

    DisplayActiveAlarms();
}
//---------------------------------------------------------------------------
// Display all active alarms
void TForm2::DisplayActiveAlarms()
{
    // Clear the ListView
    ListView1->Items->Clear();
    // Get collection of active events
    ITcEnumEventsExPtr spEnumEvts = TcEventLog1->EnumActiveEventsEx();
    if (spEnumEvts)
    {
        if (spEnumEvts->Count > 0)
        {
            for (long i = 0; i < spEnumEvts->Count; i++)
            {
                // Here we get one event from the collection
                ITcEventPtr spEvent;
                HRESULT hr = spEnumEvts->Item(i, &spEvent);
                if (SUCCEEDED(hr))
                {
                    // Add event to the ListView
                    AddNewEvent( spEvent );
                }
            }// for (long i = 0 ...
        }// if (spEnumEvts->Count ...
    }// if (SUCCEEDED(hr))
}
//---------------------------------------------------------------------------
// This method adds new event to the list
void TForm2::AddNewEvent( ITcEventPtr spEvent )
{
    TListItem *pItem = ListView1->Items->Add();
    if (pItem) {
            // Save Id to Data property for later use
        pItem->Data = (void*)spEvent->Id;

        // Get event SrcId
        pItem->Caption = spEvent->SrcId;

        // Get event Id
        pItem->SubItems->Add( spEvent->Id );

        // Get event Class
        pItem->SubItems->Add( spEvent->Class );

        // Get source SourceName
        BSTR srcName = 0;
        HRESULT hr = spEvent->get_SourceName( langID, &srcName );
        if (SUCCEEDED(hr)) {
            pItem->SubItems->Add( srcName );
            SysFreeString( srcName );
        }

        // Get event creation date/time
        DATE dtCreated = 0;
        hr = spEvent->get_Date(&dtCreated);
        if (SUCCEEDED(hr)) {
            pItem->SubItems->Add( FormatDateTime( L"dddd, mmmm d, yyyy ' at ' hh:mm:ss", dtCreated ) );
        }

        // Get the event message text
        BSTR msgString = 0;
        hr = spEvent->GetMsgString( langID, &msgString );
        if (SUCCEEDED(hr)) {
            pItem->SubItems->Add( msgString );
            SysFreeString( msgString );
        }
    }// if (pItem) ...
}
//---------------------------------------------------------------------------
// This method returns ListView event index
// Return value: true => Success, false => event entry not found in the list
bool TForm2::GetEventPosByID( long SrcId, long Id, int &itemIndex )
{
    itemIndex = 0;
    TListItem *pItem;
    int startIndex = 0;
    do{
        // search for the event in the list (by SrcId + Id)
        pItem = ListView1->FindCaption(startIndex, SrcId, true, true, true );
        if (pItem) {
            startIndex = pItem->Index + 1;
            if ( Id == (long)pItem->Data )
            {
                itemIndex = pItem->Index;
                return true;
            }
        }
    }while (pItem);
    return false;
}
//---------------------------------------------------------------------------
// This method is called when a new alarm is issued
void __fastcall TForm2::TcEventLog1NewEvent(TObject *Sender, LPDISPATCH srcObj)
{
    AddNewEvent( srcObj );
}
//---------------------------------------------------------------------------
// This method is called when a alarm is reset
void __fastcall TForm2::TcEventLog1ResetEvent(TObject *Sender, LPDISPATCH srcObj)
{
    ITcEventPtr spEvent = srcObj;
    int itemIndex = 0;
    if( GetEventPosByID( spEvent->SrcId, spEvent->Id, itemIndex ) )
        ListView1->Items->Delete(itemIndex);//removes event from the list
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
    TcEventLog1->Disconnect();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::TcEventLog1Shutdown(TObject *Sender, Variant shutdownParm)
{
    TcEventLog1->Disconnect();
}

Sprache / IDE | Beispielprogram auspacken
CodeGear C++Builder 2009 | Sample03.zip


Einbinden von TcEventViewer-ActiveX-Control

Systemvoraussetzungen:

  • CodeGear C++Builder 2009;
  • TwinCAT v2.11 B2228 oder höher;
  • Die Typbibiothek der TcEventViewer.dll muss importiert werden (TCEVENTVIEWERLib_OCX);

Im folgenden Beispiel wird das TcEventViewer-ActiveX-Control benutzt um aktive Alarme auf einem TwinCAT System anzuzeigen.

Folgende Schritte müssen ausgeführt werden, um das Beispiel zu erstellen:

  1. Erstellen Sie eine neue VCL-Formularanwendung;
  2. Ziehen Sie von der Komponentenpalette die TTcEventView auf die Form;
  3. Implementieren Sie die Methoden: FormCreate(), FormClose();

In FormCreate() wird die Verbindung zum EventLogger konfiguriert/ hergestellt und in FormClose() getrennt. Falls Sie auf einen Remote-PC zugreifen wollen dann muss die Netzwerkadresse des TwinCAT Systems (AmsNetId) passend konfiguriert werden.

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "TCEVENTVIEWERLib_OCX"
#pragma resource "*.dfm"
TForm2 *Form2;

//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
    address = 0;
    bRemote = false;
}

//---------------------------------------------------------------------------
// This method is called when the form is loaded
void __fastcall TForm2::FormCreate(TObject *Sender)
{
    if (bRemote) {
        address = ::SysAllocString(L"ADS://10.1.128.220.1.1");
        TcEventView1->AddConnection(address);
    }

    TcEventView1->ShowActiveEvents();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
    if (bRemote) {
        TcEventView1->DeleteConnection(address);
        if (address) {
            ::SysFreeString(address);
            address = 0;
        }
    }
}
Sprache / IDE | Beispielprogram auspacken
CodeGear C++Builder 2009 | Sample04.zip


ITcEventView::AlarmTextColor

TwinCAT EventLogger - TcEventLogger

ITcEventView::BackgroundColor

Diese Eigenschaft stellt die Hintergrundfarbe des TcEventViewers ein.

Property get

HRESULT get_BackgroundColor([out, retval] OLE_COLOR* pVal);

Parameters

pVal

[out, retval] Pointer auf eine Variable, die den aktuellen Status erhält.

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property set

HRESULT put_BackgroundColor([in] OLE_COLOR newVal);

Parameters

newVal
[in] Eine Variable, die den neuen Status enthält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
' display alarms with red text color
TcEventView1.BackgroundColor = RGB(255, 0, 0)
End Sub


TwinCAT EventLogger - TcEventLogger

ITcEventView::ColWidthMsg

Diese Eigenschaft setzt oder gibt die Weite der Spalte Event Meldung zurück.

Property get

HRESULT get_ColWidthMsg([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, welche die Weite der Spalte Event Meldung in der Listenansicht erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property let

HRESULT put_ColWidthMsg[in] long newVal);

Parameter

newVal
[in] Variable, welche die Weite der Spalte Event Meldung in der Listenansicht setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.ColWidthMsg = 200
End Sub

Anmerkungen


ITcEventView::DisplayClass

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisableContextMenu

Diese Eigenschaft aktiviert/deaktiviert das Context Menü des TcEventView.

Property get

HRESULT get_DisableContextMenu([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, die den aktuellen Status erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property set

HRESULT put_DisableContextMenu([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Eine Variable, die den neuen Status enthält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisableContextMenu = True
End Sub


ITcEventView::ColWidthEventId

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisableScrollbars

Diese Eigenschaft aktiviert/deaktiviert die Scrollbars für das Control.

Property get

HRESULT get_DisableScrollbars([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, die den aktuellen Status erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property set

HRESULT put_DisableScrollbars([in] long newVal);

Parameters

newVal

[in] Eine Variable, die den neuen Status enthält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisableScrollbars = true
End Sub


ITcEventView::DisplayDate

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplayTitlebar

Diese Eigenschaft zeigt oder versteckt den 'Columnheader' des Controls.

Property get

HRESULT get_DisplayTitlebar([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, die den aktuellen Status erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property set

HRESULT put_DisplayTitlebar([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Eine Variable, die den aktuellen Status setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplayTitlebar = True
End Sub


ITcEventView::DisplayDate

TwinCAT EventLogger - TcEventLogger

ITcEventView::DisplayUserComment

Diese Eigenschaft aktiviert/deaktiviert die Spalte 'UserComment'.

Property get

HRESULT get_DisplayUserComment([out, retval] VARIANT_BOOL*pVal);

Parameter

pVal

[out, retval] Pointer zu einer Variable, die den aktuellen Wert erhält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property set

HRESULT put_DisplayUserComment([in] VARIANT_BOOL newVal);

Parameter

newVal

[in] Eine Variable, die den neuen Status setzt.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.DisplayUserComment = True
End Sub


ITcEventView::GetSelectedEvent

TwinCAT EventLogger - TcEventLogger

ITcEventView::getExtendedInfo

Diese Methode liefert erweiterte Informationen zürück, die mit dem gewählten Event assoziert sind.

HRESULT getExtendedInfo([in] long item, [out,retval] BSTR* message);

Parameter

item

[in] Index des Event Items in dem ListView Control.

message

[out, retval] Zeiger auf eine Variable, die die erweiterten Informationen enthält, die mit diesem Event verknüpft sind.

Return Values

S_OK

Funktion wurde erfolgreich aufgerufen.

S_FALSE

Funktion wurde erfolgreich aufgerufen, aber keine erweiterten Information für das gewählte Event gefunden.

E_POINTER

Message war kein gültiger Pointer.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1
String extInfo = TcEventView1.getExtendedInfo(0)


ITcEventView::DeleteConnection

TwinCAT EventLogger - TcEventLogger

ITcEventView::ModifyLVStyle

Diese Methode leitet ihre Parameter an die Cwindow::ModifyStyle des ListView Controls weiter. Weitere Informatinen finden Sie in der MSDN Library.

HRESULT ModifyLVStyle([in]long dwRemove, [in]long dwAdd);

Parameters

dwRemove

[in] Window flags, die entfernt werden sollen.

dwAdd

[in] Window flags, die hinzugefügt werden sollen.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen


ITcEventView::ResetEvent

TwinCAT EventLogger - TcEventLogger

ITcEventView::putFont

Methode zum ändern der Schriftart für die angezeigten Events.

HRESULT putFont(BSTR faceName, long size, unsigned short flags);

Parameter

faceName

[in] Name der Schriftart.

size

[in] Grösse der Schrift.

flags

[in] Verknüpfung von einem oder mehreren der folgenden Werte:

BOLD 0x1
ITALIC 0x2
UNDERLINE 0x4
STRIKEOUT 0x8

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Remarks

Die putFont Methode entspricht nicht den Standard COM Interfaces. Unter Sprachen wie Visual Basic ist sie nicht benutzbar.


ITcEventView::DisableMenuItems

TwinCAT EventLogger - TcEventLogger

ITcEventView::SortMode

Diese Eigenschaft stellt das Sortierverhalten ein. Das geschieht auch beim Klicken in den Columnheader. Wenn der Columnheader deaktiviert ist, oder das TcEventView mit einem bestimmten Sortierverhalten initialisiert werden soll, kann diese Methode benutzt werden.

Property get

HRESULT get_SortMode([out, retval] long *pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, die das aktuelle Sortierverhalten enthält. Sortiermodi sind in dem Enum TC_SORTMODE definiert.

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property set

HRESULT put_SortMode([in] long newVal);

Parameters

newVal

[in] Eine Variable, die den neuen Sortiermodus enthält. Sortiermodi sind in dem Enum TC_SORTMODE definiert.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.SortMode = SORT_BY_EVT_ID_DESCENDING
End Sub


ITcEventView::ColWidthClass

TwinCAT EventLogger - TcEventLogger

ITcEventView::UseExternalLanguageResource

Diese Eigenschaft setzt, ob extern definierte oder die standard String Tables genutzt werden. Der TcEventViewer wählt die Sprach Ressourcen entsprechend der aktuellen LCID des Threads aus. Es werden zur Zeit die Sprachen Deutsch, English(U.S.), Französisch, Italienisch und Spanisch unterstützt. Wenn das HMI in einer anderen Sprache angezeigt werden soll, setzen Sie diese Eigenschaft auf true. Der EventViewer wird dann in dem Verzeichnis '%TwinCat/Resource' nach der Datei 'TcEventViewLangRes.xml' suchen. In dieser Datei können beliebig andere Sprachen definiert werden. Diese Beispiel Konfiguration zeigt, wie die XML Ressource aussehen muss.

Property get

HRESULT get_UseExternalLanguageResource([out, retval] long* pVal);

Parameter

pVal

[out, retval] Pointer auf eine Variable, die den aktuellen Status erhält.

S_OK

Funktion wurde erfolgreich aufgerufen.

E_POINTER

pVal war kein gültiger Pointer.

Property set

HRESULT put_UseExternalLanguageResource([in] long newVal);

Parameters

newVal

[in] Eine Variable, die den neuen Status enthält.

Rückgabe Werte

S_OK

Funktion wurde erfolgreich aufgerufen.

Visual Basic Beispielcode

Option Explicit
' add the Beckhoff TcEvent View Library to the components
' place a TcEventView on the form, and assign the name TcEventView1

Private Sub Form_Load()
TcEventView1.UseExternalLanguageResource = true
End Sub