TcTimer (CE) und TwinCAT IO

 

Zielplattform

Die TcTimer Funktionalität ist auf den CE basierenden Beckhoff Hardwaregeräten verfügbar (wie CX1000 / CX1020 / CX9000 / Ethernetpanels/ IPCs...)

PDF Überblick

Funktionaliät

Der TcTimer stellt einen deterministischen Timer dar, der die Ausführung z.B. eines kundenspezifischen C++ Codes erlaubt, anstatt die Logik innerhalb der IEC 61131-3 SPS Sprache zu implementieren.

Der Basis TcTimer ist ab 100 µs skalierbar und leitet sich vom höchsten CE Prioritätslevel ab. Das TwinCAT R3IO-API bietet einen Direktzugriff über Pointer auf das I/O Image einer TwinCAT IO Task.
Die erforderliche TwinCAT IO Task kann per Remote mit dem TwinCAT System Manager konfiguriert werden. Dieser erleichtert das Scannen der IOs auf dem verbundenen Feldbus und mappt die physikalischen IOs mit den logischen IOs der IO Task.

Datenkonsistenz: Nach dem Lesen der Eingangsdaten von der IO Task, Berechnung und Bereitstellung der neuen Daten im Ausgangsimage kann der C++ Code den Datenaustausch zwischen der IO Task und den gemappten physikalischen IOs veranlassen:

Als ein Ergebnis wird die  Datenkonsistenz vom logischen C++ Code bis zum physikalischen IO Level unterstützt.

Hauptunterschiede zwischen TcTimer und TwinCAT IO R3

Generell sind die beiden Lösungen TcTimer und R3IO ähnlich: Beide Lösungen bieten mit API einen Zugriff  aus dem C++ Code auf die Images der TwinCAT IO Task.

Die Hauptunterschiede:

Notwendige Komponenten

Die für Windows CE erforderlichen Dateien befinden sich hier .

Prioritäten

// Set the Priorities of the Thread
if (CeSetThreadPriority(hThreadTask1, 26) && CeSetThreadPriority(hThreadTask2, 27))

Im Beispiel wird die Thread-Priorität auf 26 und 27 gelegt.

Generell hat der Anwender die Freiheit, die Priorität des Threads zu bestimmen, hier Hinweise zu Prioritäten von anderen Prozessen:

- Device threads : Bereich 100-130- Beckhoff TwinCAT Timer thread : 1

- Microsoft MultiMedia Timer : 2

Abhängig von den Anforderungen kann somit eine Wahl der Priorität im Bereich 3 - 64 für Echtzeit threads und 131 - 255 für nicht Echtzeit threads sinnvoll erfolgen.