C# Echtzeitprogrammierung
Triamec-Servoantriebe, I/O-Controller und Adapter sind für kundenspezifische Anwendungen frei programmierbar. Dafür stehen zwei Tasks zur Verfügung:
- Isochroner Task mit 10 kHz
- Asynchroner Task
Die Entwicklung erfolgt mit Microsoft Visual Studio in C#, das den Code in die Zwischensprache CIL übersetzt. Auf den Triamec-Geräten ist eine virtuelle Maschine (TamaVM) installiert, welche diese standardisierte Sprache interpretiert und in Echtzeit ausführt.
Ein Tama-Programm kann zur Laufzeit in die Geräte geladen und sofort ausgeführt werden. Für Stand-Alone-Anwendungen ohne PC-Verbindung können Tama-Programme dauerhaft im Gerät gespeichert werden. Tama-Programme haben Zugriff auf alle Register des ausführenden Geräts sowie auf die zyklisch übertragenen Kopplungsdaten anderer Geräte.
Wichtigste Merkmale
Robuste Laufzeitumgebung: Virtuelle Maschine im Gerät („absturzsicher“)
Zwei Aufgaben: Eine 10-kHz-Echtzeitaufgabe und eine asynchrone Aufgabe
Feste Echtzeit mit 10kHz
Strenge Typsicherheit
Datentypen: int, float, bool, enum, struct, object, array
Zugriff auf Geräte-Register mit der IntelliSense-Funktion von Visual Studio
Mathematische Funktionen
Interaktion mit PC-Anwendungen oder Tama-Programmen auf anderen Geräten
Neue Programme können zur Laufzeit geladen und ausgeführt werden
Persistenz ermöglicht autonomen Betrieb ohne PC
Anwendungen
Tama-Programme ermöglichen erweiterte Motion-Control-Funktionen direkt auf dem Servoantrieb. Typische Anwendungen sind Homing-Sequenzen und Tast-/Touch-Erkennung für präzises Positionieren, Achskopplungen für synchronisierte Portalsysteme sowie kinematische Berechnungen für komplexe Mechanismen wie Parallelkinematiken in Delta-Robotern.
Tama unterstützt Ablaufsteuerungen für einfache Stand-alone-Anwendungen wie kraftgeregelte Pressen, Dual-Loop-Regelungen, die sich mit anderen Servoantrieben koppeln lassen, sowie Parameteranpassungen zur Regleroptimierung durch Gain Scheduling. Die Plattform übernimmt zudem Überwachungsfunktionen und andere Echtzeit-Maschinenreaktionen, die eine sofortige Antwort ohne zusätzlichen externen Controller erfordern.
Programmierung
Tama-Programme werden in C# mit Visual Studio® entwickelt. Die Programme laufen auf allen Triamec Servoantrieben.
Dokumentation und Ressourcen
Das Tama User Manual ist im Bereich Handbücher verfügbar.
Vorlagen und Beispielprogramme sind auf GitHub verfügbar und mit dem Tama-Badge zur einfachen Identifikation gekennzeichnet.
Beispielprogramm
Das folgende Beispiel zeigt grundlegende Konzepte der Tama-Programmierung anhand einer einfachen isochronen Aufgabe und demonstriert, wie auf Register des Antriebs zugegriffen und Kernfunktionen implementiert werden.
using Triamec.Tama.Rlid19; // required for register access
using Triamec.Tama.Vmid5; // required for interpretation of Tama task attributes
[Tama] // attribute to indicate the starting point for the Tama compiler
static class D1_MinimalTama // name of the tama program
{
/*****************************************************************
* members
*****************************************************************/
static float actualPosition;
/*****************************************************************
* isochronous main task
*****************************************************************/
[TamaTask(Task.IsochronousMain)] // attribute to indicate the entry point and the task type
static void Main() // main function, name is not relevant
{
// your code
actualPosition = (float)Register.Axes_0.Signals.PositionController.MasterPosition; // type of position is doup
Register.Application.Variables.Floats[0] = actualPosition; // use a generic register to display the position
Register.Application.Variables.Booleans[1] = Register.Application.Variables.Booleans[0]; // reflect boolean 0 to boolean 1
}
}