Erstellung von und Umgang mit TwinCAT Measurement-Projekten

Das TwinCAT Automation Interface stellt Methoden und Eigenschaften zur Verfügung, um TwinCAT Measurement-Projekte zu erzeugen und darauf zuzugreifen. Im folgenden Kapitel wird beschrieben, wie einige Grundaufgaben mit solch einem TwinCAT-Projekt gelöst werden können und umfasst Informationen zu folgenden Themen:

Anforderungen

Die Integration von TwinCAT Measurement-Projekten über das Automation Interface ist ab TwinCAT 3.1 Build 4013 möglich.

Ein Verweis auf die folgenden COM-Schnittstellen ist als Vorbedingung für die Verwendung der Scope AI Funktionalitäten erforderlich:

Erstellung von und Umgang mit TwinCAT Measurement-Projekten 1:

Erstellung eines TwinCAT Measurement-Projekts

TwinCAT Measurement ist ein globaler "Container" der eine oder mehrere Measurement-Projekte hosten kann, z.B. eine TwinCAT Scope-Konfiguration. Ähnlich wie eine reguläre TwinCAT-Konfiguration wird jedes Projekt zu allererst mit Hilfe einer Template-Datei beschrieben. Diese Template-Datei wird beim Hinzufügen eines neuen Projekts zur Solution verwendet, was mit Hilfe eines Aufrufs der AddFromTemplate()-Methode aus dem Visual Studio DTE-Objekt vorgenommen werden kann. Beachten Sie, dass diese Vorgehensweise beim Hinzufügen eines regulären TwinCAT-Projekts die gleiche ist. Der nachfolgende Code-Ausschnitt setzt voraus, dass Sie bereits eine DTE-Instanz erworben und eine Visual Studio Solution erzeugt haben, wie in unserem Artikel über Zugriff auf TwinCAT-Konfigurationen gezeigt. Ein Verweis auf die DTE-Instanz wird im Objekt "dte" gespeichert.

Code-Ausschnitt (C#):

EnvDTE.Project scopeProject = dte.Solution.AddFromTemplate(template, destination, name);

[template]: Die standardmäßigen Template-Dateien sind unter C:\TwinCAT\Functions\TE130X-Scope-View\Templates\Projects\ gespeichert und haben den Dateityp "tcmproj".

[destination]: Pfad, wo die neue Konfiguration auf der Festplatte gespeichert werden soll.

[name]: Name für die neue Konfiguration, wie sie in TwinCAT XAE angezeigt werden soll.

Erstellung einer TwinCAT Scope-Konfiguration

Ein TwinCAT Scope-Projekt steht für eine Aufzeichnungskonfiguration. Das bedeutet, dass alle in das Projekt eingefügten Elemente den gleichen Aufzeichnungseinstellungen unterliegen. Sie können ein Scope-Projekt über das Automation Interface hinzufügen, indem Sie, wie oben beschrieben, das entsprechende "TwinCAT Scope Project"-Template beim Hinzufügen eines Projekts mithilfe der AddFromTemplate()-Methode spezifizieren.

Erstellung von, Zugriff auf und Umgang mit Diagrammen

In einer Scope-Konfiguration können mehrere Diagramme parallel bestehen. Um einem bestehenden Scope-Projekt Diagramme hinzuzufügen, verwenden Sie einfach die CreateChild()-Methode von der IMeasurementScope-Schnittstelle. Der folgende Code-Ausschnitt setzt voraus, dass bereits ein TwinCAT Measurement-Projekt erstellt wurde und dass ein Verweis auf dieses Projekt im Objekt "scopeProject" gespeichert ist.

Code-Ausschnitt (C#):

((IMeasurementScope)scopeProject.ProjectItems.Item(1).Object).ShowControl();
EnvDTE.ProjectItem newChart;
((IMeasurementScope)scopeProject.ProjectItems.Item(1).Object).CreateChild(out newChart);
IMeasurementScope newChartObj = (IMeasurementScope)newChart.Object;
newChartObj.ChangeName("NC Chart");

Das Objekt "newChartObj" speichert nun einen Verweis auf das neu hinzugefügte Diagramm. Beachten Sie, dass Sie zu diesem Zeitpunkt weiterhin das ursprüngliche Objekt "newChart" für spätere Zwecke, z.B. Einstellen der Diagrammeigenschaften, benötigen.

In TwinCAT XAE werden die Diagrammeigenschaften über das Visual Studio-Eigenschaftenfenster festgelegt. Das Objekt "newChart" ermöglicht den Zugriff auf diese Eigenschaften über dessen Auflistung "Properties". Der folgende Code-Ausschnitt läuft durch alle Eigenschaften eines Diagramms und setzt die Eigenschaft "StackedYAxis" auf "true".

Code-Ausschnitt (C#):

foreach (EnvDTE.Property prop in newChart.Properties)
{
If (prop.Name = "StackedYAxis")
prop.Value = true;
}

Erstellung von, Zugriff auf und Umgang mit Achsen

Der folgende Code-Ausschnitt zeigt, wie Achsen hinzugefügt werden können.

Code Snippet (C#):

EnvDTE.ProjectItem newAxis;
newChartObj.CreateChild(out newAxis);
IMeasurementScope newAxisObj = (IMeasurementScope)newAxis.Object;
newAxisObj.ChangeName(“Axis 1”);

Erstellung von, Zugriff auf und Umgang mit Kanälen

Ein Scope-Kanal beschreibt eine Verbindung zu einem Laufzeitsymbol, z.B. einer SPS-Variable. Um Kanäle über das Automation Interface hinzuzufügen, können Sie die CreateChild()-Methode von der IMeasurementScope-Schnittstelle verwenden.

Code-Ausschnitt (C#):

EnvDTE.ProjectItem newChannel;
newAxisObj.CreateChild(out newChannel);
IMeasurementScope newChannelObj = (IMeasurementScope)newChannel.Object;
newChannelObj.ChangeName("Signals.Rectangle");

Das Objekt "newChannelObj" speichert nun einen Verweis auf den neu hinzugefügten Kanal. Beachten Sie, dass Sie zu diesem Zeitpunkt weiterhin das ursprüngliche Objekt "newChannel" für spätere Zwecke, z.B. Einstellen der Kanaleigenschaften, benötigen.

In TwinCAT XAE werden die Kanaleigenschaften über das Visual Studio-Eigenschaftenfenster festgelegt. Das Objekt "newChannel" ermöglicht den Zugriff auf diese Eigenschaften über dessen Auflistung "Properties". Der folgende Code-Ausschnitt läuft durch alle Eigenschaften eines Kanals und legt mehrere Eigenschaften fest.

Code-Ausschnitt (C#):

foreach (EnvDTE.Property prop in newChannel.Properties)
{
switch (prop.Name)
{
case "TargetPorts":
prop.Value = "851";
break;

case "Symbolbased":
prop.Value = true;
break;

case "SymbolDataType":
prop.Value = TwinCAT.Scope2.Communications.Scope2DataType.BIT;
break;

case "SymbolName":
prop.Value = "MAIN.bSignal";
break;

case "SampleState":
prop.Value = 1;
break;

case "LineWidth":
prop.Value = 3;
}
}

Wie Sie sehen können, definiert die Aufzählung Scope2DataType mehrere Datentypen, die bei der Konfiguration eines Kanals unterstützt werden. Bei der Erstellung dieses Dokuments, ist diese Aufzählung folgendermaßen definiert:

Code-Ausschnitt (C#):

public enum Scope2DataType
{
VOID = 0,
BIT = 1,
INT16 = 2,
INT32 = 3,
INT64 = 4,
INT8 = 5,
REAL32 = 6,
REAL64 = 7,
UINT16 = 8,
UINT32 = 9,
UINT64 = 10,
UINT8 = 11,
BIT_ARRAY_8 = 12,
}

Bitte verwenden Sie einen DLL-Explorer (z.B. Visual Studio) für eine jüngere und aktuellere Liste.

Aufzeichnungen starten und stoppen

Zum Starten/Stoppen einer konfigurierten Scope-Aufzeichnung können die entsprechenden Methoden der IMeasurementScope-Schnittstelle verwendet werden:

Code-Ausschnitt (C#):

((IMeasurementScope)scopeProject.ProjectItems.Item(1).Object).StartRecord()
((IMeasurementScope)scopeProject.ProjectItems.Item(1).Object).StopRecord();