C++-Beispiele

Es stehen zahlreiche Beispiele zur Verfügung - weitere Beispiele werden folgen.

Dieses Bild zeigt einen Überblick in grafischer Form und legt dabei den Schwerpunkt auf die Interaktionsmöglichkeiten eines C++-Moduls.

C++-Beispiele 1:

Darüber hinaus ist hier eine Tabelle mit kurzen Beschreibungen der Beispiele.

Nummer

Titel

Beschreibung

01

Beispiel01: Zyklisch mit IO-Modul

Dieser Artikel beschreibt die Implementierung eines TC3 C++-Moduls, das ein mit physikalischem IO gemapptes IO-Modul verwendet. Dieses Beispiel beschreibt den Schnellstart zwecks Erstellung eines C++-Moduls, das einen Zähler bei jedem Zyklus inkrementiert und den Zähler dem logischen Ausgang „Value“ im Datenbereich zuweist.
Der Datenbereich kann dem physikalischen IO oder einem anderen logischen Eingang einer anderen Modulinstanz zugewiesen werden.

02

Beispiel02: Zyklisch mit IO Task

Beschreibt die Flexibilität von C++-Code bei der Arbeit mit IOs, welche an der Task konfiguriert sind. Dank dieser Herangehensweise kann ein abschließend kompiliertes C++-Modul weit flexibler auf verschiedene, mit der IO Task verbundene IOs einwirken. Eine Anwendung könnte darin bestehen, zyklische analoge Eingangskanäle zu überprüfen, wobei die Anzahl Eingangskanäle von einem Projekt zum anderen unterschiedlich sein kann.

03

Beispiel03: ADS Server Client

Beschreibt den Entwurf und die Implementierung einer eigenen ADS-Schnittstelle in einem C++-Modul.
Das Beispiel enthält zwei Teile:

  • In TC3-C++ implementierter ADS Server mit benutzerspezifischer ADS-Schnittstelle,
  • in C# implementierte ADS Client UI, die benutzerspezifische ADS-Meldungen an den ADS-Server sendet.

05

Beispiel05: CoE Zugriff über ADS

Zeigt, wie über ADS auf CoE Register von EtherCAT-Geräten zugegriffen werden kann.

06

Beispiel06: ADS C#-Client lädt ADS-Symbole hoch

Zeigt, wie über die ADS-Schnittstelle auf Symbole in einem ADS Server zugegriffen werden kann. C# ADS Client tritt in Verbindung mit einem in SPS/ C++ / Matlab implementierten Modul. Hochladen der verfügbaren Symbolinformation und Lese-/Schreiben-Abonnieren für Prozesswerte.

07

Beispiel07: Empfang von ADS Notifications

Beschreibt die Implementierung eines TC3 C++-Moduls, das ADS Notifications bezüglich Datenänderungen auf anderen Modulen empfängt.

08

Beispiel08: Anbieten von ADS-RPC

Beschreibt die Implementierung von Methoden, welche per ADS über die Task aufrufbar sind.

10

Beispiel10: Modulkommunikation: Verwendung von Datenzeigern

Beschreibt die Interaktion zwischen zwei C++-Modulen mit einem direkten Zeiger (DataPointer). Die beiden Module müssen auf demselben CPU-Kern im selben Echtzeitkontext ausgeführt werden.

11

Beispiel11: Modulkommunikation: SPS-Modul ruft eine Methode eines C-Moduls auf

Dieses Beispiel beinhaltet zwei Teile:

  • Ein C++-Modul, das als Zustandsmaschine fungiert, die eine Schnittstelle mit Methoden zum Starten/Stoppen, aber auch zum Setzen/Erhalten der Zustandsmaschine zur Verfügung stellt.
  • Zweites SPS-Modul um mit erstem Modul zu interagieren, indem Methoden vom C++-Modul aufgerufen werden.

11a

Beispiel11a: Modulkommunikation: C-Modul führt eine Methode in C-Modul an

Dieses Beispiel beinhaltet zwei Klassen in einem Treiber (kann auch zwischen zwei Treibern gemacht werden).

  • Ein Modul, das eine Berechnungsmethode bereitstellt. Der Zugriff ist durch eine CriticalSection geschützt.
  • Zweites Modul, das als Aufrufer agiert, um die Methode im anderen Modul zu verwenden.

12

Beispiel12: Modulkommunikation: Verwendet IO Mapping

  • Beschreibt, wie zwei Module über das Mapping von Symbolen des Datenbereichs verschiedener Module untereinander interagieren können. Die beiden Module können auf demselben oder auf verschiedenen CPU-Kernen ausgeführt werden.

13

Beispiel13: Modulkommunikation: C-Modul ruft SPS-Methoden auf

  • Beschreibt, wie ein TwinCAT C++-Modul per TcCOM Interface Methoden eines Funktionsbausteins der SPS aufruft.

19

Beispiel19: Synchroner Dateizugriff

Beschreibt, wie die File-IO-Funktionalität bei einem C++-Modul auf synchrone Art und Weise verwendet werden kann.
Das Beispiel schreibt Prozesswerte in eine Datei. Das Beschreiben der Datei wird von einem deterministischen Zyklus veranlasst - die Ausführung von File IO ist entkoppelt (asynchron), d. h.: Der deterministische Zyklus läuft weiter und wird nicht durch das Schreiben in der Datei behindert. Der Status der Routine für entkoppeltes Schreiben in der Datei kann überprüft werden.

20

Beispiel20: FileIO-Write

Beschreibt, wie die File-IO-Funktionalität bei C++-Modul verwendet werden kann.
Das Beispiel schreibt Prozesswerte in eine Datei. Das Beschreiben der Datei wird von einem deterministischen Zyklus veranlasst - die Ausführung von File IO ist entkoppelt (asynchron), d. h.: Der deterministische Zyklus läuft weiter und wird nicht durch das Schreiben in der Datei behindert. Der Status der Routine für entkoppeltes Schreiben in der Datei kann überprüft werden.

20a

Beispiel20a: FileIO-Cyclic Read / Write

Ist ein umfangreicheres Beispiel als S20 und S19. Es beschreibt zyklischen Lese- und/oder Schreibzugriff auf Dateien von einem TC3-C++-Modul aus.

22

Beispiel22: Automation Device Driver (ADD): Zugang DPRAM

Beschreibt, wie der TwinCAT Automation Device Driver (ADD) für den Zugriff auf die DPRAM zu schreiben ist.

23

Beispiel23: Strukturierte Ausnahmebehandlung (SEH)

Beschreibt die Verwendung von Structed Exception Handling (SEH) anhand von fünf Varianten.

24

Beispiel24: Semaphoren

Beschreibt die Verwendung von Semaphoren.

25

Beispiel25: Statische Bibliothek

Beschreibt, wie die in einem anderen TC3 C++-Modul enthaltene TC3 C++ statische Bibliothek verwendet werden kann.

26

Beispiel26: Ausführungsreihenfolge in einer Task

Beschreibt die Bestimmung der Taskausführungsreihenfolge, wenn einer Task mehr als ein Modul zugeordnet ist.

30

Beispiel30: Zeitmessung

Beschreibt die Messung der TC3 C++-Zyklus- oder Ausführungszeit.

31

Beispiel31: Funktionsbaustein TON in TwinCAT3 C++

Beschreibt die Implementierung eines Verhaltens in C++ das vergleichbar mit einem TON Funktionsbaustein von SPS / 61131 ist.

37

Beispiel37: Daten archivieren

Beschreibt das Laden und Speichern des Zustands eines Objekts während der Initialisierung und Deinitialisierung.

TcCOM

TcCOM Beispiele

Mehrere Beispiele die die Modulkommunikation zwischen PLC und C++ verdeutlichen.