TapHome

Resi Dali - Konfigurácia

Modbus RTU
Pridal
Posledná aktualizácia: 04. 2026

Vyžaduje externú bránu

Resi RESI-DALI-PS — stránka produktu

Resi Dali - Konfigurácia

Šablóna Resi Dali - Konfigurácia je jednorazový nástroj na uvedenie do prevádzky a adresovanie pre Modbus-DALI bránu RESI-DALI-SIO a RESI-DALI-ETH od spoločnosti RESI Informatik & Automation GmbH. Priamo z TapHome riadi algoritmus náhodného adresovania DALI 2.0, čím priraďuje krátke adresy 0–63 ovládacím zariadeniam na čerstvo zapojenej DALI zbernici, pri každej adrese detekuje DALI device type a ponúka rýchle broadcast ON/OFF testy — všetko potrebné na uvedenie novej inštalácie do stavu, keď možno svietidlá ovládať individuálne.

Komunikácia s bránou prebieha cez Modbus RTU pri 9600 baud 8N1. Šablóna tiež vystavuje import parameter IpAddress, takže rovnaký postup funguje aj cez serial-to-IP bridge (Moxa NPort, USR-TCP232) alebo cez RESI-DALI-ETH nakonfigurovaný v transparentnom RTU-over-Ethernet režime.

Táto šablóna je zámerne určená len na adresovanie. Po priradení krátkych adries modul Resi Dali - Konfigurácia z projektu odstráňte a na každodenné ovládanie použite sesterskú operačnú šablónu Resi Dali (Dali.xml) — stmievanie jednotlivých svietidiel, skupiny, scény a DT6/DT8 RGB / tunable-white riadenie farby. Konfiguračný modul nie je navrhnutý tak, aby v projekte zostal po úvodnom nastavení.

Hardvérové zapojenie

RESI-DALI-SIO je DIN lištová master brána (17,5 × 90 × 56,4 mm, CEM17), ktorá sedí medzi sériovým/ethernetovým hostom a DALI osvetľovacou zbernicou. Brána DALI zbernicu nenapája — kompatibilný DALI napájací zdroj (RESI-DALI-PS alebo ľubovoľný 200 mA DALI zdroj v súlade so štandardom) je povinný.

Pripojenie RESI-DALI-SIO (RS-485)
Schéma zapojenia RESI-DALI-SIO — externý DALI zdroj (hore) a s RESI-DALI-PS (dole)

Svorky na ľavej strane RESI-DALI-SIO (zhora nadol): GND, +12..48V=, RS485 DATA+ (A+), RS485 DATA- (B-), RS485 GND, RS232 TX, RS232 RX, RS232 GND. Svorky DALI zbernice na opačnej strane sú D+ / N/C / D- (3-pinový USLIM blok, N/C zostáva nezapojený).

Pre inštaláciu s TapHome použite rozhranie RS-485:

  • RS485 DATA+ (A+) → A+/D+ na TapHome RS-485 zbernici
  • RS485 DATA- (B-) → B-/D- na TapHome RS-485 zbernici
  • RS485 GND → GND na napájacom zdroji TapHome (odporúčané pre stabilnú komunikáciu)
  • +12..48V= / GND → 12–48 V DC primárne napájanie
Pripojenie RESI-DALI-ETH (Ethernet)
Schéma zapojenia RESI-DALI-ETH — externý DALI zdroj (hore) a s RESI-DALI-PS (dole)

Ethernet variant má rovnaké svorky DALI zbernice (D+ / N/C / D-) a primárne napájanie (GND, +12..48V=) plus jeden RJ45 konektor pre 10/100 Mbit Ethernet. Predvolené IP nastavenia z výroby sú 192.168.0.191 / 255.255.255.0 / 192.168.0.1 s Modbus Unit ID 255; prihlasovacie údaje webového UI sú RESI / RESI. TapHome komunikuje s ETH variantom cez Modbus TCP alebo v transparentnom RTU-over-Ethernet režime, ktorý očakáva táto konfiguračná šablóna (pozri Konfigurácia nižšie).

Napájací zdroj DALI zbernice
RESI-DALI-PS — samostatné napájanie DALI zbernice (hore) a v kombinácii s bránou SIO/ETH (dole)

RESI-DALI-PS dodáva až 200 mA na DALI zbernicu (skratový prúd ~225 mA, typické napätie zbernice 14–18 V) a podporuje až 64 DALI 1.0 predradníkov alebo DALI 2.0 ovládacích zariadení na jednej linke. Primárna strana akceptuje rovnaký 12–48 V DC napájací zdroj ako jednotka SIO/ETH. Brána a napájací zdroj zdieľajú rovnaký pár D+ / D- — zdroj napája zbernicu, zatiaľ čo brána číta a zapisuje DALI rámce.

Tri LED diódy na napájacom zdroji pomáhajú pri uvedení do prevádzky: POWER (primárne 12–48 V v poriadku, vždy svieti), DALI (krátko blikne pri prenose na zbernici), ERR (trvalo svieti pri poruche zdroja, skrate DALI alebo preťažení zbernice — pri normálnej prevádzke musí byť zhasnutá).

Pravidlá DALI zbernice

DALI linka má niekoľko striktných obmedzení, ktoré priamo ovplyvňujú úspech uvedenia do prevádzky:

Prierez vodičaMax dĺžka DALI kábla
1,5 mm²300 m
1,0 mm²238 m
0,75 mm²174 m
0,5 mm²116 m

Limit vyplýva z maximálne povoleného úbytku napätia 2 V na DALI kábli. Ďalšie pravidlá:

  • Maximálne 64 DALI 1.0 predradníkov a až 64 DALI 2.0 ovládacích zariadení na jednu zbernicu (oddelené priestory krátkych adries).
  • Len stromová topológia — žiadne kruhy, žiadne slučky.
  • Skutočný počet zariadení závisí aj od prúdovej kapacity zdroja (typicky 200 mA na RESI-DALI-PS, počítajte ~2 mA na zariadenie plus rezerva).

RESI-DALI-PS (alebo ekvivalentný DALI zdroj) je povinný. Bez neho RESI-DALI-SIO/ETH nedokáže zbernicu riadiť a konfiguračný sprievodca bude pri každom kroku vypadať timeoutom. Ak sa na dlhej linke použije druhý zdroj, vložte DALI tlmivku alebo rozdeľte zbernicu na galvanicky oddelené segmenty.

Konfigurácia

Povolenie Modbus komunikácie

Všetky parametre sériového rozhrania na RESI-DALI-SIO sa vyberajú 4-polohovým DIP prepínačom na module. Šablóna TapHome fixuje 9600 baud 8N1, takže DIP prepínače musia byť nastavené zodpovedajúco.

DIP1DIP2Rýchlosť prenosu
OFFOFF9600 bd (vyžadované TapHome)
ONOFF19200 bd
OFFON38400 bd
ONONPoužíva rýchlosť naprogramovanú vo FLASH (predvolené z výroby 57600 bd)
DIP4Zdroj Modbus Unit ID
OFFFLASH register H:65221 — vyžadované, aby akcia Set Slave ID mala efekt
ONNútene 255 (hardvérový fallback, FLASH hodnota ignorovaná)

DIP3 je produktovo špecifický rezervovaný bit; ponechajte ho v továrenskej polohe, pokiaľ servisný manuál RESI výslovne neurčí inak. Parita je v FLASH predvoľbách fixne None (8N1) — šablóna nevystavuje registre parity/stop bitu.

Zakončenie RS-485: zbernicu zakončite 120 Ω rezistorom na oboch koncoch. TapHome Core poskytuje jedno zakončenie na svojich svorkách BUS; ak je RESI brána posledným zariadením na linke, pridajte na jej svorky RS-485 diskrétny 120 Ω rezistor medzi A+/B-.

Nastavenie RTU-over-TCP: šablóna má oba import parametre SlaveId a IpAddress, pretože rovnaký DALI konfiguračný tok funguje aj cez serial-to-IP bridge (Moxa NPort, USR-TCP232) alebo cez RESI-DALI-ETH v transparentnom RTU-over-Ethernet režime. V takom prípade nastavte IpAddress na IP bridgeu / ETH jednotky a ostatné nastavenia ponechajte identické ako pri RS-485 variante. Pre čistý Modbus/TCP na RESI-DALI-ETH by bola prirodzenejšia TCP šablóna — šablóna DaliConfig predpokladá rámcovú RTU komunikáciu.

Nastavenie Slave ID brány

Predvolené Unit ID z výroby je 255. Zmena postupom:

  1. Nastavte na bráne DIP4 = OFF, aby sa rešpektovalo FLASH Unit ID.
  2. Importujte šablónu v TapHome s SlaveId = 255 (aktuálna adresa).
  3. Otvorte servisné nastavenia modulu “Resi Dali - Konfigurácia” a spustite akciu Set Slave ID s požadovaným novým ID (rozsah 1–255). Akcia zapíše hodnotu do registra H:65221 a okamžite vyvolá softvérový reset cez H:6000 = 1, takže brána sa reštartuje s novou adresou.
  4. Odstráňte šablónu a znovu ju importujte s SlaveId nastaveným na novú hodnotu. Modul potom možno použiť na uvedenie do prevádzky.

Akcia Reset Gateway (zapisuje 1 do H:6000) je tiež k dispozícii ako samostatný obnovovací krok — užitočná po skrate DALI zbernice, ktorý zanechal DALI motor brány v degradovanom stave.

Len jeden Modbus master naraz. Ani DALI, ani Modbus RTU zbernica neriešia arbitráž medzi súbežnými mastermi. Ak počas uvádzania do prevádzky bránu polluje aj PLC, BMS alebo PC nástroj (napríklad MODBUSConfigurator), programovanie krátkych adries bude kolidovať a sprievodca nahlási chyby.

Schopnosti zariadenia

Šablóna je postavená okolo jediného Modbus modulu — Resi Dali - Konfigurácia — ktorý združuje konfiguračného sprievodcu, DALI device type sondu pre každú krátku adresu 0–63 a štyri akcie na úrovni brány.

Konfiguračný sprievodca — Find New Devices

Find New Devices je desaťstavový multi-value prepínač, ktorý riadi algoritmus náhodného adresovania DALI 2.0 v diskrétnych krokoch. Každý názov stavu zodpovedá jednej fáze DALI 2.0 konfiguračnej sekvencie; výber stavu spôsobí, že šablóna vyšle správny surový 16-bitový DALI rámec na H:541 / H:542 a následne poluje DALI RX status na H:550 na odpoveď brány.

KrokStavČo robí
0TERMINATEDALI rámec TERMINATE (0xA100) — ukončí aktuálnu adresovaciu reláciu a resetuje stav brány. Vždy bezpečné zavolať
1ŠtartINITIALISE (0xA5FF) + RANDOMISE (0xA700) — prepne všetky neadresované zariadenia do adresovacieho poolu a vyžiada si od každého 24-bitovú náhodnú adresu
2Skenovať krátku adresuSondu nasledujúceho slotu krátkej adresy; vráti stavový kód 7, keď neodpovedá žiadne zariadenie
3Set SEARCHADDRNahrá horné/stredné/dolné bajty SEARCHADDR (0xB500/0xB300/0xB100) pre binárne vyhľadávanie
4COMPAREOdošle COMPARE (0xA900) a podľa odpovede zužuje 24-bitové vyhľadávacie okno
5PROGRAM SHORT ADDRESSZapíše overenú krátku adresu cez 0xB7xx — zariadenie je teraz trvalo adresované
6KontrolaOverí naprogramovanú adresu druhým COMPARE na finálnom SEARCHADDRL
7Skúsiť znovaObnova po kolízii / timeoute — polí aktuálny vyhľadávací interval a opakuje
8Resetovať krátke adresyDALI DTR = 0xFF (0xA3FF) + broadcast REMOVE SHORT ADDRESS — vymaže všetky existujúce krátke adresy, pripravené na úplné re-adresovanie
9DokončiťPrečíta DALI výsledný bajt, emituje TapHome informáciu/chybovú správu a ukončí sprievodcu

Typický postup uvedenia do prevádzky:

  1. Napájajte DALI zbernicu (RESI-DALI-PS), zariadenia zapojte v stromovej topológii a uistite sa, že zbernicu neriadi nič iné.
  2. (Voliteľné, ale odporúčané) najskôr spustite Resetovať krátke adresy, aby ste začali z čistého stavu bez adresovaných zariadení.
  3. Spustite Štart — vyšle INITIALISE + RANDOMISE, takže každé zariadenie si zvolí novú 24-bitovú náhodnú adresu.
  4. Spustite Skenovať krátku adresuSet SEARCHADDRCOMPAREPROGRAM SHORT ADDRESSKontrola v poradí. Stavy zapuzdrujú DALI 2.0 binárne vyhľadávanie; každý krok posúva algoritmus o jednu fázu.
  5. Ak krok nahlási kolíziu alebo timeout, zavolajte Skúsiť znova a zopakujte sekvenciu compare/program.
  6. Keď sú všetky viditeľné zariadenia naprogramované, spustite TERMINATE a potom Dokončiť na čisté ukončenie sprievodcu.
  7. Použite servisné atribúty Gear 0 … Gear 63 a akcie Turn On / Off All Lamps na overenie, že krátke adresy 0–N sú teraz obsadené (pozri nižšie).

Sprievodca je navrhnutý na prechod jedným stavom po druhom — šablóna neautomatizuje celú slučku, pretože inštalatér potrebuje sledovať správanie DALI zbernice (pulzovanie svietidiel, rytmus LED STATE na bráne), aby zachytil nesprávne zapojené alebo chýbajúce zariadenia.

DALI gear sonda — Gear 0 … Gear 63

Každý zo 64 servisných atribútov Gear 0, Gear 1, … Gear 63 sonduje jednu DALI krátku adresu príkazom DALI 2.0 QUERY DEVICE TYPE (0x99). Interne šablóna zapíše (SA << 8) | 0x99 do H:511, polí H:550 biti 0–2 kým nedorazí odpoveď, potom prečíta odpovedajúci bajt z H:511.

Možné návratové hodnoty v TapHome servisnom UI:

  • DT{n} — ovládacie zariadenie je naprogramované na tejto adrese a odpovedalo device type n. Typické hodnoty: DT0 (žiarivka), DT1 (núdzové), DT2 (HID), DT5 (0–10 V), DT6 (LED driver), DT7 (relé), DT8 (farba / tunable white), DT9 (sekvencer).
  • -- — na tejto adrese nie je naprogramované žiadne zariadenie alebo brána vrátila sentinel 0x8000 “no answer / already consumed”.

Sonda poskytuje rýchly pass/fail prehľad o tom, ktoré krátke adresy sú po uvedení do prevádzky obsadené a aké device type boli objavené — to je primárny verifikačný krok pred prepnutím projektu na operačnú šablónu Resi Dali.

Akcie na úrovni brány

Štyri servisné akcie na module riadia bránu priamo:

  • Reset Gateway — zapíše 1 do H:6000 (DIP SWITCH / SOFTWARE RESET). Reštartuje bránu; užitočné po skrate zbernice na obnovu DALI motora.
  • Set Slave ID — zapíše nové Unit ID (1–255) do FLASH registra H:65221, potom resetuje cez H:6000. Vyžaduje DIP4 = OFF, aby akcia mala efekt.
  • Turn On All Lamps — zapíše 0xFE (výkonový oblúk 254 = 100 %) do DALI broadcast úrovňového registra H:530. Rozsvieti každé zariadenie na zbernici bez ohľadu na krátku adresu — rýchle vizuálne potvrdenie, že zbernica a zdroj sú v poriadku.
  • Turn Off All Lamps — zapíše 0x00 do H:530, zhasne každé zariadenie. Rovnaká broadcast cesta, opačná hodnota.

Servisný atribút Slave ID na module spätne číta aktuálne Unit ID z FLASH registra H:65221, takže pred odoslaním Set Slave ID možno overiť aktuálne naprogramovanú adresu.

Hneď po zapojení a pred spustením adresovacieho sprievodcu spustite Turn On All Lamps. Každé napájané a správne pripojené zariadenie na zbernici sa rozsvieti na 100 %, čo je veľmi rýchly spôsob ako odhaliť chýbajúce alebo nesprávne zapojené svietidlá pred tým, než strávite čas programovaním krátkych adries.

Riešenie problémov

Sprievodca pri každom kroku spadne na timeout
  1. Overte napätie DALI zbernice na svorkách zdroja — musí byť 11,5–22,5 V (typicky 14–16 V). Výrazne nižšia hodnota zvyčajne indikuje skrat DALI.
  2. Skontrolujte LED ERR na RESI-DALI-PS — ak svieti, zbernica je skratovaná, preťažená alebo je zdroj sám chybný.
  3. Skontrolujte LED STATE na bráne — pomalý rytmus 1 s znamená, že DALI zbernica je v poriadku, rýchly rytmus ~250 ms indikuje chybu zbernice, skrat alebo chýbajúce DALI napájanie.
  4. Uistite sa, že s bránou nekomunikuje súčasne žiadny iný Modbus master (MODBUSConfigurator, BMS, PLC).
Gear 0–63 hlásia všetky -- po uvedení do prevádzky
  1. Zmerajte napätie DALI na zariadení najďalej od zdroja — musí byť nad 9,5 V. Ak je nižšie, zbernica je príliš dlhá pre prierez vodiča (pozri tabuľku dĺžok DALI kábla vyššie). Rozdeľte zbernicu na dva segmenty s druhým zdrojom.
  2. Znovu spustite sprievodcu od Resetovať krátke adresy. Nespúšťajte Štart na zbernici, ktorá stále obsahuje predtým naprogramované zariadenia, pokiaľ najprv nespravíte reset — algoritmus nájde iba zariadenia bez krátkej adresy.
  3. Hľadajte slučky vo vedení. DALI netoleruje kruhy; prerušte akúkoľvek slučku a znovu zakončite oba otvorené konce.
Set Slave ID nezmení adresu
  1. Potvrďte DIP4 = OFF na bráne. Keď je DIP4 = ON, hardvér núti Unit ID 255 bez ohľadu na FLASH hodnotu.
  2. Potvrďte, že brána po akcii skutočne reštartovala (LED brány krátko zhasnú). Ak nie, manuálne spustite Reset Gateway.
  3. Znovu importujte šablónu s novým import parametrom SlaveId — predtým importovaný modul stále poluje na starej adrese.
Komunikácia chvíľu funguje a potom zlyhá
  1. Skontrolujte, že RS485 GND je pripojená medzi bránou a spoločnou zemou napájacieho zdroja TapHome. Chýbajúca GND je najčastejšia chyba RS-485.
  2. Overte zakončenie — 120 Ω na oboch koncoch RS-485 zbernice. Pre RTU-over-TCP cez serial bridge sa uistite, že bridge je v rámcovom RTU režime, nie v raw TCP, a že medziznaková medzera na sériovej strane zodpovedá časovaniu 9600 baud 8N1.
  3. Znížte počet paralelných DALI dotazov — brána serializuje DALI transakcie a neriadi arbitráž medzi viacerými Modbus mastermi.

Dostupné zariadenia

Resi Dali - Konfigurácia Modul
Servisné atribúty
Slave IDČíta Modbus Unit ID uložené vo FLASH registri H:65221 — slúži na overenie aktuálnej adresy brány
Gear 0DALI device-type sonda na krátkej adrese 0 — vráti DT{n}, keď ovládacie zariadenie odpovie, alebo -- keď je adresa voľná
Gear 1DALI device-type sonda na krátkej adrese 1 — vráti DT{n} alebo --
Gear 2DALI device-type sonda na krátkej adrese 2 — vráti DT{n} alebo --
Gear 3DALI device-type sonda na krátkej adrese 3 — vráti DT{n} alebo --
Gear 4DALI device-type sonda na krátkej adrese 4 — vráti DT{n} alebo --
Gear 5DALI device-type sonda na krátkej adrese 5 — vráti DT{n} alebo --
Gear 6DALI device-type sonda na krátkej adrese 6 — vráti DT{n} alebo --
Gear 7DALI device-type sonda na krátkej adrese 7 — vráti DT{n} alebo --
Gear 8DALI device-type sonda na krátkej adrese 8 — vráti DT{n} alebo --
Gear 9DALI device-type sonda na krátkej adrese 9 — vráti DT{n} alebo --
Gear 10DALI device-type sonda na krátkej adrese 10 — vráti DT{n} alebo --
Gear 11DALI device-type sonda na krátkej adrese 11 — vráti DT{n} alebo --
Gear 12DALI device-type sonda na krátkej adrese 12 — vráti DT{n} alebo --
Gear 13DALI device-type sonda na krátkej adrese 13 — vráti DT{n} alebo --
Gear 14DALI device-type sonda na krátkej adrese 14 — vráti DT{n} alebo --
Gear 15DALI device-type sonda na krátkej adrese 15 — vráti DT{n} alebo --
Gear 16DALI device-type sonda na krátkej adrese 16 — vráti DT{n} alebo --
Gear 17DALI device-type sonda na krátkej adrese 17 — vráti DT{n} alebo --
Gear 18DALI device-type sonda na krátkej adrese 18 — vráti DT{n} alebo --
Gear 19DALI device-type sonda na krátkej adrese 19 — vráti DT{n} alebo --
Gear 20DALI device-type sonda na krátkej adrese 20 — vráti DT{n} alebo --
Gear 21DALI device-type sonda na krátkej adrese 21 — vráti DT{n} alebo --
Gear 22DALI device-type sonda na krátkej adrese 22 — vráti DT{n} alebo --
Gear 23DALI device-type sonda na krátkej adrese 23 — vráti DT{n} alebo --
Gear 24DALI device-type sonda na krátkej adrese 24 — vráti DT{n} alebo --
Gear 25DALI device-type sonda na krátkej adrese 25 — vráti DT{n} alebo --
Gear 26DALI device-type sonda na krátkej adrese 26 — vráti DT{n} alebo --
Gear 27DALI device-type sonda na krátkej adrese 27 — vráti DT{n} alebo --
Gear 28DALI device-type sonda na krátkej adrese 28 — vráti DT{n} alebo --
Gear 29DALI device-type sonda na krátkej adrese 29 — vráti DT{n} alebo --
Gear 30DALI device-type sonda na krátkej adrese 30 — vráti DT{n} alebo --
Gear 31DALI device-type sonda na krátkej adrese 31 — vráti DT{n} alebo --
Gear 32DALI device-type sonda na krátkej adrese 32 — vráti DT{n} alebo --
Gear 33DALI device-type sonda na krátkej adrese 33 — vráti DT{n} alebo --
Gear 34DALI device-type sonda na krátkej adrese 34 — vráti DT{n} alebo --
Gear 35DALI device-type sonda na krátkej adrese 35 — vráti DT{n} alebo --
Gear 36DALI device-type sonda na krátkej adrese 36 — vráti DT{n} alebo --
Gear 37DALI device-type sonda na krátkej adrese 37 — vráti DT{n} alebo --
Gear 38DALI device-type sonda na krátkej adrese 38 — vráti DT{n} alebo --
Gear 39DALI device-type sonda na krátkej adrese 39 — vráti DT{n} alebo --
Gear 40DALI device-type sonda na krátkej adrese 40 — vráti DT{n} alebo --
Gear 41DALI device-type sonda na krátkej adrese 41 — vráti DT{n} alebo --
Gear 42DALI device-type sonda na krátkej adrese 42 — vráti DT{n} alebo --
Gear 43DALI device-type sonda na krátkej adrese 43 — vráti DT{n} alebo --
Gear 44DALI device-type sonda na krátkej adrese 44 — vráti DT{n} alebo --
Gear 45DALI device-type sonda na krátkej adrese 45 — vráti DT{n} alebo --
Gear 46DALI device-type sonda na krátkej adrese 46 — vráti DT{n} alebo --
Gear 47DALI device-type sonda na krátkej adrese 47 — vráti DT{n} alebo --
Gear 48DALI device-type sonda na krátkej adrese 48 — vráti DT{n} alebo --
Gear 49DALI device-type sonda na krátkej adrese 49 — vráti DT{n} alebo --
Gear 50DALI device-type sonda na krátkej adrese 50 — vráti DT{n} alebo --
Gear 51DALI device-type sonda na krátkej adrese 51 — vráti DT{n} alebo --
Gear 52DALI device-type sonda na krátkej adrese 52 — vráti DT{n} alebo --
Gear 53DALI device-type sonda na krátkej adrese 53 — vráti DT{n} alebo --
Gear 54DALI device-type sonda na krátkej adrese 54 — vráti DT{n} alebo --
Gear 55DALI device-type sonda na krátkej adrese 55 — vráti DT{n} alebo --
Gear 56DALI device-type sonda na krátkej adrese 56 — vráti DT{n} alebo --
Gear 57DALI device-type sonda na krátkej adrese 57 — vráti DT{n} alebo --
Gear 58DALI device-type sonda na krátkej adrese 58 — vráti DT{n} alebo --
Gear 59DALI device-type sonda na krátkej adrese 59 — vráti DT{n} alebo --
Gear 60DALI device-type sonda na krátkej adrese 60 — vráti DT{n} alebo --
Gear 61DALI device-type sonda na krátkej adrese 61 — vráti DT{n} alebo --
Gear 62DALI device-type sonda na krátkej adrese 62 — vráti DT{n} alebo --
Gear 63DALI device-type sonda na krátkej adrese 63 — vráti DT{n} alebo --
Servisné akcie
Reset GatewayZapíše 1 do registra H:6000 na reštart brány RESI-DALI — potrebné po zmene Slave ID alebo na obnovu DALI motora po skrate zbernice
Set Slave IDZapíše nové Modbus Unit ID do FLASH registra H:65221 a vyvolá reset, aby sa brána reštartovala s novou adresou (1–255, DIP4 musí byť OFF)
Turn On All LampsZapíše 0xFE do DALI broadcast úrovňového registra H:530 — rozsvieti každé ovládacie zariadenie na zbernici na maximálny jas (rýchly test uvedenia do prevádzky)
Turn Off All LampsZapíše 0x00 do DALI broadcast úrovňového registra H:530 — vypne každé ovládacie zariadenie na zbernici

${resi_dali_configuration}

Servisné atribúty
${xml_slave_id}
modbusr(H,65221,uint16)
Gear 0
var ShortAddress := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 1
var ShortAddress := 1;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 2
var ShortAddress := 2;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 3
var ShortAddress := 3;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 4
var ShortAddress := 4;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 5
var ShortAddress := 5;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 6
var ShortAddress := 6;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 7
var ShortAddress := 7;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 8
var ShortAddress := 8;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 9
var ShortAddress := 9;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 10
var ShortAddress := 10;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 11
var ShortAddress := 11;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 12
var ShortAddress := 12;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 13
var ShortAddress := 13;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 14
var ShortAddress := 14;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 15
var ShortAddress := 15;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 16
var ShortAddress := 16;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 17
var ShortAddress := 17;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 18
var ShortAddress := 18;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 19
var ShortAddress := 19;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 20
var ShortAddress := 20;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 21
var ShortAddress := 21;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 22
var ShortAddress := 22;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 23
var ShortAddress := 23;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 24
var ShortAddress := 24;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 25
var ShortAddress := 25;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 26
var ShortAddress := 26;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 27
var ShortAddress := 27;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 28
var ShortAddress := 28;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 29
var ShortAddress := 29;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 30
var ShortAddress := 30;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 31
var ShortAddress := 31;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 32
var ShortAddress := 32;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 33
var ShortAddress := 33;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 34
var ShortAddress := 34;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 35
var ShortAddress := 35;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 36
var ShortAddress := 36;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 37
var ShortAddress := 37;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 38
var ShortAddress := 38;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 39
var ShortAddress := 39;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 40
var ShortAddress := 40;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 41
var ShortAddress := 41;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 42
var ShortAddress := 42;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 43
var ShortAddress := 43;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 44
var ShortAddress := 44;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 45
var ShortAddress := 45;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 46
var ShortAddress := 46;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 47
var ShortAddress := 47;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 48
var ShortAddress := 48;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 49
var ShortAddress := 49;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 50
var ShortAddress := 50;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 51
var ShortAddress := 51;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 52
var ShortAddress := 52;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 53
var ShortAddress := 53;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 54
var ShortAddress := 54;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 55
var ShortAddress := 55;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 56
var ShortAddress := 56;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 57
var ShortAddress := 57;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 58
var ShortAddress := 58;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 59
var ShortAddress := 59;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 60
var ShortAddress := 60;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 61
var ShortAddress := 61;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 62
var ShortAddress := 62;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Gear 63
var ShortAddress := 63;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x99);
sleep(5); var rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var x := modbusr(SH, 511, uint16);
if (x != 0x8000, return("DT" + x), return("--"));
Servisné akcie
${xml_reset_gateway}
modbusw(SH,6000,uint16,1)
${xml_set_slave_id}
Parametre: ${xml_slave_id} (1–255 SID)
modbusw(SH, 65221, uint16, SID);

modbusw(SH,6000, uint16, 1);
${xml_turn_on_all_lamps}
modbusw(SH, 530, uint16, 0xFE)
${xml_turn_off_all_lamps}
modbusw(SH, 530, uint16, 0x00)
Nájsť nové zariadenia Viacstavový prepínač

Sprievodca uvedením do prevádzky, ktorý prechádza algoritmom náhodného adresovania DALI 2.0, aby priradil krátke adresy 0–63 ovládacím zariadeniam

Register: H:541H:542 UInt16 numeric
Hodnoty / Stavy: TERMINATE · ${xml_start} · ${xml_scan_short_address} · Set SEARCHADDR · COMPARE · PROGRAM SHORT ADDRESS · Check · Try again · ${xml_reset_short_addresses} · ${xml_finish}

Nájsť nové zariadenia

Čítanie stavu prepínača
var x := 0x8000; var rx := 0;

if Mu = 1
	if exit <= 0
		status := 255;
        return(9);
    end
    # check SEARCHADDRH
    modbusw(SH, 541, uint16, 0xB500 + getbyte(SEARCHADDRH,0));
    sleep(500);
    modbusw(SH, 541, uint16, 0xB300 + getbyte(SEARCHADDRH,1));
    sleep(500);
    modbusw(SH, 541, uint16, 0xB100 + getbyte(SEARCHADDRH,2));
    sleep(500);
    modbusw(SH, 541, uint16, 0xA900);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2);
    if !rx
        sleep(50);
        rx := getbits(modbusr(SH, 550, uint16), 0, 2);
    end
    if rx
        x := modbusr(SH, 541, uint16);
        if getbyte(x, 0) = 0xFF
            #match: lets check
            return(2);
        else
            return(7);
        end
    else
        return(7);
    end
end
if Mu = 2
    # find max short address
    if SHORTADDR >= 63
        status := 254;
        return(9);
    end
    if iterator >= 64
        status := 10;
        return(3);
    end
    modbusw(SH, 511, uint16, (iterator << 8) + 0x91);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 511, uint16);
    if (x = 0xFF, SHORTADDR := iterator); 
    iterator := iterator + 1;
end
if Mu = 3
    # set SEARCHADDR
    SEARCHADDRM := SEARCHADDRH - ((SEARCHADDRH - SEARCHADDRL) >> 1);
    if(SEARCHADDRM = SEARCHADDRH or SEARCHADDRM = SEARCHADDRL, return(6));
    modbusw(SH, 541, uint16, 0xB500 + getbyte(SEARCHADDRM,0));
    sleep(50);
    modbusw(SH, 541, uint16, 0xB300 + getbyte(SEARCHADDRM,1));
    sleep(50);
    modbusw(SH, 541, uint16, 0xB100 + getbyte(SEARCHADDRM,2));
    sleep(50);
    return(4);
end
if Mu = 4
    # COMPARE
    modbusw(SH, 541, uint16, 0xA900);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2);
    if !rx
        sleep(50);
        rx := getbits(modbusr(SH, 550, uint16), 0, 2);
    end
    if rx
        x := modbusr(SH, 541, uint16);
        #collision or match: lets search the lower segment
        SEARCHADDRH := SEARCHADDRM;
    else
        #no response: lets look up in the higher segment
        SEARCHADDRL := SEARCHADDRM;
    end
    return(3);
end
if Mu = 6
    # check SEARCHADDRL
    modbusw(SH, 541, uint16, 0xB500 + getbyte(SEARCHADDRL,0));
    sleep(50);
    modbusw(SH, 541, uint16, 0xB300 + getbyte(SEARCHADDRL,1));
    sleep(50);
    modbusw(SH, 541, uint16, 0xB100 + getbyte(SEARCHADDRL,2));
    sleep(50);
    modbusw(SH, 541, uint16, 0xA900);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2);
    if !rx
        sleep(50);
        rx := getbits(modbusr(SH, 550, uint16), 0, 2);
    end
    if rx
        x := modbusr(SH, 541, uint16);
        if getbyte(x, 0) = 0xFF
            #exact match: we have it, lets finish
            return(5);
        else
            #collision: 2 gear with same SEARCHADDR or something went wrong, start over
            return(7);
        end
    end
    # check SEARCHADDRH
    modbusw(SH, 541, uint16, 0xB500 + getbyte(SEARCHADDRH,0));
    sleep(50);
    modbusw(SH, 541, uint16, 0xB300 + getbyte(SEARCHADDRH,1));
    sleep(50);
    modbusw(SH, 541, uint16, 0xB100 + getbyte(SEARCHADDRH,2));
    sleep(50);
    modbusw(SH, 541, uint16, 0xA900);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2);
    if !rx
        sleep(50);
        rx := getbits(modbusr(SH, 550, uint16), 0, 2);
    end    
    if rx
        x := modbusr(SH, 541, uint16);
        if getbyte(x, 0) = 0xFF
            #exact match: we have it, lets finish
            return(5);
        else
            #collision: 2 gear with same SEARCHADDR or something went wrong, start over
            return(7);
        end
    else
        #no response: something went wrong, finish with error
        status := 220;
        #return(9);
        return(7);
    end
end
if Mu = 5
	exit := 3;
    # PROGRAM SHORT ADDRESS
    SHORTADDR := SHORTADDR + 1;
    #program
    modbusw(SH, 542, uint16, 0xB701 + (SHORTADDR << 1));
    sleep(100);
    #verify
    modbusw(SH, 541, uint16, 0xB901 + (SHORTADDR << 1));
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
    x := modbusr(SH, 541, uint16);
    if getbyte(x, 0) = 0xFF
        status := 0;
    else
        status := 230;
        #return(9);
        SHORTADDR := SHORTADDR - 1;
        return(7);
    end
    #blink
    modbusw(SH, 511, uint16, SHORTADDR + 0x06);
    sleep(500);
    modbusw(SH, 511, uint16, SHORTADDR + 0x05);
    sleep(500);
    modbusw(SH, 511, uint16, SHORTADDR + 0x06);
    #WITHDRAW
    modbusw(SH, 541, uint16, 0xAB00);
    sleep(100);
    SEARCHADDRH := 0xFFFFFF;
    SEARCHADDRL := 0;
    return(1);
end
if Mu = 9
    # finish
    if(status = 99, adderror("Timeout!"));
    if(status = 220, adderror("Check failed! (" + tostring(SEARCHADDRH, "X2") + " | " + tostring(SEARCHADDRL, "X2") + " )"));
    if(status = 230, adderror("Verify short address failed! (" + tostring(SHORTADDR, "X2") + " | " + tostring(x, "X2") + 
        " | " + tostring(SEARCHADDRH, "X2") + " | " + tostring(SEARCHADDRM, "X2") + " | " + tostring(SEARCHADDRL, "X2") + " )"));
    if(status = 231, adderror("Short address mismatch! (" + tostring(SHORTADDR, "X2") + " | " + tostring(x, "X2") + " )"));
    if(status = 254, adderror("All short addresses are in use!"));
    if status = 255
        modbusw(SH, 531, uint16, 0x96);
        sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
        x := modbusr(SH, 531, uint16);
        if getbyte(x, 0) = 0xFF
            adderror("Some gear is still missing short address, but no response from SEARCHADDRH! ( " + tostring(SEARCHADDRH, "X2") + " )");
        else    
            status := 1;
        end
    end
    if(status = 1, addinfo("Search finished")); 
    if(status = 200 or status = 230 or status = 231 or status = 254, iterator := 0); 
end
#debug
#if(Mu = 7, addinfo("Debug:" + tostring(x, "X2") + " | " + status),0);

#if(Mu = 1, status := "rx:" + getbits(y, 0, 2) + "|" + getbits(y, 4, 1) + "|" + getbits(y, 5, 1), 0);
#if(Mu = 1, return(7),0);
if Mu = 7
	if SEARCHADDRH = SEARCHADDRL
    	SEARCHADDRH := 0xFFFFFF;
    	SEARCHADDRL := 0;
    	exit := exit -1;
        return(1);
    end
	SEARCHADDRH := SEARCHADDRH >> 1;
	SEARCHADDRL := 0;
	if(iterator < 64, SHORTADDR := -1);
	if(iterator < 64, iterator := 0);    
    # check SEARCHADDRH
    modbusw(SH, 541, uint16, 0xB500 + getbyte(SEARCHADDRH,0));
    sleep(500);
    modbusw(SH, 541, uint16, 0xB300 + getbyte(SEARCHADDRH,1));
    sleep(500);
    modbusw(SH, 541, uint16, 0xB100 + getbyte(SEARCHADDRH,2));
    sleep(500);
    modbusw(SH, 541, uint16, 0xA900);
    sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2);
    if !rx
        sleep(50);
        rx := getbits(modbusr(SH, 550, uint16), 0, 2);
    end
    if rx
        x := modbusr(SH, 541, uint16);
        if getbyte(x, 0) = 0xFF
            #match: lets check
            return(2);
        else
            return(6);
        end
    else
        return(6);
    end
end
return(Mu);
Zápis stavu prepínača
# TERMINATE
if(Mu = 0, modbusw(SH, 542, uint16, 0xA100), 0);
# INITIALIZE:CONTROL GEARS WITHOUT SHORT ADDRESS
if(Mu = 1, modbusw(SH, 542, uint16, 0xA5FF), 0);
if(Mu = 1, sleep(100));
# RANDOMIZE
if(Mu = 1, modbusw(SH, 542, uint16, 0xA700), 0);
if(Mu = 1, sleep(100));
# Init SEARCHADDR variables
if(Mu = 1, SEARCHADDRH := 0xFFFFFF, 0);
#if(Mu = 1, SEARCHADDRM := SEARCHADDRH / 2, 0);
if(Mu = 1, SEARCHADDRL := 0, 0);
if(Mu = 1, if(iterator < 64, SHORTADDR := -1, 0), 0);
if(Mu = 1, if(iterator < 64, iterator := 0, 0), 0);
if(Mu = 1, exit := 3, 0);
# Reset Short Addresses 
if(Mu = 8, modbusw(h, 541, uint16, 0xA3FF), 0);
if(Mu = 8, sleep(100));
if(Mu = 8, modbusw(h, 532, uint16, 0x80), 0);
if(Mu = 8, SHORTADDR := -1, 0);
if(Mu = 8, iterator := 64, 0);
# Reset All to Defaults 
#if(Mu = 7, modbusw(SH, 532, uint16, 0x20), 0);
#if(Mu = 7, sleep(100));
#collision: halve interval


sleep(100);
Pripojenie: Modbus RTU • 9600 baud• 8N1 • Slave ID: $[SlaveId]
Možné vylepšenia (9)
  • H:510 Lamp Level (per short address) — Daily operational dimming (upper 8b = short addr, lower 8b = arc power 0–254). Covered by the sibling operational template (Resi Dali, Dali.xml) — this commissioning template is intentionally addressing-only
  • H:520 Group Level — Group 0–15 arc power for daily group control — handled by the operational Resi Dali template
  • H:521 Group Command — Group commands (ON/OFF/scenes/recall) — not needed for addressing
  • H:531 Broadcast Command — The Finish state uses H:531=0x96 internally to poll QUERY MISSING SHORT ADDRESS, but the register is not exposed as a user action
  • H:551 DALI Bus Error (word) — 1 = DALI bus fault / short — useful diagnostic during commissioning, could be added as a module-level service attribute
  • H:100 DALI Priority Slot — 0–4 → 12–16 ms forward-frame slots, default 2. Bus-tuning parameter; safe to leave at default
  • H:65222 Baud Rate (FLASH) — Only honored when DIP1=DIP2=ON. Template pins 9600 baud via connection_details, so this register is out of scope
  • H:65224 Parity (FLASH) — 0=None, 1=Even, 2=Odd. Template hard-codes None (8N1)
  • H:65225 Stop Bits (FLASH) — 1 or 2. Template hard-codes 1

Zdroje