Übergabe der Referenz auf den Kommunikationsbaustein

Die einzelnen Funktionsblöcke der Tc3_DALI versenden und empfangen die DALI-Datenpakete über die jeweilige DALI-Klemme (KL6811, KL6821 oder EL6821). Hierbei greifen die Funktionsblöcke über einen speziellen Kommunikationsbaustein (FB_KL6811Communication, FB_KL6821Communication oder FB_EL6821Communication) auf die DALI-Klemme zu. Jede Instanz eines Kommunikationsbausteins wird genau einer DALI-Klemme zugeordnet.

Die Kommunikationsbausteine stellen sicher, dass die Abarbeitung der einzelnen DALI-Befehle korrekt durchgeführt und die empfangenen Ereignisse den richtigen Funktionsblöcken zugeteilt werden.

Jeder Funktionsblock benötigt einen Verweis auf einen Kommunikationsbaustein. Diese Zuweisung wird in der Tc3_DALI mit einem Interface-Pointer realisiert. Es gibt zwei Möglichkeiten, die Zuweisung auf den Kommunikationsbaustein an einen Funktionsblöcke zu übergeben.

Übergabe bei der Deklaration

Bei der Deklaration des Bausteins wird in runden Klammern der vollständige Pfad der Instanz des Kommunikationsbausteins (FB_KL6811Communication, FB_KL6821Communication oder FB_EL6821Communication) angegeben.

fbDALI102Off : FB_DALI102Off(Communication.fbKL6821Communication);

Der vollständige Pfad besteht aus dem POU-Namen, in dem die Instanz des Kommunikationsbausteins angelegt wurde (Communication) und den Namen der Instanz (fbKL6821Communication), getrennt durch einen Punkt.

Soll bei der Deklaration kein Kommunikationsbaustein übergeben werden, so kann durch eine ‚0‘ eine Null-Referenz übergeben werden.

fbDALI102Off : FB_DALI102Off(0);

Dieses kann sinnvoll sein, wenn erst zur Laufzeit des Programms eine Zuweisung erfolgen soll (siehe weiter unten).

Besitzt ein Baustein keinen gültigen Interface-Pointer auf einen Kommunikationsbaustein, so erfolgt die Ausgabe einer Laufzeitmeldung.

Übergabe der Referenz auf den Kommunikationsbaustein 1:

Wird in der Deklaration der Interface-Pointers geändert, so wird dieses bei einem Online-Change nicht berücksichtigt. In diesem Fall muss das SPS-Programm komplett neu kompiliert und auf das Zielsystem geladen werden.

Verwendung von Arrays

Jede Instanz kann einem individuellen Kommunikationsbaustein zugewiesen werden. Hierbei können die Instanzen der Kommunikationsbausteine auch unterschiedliche Typen von DALI-Klemmen (KL6811, KL6821 oder EL6821) abbilden.

aDALI102Off : ARRAY[1..3] OF FB_DALI102Off[(Communication.fbKL6821Communication),
                                           (Communication.fbEL6821Communication),
                                           (Communication.fbKL6811Communication)];

Bei dem folgenden Beispiel werden alle Instanzen demselben Kommunikationsbaustein zugewiesen:

aDALI102Off : ARRAY[1..3] OF FB_DALI102Off(Communication.fbKL6821Communication);

Übergabe per Eigenschaft

Damit auch zur Laufzeit die Referenz auf den Kommunikationsbaustein geändert werden kann, besitzen alle Bausteine die Eigenschaft ipDALICommunication. Über diese Eigenschaft kann ebenfalls der Interface-Pointer übergeben werden.

fbDALI102Off.ipDALICommunication := Communication.fbKL6821Communication01;

Die Zuweisung muss nicht in jedem SPS-Zyklus erfolgen. Es ist ausreichend, wenn diese einmalig durchgeführt wird.

IF (bSwitchToLinie01) THEN
   fbDALI102Off.ipDALICommunication := Communication.fbKL6821Communication01;
   bSwitchToLinie01 := FALSE;
END_IF
IF (bSwitchToLinie02) THEN
   fbDALI102Off.ipDALICommunication := Communication.fbKL6821Communication02;
   bSwitchToLinie02 := FALSE;
END_IF

Ergänzende Informationen zu Eigenschaften finden Sie in dem Kapitel Verwendung von Eigenschaften.