FB_DALIV2xChangeAddressList

FB_DALIV2xChangeAddressList 1:

Mit diesem Funktionsbaustein können die Kurzadressen mehrerer Steuergeräte geändert werden.

In dem Array arrChangeAddressList vom Typ ST_DALIV2ChangeAddressList wird eine Liste mit den Steuergerä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 Listenende 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 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.
Zwei Fälle sind 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.

6

Der Wert der Variablen nOldAddress ist gleich dem Wert der Variablen nNewAddressDer Eintrag in der Liste wird ignoriert (Tc2_DALI ab v3.6.10.0).

VAR_INPUT

bStart             : BOOL;
eCommandPriority   : E_DALIV2CommandPriority := eDALIV2CommandPriorityHigh;
nOptions           : DWORD := 0;
eDataFrameType     : E_DALIV2DataFrameType := eDALIV2DataFrameType24Bit;

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.

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.

eDataFrameType: Ausgabeformat des DALI-Befehls (eDALIV2DataFrameType24Bit oder eDALIV2DataFrameTypeOsram).

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;

stCommandBuffer: Verweis auf die interne Struktur zur Kommunikation mit dem Baustein FB_KL6821Communication() (KL6821).

arrChangeAddressList: Verweis auf die Liste mit den zu ändernden Kurzadressen.

Voraussetzungen

Entwicklungsumgebung

erforderliche SPS-Bibliothek

TwinCAT ab v3.1.4022.4

Tc2_DALI ab v3.6.2.0