TAM Tama

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.

TAM Tama

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

TAM Tama

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.

TAM Tama

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
    }
}