FB_DALIV2ChangeAddressList

FB_DALIV2ChangeAddressList 1:

Mit diesem Funktionsbaustein können die Kurzadressen mehrerer Vorschaltgeräte geändert werden. Im Gegensatz zum Baustein FB_DALIV2SwapShortAddressList ist es nicht notwendig, dass eine freie, unbenutzte Kurzadresse in der DALI-Line vorhanden ist.

In dem Array arrChangeAddressList vom Typ ST_DALIV2ChangeAddressList wird eine Liste mit den Vorschaltgeräten übergeben, bei denen die Kurzadresse geändert werden soll. Die Liste hat 64 Einträge von 0 bis 63. Jeder Eintrag enthält eine Variable nOldAddress und nNewAddress mit dem die Adresszuordnung parametriert wird. Das Listenende wird mit einem 255-Eintrag bei nOldAddress programmiert, sodass nicht unbedingt die ganze Liste ausgefüllt werden muss. Fehlt dieser Eintrag jedoch, so werden alle Einträge angenommen. Beim Start des Bausteines (positive Flanke an bStart) wird zunächst das Listen-Ende anhand des beschriebenen Eintrages ermittelt und danach der gültige Listenbereich auf folgende Fehleinträge hin untersucht:

  • Adresseinträge > 63
  • doppelter Adress-Eintrag auf der Ursprungsseite nOldAddress (würde keinen Sinn machen)
  • doppelter Adress-Eintrag auf der Zielseite nNewAddress (führt zu Doppelvergabe einer Adresse und damit zu Fehlern)

Der Baustein ermittelt dann anhand der Kurzadressen die internen Langadressen der DALI-Geräte und trägt diese jeweils in die Parameter nRandomAddressHigh, nRandomAddressMiddle und nRandomAddressLow der Liste ein. Tritt bei diesen Abfragen ein Fehler auf, so führt das zu einem Fehlereintrag für das jeweilige Gerät in dem Listenelement nErrors (siehe ST_DALIV2ChangeAddressList). Der weitere Ablauf im Baustein hängt nun von der Option DALIV2_OPTION_SAFE_ADDRESSING (Eingang nOptions) ab. Ist sie gesetzt, so erfolgt eine sichere Neuadressierung: zunächst werden alle Kurzadressen der gewählten DALI-Geräte gelöscht. Danach werden an alle gewünschte Neuadressen Statusanfragen in die DALI-Linie geschickt. 2 Fälle sind nun möglich:

  • Antwortet ein Gerät auf diese Anfrage, so ist diese gewünschte Neu-Adresse schon anderweitig vergeben. Die zuvor „gelöschten“ DALI-Geräte werden mit ihren alten Adressen programmiert und eine Fehlermeldung ausgegeben.
  • Antwortet kein Gerät auf diese Statusanfrage, so werden die zuvor „gelöschten“ DALI-Geräte mit den gewünschten neuen Adressen belegt.

In beiden Fällen wird die Neuprogrammierung hinterher überprüft. Treten beim Löschen, bei der Statusabfrage oder bei der Neuprogrammierung Fehler auf, so führt dies zu einem Fehlereintrag für das jeweilige Gerät in dem Listenelement nErrors (siehe ST_DALIV2ChangeAddressList).
Ist die Option DALIV2_OPTION_SAFE_ADDRESSING (Eingang nOptions) nicht gesetzt, so wird auf das Löschen der Kurzadressen sowie auf die Statusabfrage zum Vorhandensein gewünschter Neuadressen verzichtet und die neuen Adressen direkt programmiert. Dies ist dadurch möglich, dass die Programmierung über die zuvor ermittelte Langadresse erfolgt. Die Neuprogrammierung wird in diesem Falle nicht verifiziert.

Die einzelnen Bits im Listenelement nErrors haben folgende Bedeutung:

Bit

Fehler

0

Fehler beim Lesen des High-Bytes der Langadresse (nRandomAddressHigh).

1

Fehler beim Lesen des Middle-Bytes der Langadresse (nRandomAddressMiddle).

2

Fehler beim Lesen des Low-Bytes der Langadresse (nRandomAddressLow).

3

Fehler beim Löschen einer Kurzadresse.

4

Fehler beim Verifizieren einer Kurzadresse.

5

Fehler beim Programmieren einer Kurzadresse.

VAR_INPUT

bStart           : BOOL;
bCancel          : BOOL;
eCommandPriority : E_DALIV2CommandPriority := eDALIV2CommandPriorityHigh;
nOptions         : DWORD := 0;

bStart: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.

eCommandPriority: Priorität (hoch, mittel oder niedrig), mit der der Befehl von der Library abgearbeitet wird (siehe E_DALIV2CommandPriority).

nOptions: Optionen für das Schreiben der Variablen (siehe Tabelle). Die einzelnen Konstanten müssen miteinander ODER-verknüpft werden.

Konstante

Beschreibung

DALIV2_OPTION_SAFE_ADDRESSING

Sichere Adressierung: Alte Kurzadressen werden gelöscht, die Neuen auf schon Vorhandensein hin überprüft und die Neu-Programmierung verifiziert.

VAR_OUTPUT

bBusy    : BOOL;
bError   : BOOL;
nErrorId : UDINT;

bBusy: Bei der Aktivierung des Bausteins wird der Ausgang gesetzt und bleibt so lange aktiv, bis der Befehl abgearbeitet wurde.

bError: Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung eines Befehls ein Fehler aufgetreten ist. Der befehlsspezifische Fehlercode ist in nErrorId enthalten. Wird durch das Ausführen eines Befehls an den Eingängen auf FALSE zurückgesetzt.

nErrorId: Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls. Wird durch das Ausführen eines Befehls an den Eingängen auf 0 zurückgesetzt. (Siehe Fehlercodes)

VAR_IN_OUT

arrChangeAddressList : ARRAY [0.. 63] OF ST_DALIV2ChangeAddressList;
stCommandBuffer      : ST_DALIV2CommandBuffer;

arrChangeAddressList: Verweis auf die Liste mit den zu ändernden Kurzadressen (siehe ST_DALIV2ChangeAddressList).

stCommandBuffer: Verweis auf die interne Struktur zur Kommunikation mit den Bausteinen FB_KL6811Communication() (KL6811) oder FB_KL6821Communication() (KL6821).

Voraussetzungen

Entwicklungsumgebung

erforderliche SPS-Bibliothek

TwinCAT ab v3.1.4020.14

Tc2_DALI ab v3.4.3.0