Szablon Resi DALI jest runtime’owym odpowiednikiem operacyjnym narzędzia uruchomieniowego Resi Dali - Konfiguracja. Łączy TapHome z w pełni zaadresowaną magistralą oświetleniową DALI przez bramę Modbus-DALI RESI-DALI-SIO lub RESI-DALI-ETH i udostępnia codzienne sterowanie dla maksymalnie 64 indywidualnie zaadresowanych urządzeń sterujących DALI (gears) (krótkie adresy 0–63) i 16 grup broadcast DALI (0–15), plus status DALI 1.0 per gear, diagnostykę awarii lampy i awarii zasilania.
Komunikacja z bramą używa Modbus RTU przy 9600 baud 8N1. Zapisy jasności idą do H:510 LAMP LEVEL (per gear) i H:520 GROUP LEVEL (per grupa); polecenia konfiguracyjne i zapytania per gear są tunelowane przez H:511 LAMP COMMAND / H:512 LAMP COMMAND + REPEAT, podczas gdy rejestr bramy H:550 DALI STATUS jest pollowany pod kątem gotowości odpowiedzi.
Ten szablon zakłada, że krótkie adresy DALI są już zaprogramowane na magistrali. Jeśli gear-y nie mają jeszcze adresu, użyj najpierw szablonu Resi Dali - Konfiguracja (lub bezpłatnego narzędzia producenta MODBUSConfigurator / DCA), aby uruchomić kreatora losowego adresowania DALI 2.0 — patrz Relacja z szablonem konfiguracyjnym poniżej.
RESI-DALI-SIO (RS-485) i RESI-DALI-ETH (Ethernet) to bramy master na szynę DIN, które znajdują się między hostem szeregowym/Ethernet a magistralą oświetleniową DALI. SIO jest w obudowie CEM17 (17,5 × 90 × 56,4 mm), a ETH w szerszej obudowie CEM35 (35,8 × 90 × 56,4 mm), aby pomieścić złącze RJ45. Żadna z bram nie zasila samodzielnie magistrali DALI — towarzyszący zasilacz magistrali DALI (RESI-DALI-PS lub dowolny zgodny zasilacz DALI 200 mA) jest obowiązkowy.
Podłączenie RESI-DALI-SIO (RS-485)
Zaciski po lewej stronie RESI-DALI-SIO (od góry → na dół): GND, +12..48V=, RS485 DATA+ (A+), RS485 DATA- (B-), RS485 GND, RS232 TX, RS232 RX, RS232 GND. Zaciski magistrali DALI po przeciwnej stronie to D+ / N/C / D- (3-pinowy blok USLIM, środkowy pin N/C pozostaje niepodłączony).
Do instalacji TapHome użyj interfejsu RS-485:
RS485 DATA+ (A+) → A+/D+ na magistrali RS-485 TapHome
RS485 DATA- (B-) → B-/D- na magistrali RS-485 TapHome
RS485 GND → GND na zasilaczu TapHome (zalecane dla stabilnej komunikacji)
+12..48V= / GND → zasilanie pierwotne 12–48 V DC
Podłączenie RESI-DALI-ETH (Ethernet)
Wariant Ethernet ma te same zaciski magistrali DALI (D+ / N/C / D-) i wejścia zasilania pierwotnego (GND, +12..48V=), plus pojedyncze złącze RJ45 dla Ethernetu 10/100 Mbit. Fabryczne ustawienia IP to 192.168.0.191 / 255.255.255.0 / 192.168.0.1 z Modbus Unit ID 255; wbudowane UI webowe używa danych logowania RESI / RESI.
Ponieważ jest to szablon Modbus RTU, TapHome nie komunikuje się z RESI-DALI-ETH przez natywny Modbus/TCP. Użyj go zamiast tego w przezroczystym trybie RTU-over-Ethernet, lub umieść SIO za mostem szeregowy-IP (Moxa NPort, USR-TCP232) — patrz Konfiguracja → Konfiguracja RTU-over-TCP poniżej.
Zasilacz magistrali DALI (RESI-DALI-PS)
RESI-DALI-PS dostarcza do 200 mA na magistrali DALI (prąd zwarciowy ~225 mA, napięcie magistrali typowo 14–18 V) i obsługuje do 64 statecznikow DALI 1.0 lub urządzeń sterujących DALI 2.0 na pojedynczej linii. Strona pierwotna akceptuje to samo zasilanie 12–48 V DC, co jednostka SIO/ETH. Brama i zasilacz podłączają się do tej samej pary D+ / D- — zasilacz energizuje magistralę, podczas gdy brama czyta i zapisuje ramki DALI.
Trzy diody LED na zasilaczu pomagają w diagnostyce awarii: POWER (pierwotne 12–48 V OK, świeci stale podczas normalnej pracy), DALI (krótko miga podczas ruchu na magistrali DALI), ERR (świeci stale przy awarii zasilacza, zwarciu DALI lub przeciążeniu magistrali — musi być wyłączona podczas normalnej pracy).
Topologia magistrali DALI
Linia DALI ma kilka twardych ograniczeń, które bezpośrednio wpływają na stabilność runtime:
Przekrój przewodnika
Maks. długość kabla DALI
1,5 mm²
300 m
1,0 mm²
238 m
0,75 mm²
174 m
0,5 mm²
116 m
Limit wynika z maksymalnie dopuszczalnego spadku napięcia 2 V na kablu DALI. Pozostałe zasady:
Maksymalnie 64 stateczniki DALI 1.0 i do 64 urządzeń sterujących DALI 2.0 na magistralę (oddzielne przestrzenie krótkich adresów).
Tylko topologia drzewa — żadnych pierścieni, żadnych pętli.
Rzeczywista liczba gear-ów zależy także od znamionowego prądu zasilacza (typowo 200 mA na RESI-DALI-PS; licz ~2 mA na gear plus rezerwa).
RESI-DALI-PS (lub równoważny zasilacz DALI) jest obowiązkowy. Bez niego brama nie może zasilać magistrali, a każdy odczyt per gear zakończy się timeoutem “Gear not present!”. Jeśli na długiej linii dodawany jest drugi zasilacz, wstaw dławik DALI lub podziel magistralę na galwanicznie oddzielone segmenty.
Parametry szeregowe hosta na RESI-DALI-SIO są wybierane 4-pozycyjnym przełącznikiem DIP na module. Szablon TapHome jest na stałe ustawiony na 9600 baud 8N1, więc przełączniki DIP muszą się zgadzać.
DIP1
DIP2
Baud rate
OFF
OFF
9600 bd (wymagane przez TapHome)
ON
OFF
19200 bd
OFF
ON
38400 bd
ON
ON
Używa baud rate zaprogramowanego w FLASH (fabryczne 57600 bd)
DIP4
Źródło Modbus Unit ID
OFF
Rejestr FLASH H:65221 jest honorowany — wymagane, jeśli podczas uruchomienia zaprogramowano niestandardowy Slave ID
ON
Sprzętowy fallback — Unit ID jest wymuszony na 255, wartość FLASH jest ignorowana
DIP3 to bit zarezerwowany dla produktu; pozostaw go w pozycji fabrycznej. Parzystość jest stała na None, a bit stopu na 1 (format ramki 8N1) dla wybranych powyżej kombinacji baud rate DIP1/DIP2.
Terminacja RS-485: zakończ magistralę rezystorem 120 Ω na obu końcach. TapHome Core zapewnia jedną terminację na swoich zaciskach BUS; jeśli brama RESI jest ostatnim urządzeniem na linii, dodaj dyskretny rezystor 120 Ω między A+ / B- na jej zaciskach RS-485.
Slave ID
Domyślny fabryczny Modbus Unit ID to 255 (rejestr FLASH H:65221 czyta 0xFFFF, co brama klampuje na 255). Szablon udostępnia atrybut serwisowy na poziomie modułu Slave ID, który odczytuje ten rejestr, dzięki czemu skonfigurowany adres można zweryfikować po imporcie.
Zmiana Slave ID jest sprawą uruchomienia obsługiwaną przez bratni szablon Resi Dali - Konfiguracja — ten szablon runtime celowo nie zapisuje do H:65221 ani nie wyzwala resetu programowego, dzięki czemu może pozostać aktywny w projekcie bez ryzyka przypadkowej rekonfiguracji bramy.
Konfiguracja RTU-over-TCP
Ponieważ szablon używa połączenia Modbus RTU, oferowany jest również parametr importu IpAddress dla instalacji, w których TapHome dociera do bramy przez most szeregowy-IP (Moxa NPort, USR-TCP232) lub przez RESI-DALI-ETH w przezroczystym trybie RTU-over-Ethernet. W takim przypadku skieruj IpAddress na IP mostu / jednostki ETH i zachowaj wszystkie inne ustawienia identyczne z wariantem RS-485. Dla czystego Modbus/TCP bardziej naturalny byłby szablon oparty na TCP — ten szablon Modbus RTU oczekuje konkretnie ramkowego ruchu RTU.
Tylko jeden master Modbus naraz. Ani DALI, ani Modbus RTU nie arbitrują między równoczesnymi masterami. Jeśli PLC, BMS lub narzędzie PC (na przykład MODBUSConfigurator) również polluje bramę, zapytania gear będą kolidować, a TapHome będzie zgłaszać sporadyczne błędy “Gear not responding!”.
Ta sama definicja Dali.xml jest dostarczana z bramą RESI jako dwa komplementarne szablony TapHome, które działają w różnych fazach cyklu życia tego samego sprzętu:
Szablon
Faza
Co robi
Kiedy używać
Resi Dali - Konfiguracja (resi-dali-daliconfig)
Jednorazowe uruchomienie
Kreator losowego adresowania DALI 2.0, sondowanie device-type per adres, testy zdrowia broadcast ON/OFF, Set Slave ID, Reset Gateway
Nowa instalacja: przypisz krótkie adresy 0–63 urządzeniom sterującym, sprawdź, które adresy są zajęte
Resi DALI (resi-dali-dali, ten szablon)
Codzienne sterowanie runtime
Ściemnianie per gear (64 gear-y), ściemnianie grupowe (16 grup), diagnostyka DALI 1.0 per gear, zarządzanie członkostwem grup
Po uruchomieniu: sterowanie oświetleniem dla użytkownika końcowego
Typowy przebieg projektu:
Podłącz i zasil magistralę DALI (RESI-DALI-PS) i bramę.
Zaimportuj szablon Resi Dali - Konfiguracja, uruchom Reset Short Addresses → Start → Scan / SEARCHADDR / COMPARE / PROGRAM SHORT ADDRESS / Check aż każdy widoczny gear będzie miał krótki adres. Zweryfikuj przez Gear 0..63 i Turn On / Off All Lamps.
Usuń moduł Resi Dali - Konfiguracja z projektu.
Zaimportuj szablon Resi DALI (ten) do sterowania runtime. Zmapuj urządzenia Gear N i Group N na sceny, harmonogramy i reguły TapHome.
Oba szablony mogą również tymczasowo współistnieć — np. przy dodawaniu nowego gear-a do działającej instalacji — ale tylko jeden powinien wysyłać ruch Modbus jednocześnie. Szablon runtime celowo pomija akcje rekonfiguracji bramy (Reset Gateway, Set Slave ID, broadcast ALL LEVEL), dzięki czemu może pozostać w projekcie bez ryzyka nadpisania ustawień uruchomienia.
Bezpłatne narzędzie DCA producenta MODBUSConfigurator (Windows, dostępne ze strony RESI) można również użyć do uruchomienia zamiast szablonu TapHome Resi Dali - Konfiguracja. Szablon runtime Resi DALI działa tak samo, niezależnie od tego, którego narzędzia użyto do przypisania krótkich adresów.
Szablon udostępnia 80 urządzeń DALI w TapHome, zorganizowanych w dwóch równoległych grupach: 64 ściemniacze Gear (jeden na każdy krótki adres DALI) i 16 ściemniaczy Group (jeden na każdą grupę DALI). Jeden atrybut serwisowy na poziomie modułu uzupełnia obraz.
Ściemnianie per gear — Gear 0 … Gear 63
Każde z 64 urządzeń serwisowych Gear 0, Gear 1, … Gear 63 to ściemniacz TapHome, który celuje w pojedyncze urządzenie sterujące DALI pod odpowiadającym krótkim adresem. Zapisy jasności idą do H:510 LAMP LEVEL (TapHome 0–100 % jest skalowane liniowo do zakresu DALI arc power, ograniczonego przez własne MIN LEVEL i MAX LEVEL gear-a); rzeczywisty poziom jest odczytywany z H:511 przez polecenie DALI QUERY ACTUAL LEVEL (0xA0) i przeskalowywany z powrotem do 0–100 %.
Gdy szablon importuje gear, skrypt init najpierw sonduje gear za pomocą QUERY STATUS (0x91); odpowiedź 0x8000 „brak odpowiedzi" oznacza gear jako nieobecny (z 1–60 s wykładniczym back-off) i emituje „Gear not present!" w logu TapHome. Jeśli gear odpowie, skrypt init następnie czyta QUERY LAMP FAILURE (0x92), QUERY POWER FAILURE (0x9B), QUERY MIN LEVEL (0xA2) i QUERY MAX LEVEL (0xA1) i zapisuje wyniki w stanie wewnętrznym dla okresowego readscriptu.
Każdy gear udostępnia 10 atrybutów serwisowych, które na żądanie czytają polecenia zapytań DALI 1.0 / 2.0:
Atrybut serwisowy
Polecenie DALI
Zgłasza
Short Address
(wewnętrzny)
Krótki adres (0–63), na który celuje to urządzenie — ustalony w czasie importu szablonu
Device Type
QUERY DEVICE TYPE (0x99)
DT{n} (np. DT0 fluorescencyjny, DT6 LED, DT8 kolor / tunable white) lub -- gdy brak odpowiedzi
Physical Min Level
QUERY PHYSICAL MIN LEVEL (0x9A)
Wymuszony sprzętowo minimalny poziom ściemniania w %
Max Level
QUERY MAX LEVEL (0xA1)
Skonfigurowana górna granica używana przy skalowaniu 0–100 % na DALI arc power
Min Level
QUERY MIN LEVEL (0xA2)
Skonfigurowana dolna granica używana przy skalowaniu 0–100 % na DALI arc power
Power Up Level
QUERY POWER ON LEVEL (0xA3)
Jasność przywrócona po ponownym zasileniu magistrali DALI
System Failure Level
QUERY SYSTEM FAILURE LEVEL (0xA4)
Jasność przyjęta, gdy magistrala traci komunikację na >500 ms
Groups
QUERY GROUPS 0-7 (0xC0) + QUERY GROUPS 8-15 (0xC1)
Lista grup DALI (oddzielona przecinkami), do których należy gear (None lub np. 0,3,7)
Support Lamp Failure
QUERY LAMP FAILURE (0x92) capability bit
Yes / No / -- — bramkuje błąd „Lamp failure!" w okresowym readscript
Support Power Failure
QUERY POWER FAILURE (0x9B) capability bit
Yes / No / -- — bramkuje błąd „Power failure!" w okresowym readscript
Okresowy readscript na każdym gear-ze czyta aktualny poziom arc (0xA0) i, gdy obsługiwane, śledzi flagi awarii lampy i awarii zasilania — wystawione jako ostrzeżenia/błędy TapHome, dzięki czemu uszkodzona świetlówka lub wyzwolony sterownik LED pojawia się w logu aktywności bez ręcznego pollowania.
Akcje konfiguracyjne per gear
Cztery akcje serwisowe na każdym urządzeniu Gear N zapisują polecenia konfiguracyjne DALI (auto-powtarzane w 100 ms przez H:512 LAMP COMMAND + REPEAT, jak wymagają polecenia DALI nieulotne):
Add to Group (parametr Group ID 0–15) — wysyła ADD TO GROUP (0x60+grp), więc gear dołącza do wybranej grupy DALI i będzie posłusznie wykonywać następne zapisy broadcast grupy.
Remove from Group (parametr Group ID 0–15) — wysyła REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings — wysyła DALI RESET (0x20); przywraca wszystkie parametry NVM gear-a (max/min/power-on/system-failure level, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels — przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level w kolejności: STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D), każdy z 10 ms odstępem.
Ściemnianie grupowe — Group 0 … Group 15
Każde z 16 urządzeń serwisowych Group 0, Group 1, … Group 15 to ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a należącego do tej grupy DALI, używając H:520 GROUP LEVEL (TapHome 0–100 % jest mnożone przez 0xFE → DALI arc power 0–254). DALI nie pozwala bramie odczytać poziomu grupy — magistrala niesie tylko zapis broadcast — więc TapHome przechowuje ostatnio zapisaną wartość jako „aktualny" poziom. Na urządzeniach grupy nie ma skryptów init ani read.
Każde urządzenie Group N udostępnia dwie akcje serwisowe do masowego zarządzania członkostwem:
Add All Lamps to Group — broadcastuje ADD TO GROUP (0x60+grp) przez H:532 ALL COMMAND + REPEAT. Każdy gear na magistrali dołącza do grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group — broadcastuje REMOVE FROM GROUP (0x70+grp). Każdy gear opuszcza grupę.
Użyj ściemniania grupowego dla „świateł kuchennych", „downlightów salonu" lub dowolnej strefy, w której wiele gear-ów ma śledzić pojedynczy ściemniacz. Zapisy grupowe są znacznie wydajniejsze niż równoległe sterowanie pojedynczymi gear-ami — pojedyncza transakcja Modbus dociera do maks. 64 gear-ów jednocześnie.
Diagnostyka na poziomie modułu
Moduł udostępnia pojedynczy atrybut serwisowy:
Slave ID — czyta Modbus Unit ID przechowywane w rejestrze FLASH H:65221. Aktywne tylko gdy DIP4 = OFF; przy DIP4 = ON brama wymusza adres 255 niezależnie od wartości FLASH. Użyj do weryfikacji adresu bramy przed dodaniem kolejnych urządzeń, zwłaszcza po rundzie uruchomienia, która zapisała niestandardowy ID.
„Gear not present!" na znanym zaadresowanym gear-ze
Potwierdź napięcie magistrali DALI na gear-ze: 11,5–22,5 V (typowo 14–16 V). Niższe odczyty zwykle wskazują na zwarcie lub magistralę, która jest zbyt długa dla przekroju kabla (patrz Topologia magistrali DALI).
Sprawdź diodę ERR na RESI-DALI-PS — jeśli świeci, magistrala jest w zwarciu, przeciążona lub zasilacz sam jest uszkodzony.
Uruchom ponownie sondowanie Gear N w bratnim szablonie Resi Dali - Konfiguracja — szablon runtime ponawia próbę tylko co 1–60 s z wykładniczym back-off, szablon konfiguracyjny daje natychmiastowe pass/fail per adres.
Zweryfikuj, czy gear w ogóle ma krótki adres. Jeśli został wymieniony lub zresetowany fabrycznie na magistrali, będzie nieadresowany i musi zostać ponownie uruchomiony przez Resi Dali - Konfiguracja.
Ściemnianie grupowe nie ma efektu
Potwierdź, że co najmniej jeden gear jest członkiem grupy — otwórz Gear N → Groups na każdym podejrzanym członku i sprawdź, czy ID grupy pojawia się na liście oddzielonej przecinkami.
Jeśli brakuje członkostwa, wyzwól akcję Add to Group na każdym gear-ze indywidualnie, lub użyj Add All Lamps to Group na urządzeniu grupy dla broadcastu po całej magistrali.
Pamiętaj, że Group N jest tylko-do-zapisu — suwak ściemniacza w TapHome przechowuje ostatnio zapisaną wartość, ale nie odzwierciedla rzeczywistego stanu magistrali. Jeśli gear-y są wyłączone, polecenie poziomu grupy nie ma na nie efektu.
Awaria lampy / awaria zasilania nie są zgłaszane
Otwórz atrybuty serwisowe gear-a i sprawdź Support Lamp Failure / Support Power Failure. Jeśli którykolwiek czyta No, sterownik gear-a nie implementuje tego zapytania DALI 1.0 — okresowy readscript bramkuje odpowiedni błąd i nigdy nie ostrzega dla tego gear-a.
Uruchom Reset to Default Settings na gear-ze i ponownie zaimportuj urządzenie. Skrypt init ponownie sprawdza oba bity capability podczas następnego cyklu odczytu.
Sporadyczne błędy Modbus po uruchomieniu
Upewnij się, że żaden inny master Modbus (MODBUSConfigurator, PLC, BMS) nie polluje bramy równolegle. DALI i Modbus nie arbitrują między masterami.
Zweryfikuj, że RS485 GND jest połączony między bramą a wspólną masą zasilacza TapHome — brakująca GND to najczęstsza awaria RS-485 na długich liniach.
Dla RTU-over-TCP przez most szeregowy potwierdź, że most działa w trybie RTU framed (nie raw TCP socket) i że odstęp między znakami po stronie szeregowej respektuje czasowanie 9600 baud 8N1.
Jeśli objawy pojawiły się po zmianie Slave ID przez szablon Resi Dali - Konfiguracja, ponownie zaimportuj ten szablon runtime z nowym parametrem importu SlaveId — wcześniej zaimportowany moduł nadal polluje pod starym adresem.
Dostępne urządzenia
Resi DALIModuł
Atrybuty serwisowe
Slave ID
Czyta Modbus Unit ID przechowywane w rejestrze FLASH H:65221 — aktywne tylko gdy DIP4=OFF (fabryczny domyślny 255). Użyj do weryfikacji adresu bramy przed dodaniem kolejnych urządzeń.
Resi Dali
Atrybuty serwisowe
${xml_slave_id}
modbusr(H,65221,uint16)
Gear 0Ściemniacz
Urządzenie sterujące DALI pod krótkim adresem 0 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 0
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 1 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 1
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 2 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 2
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 3 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 3
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 4 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 4
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 5 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 5
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 6 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 6
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 7 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 7
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 8 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 8
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 9 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 9
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 10 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 10
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 11 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 11
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 12 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 12
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 13 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 13
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 14 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 14
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 15 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 15
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 16 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 16
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 17 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 17
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 18 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 18
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 19 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 19
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 20 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 20
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 21 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 21
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 22 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 22
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 23 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 23
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 24 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 24
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 25 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 25
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 26 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 26
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 27 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 27
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 28 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 28
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 29 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 29
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 30 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 30
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 31 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 31
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 32 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 32
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 33 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 33
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 34 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 34
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 35 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 35
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 36 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 36
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 37 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 37
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 38 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 38
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 39 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 39
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 40 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 40
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 41 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 41
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 42 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 42
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 43 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 43
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 44 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 44
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 45 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 45
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 46 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 46
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 47 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 47
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 48 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 48
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 49 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 49
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 50 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 50
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 51 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 51
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 52 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 52
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 53 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 53
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 54 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 54
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 55 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 55
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 56 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 56
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 57 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 57
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 58 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 58
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 59 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 59
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 60 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 60
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 61 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 61
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 62 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 62
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Urządzenie sterujące DALI pod krótkim adresem 63 — ściemniacz TapHome zmapowany na DALI arc power 0–100 % przez H:510 LAMP LEVEL (zapis) i QUERY ACTUAL LEVEL przez H:511 (odczyt), ograniczony własnym MIN / MAX LEVEL gear-a.
Rejestr: H:511 → H:510UInt16Jednostka: %numeric
Atrybuty serwisowe
Krótki adres
Krótki adres DALI (0–63) celowany przez to urządzenie — ustalony w czasie importu szablonu i używany w górnym bajcie każdego zapisu Modbus.
Device Type
Bajt device-type DALI zwrócony przez QUERY DEVICE TYPE (0x99) — zgłasza DT0 (fluorescencyjny), DT6 (sterownik LED), DT8 (kolor / tunable white) itp., lub -- gdy brak odpowiedzi.
Physical Min Level
Wymuszony sprzętowo minimalny poziom ściemniania zgłaszany przez gear — czytany z QUERY PHYSICAL MIN LEVEL (0x9A), w procentach.
Max Level
Skonfigurowany DALI MAX LEVEL — czytany z QUERY MAX LEVEL (0xA1); używany jako górna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Min Level
Skonfigurowany DALI MIN LEVEL — czytany z QUERY MIN LEVEL (0xA2); używany jako dolna granica przy skalowaniu TapHome 0–100 % na DALI arc power.
Power Up Level
Jasność przywrócona po odzyskaniu zasilania magistrali DALI — czytana z QUERY POWER ON LEVEL (0xA3).
System Failure Level
Jasność przyjęta, gdy magistrala DALI traci komunikację na więcej niż 500 ms — czytana z QUERY SYSTEM FAILURE LEVEL (0xA4).
Grupy
Lista grup DALI (0–15) oddzielona przecinkami, do których należy gear — dekodowana z QUERY GROUPS 0-7 (0xC0) i QUERY GROUPS 8-15 (0xC1); pokazuje None lub np. 0,3,7.
Support Lamp Failure
Czy lampa / sterownik obsługuje wykrywanie awarii lampy — Yes / No / --. Bramkuje błąd Lamp failure! w okresowym readscript.
Support Power Failure
Czy lampa / sterownik obsługuje wykrywanie awarii zasilania — Yes / No / --. Bramkuje błąd Power failure! w okresowym readscript.
Akcje serwisowe
Add to Group
Dodaje ten gear do grupy DALI (0–15) przez ADD TO GROUP (0x60+grp) — auto-powtarzane w 100 ms, jak wymagają polecenia konfiguracyjne DALI.
Remove from Group
Usuwa ten gear z grupy DALI (0–15) przez REMOVE FROM GROUP (0x70+grp).
Reset to Default Settings
Wysyła DALI RESET (0x20) — przywraca każdy parametr NVM gear-a (poziomy max / min / power-on / system-failure, członkostwo w grupach, sceny) do fabrycznych domyślnych.
Set Startup Levels
Przechwytuje aktualne arc power i zapisuje je jako Power On Level i System Failure Level — sekwencja STORE ACTUAL LEVEL IN DTR (0x21) → STORE DTR AS POWER ON LEVEL (0x2C) → STORE DTR AS SYSTEM FAILURE LEVEL (0x2D).
Gear 63
Odczyt (moduł)
var x := 0; var rx := 0;
if Status > 0
Status := Status -1;
adderror("Gear not responding!");
return(0);
end
checkStatus := checkStatus -1;
if checkStatus < 1
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(10, 60);
adderror("Gear not present!");
else
Status := 0;
checkStatus := 60;
end
else
Status := RANDINT(10, 60);
adderror("Gear not responding!");
end
end
if suppLampFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Lamp failure!"), 0), 0);
end
if suppPowerFailure
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, if (x != 0xFF, adderror("Power failure!"), 0), 0);
end
Inicjalizacja
var x := 0; var rx := 0;
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x91);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if x != 0x8000
if x != 0xFF
Status := RANDINT(1, 60);
else
Status := 0;
end
else
Status := RANDINT(1, 60);
end
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppLampFailure := 1, suppLampFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, suppPowerFailure := 1, suppPowerFailure := 0);
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, maxLevel := x );
end
Odczyt poziomu
var x := 0; var rx := 0;
if Status = 0
if minLevel = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000, minLevel := x );
end
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
x := modbusr(SH, 511, uint16);
if (x != 0x8000 or rx, checkStatus := 60);
if (x != 0x8000 and x != 0xff, return( if(x = 0, 0, linear(x , minLevel, 0.01, maxLevel, 1)) ), return (Le));
else
return(NaN);
end
if Status = 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));
end
return("--")
Physical Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9A);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Max Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA1);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Min Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA2);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
Power Up Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA3);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
System Failure Level
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xA4);
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(round((x / 0xFE) * 100) + " %"));
end
return("--")
${xml_groups}
var x := 0; var rx := 0;
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC0);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g1 := modbusr(SH, 511, uint16);
if (g1 = 0x8000, return("--"));
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0xC1);
sleep(5); rx := getbits(modbusr(SH, 550, uint16), 0, 2); if(rx, 0, sleep(50));
var g2 := modbusr(SH, 511, uint16);
if (g2 = 0x8000, return("--"));
var ret := "";
if (getbit(g1, 0), ret := ret + "0");
if (getbit(g1, 1), if (ret = "", ret := "1", ret := ret + ",1"));
if (getbit(g1, 2), if (ret = "", ret := "2", ret := ret + ",2"));
if (getbit(g1, 3), if (ret = "", ret := "3", ret := ret + ",3"));
if (getbit(g1, 4), if (ret = "", ret := "4", ret := ret + ",4"));
if (getbit(g1, 5), if (ret = "", ret := "5", ret := ret + ",5"));
if (getbit(g1, 6), if (ret = "", ret := "6", ret := ret + ",6"));
if (getbit(g1, 7), if (ret = "", ret := "7", ret := ret + ",7"));
if (getbit(g2, 0), if (ret = "", ret := "8", ret := ret + ",8"));
if (getbit(g2, 1), if (ret = "", ret := "9", ret := ret + ",9"));
if (getbit(g2, 2), if (ret = "", ret := "10", ret := ret + ",10"));
if (getbit(g2, 3), if (ret = "", ret := "11", ret := ret + ",11"));
if (getbit(g2, 4), if (ret = "", ret := "12", ret := ret + ",12"));
if (getbit(g2, 5), if (ret = "", ret := "13", ret := ret + ",13"));
if (getbit(g2, 6), if (ret = "", ret := "14", ret := ret + ",14"));
if (getbit(g2, 7), if (ret = "", ret := "15", ret := ret + ",15"));
if (ret = "", return("None"), return(ret));
else
return("--");
end
Support Lamp Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x92);
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, suppLampFailure := 1, suppLampFailure := 0);
if (suppLampFailure, return("Yes"), return("No"));
end
return("--")
Support Power Failure
if Status = 0
modbusw(SH, 511, uint16, (ShortAddress << 8) + 0x9B);
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, suppPowerFailure := 1, suppPowerFailure := 0);
if (suppPowerFailure, return("Yes"), return("No"));
end
return("--")
Grupa broadcast DALI 0 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 0;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 0;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 1Ściemniacz
Grupa broadcast DALI 1 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 1;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 1;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 2Ściemniacz
Grupa broadcast DALI 2 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 2;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 2;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 3Ściemniacz
Grupa broadcast DALI 3 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 3;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 3;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 4Ściemniacz
Grupa broadcast DALI 4 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 4;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 4;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 5Ściemniacz
Grupa broadcast DALI 5 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 5;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 5;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 6Ściemniacz
Grupa broadcast DALI 6 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 6;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 6;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 7Ściemniacz
Grupa broadcast DALI 7 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 7;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 7;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 8Ściemniacz
Grupa broadcast DALI 8 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 8;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 8;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 9Ściemniacz
Grupa broadcast DALI 9 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 9;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 9;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 10Ściemniacz
Grupa broadcast DALI 10 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 10;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 10;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 11Ściemniacz
Grupa broadcast DALI 11 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 11;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 11;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 12Ściemniacz
Grupa broadcast DALI 12 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 12;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 12;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 13Ściemniacz
Grupa broadcast DALI 13 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 13;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 13;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 14Ściemniacz
Grupa broadcast DALI 14 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
var GroupAddress := 14;
modbusw(SH, 532, uint16, 0x60 + GroupAddress)
${xml_remove_from_group_all_lamps}
var GroupAddress := 14;
modbusw(SH, 532, uint16, 0x70 + GroupAddress)
Group 15Ściemniacz
Grupa broadcast DALI 15 (0–15) — ściemniacz TapHome tylko-do-zapisu, który broadcastuje pojedynczą wartość arc-power do każdego gear-a w tej grupie przez H:520 GROUP LEVEL. Magistrala nie odbija poziomów grup, więc TapHome przechowuje ostatnio zapisaną wartość.
UInt16Jednostka: %numeric
Akcje serwisowe
Add All Lamps to Group
Broadcastuje ADD TO GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali dołącza do tej grupy niezależnie od swojego aktualnego krótkiego adresu.
Remove All Lamps from Group
Broadcastuje REMOVE FROM GROUP przez H:532 ALL COMMAND + REPEAT — każdy gear na magistrali opuszcza tę grupę.
H:531ALL COMMAND (broadcast DALI command) — Single-shot broadcast DALI command (no repeat). Template uses H:532 (ALL COMMAND + REPEAT) for group membership but never exposes plain ALL OFF / ALL ON / ALL ARC POWER as a service action — turn-on/off-all are not present (sibling daliconfig template has them via H:530)
H:530ALL LEVEL (broadcast arc power) — Sets brightness for every gear in one Modbus write. Convenient 'turn off all lamps' / 'turn on all lamps' shortcut — implemented in the sibling daliconfig template, missing in this operational template
H:521GROUP COMMAND (per-group DALI command) — Per-group DALI command (single-shot). Could expose group-level OFF / RECALL MIN / RECALL MAX / GO TO SCENE as service actions on each Group device, but template only writes H:520 GROUP LEVEL
H:522GROUP COMMAND + REPEAT — Per-group DALI configuration command (auto-repeated within 100 ms). Required for STORE DTR AS GROUP SCENE etc. — not exposed as a service action
H:541DIRECT 16-BIT FRAME — Raw DALI 1.0 frame send. Used by sibling daliconfig template for the DALI 2.0 random-addressing algorithm; not needed for runtime brightness control
I:10020-I:10027DALI 24-BIT FRAME — DALI 2.0 24-bit frames — required for DT8 colour control (XY, colour temperature, RGBW), DALI 2.0 control gear queries, and DALI-2 input devices (push-buttons, presence detectors). Template exposes only DALI 1.0 brightness layer per gear
I:10030-I:10047DALI 25-BIT eDALI FRAME — Lunatone-proprietary 25-bit eDALI frames (auto and user redundant-bit variants). Not used by any DALI 1.0 gear
I:10050-I:10067DALI 28-BIT / 32-BIT FRAME — Extended DALI 2.0 frames (memory bank access, DALI-2 application controllers). Template scope is single-channel arc power per gear
H:500 (DSI VALUE)DSI 8-bit value send — Send a raw 8-bit DSI/DALI value with no addressing (bus-level diagnostics). Bypassed by every TapHome script
C:0 / H:551DALI Bus Error — 1 = DALI bus fault / short circuit / missing PSU. Useful diagnostic — could be added as a module-level service attribute. Currently bus errors only surface indirectly through 'Gear not responding!' errors emitted by per-gear readscripts
H:100DALI PRIORITY SLOT — 0..4 → 12-16 ms forward-frame timing. Default 2 (configuration). Bus-tuning parameter; template runs at default
H:6000DIP SWITCH / SOFTWARE RESET — Read returns the 4 DIP switch values; write 1 reboots the gateway. Sibling daliconfig template exposes Reset Gateway / Set Slave ID; this runtime template intentionally does not (commissioning concern)
H:65222 / H:65224 / H:65225BAUD_RATE / PARITY / STOP_BITS (FLASH) — FLASH-stored serial parameters. Template hard-codes 9600 8N1 in connection_details, so these are out of scope
I:0 / I:50-I:53 / scenesDALI 1.0 scenes (recall / store / query) — DALI 1.0 standard supports 16 stored scenes per gear/group recallable via GO TO SCENE (0x10..0x1F) and storable via STORE DTR AS SCENE (0x40..0x4F). Template exposes per-gear ADD/REMOVE FROM GROUP and RESET, but no scene recall/store/remove/query actions
H:512 (RECALL MAX/MIN/GOTO LAST/UP/DOWN/STEP)DALI 1.0 high-level commands per gear — RECALL MAX LEVEL (0x05), RECALL MIN LEVEL (0x06), UP (0x01), DOWN (0x02), STEP UP (0x03), STEP DOWN (0x04), GO TO LAST ACTIVE LEVEL (0x0A) — useful as service actions for visual feedback / smooth dimming. Not exposed; brightness goes only through linear scaling
H:512 (STORE DTR AS MAX/MIN/POWER ON/SYSTEM FAILURE LEVEL)Per-gear configuration write commands — STORE DTR AS MAX LEVEL (0x2A), STORE DTR AS MIN LEVEL (0x2B), STORE DTR AS POWER ON LEVEL (0x2C), STORE DTR AS SYSTEM FAILURE LEVEL (0x2D), STORE DTR AS FADE TIME / FADE RATE — template has 'Set Startup Levels' (combines 0x21, 0x2C, 0x2D) but does NOT expose individual writes for max/min/fade-time/fade-rate
H:511 (QUERY FADE TIME / FADE RATE / RANDOM ADDRESS / EXT VERSION)Additional DALI queries — QUERY FADE TIME / FADE RATE (0xA5), QUERY VERSION NUMBER (0x97), QUERY RANDOM ADDRESS H/M/L (0x98/0xC2/0xC3), QUERY CONTENT DTR/DTR1/DTR2 — not exposed in service attributes, only the 10 attributes listed per gear are populated
H:511 (QUERY CONTROL GEAR / RESET STATE / LIMIT ERROR / LAMP POWER ON / MISSING SHORT ADDRESS)DALI gear health / topology queries — QUERY CONTROL GEAR (0x90), QUERY RESET STATE (0x95), QUERY LIMIT ERROR (0x94), QUERY LAMP POWER ON (0x93), QUERY MISSING SHORT ADDRESS (0x96, broadcast) — diagnostic queries. Could be useful as module-level diagnostics; template exposes only QUERY STATUS / LAMP FAILURE / POWER FAILURE / DEVICE TYPE / MIN-MAX-PHYSICAL MIN-POWER UP-SYSTEM FAILURE LEVEL / GROUPS
H:511 (READ MEMORY LOCATION 0xC5)DALI memory bank read — READ MEMORY LOCATION (0xC5) is required to read DALI 2.0 memory banks (Bank 0 device GTIN, FW version, serial number; Bank 1 for emergency lighting). Not used
ASCII protocol commandsParallel ASCII text protocol — RESI gateway also exposes a CR-terminated text protocol (#LARC, #GARC, #AARC, #LGS, #LCMD, #LCMDA, #DALI CMDxx etc.). Template uses Modbus exclusively — ASCII would only matter for diagnostics/terminal access
DT6 fade time / fade rate / DAPC sequenceSmooth dimming primitives — DAPC (Direct Arc Power Control) sequence allows fast continuous level updates for smooth dimming. Each gear has stored fade time / fade rate that affect transitions. Template writes raw arc power without configuring fade behaviour
DT8 colour control (XY, colour temperature, RGBW)DALI DT8 tunable white / RGB / RGBW — DT8 colour control gears (tunable white CCT, XY colour, RGBW) require DALI 2.0 24-bit frames sent via H:541 / I:10020. Template exposes plain ModbusDimmer per gear — for DT8 lamps use a dedicated DT8 template
DT1 emergency lightingDALI DT1 self-contained emergency lights — Emergency-luminaire device type with periodic self-tests (function/duration test) and battery state queries. Out of scope — template is general-purpose dimming