Tc2_DALI und Tc3_DALI im selben Projekt

Werden bestehende TwinCAT 2 Projekte nach TwinCAT 3 portiert, kann hierfür die Tc2_DALI-Bibliothek verwendet werden. Auf Quellcodeebene ist die TwinCAT 2 DALI-Bibliothek zur TwinCAT 3 Tc2_DALI-Bibliothek kompatibel, wodurch eine Übertragung von TwinCAT 2 Projekten nach TwinCAT 3 deutlich vereinfacht wird.

Dagegen ist die TwinCAT 3 Bibliothek Tc3_DALI eine komplette Neuentwicklung, welche für TwinCAT 3 optimiert und auf DALI-2 abgestimmt wurde. So konnte die Performanz verbessert und die Handhabung der Bausteine weiter vereinfacht werden.

Tc2_DALI und Tc3_DALI im selben Projekt 1:

Bei neuen Projekten sollte daher möglichst die Tc3_DALI-Bibliothek zum Einsatz kommen.

Hierdurch kann die Situation entstehen, dass in einem TwinCAT 3 Projekt die Tc2_DALI-Bibliothek verwendet wird, dieses Projekt aber erweitert und hierfür die Tc3_DALI-Bibliothek eingesetzt werden soll.

Im Folgenden wird gezeigt, wie in einem TwinCAT 3 Projekt eine KL6821 mit der Tc2_DALI-Bibliothek und eine weitere KL6821 mit der Tc3_DALI-Bibliothek betrieben werden.

Die Bausteine der Tc2_DALI- und der Tc3_DALI-Bibliothek können nicht an derselben Busklemme gemischt werden. Jede Bibliothek muss exklusiven Zugriff auf eine KL6821 oder KL6811 haben.

Fügen Sie beide Bibliotheken zu dem TwinCAT 3 Projekt hinzu:

Tc2_DALI und Tc3_DALI im selben Projekt 2:

Für jede Klemme müssen die notwenigen Variablen angelegt und mit der KL6821 verlinkt werden. In diesem Beispiel besitzt die globale Variablenliste den Namen GVL.

VAR_GLOBAL
    // Tc2_DALI
    stKL6821InDataTc2 AT %I* : Tc2_DALI.ST_KL6821InData;
    stKL6821OutDataTc2 AT %Q* : Tc2_DALI.ST_KL6821OutData;
    stCommandBufferKL6821 : Tc2_DALI.ST_DALIV2CommandBuffer;

    // Tc3_DALI
    stKL6821InDataTc3 AT %I* : Tc3_DALI.ST_KL6821InData;
    stKL6821OutDataTc3 AT %Q* : Tc3_DALI.ST_KL6821OutData;
END_VAR

Da in beiden Bibliotheken die Strukturen für das Verlinken der Busklemme den gleichen Namen besitzen, musss noch zusätzlich der Namensraum (Namespace) vorangestellt werden. Auch wenn die Strukturen in beiden Bibliotheken den gleichen Namen haben, so sind es doch unterschiedliche Datentypen innerhalb des Typsystems von TwinCAT 3. Der Namensraum stellt sicher, dass der jeweilige Datentyp aus der gewünschten Bibliothek verwendet wird. Zur besseren Lesbarkeit wurde auch bei der Struktur für den Befehlspuffer (ST_DALIV2CommandBuffer) aus der Tc2_DALI-Bibliothek der Namensraum mit angegeben. Notwendig wäre es an dieser Stelle nicht, da der Bezeichner ST_DALIV2CommandBuffer nur in der Tc2_DALI-Bibliothek enthalten ist.

Der Namensraum einer Bibliothek wird in dem Fenster Eigenschaften angezeigt.

Tc2_DALI und Tc3_DALI im selben Projekt 3:

Per Konvention lautet der Namensraum der Beckhoff Bibliothek genauso wie der Name der Bibliothek.

Als Nächstes wird der Baustein angelegt, der von der Kommunikations-Task aufgerufen wird. In diesem Baustein wird u.a. für jede Klemme eine Instanz von FB_KL6821Communication aufgerufen. Auch hier ist die Angabe des Namenraums erforderlich, da jede Bibliothek einen Baustein mit den Namen FB_KL6821Communication enthält.

PROGRAM Communication
VAR
    // Tc2_DALI
    fbKL6821CommunicationTc2 : Tc2_DALI.FB_KL6821Communication;

    // Tc3_DALI
    fbKL6821CommunicationTc3 : Tc3_DALI.FB_KL6821Communication;
END_VAR

// Tc2_DALI
fbKL6821CommunicationTc2(stInData := GVL.stKL6821InDataTc2,
stOutData := GVL.stKL6821OutDataTc2,
stCommandBuffer := GVL.stCommandBufferKL6821);

// Tc3_DALI
fbKL6821CommunicationTc3(stInData := GVL.stKL6821InDataTc3,
stOutData := GVL.stKL6821OutDataTc3);

Bei den Aufrufen der jeweiligen Bausteine für das Versenden der DALI-Befehle oder für das Empfangen der Ereignisse, ist die Angabe des Namensraums in den meisten Fällen nicht erforderlich. In der Tc2_DALI-Bibliothek haben alle Elemente den Präfix DALIV2 während in der Tc3_DALI das Präfix DALI verwendet wird.

Hier können Sie das Beispielprojekt herunterladen:Tc2_Tc3_DALI.zip