---
title: "Intesis IBOX-MBS-DALI"
description: "Steuere 64 DALI-ECG-Vorschaltgeräte und 16 DALI-Gruppen von TapHome aus über Modbus RTU mit dem Intesis IBOX-MBS-DALI Gateway. ECG-Dimming, Fade-Zeit/Rate, Power-on und System-failure Level."
url: "https://taphome.com/de/compatibility/intesis-dali/"
language: de
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["modbus-rtu","lighting","rs485","dali","dali-2","gateway","din-rail"]
  questions: ["Wie integriere ich den Intesis IBOX-MBS-DALI mit TapHome?","Was steuert die TapHome-Vorlage für Intesis DALI?","Wie verkabele ich RS-485 Modbus RTU von TapHome zum IBOX-MBS-DALI?","Wie weise ich DALI-Kurzadressen ECG-Vorschaltgeräten zu?","Welche Intesis-DALI-Gateway-Variante unterstützt die TapHome-Vorlage?","Funktioniert die TapHome-Vorlage mit dem Intesis IN703DAL0640000 (Serie 700)?","Warum reagiert mein DALI-Bus nicht, obwohl die Modbus-Kommunikation funktioniert?"]
---

# Intesis IBOX-MBS-DALI

Kommunikation: Modbus RTU

- [Intesis IBOX-MBS-DALI Produktseite (HMS Networks)](https://www.intesis.com/products/protocol-translator/dali-gateways/dali-modbus-server-ibox-mbs-dali)
- [HMS Networks — Intesis Produktfamilie](https://www.hms-networks.com/products/intesis)
- [Benutzerhandbuch Intesis IN703DAL0640000 (Serie 700)](https://www.intesis.com/docs/user-manual-in703dal0640000)

## Integrationsanleitung

Der Intesis IBOX-MBS-DALI ist ein DALI-zu-Modbus-Protokollwandler von Intesis (Teil von HMS Networks), der DALI-2-Lichtvorschaltgeräte und -Gruppen als Modbus-Holding-Register bereitstellt. Die TapHome-Vorlage zielt auf die **1-Kanal-RTU-Variante** (Bestellcode **IBMBSDAL0640000**, neu veröffentlicht als **INMBSDAL0640200**) und verbindet sich mit TapHome über **RS-485 Modbus RTU** an Port B des Gateways.

TapHome vertreibt das neuere Gateway der **Serie 700** mit dem Bestellcode **IN703DAL0640000** (DALI-2 zu Modbus TCP & RTU Server, 1 DALI-Kanal). Laut Benutzerhandbuch des Herstellers (v1.0.11) nutzt es dieselbe Modbus-Registerzuordnung, daher gilt diese Vorlage auch dafür.

Die Vorlage deckt die volle adressierbare DALI-Kapazität einer einzelnen Linie ab: **64 einzelne ECG-Vorschaltgeräte** (Kurzadressen 0–63) und **16 DALI-Gruppen**. Jedes ECG unterstützt Rücklesen des aktuellen Levels (0–100 %), Vorschaltgerät-/Lampenfehlerstatus und Schreibzugriff auf Arc Power Level, Power-on Level, System-failure Level, Fade Time und Fade Rate. DALI-Gruppen bieten nur schreibgeschützte Broadcast-Dimmersteuerung. Auf Modulebene adressieren vier Broadcast-Service-Actions (All On, All Off, All Set Power-on Level, All Set System-failure Level) jedes Vorschaltgerät auf der DALI-Linie in einem einzigen Modbus-Schreibvorgang.

DALI-Kurzadressen, Gruppenzugehörigkeit, Szenen und Min/Max-Level müssen zuvor mit der kostenlosen Commissioning-Software **Intesis MAPS** konfiguriert werden, bevor TapHome einzelne Vorschaltgeräte adressieren kann — die TapHome-Vorlage führt keine DALI-Netzwerkerkennung oder -Adressierung durch.

## Hardware-Anschluss

### Gateway-Varianten

Die TapHome-Vorlage ist für das **1-Kanal-RTU-Gateway** ausgelegt. Die 2-Kanal-Variante hat eine identische Registerzuordnung, bietet aber kein Modbus RTU (nur TCP), daher ist sie mit dieser RS-485-Vorlage nicht kompatibel.

| Bestellcode | DALI-Kanäle | ECG-Kapazität | Gruppen | Modbus RTU | Modbus TCP |
|---|---|---|---|---|---|
| **IN703DAL0640000** (Serie 700) | **1** | **64** | **16** | **Ja (Port B)** | Ja |
| **IBMBSDAL0640000 / INMBSDAL0640200** | **1** | **64** | **16** | **Ja (Port B)** | Ja |
| IBMBSDAL1280000 / INMBSDAL1280200 | 2 | 128 | 32 | Nein | Ja |

![Intesis IBOX-MBS-DALI — Portanordnung bei der 1-Kanal- (Modbus RTU + TCP) und 2-Kanal-Variante (nur Modbus TCP)](https://taphome.com/images/compatibility/intesis-dali/connections-overview_hu_e3319bd0a2fc8995.jpg)

> [!NOTE]
> Die TapHome-Vorlage verwendet die Registerformel `7000 × Kanal + 100 × ECG + Signal`, ausgewertet mit `Kanal = 0`. Dies entspricht genau dem 1-Kanal-IBOX-MBS-DALI und dem IN703DAL0640000 der Serie 700.


### Steckeranordnung (1-Kanal-IBOX-MBS-DALI)

![Steckeranordnung 1-Kanal-IBOX-MBS-DALI — Stromversorgung, DALI Port A, Ethernet, Console, EIA232/EIA485 Port B](https://taphome.com/images/compatibility/intesis-dali/connectors-ibox-1ch_hu_f931cc500ab15298.jpg)

Draufsicht des 1-Kanal-IBOX-MBS-DALI:

- **Stromversorgung** — 3-polige steckbare Schraubklemme, 24 VDC ±10 % (+ / − / Earth)
- **Port A / DALI** — 2-polige orange Klemme, **A3 (DA+)** und **A4 (DA−)**, 16 VDC DALI-Versorgung
- **Ethernet** — 1× RJ45 10/100 Mbps (Modbus TCP)
- **Console** — mini-type B USB 2.0 für Intesis-MAPS-Konfiguration
- **Port B / Modbus RTU** — **EIA485** 3-polige Schraubklemme `B1 (B+) / B2 (A−) / B3 (SGND)` **und** **EIA232** SUB-D9 male (Alternative)
- **USB** — Type-A USB 2.0 nur für Flash-Laufwerke (150 mA max)
- **SWA / SWB** — DIP-Schalter (SWA reserviert, SWB steuert RS-485-Terminierung und Polarisierung — siehe Konfiguration unten)

### Stromversorgung

- **Eingang:** 24 VDC ±10 % an der 3-poligen Klemme (+, −, Earth)
- **Quelle:** NEC Class 2 oder Limited Power Source (LPS), SELV-konform
- **Vorsicherung:** 250 V / 6 A Leitungsschutzschalter erforderlich
- **Erdung:** Darf nur über den negativen Pol geerdet werden — **niemals** über den positiven Pol

> [!WARNING]
> Um Erdschleifen zu vermeiden, die das Gateway und angeschlossene Geräte beschädigen können, **verwende niemals eine DC-Stromversorgung mit geerdetem positivem Pol**. Erde nur über den negativen Pol oder lasse die Erdung schwebend.

### RS-485 Modbus RTU Verkabelung (Port B, EIA485)

Schließe den TapHome-RS-485-Bus an den EIA485-Klemmenblock an Port B an:

| IBOX-MBS-DALI Klemme | Signal | TapHome RS-485 |
|---|---|---|
| **B1** | B+ (D+) | A+ / D+ |
| **B2** | A− (D−) | B− / D− |
| **B3** | SGND (Referenzerde) | GND |

> [!WARNING]
> **Polarität beachten.** B1 = B+ (D+) und B2 = A− (D−). Das Vertauschen von A/B führt zu stillem Kommunikationsausfall ohne Hardwareschaden.

**Kabelspezifikation** (EIA485-Grenzen):

- **Maximale Länge:** 1200 m auf einem einzelnen RS-485-Segment
- **Maximale Knoten:** 32 Geräte einschließlich TapHome-Master und IBOX-MBS-DALI
- **Terminierung:** 120 Ω an jedem Busende — TapHome Core hat einen eingebauten 100-Ω-Widerstand an seinen BUS-Klemmen, daher benötigt der IBOX-MBS-DALI nur dann eine aktivierte Terminierung, wenn er sich am **äußersten Ende** des RS-485-Segments befindet (siehe DIP-Schalter SWB unten)

> [!TIP]
> Wenn das Gateway in der Mitte des RS-485-Busses installiert ist (nicht am Ende), lasse SWB in OFF-Position und füge keine externe Terminierung hinzu.

**EIA232 Alternative:** Der Port-B-SUB-D9-male-Stecker bietet eine EIA232-Schnittstelle mit nur TX, RX und GND, mit einer maximalen Kabellänge von 15 m. TapHome unterstützt RS-232 nicht nativ, daher ist EIA485 die Standard-TapHome-Verbindung.

### DALI-Bus-Verkabelung (Port A)

Schließe die DALI-Linie an die orange 2-polige Klemme von Port A an:

- **A3** — DA+
- **A4** — DA−

Der IBOX-MBS-DALI liefert **16 VDC (±2 %)** Busspannung mit einem garantierten Strom von 235 mA (max. 250 mA) DALI; das IN703DAL0640000 der Serie 700 garantiert 230 mA (max. 250 mA). DALI ist standardmäßig polaritätsunempfindlich, aber diese interne Versorgung muss in Intesis MAPS aktiviert werden, bevor eine DALI-Kommunikation funktioniert — siehe *DALI Commissioning* unten.

**DALI-Kapazität auf einer Linie** (lasse ~10 % Reserve für dynamische Prozesse):

- Bis zu **64 ECG-Vorschaltgeräte** (typ. 2 mA jedes → 128 mA)
- Bis zu **64 DALI-Eingabegeräte** / **16 empfohlen** bei Verwendung von Tastern (typ. 5 mA jedes)
- Beispielbudget: `64 ECGs × 2 mA + 16 Sensoren × 5 mA = 208 mA < 235 mA × 90 %`
- Beispielbudget für das IN703DAL0640000 (Herstellerangaben): `63 ECGs × 2 mA + 16 Sensoren × 5 mA = 206 mA < 230 mA × 90 %`

> [!NOTE]
> DALI ist ein inhärent langsamer Bus (1200 Baud) mit einer Gateway-Anlaufzeit von 1,5 s und einer Abschaltzeit von 7 s. Von TapHome ausgegebene DALI-Befehle erreichen die Vorschaltgeräte mit einer kleinen, aber nicht verschwindenden Latenz im Vergleich zu direkter Drahtsteuerung.

## Konfiguration

### DIP-Schalter SWB — RS-485-Terminierung und Polarisierung

Der **DIP-Schalter SWB** am 1-Kanal-IBOX-MBS-DALI steuert nur die RS-485-Bus-Eigenschaften — an diesem Gateway gibt es **keine DIP-Schalter-basierte Modbus-Slave-Adresse** (Slave-Adresse wird in Intesis MAPS eingestellt, siehe unten).

| Position | ON | OFF |
|---|---|---|
| **1** | 120 Ω Terminierung aktiv | Terminierung inaktiv |
| **2** | Polarisierung aktiv | Polarisierung inaktiv |
| **3** | Polarisierung aktiv | Polarisierung inaktiv |

- **Position 1 = ON** — aktiviert den internen 120-Ω-Terminierungswiderstand. Verwende dies, wenn sich der IBOX-MBS-DALI an der **letzten** physischen Position des RS-485-Busses befindet.
- **Positionen 2 und 3 = ON** — aktivieren Bus-Biasing (Polarisierung). Verwende dies, wenn kein anderer Master am Bus Biasing liefert. TapHome Core liefert Biasing an seinen BUS-Klemmen, diese können also normalerweise OFF bleiben.

> **SWA** ist auf dieser Hardware-Revision für zukünftige Nutzung reserviert und hat keinen Laufzeiteffekt.

### Modbus-RTU-Kommunikationsparameter

Alle RTU-Parameter werden im Intesis-MAPS-Projekt konfiguriert und müssen exakt mit den TapHome-Moduleinstellungen übereinstimmen.

| Parameter | Werte | Vorlagen-Standard |
|---|---|---|
| Baudrate | 1200, 2400, 4800, **9600**, 19200, 38400, 56700, 115200 | **9600** |
| Parität | none, even, odd | **none** |
| Stoppbits | 1, 2 | **1** |
| Datenbits | 8 | 8 |
| Slave-Adresse | 1–247 | Konfigurierbar in MAPS |

> [!TIP]
> Das Intesis-Gateway unterstützt Modbus RTU und Modbus TCP **gleichzeitig** auf der 1-Kanal-Variante. TapHome verwendet RTU; ein paralleles BMS oder Diagnosetool kann dieselbe Registerzuordnung über TCP lesen, ohne zu stören.

### Modbus-Kommunikation aktivieren

Die Modbus-Kommunikation wird durch Laden eines gültigen Projekts auf das Gateway mit Intesis MAPS aktiviert (bei diesem Modell sind keine DIP-Schalter beteiligt). Kurzfassung:

1. Installiere **Intesis MAPS** auf einem Windows-PC und verbinde dich mit dem Gateway über USB Console oder Ethernet.
2. Öffne oder erstelle ein Projekt basierend auf der `INMBSDAL---0200-Template`-Vorlage (beim IN703DAL0640000 der Serie 700 wähle die Vorlage `IN-MBS-DALI-64`, also die Modbus-Anwendung).
3. Stelle auf der Registerkarte **Configuration → Modbus Slave** Baudrate, Parität, Stoppbits und Slave-Adresse auf die TapHome-Werte ein.
4. Auf der Registerkarte **Configuration → DALI** aktiviere die interne 16-VDC-DALI-Busversorgung (siehe *DALI Commissioning*).
5. Klicke auf **Send**, um die Konfiguration zu übertragen; das Gateway startet automatisch neu.
6. Verwende **Diagnostic → Viewers**, um Modbus-Frames an Port B TX/RX zu überprüfen.

![Intesis MAPS DALI-Bus-Stromversorgungskonfiguration — aktiviere die 16-VDC-DALI-Versorgung in der Gateway-Konfiguration vor dem Commissioning](https://taphome.com/images/compatibility/intesis-dali/dali-power-maps-config_hu_60df6e9c055c6bc7.jpg)

### DALI Commissioning

**Die DALI-Adressierung erfolgt in Intesis MAPS — nicht in TapHome.** Die TapHome-Vorlage referenziert DALI-Kurzadressen 0–63 und Gruppenadressen 0–15 über ihren Register-Offset; physische Vorschaltgeräte und Gruppen müssen zuerst an diese Adressen gebunden werden.

High-Level Commissioning-Workflow (vollständiger Ablauf im Intesis-Benutzerhandbuch, Annex A):

1. Öffne in MAPS das Projekt für das 1-Kanal-Gateway und gehe zu **Configuration → DALI → ECG Channel A**.
2. Klicke auf **Commissioning → Scan**, um ECG-Vorschaltgeräte am DALI-Bus zu erkennen.
3. Weise jedem Vorschaltgerät eine **Kurzadresse (0–63)** über die Schaltfläche **Wink** zu (blinkt das physische Vorschaltgerät zur Identifikation) oder **Auto Addr.** (sequenzielle automatische Zuweisung).
4. Stelle optional ECG-Parameter ein: **Device Type** (0 = Fluorescent, 1 = Emergency, 6 = LED, …), Min/Max-Level, Power-on Level, System-failure Level, Szenenkonfiguration und **Gruppenzugehörigkeit (0–15)**.
5. Klicke auf **Commissioning → Set All**, um die Konfiguration von MAPS auf den DALI-Bus zu übertragen.
6. Klicke auf **Send**, um die Gateway-Konfiguration (Modbus-Parameter, Signalzuordnung) zurück an den IBOX-MBS-DALI zu übertragen.

Nach dem Commissioning werden ECGs, die in TapHome per Kurzadresse identifiziert sind (z. B. **ECG 5** → Register `H:506`), eins-zu-eins den physischen Vorschaltgeräten zugeordnet. Die Gruppenzugehörigkeit muss ebenfalls in MAPS definiert werden, damit die DALI-Gruppengeräte funktionieren, obwohl die Vorlage pro ECG Service Actions *Add to DALI Group* / *Remove from DALI Group* bereitstellt, die die Gruppenzugehörigkeit zur Laufzeit auf kompatibler Firmware neu zuweisen können.

> [!WARNING]
> Laut Benutzerhandbuch r1.5 (Mai 2024) sind die Signale 29 und 30 (*Add to DALI Group* / *Remove from DALI Group*) auf aktueller Firmware als *Not used* markiert. Die TapHome-Vorlage stellt diese Aktionen weiterhin bereit, da sie auf früherer Firmware funktionierten, aber **stabile Gruppenzuweisungen sollten in Intesis MAPS konfiguriert werden**, nicht zur Laufzeit.
>
> Das Benutzerhandbuch des IN703DAL0640000 der Serie 700 (v1.0.11) führt die Signale 29 und 30 als Lese-/Schreibsignale (RW), laut Handbuch sollten die Aktionen auf diesem Gateway also verfügbar sein.

### Registerübersicht

TapHome verwendet eine einzige Formel für alle Register:

```text
H:address = 7000 × channel + 100 × ECG + signal      (einzelnes ECG)
H:address = 7000 × channel + 20 × group + 6400..6415  (DALI-Gruppe)
H:address = 7000 × channel + 6800..6815              (Broadcast)
```

Bei der 1-Kanal-Variante ist immer `channel = 0`. Die Vorlage stellt folgende Registerbereiche bereit:

| Bereich | Funktion | In Vorlage verfügbar |
|---|---|---|
| `H:0 – H:3` | Bitmaske für Vorschaltgerät/Lampenfehler (ECG 63..0, 4× UInt16) | Ja — als failRegister auf Modulebene |
| `H:SA+5` | ECG-Vorschaltgerät-Statusbitmaske (pro ECG) | Ja — Errors, Warnings, Info pro ECG |
| `H:SA+6` | ECG aktueller Level 0–100 % (lesen) | Ja — Rückmeldung der Dimmerposition |
| `H:SA+7` | ECG Device-Type-Enum | Ja — als Service Attribute |
| `H:SA+11..+14` | Power-on / System-failure Level, Fade Time / Rate (lesen) | Ja — als Service Attributes |
| `H:SA+15` | ECG Arc Power Level 0–100 % (schreiben) | Ja — Writelevel, linear auf Min/Max abgebildet |
| `H:SA+23..+30` | Fade Time/Rate setzen, Levels setzen, Gruppe hinzufügen/entfernen | Ja — als Service Actions pro ECG |
| `H:6400 + 20·GR` | Group Arc Power Level 0–100 % (schreiben) | Ja — als Write-only DALI-Group-Gerät |
| `H:6801` | Broadcast Arc Power Off/On (0/100 %) | Ja — als Modul *All On* / *All Off* |
| `H:6812 / H:6813` | Broadcast Set Power-on / System-failure Level | Ja — als Service Actions auf Modulebene |

Eingabegeräte (Präsenzsensoren, Taster, Lichtsensoren) an Adressen `14000 + 640·LINE + 10·IDX + INSTANCE + 1280·SIG` sind in dieser Vorlage **nicht** implementiert.

## Gerätefunktionen

### ECG-Dimming (64 ECG-Geräte)

Jede Kurzadresse 0–63 wird als einzelnes TapHome-Dimmer-Gerät bereitgestellt (**ECG 0** bis **ECG 63**). Funktionen pro ECG:

- **Aktueller Level** — liest `H:SA+6` (0–100 %) als Rückmeldung der Dimmerposition
- **Arc Power Level** — schreibt `H:SA+15` (0–100 %), linear von der 0–1-Dimmerskala von TapHome auf den am Vorschaltgerät konfigurierten `[min level, max level]`-Bereich abgebildet
- **Vorschaltgerätstatus** — Bitmaske auf `H:SA+5` steuert die TapHome-Diagnose: *BallFail* und *LampFail* lösen Errors aus, *BallLimit*, *Reset* und *PowerCycle* lösen Warnings aus, *FadeRun* wird als Info angezeigt, *MissingShortAddr* löst einen Error aus
- **Kommunikationsfehlererkennung** — das Modul liest die 64-Bit-Fehlerbitmaske auf `H:0 – H:3` und markiert einzelne ECGs unabhängig vom `H:SA+5`-Status als fehlerhaft

### Service Attributes pro ECG (schreibgeschützte Metadaten)

Jedes ECG-Gerät stellt fünf Service Attributes bereit, die seine aktuelle DALI-Konfiguration lesen:

- **Main Device Type** — `H:SA+7` enum (0–8): 0 = Fluorescent, 1 = Emergency, 2 = Discharge, 3 = Halogen, 4 = Incandescent, 5 = Digital signal, 6 = LED, 7 = Switching, 8 = Colour Control
- **Power-on Level [%]** — `H:SA+11` (0–100 %) — Level, auf den das Vorschaltgerät nach DALI-Bus-Einschaltung zurückkehrt
- **System-failure Level [%]** — `H:SA+12` (0–100 %) — Level, den das Vorschaltgerät bei DALI-Busausfall einnimmt
- **Fade Time** — `H:SA+13` (0–15) — DALI-Fade-Time-Index (Zeit zum Erreichen eines Zielwerts bei direkten Arc-Power-Schreibvorgängen)
- **Fade Rate** — `H:SA+14` (1–15) — DALI-Fade-Rate-Index (Geschwindigkeit der Step-up-/Step-down-Befehle)

### Service Actions pro ECG (schreiben)

Jedes ECG stellt außerdem sechs Service Actions zur Online-Rekonfiguration bereit:

- **Set Power-on Level** — schreibt `H:SA+27` (0–100 %)
- **Set System-failure Level** — schreibt `H:SA+28` (0–100 %)
- **Set Fade Time** — schreibt `H:SA+23` (0–15)
- **Set Fade Rate** — schreibt `H:SA+24` (1–15)
- **Add to DALI Group** — schreibt `H:SA+29` mit der Gruppennummer (0–15) — siehe Commissioning-Hinweis oben
- **Remove from DALI Group** — schreibt `H:SA+30` mit der Gruppennummer (0–15)

Jeder Schreibvorgang wird von der Vorlage automatisch über `H:SA+4 = 1` (Update All ECG Status) bestätigt, was die zwischengespeicherten Lesewerte im Gateway aktualisiert.

### DALI-Gruppen (16 Write-only-Broadcast-Dimmer)

**DALI Group 0** bis **DALI Group 15** werden als Write-only-Dimmergeräte bereitgestellt:

- **Schreibregister:** `H:6400 + 20 × GR` (z. B. Group 0 = `H:6400`, Group 15 = `H:6700`)
- **Verhalten:** Schreiben eines TapHome-Dimmerwerts 0–1 sendet `Arc Power Level = Le × 100` an jedes ECG, das Mitglied dieser DALI-Gruppe ist
- **Keine Leserückmeldung** — das Gruppensignal hat kein Aktuell-Level-Register, daher verfolgt TapHome den Gruppenlevel nur aus Benutzereingaben, nicht aus dem realen Zustand der Vorschaltgeräte

> [!TIP]
> Verwende Gruppen für Räume oder Zonen, in denen mehrere Vorschaltgeräte gemeinsam dimmen. Die Gruppenzugehörigkeit wird pro ECG über die ECG-Service-Action *Add to DALI Group* oder (vorzugsweise) in Intesis MAPS konfiguriert.

### Broadcast-Aktionen auf Modulebene

Das Hauptmodul (**Intesis DALI Gateway**) stellt vier Service Actions bereit, die jedes Vorschaltgerät auf der DALI-Linie gleichzeitig adressieren:

- **All — On** — schreibt `H:6801 = 1`, sendet 100 % per Broadcast an jedes ECG
- **All — Off** — schreibt `H:6801 = 0`, sendet 0 % per Broadcast an jedes ECG
- **All — Set Power-on Level** — schreibt `H:6812` (0–100 %), um den Level zu konfigurieren, auf den alle Vorschaltgeräte nach DALI-Einschaltung zurückkehren
- **All — Set System-failure Level** — schreibt `H:6813` (0–100 %), um den Level zu konfigurieren, den alle Vorschaltgeräte bei DALI-Busausfall einnehmen

Diese sind schneller als das Iterieren von Schreibvorgängen pro ECG, wenn alle Vorschaltgeräte denselben Zielzustand erreichen müssen (z. B. Panic-Off, Morgenvorgabe).

## Status-LEDs und Taster

![IBOX-MBS-DALI Status-LEDs und Taster — Run, Error, Port A TX/RX (DALI), Port B TX/RX (Modbus RTU), Button A, Button B](https://taphome.com/images/compatibility/intesis-dali/status-leds-buttons_hu_1f972f8353b9228c.jpg)

| LED | Zustand | Bedeutung |
|---|---|---|
| **Run** | Off / Grün | Kein Strom / Gerät mit Strom versorgt und läuft |
| **Error** | Off / Rot | Kein Fehler / Fehlerzustand |
| **Port A Tx / Rx (DALI)** | Off / Blinkt grün / Blinkt gelb | Keine Aktivität / TX-Paket zu DALI / RX-Paket von DALI |
| **Port B Tx / Rx (Modbus RTU)** | Off / Blinkt grün / Blinkt gelb | Keine Aktivität / TX-Paket an RS-485 / RX-Paket an RS-485 |
| **Button-A-Anzeige** | Off / Grün | DALI-Broadcast-Status: OFF / RECALL_MAX_LEVEL |
| **Button-B-Anzeige** | Off / Grün | Keine Standardfunktion (konfigurierbar in MAPS) |

**Button A (DALI A)** — das Drücken schaltet einen DALI-Broadcast zwischen `RECALL_MAX_LEVEL` (100 %) und `OFF` um, nützlich für eine schnelle Vor-Ort-Prüfung der DALI-Linie ohne TapHome-Beteiligung. Nach 30 s schaltet die Button-A-LED ab und die Vorschaltgeräte kehren auf ihren vorherigen Level zurück.

**Button B** — keine Standardfunktion an diesem Gateway; kann als RS-485-Aktion in Intesis MAPS konfiguriert werden.

## Montage

### DIN-Schiene (empfohlen)

![IBOX-MBS-DALI DIN-Schienen-Montage — EN60715 TH35 Standardschiene, Befestigungsclips in innerer Werksposition](https://taphome.com/images/compatibility/intesis-dali/mounting-din_hu_6022c12b8152b8d4.jpg)

EN60715 TH35, vorzugsweise in einem metallischen Schaltschrank mit Erdanschluss. Lasse die Befestigungsclips in ihrer **innen** liegenden Werksposition, rastet erst die obere Schienenkante ein und drückt dann nach unten, damit die Unterseite einrastet.

### Wandmontage

![IBOX-MBS-DALI Wandmontage — Befestigungsclips nach außen versetzt, um die Montagelöcher freizulegen](https://taphome.com/images/compatibility/intesis-dali/mounting-wall_hu_acd54bdbb566e31c.jpg)

1. **Trenne die Befestigungsclips** aus ihrer ursprünglichen Position (für DIN-Schienen-Montage), indem du sie nach außen drückst, bis sie in die Wandmontageposition einrasten.
2. **Verwende die Montagelöcher** im Gehäuse, um es an der Wand zu befestigen.

### Raum und Umgebung

- **Installationsraum:** lasse 130 × 100 × 100 mm (H × B × T) um das Gerät für Stecker und Verkabelung. Nettoabmessungen: 90 × 88 × 56 mm (IN703DAL0640000 der Serie 700: 90 × 88 × 58 mm).
- **Umgebung:** IP20, nur innen. Betriebstemperatur 0 °C bis +50 °C (Benutzerhandbuch) / +60 °C (Installationsblatt), Luftfeuchtigkeit 5–95 % nicht kondensierend. Das IN703DAL0640000 der Serie 700 arbeitet bei −10 °C bis +60 °C.

## Fehlerbehebung

### Keine Modbus-Kommunikation (Port B Tx/Rx LEDs bleiben aus)

1. **Prüfe RS-485-Verkabelung** — überprüfe die B1 (B+) / B2 (A−) Polarität gegen die TapHome-RS-485-Klemmen; das Vertauschen ist der häufigste Fehler.
2. **Prüfe SGND** — verbinde B3 mit der TapHome-Erde. Fehlende Signalerde ist die zweithäufigste Ursache für instabile RTU.
3. **Stimme die seriellen Parameter ab** — Baudrate, Parität, Stoppbits und Slave-Adresse in TapHome müssen exakt mit den Werten im Intesis-MAPS-Projekt übereinstimmen.
4. **Prüfe SWB-DIP-Schalter** — wenn sich dieses Gateway am physischen Ende des RS-485-Busses befindet, setze SWB-Position 1 = ON (120 Ω Terminierung). Wenn es in der Mitte des Busses sitzt, setze alle SWB-Positionen auf OFF.
5. **Bestätige, dass TCP den Slot nicht hält** — das Gateway erlaubt 5 gleichzeitige TCP-Sockets und 1 RTU-Master; eine falsch konfigurierte MAPS-Verbindung blockiert RTU nicht, aber es lohnt sich, MAPS während des TapHome-Debuggings zu schließen.

### Modbus funktioniert, aber DALI-Vorschaltgeräte reagieren nicht

1. **Aktiviere die interne DALI-Busversorgung** — neue Gateways werden mit **deaktivierter** DALI-Versorgung ausgeliefert. Öffne Intesis MAPS → *Configuration → DALI → DALI Channel A* und setze **Power the DALI bus** = Enabled, dann **Send** die Konfiguration. Ohne Busversorgung meldet das Gateway einen Hardwarefehler bei jedem DALI-Schreibvorgang.
2. **Schneller Sanity-Check** — drücke **Button A** am Gateway. Er sollte `RECALL_MAX_LEVEL` per Broadcast senden und jedes angeschlossene Vorschaltgerät ein-/ausschalten. Wenn sich nichts bewegt, liegt das Problem am DALI-Bus selbst (Verkabelung, Spannung, Vorschaltgerätstromversorgung).
3. **Führe einen On-Bus-Scan in MAPS durch** — *Commissioning → Scan* am DALI Channel A listet jedes Vorschaltgerät auf, das das Gateway sieht. Fehlende Vorschaltgeräte bedeuten meist stromlose ECGs, eine nicht zugewiesene DALI-Kurzadresse oder einen Bruch im DALI-Bus.
4. **Überprüfe Kurzadressen** — TapHome adressiert ECG 5 am Register `H:506`; wenn die Kurzadresse 5 in MAPS nicht zugewiesen wurde, existiert das Register, aber das physische Vorschaltgerät ist nicht daran gebunden.

### Ein bestimmtes ECG meldet einen Fehler in TapHome

TapHome zeigt zwei Fehlerquellen für jedes ECG an:

- **Modul failRegister (`H:0 – H:3`)** — ein Bit pro ECG. Ein gesetztes Bit löst einen Kommunikationsfehler aus (das Gateway kann mit dem Vorschaltgerät überhaupt nicht kommunizieren).
- **ECG Ballast Status (`H:SA+5`)** — eine Bitmaske pro ECG. *BallFail* und *LampFail* lösen Errors aus (Hardware-Vorschaltgerät- oder Lampenfehler), *MissingShortAddr* löst einen Error aus (das ECG hat geantwortet, hat aber keine Kurzadresse), *BallLimit*, *Reset* und *PowerCycle* lösen Warnings aus, *FadeRun* ist informativ.

Tausche das defekte Vorschaltgerät aus oder commissioniere die Kurzadresse in MAPS erneut, um den Fehler zu beheben.

### Schreibvorgang akzeptiert, aber Vorschaltgerät ändert Level nicht

1. **Bestätige, dass das Vorschaltgerät nicht im Fade ist** — *FadeRun* auf `H:SA+5` bedeutet, das Vorschaltgerät fadet gerade; warte, bis es fertig ist. Das Verkürzen von *Fade Time* (`H:SA+23`) reduziert die wahrgenommene Latenz.
2. **Prüfe Min / Max Level** — TapHome bildet seine 0–1-Dimmerskala linear auf das aus dem Vorschaltgerät gelesene `[min level, max level]`-Fenster ab (`H:SA+9 / H:SA+10`). Wenn beide gleich sind, kann das Vorschaltgerät den Level nicht ändern; re-konfiguriere Min/Max in MAPS.
3. **Add/Remove aus DALI-Gruppe** — auf neuester r1.5-Firmware sind diese ECG-Aktionen als deprecated markiert; führe Gruppenzuweisungen stattdessen in MAPS durch. Das Benutzerhandbuch des IN703DAL0640000 der Serie 700 führt sie als Lese-/Schreibsignale (RW).

## Verfügbare Geräte 80

Diese Geräte erscheinen nach dem Import in TapHome.

Intesis DALI Modul

Serviceaktionen

|                                    |                                                                                                                                                    |
|------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| Alle — Ein                         | Sendet 100 % Arc Power per Broadcast an jedes Vorschaltgerät auf der DALI-Linie — Panic-On oder Morgenvorgabe in einem Modbus-Schreibvorgang       |
| Alle — Aus                         | Sendet 0 % Arc Power per Broadcast an jedes Vorschaltgerät auf der DALI-Linie — Panic-Off oder Reinigungsvorgabe in einem Modbus-Schreibvorgang    |
| Alle — Power-on Level setzen       | Sendet einen neuen Power-on Level (0–100 %) per Broadcast an jedes Vorschaltgerät — den Level, auf den sie nach DALI-Bus-Einschaltung zurückkehren |
| Alle — System-failure Level setzen | Sendet einen neuen System-failure Level (0–100 %) per Broadcast an jedes Vorschaltgerät — den Level, den sie bei DALI-Busausfall einnehmen         |

Lesen (Modul)

```taphome
failRegister := modbusr(H, base_modifier + 0, Uint16) + 
(modbusr(H, base_modifier + 1, Uint16) << 16) +
(modbusr(H, base_modifier + 2, Uint16) << 32) +
(modbusr(H, base_modifier + 3, Uint16) << 48)
```

Serviceaktionen

All - On

```taphome
modbusw(H, base_modifier + 6801, uint16, 1);
```

All - Off

```taphome
modbusw(H, base_modifier + 6801, uint16, 0);
```

All - Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
modbusw(H, base_modifier + 6812, uint16, Lvl);
```

All - Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
modbusw(H, base_modifier + 6813, uint16, Lvl);
```

ECG 0 Dimmer Lesen und Schreiben

Einzelnes DALI-Vorschaltgerät an Kurzadresse 0 — Dimmer mit Aktuell-Level-Rückmeldung, Vorschaltgerät-/Lampenfehlerstatus, Arc-Power-Schreibzugriff sowie Fade Time/Rate und Power-on / System-failure Level Konfiguration pro ECG

Register: H:6 → H:15 UInt16 Einheit: % numeric

Serviceattribute

|                      |                                                                                                                                                                   |
|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Haupt-Gerätetyp      | DALI-Gerätetyp — Fluorescent (0), Emergency (1), Discharge (2), Halogen (3), Incandescent (4), Digital signal (5), LED (6), Switching (7) oder Colour Control (8) |
| Power-on Level       | Level (0–100 %), auf den das Vorschaltgerät nach DALI-Bus-Einschaltung zurückkehrt                                                                                |
| System-failure Level | Level (0–100 %), den das Vorschaltgerät bei DALI-Busausfall einnimmt                                                                                              |
| Fade Time            | DALI-Fade-Time-Index (0–15) — Zeit zum Erreichen eines Zielwerts bei direkten Arc-Power-Schreibvorgängen                                                          |
| Fade Rate            | DALI-Fade-Rate-Index (1–15) — Geschwindigkeit der Step-up-/Step-down-Befehle                                                                                      |

Serviceaktionen

|                             |                                                                                                                    |
|-----------------------------|--------------------------------------------------------------------------------------------------------------------|
| Power-on Level setzen       | Schreibt einen neuen Power-on Level (0–100 %) in dieses ECG                                                        |
| System-failure Level setzen | Schreibt einen neuen System-failure Level (0–100 %) in dieses ECG                                                  |
| Fade Time setzen            | Schreibt einen neuen DALI-Fade-Time-Index (0–15) in dieses ECG                                                     |
| Fade Rate setzen            | Schreibt einen neuen DALI-Fade-Rate-Index (1–15) in dieses ECG                                                     |
| Zur DALI-Gruppe hinzufügen  | Weist dieses ECG einer DALI-Gruppe (0–15) zu, damit es über den Broadcast-Dimmer der Gruppe adressiert werden kann |
| Aus DALI-Gruppe entfernen   | Entfernt dieses ECG aus der angegebenen DALI-Gruppe (0–15)                                                         |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 1 Dimmer Lesen und Schreiben

Register: H:106 → H:115 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 2 Dimmer Lesen und Schreiben

Register: H:206 → H:215 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 3 Dimmer Lesen und Schreiben

Register: H:306 → H:315 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 4 Dimmer Lesen und Schreiben

Register: H:406 → H:415 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 5 Dimmer Lesen und Schreiben

Register: H:506 → H:515 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 6 Dimmer Lesen und Schreiben

Register: H:606 → H:615 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 7 Dimmer Lesen und Schreiben

Register: H:706 → H:715 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 8 Dimmer Lesen und Schreiben

Register: H:806 → H:815 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 9 Dimmer Lesen und Schreiben

Register: H:906 → H:915 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 10 Dimmer Lesen und Schreiben

Register: H:1006 → H:1015 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 11 Dimmer Lesen und Schreiben

Register: H:1106 → H:1115 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 12 Dimmer Lesen und Schreiben

Register: H:1206 → H:1215 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 13 Dimmer Lesen und Schreiben

Register: H:1306 → H:1315 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 14 Dimmer Lesen und Schreiben

Register: H:1406 → H:1415 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 15 Dimmer Lesen und Schreiben

Register: H:1506 → H:1515 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 16 Dimmer Lesen und Schreiben

Register: H:1606 → H:1615 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 17 Dimmer Lesen und Schreiben

Register: H:1706 → H:1715 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 18 Dimmer Lesen und Schreiben

Register: H:1806 → H:1815 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 19 Dimmer Lesen und Schreiben

Register: H:1906 → H:1915 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 20 Dimmer Lesen und Schreiben

Register: H:2006 → H:2015 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 21 Dimmer Lesen und Schreiben

Register: H:2106 → H:2115 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 22 Dimmer Lesen und Schreiben

Register: H:2206 → H:2215 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 23 Dimmer Lesen und Schreiben

Register: H:2306 → H:2315 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 24 Dimmer Lesen und Schreiben

Register: H:2406 → H:2415 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 25 Dimmer Lesen und Schreiben

Register: H:2506 → H:2515 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 26 Dimmer Lesen und Schreiben

Register: H:2606 → H:2615 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 27 Dimmer Lesen und Schreiben

Register: H:2706 → H:2715 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 28 Dimmer Lesen und Schreiben

Register: H:2806 → H:2815 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 29 Dimmer Lesen und Schreiben

Register: H:2906 → H:2915 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 30 Dimmer Lesen und Schreiben

Register: H:3006 → H:3015 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 31 Dimmer Lesen und Schreiben

Register: H:3106 → H:3115 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 32 Dimmer Lesen und Schreiben

Register: H:3206 → H:3215 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 33 Dimmer Lesen und Schreiben

Register: H:3306 → H:3315 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 34 Dimmer Lesen und Schreiben

Register: H:3406 → H:3415 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 35 Dimmer Lesen und Schreiben

Register: H:3506 → H:3515 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 36 Dimmer Lesen und Schreiben

Register: H:3606 → H:3615 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 37 Dimmer Lesen und Schreiben

Register: H:3706 → H:3715 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 38 Dimmer Lesen und Schreiben

Register: H:3806 → H:3815 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 39 Dimmer Lesen und Schreiben

Register: H:3906 → H:3915 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 40 Dimmer Lesen und Schreiben

Register: H:4006 → H:4015 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 41 Dimmer Lesen und Schreiben

Register: H:4106 → H:4115 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 42 Dimmer Lesen und Schreiben

Register: H:4206 → H:4215 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 43 Dimmer Lesen und Schreiben

Register: H:4306 → H:4315 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 44 Dimmer Lesen und Schreiben

Register: H:4406 → H:4415 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 45 Dimmer Lesen und Schreiben

Register: H:4506 → H:4515 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 46 Dimmer Lesen und Schreiben

Register: H:4606 → H:4615 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 47 Dimmer Lesen und Schreiben

Register: H:4706 → H:4715 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 48 Dimmer Lesen und Schreiben

Register: H:4806 → H:4815 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 49 Dimmer Lesen und Schreiben

Register: H:4906 → H:4915 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 50 Dimmer Lesen und Schreiben

Register: H:5006 → H:5015 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 51 Dimmer Lesen und Schreiben

Register: H:5106 → H:5115 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 52 Dimmer Lesen und Schreiben

Register: H:5206 → H:5215 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 53 Dimmer Lesen und Schreiben

Register: H:5306 → H:5315 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 54 Dimmer Lesen und Schreiben

Register: H:5406 → H:5415 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 55 Dimmer Lesen und Schreiben

Register: H:5506 → H:5515 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 56 Dimmer Lesen und Schreiben

Register: H:5606 → H:5615 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 57 Dimmer Lesen und Schreiben

Register: H:5706 → H:5715 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 58 Dimmer Lesen und Schreiben

Register: H:5806 → H:5815 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 59 Dimmer Lesen und Schreiben

Register: H:5906 → H:5915 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 60 Dimmer Lesen und Schreiben

Register: H:6006 → H:6015 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 61 Dimmer Lesen und Schreiben

Register: H:6106 → H:6115 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 62 Dimmer Lesen und Schreiben

Register: H:6206 → H:6215 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

ECG 63 Dimmer Lesen und Schreiben

Register: H:6306 → H:6315 UInt16 Einheit: % numeric

Serviceattribute

|                           |
|---------------------------|
| Main Device Type          |
| Power On Level \[%]       |
| System Failure Level \[%] |
| Fade Time                 |
| Fade Rate                 |

Serviceaktionen

|                          |
|--------------------------|
| Set Power-on Level       |
| Set System-failure Level |
| Set Fade Time            |
| Set Fade Rate            |
| Add to DALI Group        |
| Remove from DALI Group   |

Lesen (Modul)

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
int shift := floor(SA / 32);

if(getbit(failRegister >> 32*shift,SA - 32*shift) = 1, adderror("DALI communication error, Ballast/Lamp Failure"));
if(getbit(status,0) = 1, adderror("Ballast Fail"));
if(getbit(status,1) = 1, adderror("Lamp Fail"));
#if(getbit(status,2) = 1, addwarning("Lamp Power On"));
if(getbit(status,3) = 1, addwarning("Ballast Limit"));
if(getbit(status,4) = 1, addinfo("Fade Run"));
if(getbit(status,5) = 1, addwarning("Reset"));
if(getbit(status,6) = 1, adderror("Missing Short Address"));
if(getbit(status,7) = 1, addwarning("Power Cycle"));
```

Initialisierung

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 4, uint16, 1);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);
```

Level lesen

```taphome
var base := base_modifier + (100 * SA);
status := modbusr(H, base + 5, uint16);
level := modbusr(H, base + 6, uint16);
minLevel := modbusr(H, base + 9, uint16);
maxLevel := modbusr(H, base + 10, uint16);

# fade run or updating values or <=1% diff
var diff := abs(level - Le * 100);
if getbit(status,4) or (diff > 0 and diff <= 1) or count > 0
	count := count -1;
	return(le);
else
	if level = 0
		return(0);
	else
		return(linear(level, minLevel, if(minLevel=0, 0, 0.01), maxLevel, 1));
	end
end
```

Level schreiben

```taphome
var base := base_modifier + (100 * SA);
if !isnull(Le)
	count := 2;
	if le = 0
		modbusw(H, base + 15, uint16, 0);
	else
		modbusw(H, base + 15, uint16, linear(le, if(minLevel=0, 0, 0.01), minLevel, 1, maxLevel));
	end
end
#trigger update
modbusw(H, base + 4, uint16, 1);
```

Serviceattribute

Main Device Type

```taphome

var base := base_modifier + (100 * SA);

switch(modbusr(H, base + 7, uint16),
0, "Fluorescent",
1, "Emergency",
2, "Discharge",
3, "Halogen",
4, "Incandescent",
5, "Digital signal",
6, "LED",
7, "Switching",
8, "Color control",
255, "Other",
"Unknown")
```

Power On Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
```

System Failure Level \[%]

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
```

Fade Time

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
```

Fade Rate

```taphome
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
```

Serviceaktionen

Set Power-on Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set System-failure Level

Parameter: Level (0–100 Lvl)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Time

Parameter: Fade Time (0–15 FT)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
```

Set Fade Rate

Parameter: Fade Rate (1–15 FR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
```

Add to DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

Remove from DALI Group

Parameter: Group (0–15 GR)

```taphome
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
```

DALI-Gruppe 0 Dimmer Lesen und Schreiben

Write-only-Broadcast-Dimmer für alle ECGs, die der DALI-Gruppe 0 zugewiesen sind — keine Leserückmeldung, TapHome verfolgt den Level nur aus Benutzereingaben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 1 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 2 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 3 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 4 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 5 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 6 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 7 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 8 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 9 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 10 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 11 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 12 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 13 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 14 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

DALI-Gruppe 15 Dimmer Lesen und Schreiben

UInt16 Einheit: % numeric

Level schreiben

```taphome
if !isnull(Le)
	modbusw(H, (20 * GA) + 6400 + base_modifier, uint16, Le * 100);
end
```

**Verbindung:** Modbus RTU • 9600 baud• 8N1 • Slave ID: $\[SlaveId]

Mögliche Verbesserungen (40)

- H:6800 Broadcast Arc Power Level — Write 0–100 % to set every ballast on the DALI line to the same arc power level — not exposed as an action; only per-group (6400+20\*GR) and All On/Off (6801) are wired up
- H:6802 Broadcast Step Down / Up — 0 = Step Down, 1 = Step Up applied to all ECGs on the line (step size controlled by each ECG's Fade Rate)
- H:6803 Broadcast Recall Min Level — Write 1 → every ballast jumps to its individually configured Min Level
- H:6804 Broadcast Recall Max Level — Write 1 → every ballast jumps to its individually configured Max Level
- H:6805 Broadcast Go to Scene — Write 0–15 to recall a DALI scene on every ballast (scenes pre-configured in MAPS or via Set Scene action per ECG)
- H:6806 Broadcast Store Current Level as Scene — Write 0–15 to save the current arc power level of every ballast into the selected scene slot
- H:6807 Broadcast Clear/Remove Scene — Write 0–15 to erase the selected scene on every ballast
- H:6808 Broadcast Set Fade Time — Write 0–15 to apply the same fade-time index to every ballast (faster than per-ECG configuration for uniform fades)
- H:6809 Broadcast Set Fade Rate — Write 1–15 to apply the same fade-rate index to every ballast
- H:6810 Broadcast Set Min Level — Write 0–100 % to set the same minimum dim level on every ballast
- H:6811 Broadcast Set Max Level — Write 0–100 % to set the same maximum dim level on every ballast
- H:6814 Broadcast Multicontrol — Compound register — 0=Off, 1=100%, 2=StpUp, 3=StpDwn, 1XX=GoScene(XX), 2XX=StoreScene, 3XX=RmvScene, 1XXX=FdRate, 2XXX=FdTime, 3XXX=MinLvl, 4XXX=MaxLvl, 5XXX=PwrOnLvl, 6XXX=SysFailLvl; enables 'one-write many-ops' for advanced BMS scripting
- H:SA+8 Physical Minimum Level (per ECG) — Hardware-defined minimum dim level per ballast (distinct from user-settable Min Level at +9); read-only
- H:SA+16 Arc Power Off/On (per ECG) — R/W toggle: 0 = Off, 1 = 100 %; TapHome writes arc power level at +15 instead which covers the same capability
- H:SA+17 Step Down/Up (per ECG) — 0 = Step Down, 1 = Step Up — relative dimming per ballast using the stored fade-rate
- H:SA+18 Recall Min Level (per ECG) — Write 1 → this ECG jumps to its Min Level
- H:SA+19 Recall Max Level (per ECG) — Write 1 → this ECG jumps to its Max Level
- H:SA+20 Go to Scene (per ECG) — 0–15 scene recall per ballast
- H:SA+21 Store Current Level as Scene (per ECG) — 0–15 scene save per ballast
- H:SA+22 Clear/Remove Scene (per ECG) — 0–15 scene clear per ballast
- H:SA+25 Set Min Level (per ECG) — 0–100 %; R/W — TapHome reads current min via service attribute Fade Time but does NOT expose a writer for minLevel (template caches the read value into minLevel variable for writelevel linear mapping)
- H:SA+26 Set Max Level (per ECG) — 0–100 %; mirror of the above for maxLevel
- H:SA+31 Multicontrol (per ECG) — Compound write (see Broadcast Multicontrol for encoding) — advanced single-register scripting entry-point per ECG
- H:6401+20\*GR Group Arc Power Off/On — Group-wide 0/100 % toggle; template only exposes Arc Power Level (group writelevel), so ON/OFF is achievable only by writing 0 or 100
- H:6402+20\*GR Group Step Down/Up — Relative dim per group
- H:6403+20\*GR Group Recall Min Level
- H:6404+20\*GR Group Recall Max Level
- H:6405+20\*GR Group Go to Scene — 0–15
- H:6406+20\*GR Group Store Current Level as Scene — 0–15
- H:6407+20\*GR Group Clear/Remove Scene — 0–15
- H:6408+20\*GR Group Set Fade Time — 0–15
- H:6409+20\*GR Group Set Fade Rate — 1–15
- H:6410+20\*GR Group Set Min Level — 0–100 %
- H:6411+20\*GR Group Set Max Level — 0–100 %
- H:6412+20\*GR Group Set Power-on Level — 0–100 %
- H:6413+20\*GR Group Set System-failure Level — 0–100 %
- H:SA+42..+73 Emergency Control Gear (EML) signals — Failure Status, Emergency Mode, Battery Charge, Function/Duration test control, Rated Duration, Prolong Time, Store* parameters — Entire DALI Emergency (Part 202) feature set: SA+42 Failure Status, +43 Emergency Mode, +44 Emergency Status, +45 Battery Charge %, +46..+49 test schedule, +50..+57 timing/level config, +60..+68 trigger writes (Rest, Inhibit, Start/Stop tests, Reset Lamp Time), +69..+73 Store* R/W settings; ECGs of type 1 (Emergency) in this template fall back to the generic Fluorescent/LED script, so none of these are surfaced — dedicated EML template would be needed
- H:SA+80..+93 LED Control Gear (Device Type 6) signals — Failure Status bitmask, Gear Type, Dimming Curve, Operating Modes, Reference Running, Current Protector, Fast Fade Time, Enable/Disable Current Protector, Select Dimming Curve, Store Fast Fade Time — Advanced LED diagnostics and tuning per DALI-2 Part 207; template uses only the common signals (0..28) so LED-specific bits are not exposed even though gateway supports them
- 14000 + 640\*LINE + 10\*IDX + INSTANCE + 1280\*SIG DALI Input Devices (Occupancy, Light sensors, Push buttons, Absolute inputs) — Gateway supports up to 64 DALI input devices per line (recommended 16 with push buttons) — occupancy (0/1/2/3), light level (lux), push-button event bitmask (press/release/short/double/long), absolute input (0–100 % / raw); template exposes NO input devices. Local management (gateway directly drives ECGs from push-button events) is also unused. This is the largest feature gap for IBOX-MBS-DALI integrations that use DALI-native sensors
- H:SA+29 (Add to DALI Group), H:SA+30 (Remove from DALI Group) Add/Remove DALI Group (per ECG) — Firmware-drift deprecation: the r1.5 manual (May 2024) marks signals 29–30 as 'Not used' in the common-signals table, but the TapHome template still exposes them as per-ECG service actions ('Add to DALI Group' / 'Remove from DALI Group') because they were functional on earlier firmware where this template was authored. Behavior on latest firmware should be verified before relying on group-membership-at-runtime writes; configure groups via Intesis MAPS commissioning instead for stable deployments

## Importparameter

Diese Werte geben Sie beim Import des XML ein.

| In der App abgefragt | Standard      |
|----------------------|---------------|
| Slave Id             | `1`           |
| IP address           | `192.168.1.0` |

## Quellen

- Intesis Modbus Server – DALI User Manual (r1.5, 2024)
  
  [www.hms-networks.com](https://www.hms-networks.com/docs/default-source/products/intesis/manuals-and-guides---manuals/user-manual-inmbsdalxxx0000.pdf) 2026-04-24
  
  [PDF](https://taphome.com/compatibility/devices/intesis-dali/manufacturer/user-manual.pdf)
- IBOX-MBS-DALI Installation Sheet (rev. 1.5)
  
  [cdn.chipkin.com](https://cdn.chipkin.com/assets/uploads/2019/Oct/intesisbox_ibox-mbs-dali_installation_manual_en_14-15-15-02.pdf) 2026-04-24
  
  [PDF](https://taphome.com/compatibility/devices/intesis-dali/manufacturer/installation-manual.pdf)

Herstellerdokumente sind © ihrer jeweiligen Eigentümer. Sie werden so bereitgestellt, wie der Hersteller sie veröffentlicht hat, nur zur Information.

## Verwandte Dokumentation

- [Modbus Integration](https://taphome.com/de/compatibility/modbus-guide/)
- [Modbus](https://taphome.com/de/docs/integration/modbus/)
- [Einfache Konfiguration mit Vorlagen](https://taphome.com/de/docs/integration/modbus/templates/)
- [Modbus-Skripte und Prefetch](https://taphome.com/de/docs/script/modbus-scripts/)
- [Modbus-Funktionen](https://taphome.com/de/docs/script/modbus/)
- [Modbus-Datentypen](https://taphome.com/de/docs/script/modbus-data-types/)

## Fehlerbehebung

Häufige Probleme zu diesem Thema:

- [DALI-Leuchten schalten sich von selbst ein](https://taphome.com/de/troubleshooting/wiring/dali-lights-switch-on-by-themselves/) — DALI-Leuchten hinter einem DALI-Gateway schalten sich ohne Befehl mit minimaler Helligkeit ein oder ändern ihre Helligkeit, meist jedes Mal dieselben wenigen Leuchten. Der Bus wird kurzzeitig gestört — durch das Gateway, einen Kurzschluss in einem Abzweig oder einen Spannungsabfall.

[Alle Fehlerbehebungsartikel anzeigen](https://taphome.com/de/troubleshooting/)

