Intesis DALI-to-Modbus RTU gateway bridging up to 64 DALI ECG ballasts and 16 DALI groups to TapHome. Per-ballast dimming, broadcast All On/Off and power-on / system-failure level configuration over RS-485.
IntesisModbus RTU80 devicesRevision 1.0Last updated: October 8, 2026
Import into the TapHome appHardware › Modbus › Add from template
The Intesis IBOX-MBS-DALI is a DALI-to-Modbus protocol converter by Intesis (part of HMS Networks) that exposes DALI-2 lighting ballasts and groups as Modbus holding registers. The TapHome template targets the 1-channel RTU variant (order code IBMBSDAL0640000, re-released as INMBSDAL0640200) and connects to TapHome over RS-485 Modbus RTU on the gateway’s Port B.
TapHome sells the newer 700 series gateway, order code IN703DAL0640000 (DALI-2 to Modbus TCP & RTU server, 1 DALI channel). According to the manufacturer’s user manual (v1.0.11) it uses the same Modbus register map, so this template applies to it as well.
The template covers the full addressable DALI capacity of a single line: 64 individual ECG ballasts (short addresses 0–63) and 16 DALI groups. Each ECG supports read-back of actual level (0–100 %), ballast/lamp failure status, and write access to arc power level, power-on level, system-failure level, fade time and fade rate. DALI groups expose write-only broadcast dimmer control. At the module level, four broadcast service actions (All — On, All — Off, All — Set Power-on Level, All — Set System-failure Level) target every ballast on the DALI line in a single Modbus write.
DALI short addresses, group membership, scenes and min/max levels must be pre-configured with the free Intesis MAPS commissioning software before TapHome can address individual ballasts — the TapHome template does not perform DALI network discovery or addressing.
The TapHome template is built for the 1-channel RTU gateway. The 2-channel variant has an identical register map but does not expose Modbus RTU (TCP only), so it is not compatible with this RS-485 template.
Order code
DALI channels
ECG capacity
Groups
Modbus RTU
Modbus TCP
IN703DAL0640000 (700 series)
1
64
16
Yes (Port B)
Yes
IBMBSDAL0640000 / INMBSDAL0640200
1
64
16
Yes (Port B)
Yes
IBMBSDAL1280000 / INMBSDAL1280200
2
128
32
No
Yes
The TapHome template uses the register formula 7000 × channel + 100 × ECG + signal, evaluated with channel = 0. This matches the 1-channel IBOX-MBS-DALI and the 700 series IN703DAL0640000 exactly.
Port A / DALI — 2-pole orange terminal, A3 (DA+) and A4 (DA−), 16 VDC DALI supply
Ethernet — 1× RJ45 10/100 Mbps (Modbus TCP)
Console — mini-type B USB 2.0 for Intesis MAPS configuration
Port B / Modbus RTU — EIA485 3-pole screw terminal B1 (B+) / B2 (A−) / B3 (SGND)andEIA232 SUB-D9 male (alternative)
USB — Type-A USB 2.0 for flash drives only (150 mA max)
SWA / SWB — DIP switches (SWA reserved, SWB controls RS-485 termination and polarization — see Configuration below)
Power supply
Input: 24 VDC ±10 % on the 3-pole terminal (+, −, Earth)
Source: NEC Class 2 or Limited Power Source (LPS), SELV rated
Upstream protection: 250 V / 6 A circuit breaker required
Earth: May be earthed through the negative terminal only — never through the positive terminal
To avoid earth loops that can damage the gateway and connected equipment, never use a DC power supply with the positive terminal earthed. Earth only through the negative terminal, or leave the earth floating.
RS-485 Modbus RTU wiring (Port B, EIA485)
Connect the TapHome RS-485 bus to the EIA485 terminal block on Port B:
IBOX-MBS-DALI terminal
Signal
TapHome RS-485
B1
B+ (D+)
A+ / D+
B2
A− (D−)
B− / D−
B3
SGND (reference ground)
GND
Respect polarity. B1 = B+ (D+) and B2 = A− (D−). Crossing A/B will silently break communication without any hardware damage.
Cable specification (EIA485 limits):
Max length: 1200 m on a single RS-485 segment
Max nodes: 32 devices including the TapHome master and the IBOX-MBS-DALI
Termination: 120 Ω at each bus end — TapHome Core has a built-in 100 Ω resistor on its BUS terminals, so the IBOX-MBS-DALI only needs termination enabled if it sits at the far end of the RS-485 segment (see DIP switch SWB below)
If the gateway is installed in the middle of the RS-485 bus (not at an end), leave SWB in the OFF position and do not add external termination.
EIA232 alternative: The Port B SUB-D9 male connector provides an EIA232 interface using TX, RX and GND only, with a 15 m maximum cable length. TapHome does not natively support RS-232, so EIA485 is the standard TapHome connection.
DALI bus wiring (Port A)
Connect the DALI line to the Port A orange 2-pole terminal:
A3 — DA+
A4 — DA−
The IBOX-MBS-DALI provides 16 VDC (±2 %) bus voltage, with a guaranteed 235 mA (max 250 mA) of DALI current; the 700 series IN703DAL0640000 guarantees 230 mA (max 250 mA). DALI is polarity-insensitive per the standard, but this internal supply must be enabled in Intesis MAPS before any DALI communication works — see DALI commissioning below.
DALI capacity on a single line (leave ~10 % headroom for dynamic processes):
Up to 64 ECG ballasts (typ. 2 mA each → 128 mA)
Up to 64 DALI input devices / 16 recommended when using push buttons (typ. 5 mA each)
Example budget: 64 ECGs × 2 mA + 16 sensors × 5 mA = 208 mA < 235 mA × 90 %
Example budget for the IN703DAL0640000 (manufacturer’s figures): 63 ECGs × 2 mA + 16 sensors × 5 mA = 206 mA < 230 mA × 90 %
DALI is an inherently low-speed bus (1200 baud) with a 1.5 s gateway start-up time and a 7 s shutdown time. DALI commands issued from TapHome reach the ballasts with a small but non-zero latency compared to direct wired control.
DIP switch SWB — RS-485 termination and polarization
The SWB DIP switch on the 1-channel IBOX-MBS-DALI controls only the RS-485 bus characteristics — there is no DIP-switch-based Modbus slave address on this gateway (slave address is set in Intesis MAPS, see below).
Position
ON
OFF
1
120 Ω termination active
Termination inactive
2
Polarization active
Polarization inactive
3
Polarization active
Polarization inactive
Position 1 = ON — enables the internal 120 Ω termination resistor. Use this when the IBOX-MBS-DALI is at the last physical position on the RS-485 bus.
Positions 2 and 3 = ON — enable bus biasing (polarization). Use this when no other master on the bus provides biasing. TapHome Core provides biasing on its BUS terminals, so these can usually stay OFF.
SWA is reserved for future use on this hardware revision and has no runtime effect.
Modbus RTU communication parameters
All RTU parameters are configured in the Intesis MAPS project and must match the TapHome module settings exactly.
The Intesis gateway supports Modbus RTU and Modbus TCP simultaneously on the 1-channel variant. TapHome uses RTU; a parallel BMS or diagnostic tool can keep reading the same register map over TCP without interfering.
Enabling Modbus communication
Modbus communication is enabled by loading a valid project onto the gateway with Intesis MAPS (no DIP switches are involved on this model). Short version:
Install Intesis MAPS on a Windows PC and connect to the gateway via USB Console or Ethernet.
Open or create a project based on the INMBSDAL---0200-Template (for the 700 series IN703DAL0640000 select the IN-MBS-DALI-64 template, i.e. the Modbus application).
In the Configuration → Modbus Slave tab, set baud rate, parity, stop bits and slave address to match TapHome.
In the Configuration → DALI tab, enable the internal 16 VDC DALI bus power (see DALI commissioning).
Click Send to transfer the configuration; the gateway reboots automatically.
Use Diagnostic → Viewers to verify Modbus frames on Port B TX/RX.
DALI commissioning
DALI addressing is performed in Intesis MAPS — not in TapHome. The TapHome template references DALI short addresses 0–63 and group addresses 0–15 by their register offset; physical ballasts and groups must be bound to those addresses first.
High-level commissioning workflow (full procedure in the Intesis user manual, Annex A):
In MAPS, open the project for the 1-channel gateway and go to Configuration → DALI → ECG Channel A.
Click Commissioning → Scan to discover ECG ballasts on the DALI bus.
For each ballast, assign a short address (0–63) via the Wink button (blinks the physical ballast for identification) or Auto Addr. (sequential automatic assignment).
Optionally set per-ECG parameters: Device Type (0 = Fluorescent, 1 = Emergency, 6 = LED, …), min / max level, power-on level, system-failure level, scene configuration and group membership (0–15).
Click Commissioning → Set All to push the configuration from MAPS down to the DALI bus.
Click Send to transfer the gateway-level configuration (Modbus parameters, signal map) back to the IBOX-MBS-DALI.
After commissioning, ECGs identified by short address in TapHome (e.g. ECG 5 → register H:506) map one-to-one to the physical ballasts. Group membership must also be defined in MAPS for the DALI Group devices to work, although the template exposes per-ECG Add to DALI Group / Remove from DALI Group service actions that can re-assign group membership at runtime on compatible firmware.
Per the r1.5 user manual (May 2024), signals 29 and 30 (Add to DALI Group / Remove from DALI Group) are marked as Not used on current firmware. The TapHome template still exposes these actions because they were functional on earlier firmware, but stable group assignments should be configured in Intesis MAPS, not written at runtime.
The user manual of the 700 series IN703DAL0640000 (v1.0.11) lists signals 29 and 30 as read/write, so according to the manual the actions should be available on that gateway.
Power-on / system-failure level, fade time / rate (read)
Yes — as service attributes
H:SA+15
ECG arc power level 0–100 % (write)
Yes — writelevel, linearly mapped into Min/Max
H:SA+23..+30
Set fade time/rate, set levels, add/remove from group
Yes — as per-ECG service actions
H:6400 + 20·GR
Group arc power level 0–100 % (write)
Yes — as write-only DALI Group device
H:6801
Broadcast Arc Power Off/On (0/100 %)
Yes — as module All — On / All — Off
H:6812 / H:6813
Broadcast Set Power-on / System-failure Level
Yes — as module service actions
Input devices (occupancy sensors, push buttons, light sensors) at addresses 14000 + 640·LINE + 10·IDX + INSTANCE + 1280·SIG are not implemented by this template.
Each short address 0–63 is exposed as an individual TapHome dimmer device (ECG 0 through ECG 63). Capabilities per ECG:
Actual level — reads H:SA+6 (0–100 %) as the dimmer position feedback
Arc power level — writes H:SA+15 (0–100 %), linearly mapped from TapHome’s 0–1 dimmer scale into the ballast’s configured [min level, max level] range
Ballast status — a bitmask on H:SA+5 drives TapHome diagnostics: BallFail and LampFail raise errors, BallLimit, Reset and PowerCycle raise warnings, FadeRun is surfaced as info, MissingShortAddr raises an error
Communication fault detection — the module reads the 64-bit failure bitmask on H:0 – H:3 and flags individual ECGs as faulty independently of the H:SA+5 status
Per-ECG service attributes (read-only metadata)
Each ECG device exposes five service attributes that read its current DALI configuration:
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 the ballast returns to after DALI bus power-up
System-failure Level [%] — H:SA+12 (0–100 %) — level the ballast enters on DALI bus failure
Fade Time — H:SA+13 (0–15) — DALI fade-time index (time to reach a target level on direct arc power writes)
Fade Rate — H:SA+14 (1–15) — DALI fade-rate index (speed of step up / step down commands)
Per-ECG service actions (write)
Each ECG also exposes six service actions for online reconfiguration:
Set Power-on Level — writes H:SA+27 (0–100 %)
Set System-failure Level — writes H:SA+28 (0–100 %)
Set Fade Time — writes H:SA+23 (0–15)
Set Fade Rate — writes H:SA+24 (1–15)
Add to DALI Group — writes H:SA+29 with the group number (0–15) — see commissioning caveat above
Remove from DALI Group — writes H:SA+30 with the group number (0–15)
Every write is automatically committed by the template via H:SA+4 = 1 (Update All ECG Status), which refreshes the gateway’s cached read values.
DALI groups (16 write-only broadcast dimmers)
DALI Group 0 through DALI Group 15 are exposed as write-only dimmer devices:
Write register:H:6400 + 20 × GR (e.g. Group 0 = H:6400, Group 15 = H:6700)
Behavior: writing a TapHome dimmer value 0–1 sends Arc Power Level = Le × 100 to every ECG that is a member of that DALI group
No read feedback — the group signal has no actual-level register, so TapHome tracks the group level from user input only, not from real ballast state
Use groups for rooms or zones where several ballasts dim together. Group membership is configured per-ECG via the ECG service action Add to DALI Group or (preferably) in Intesis MAPS.
Module-level broadcast actions
The main module (Intesis DALI) exposes four service actions that address every ballast on the DALI line at once:
All — On — writes H:6801 = 1, broadcasting 100 % to every ECG
All — Off — writes H:6801 = 0, broadcasting 0 % to every ECG
All — Set Power-on Level — writes H:6812 (0–100 %) to configure the level all ballasts return to after DALI power-up
All — Set System-failure Level — writes H:6813 (0–100 %) to configure the level all ballasts enter on DALI bus failure
These are faster than iterating per-ECG writes when all ballasts must reach the same target state (e.g. panic off, morning preset).
No activity / TX packet to DALI / RX packet from DALI
Port B Tx / Rx (Modbus RTU)
Off / Blink green / Blink yellow
No activity / TX packet on RS-485 / RX packet on RS-485
Button A indicator
Off / Green
DALI broadcast state: OFF / RECALL_MAX_LEVEL
Button B indicator
Off / Green
No default function (configurable in MAPS)
Button A (DALI A) — pressing toggles a DALI broadcast between RECALL_MAX_LEVEL (100 %) and OFF, useful for a quick on-site sanity check of the DALI line without TapHome involvement. After 30 s the Button A LED turns off and the ballasts return to their previous level.
Button B — no default function on this gateway; can be configured as an RS-485 action in Intesis MAPS.
EN60715 TH35, preferably inside a metallic cabinet connected to earth. Leave the fixing clips in their inward factory position, engage the top edge of the rail first, then press down to snap the bottom.
Wall mount
Separate the fixing clips from their original position (for DIN rail mount) by pushing them outward until they click into the wall-mount position.
Use the mounting holes in the box to fix it to the wall.
Space and environment
Installation space: allow 130 × 100 × 100 mm (H × W × D) around the device for connectors and cabling. Net dimensions: 90 × 88 × 56 mm (700 series IN703DAL0640000: 90 × 88 × 58 mm).
Environment: IP20, indoor only. Operating temperature 0 °C to +50 °C (user manual) / +60 °C (installation sheet), humidity 5–95 % non-condensing. The 700 series IN703DAL0640000 operates from −10 °C to +60 °C.
No Modbus communication (Port B Tx/Rx LEDs stay off)
Check RS-485 wiring — verify B1 (B+) / B2 (A−) polarity against the TapHome RS-485 terminals; crossing them is the most common mistake.
Check SGND — connect B3 to the TapHome ground. Missing signal ground is the second most common cause of flaky RTU.
Match the serial parameters — baud rate, parity, stop bits and slave address in TapHome must match the values in the Intesis MAPS project exactly.
Check SWB DIP switches — if this gateway is at the physical end of the RS-485 bus, set SWB position 1 = ON (120 Ω termination). If it sits in the middle of the bus, set all SWB positions to OFF.
Confirm TCP is not holding the slot — the gateway allows 5 simultaneous TCP sockets and 1 RTU master; a misconfigured MAPS connection does not block RTU, but it is worth closing MAPS during TapHome debugging.
Modbus works but DALI ballasts do not respond
Enable the internal DALI bus power — new gateways ship with DALI power disabled. Open Intesis MAPS → Configuration → DALI → DALI Channel A and set Power the DALI bus = Enabled, then Send the configuration. Without bus power the gateway reports a hardware error on any DALI write.
Quick sanity check — press Button A on the gateway. It should broadcast RECALL_MAX_LEVEL and toggle every connected ballast on/off. If nothing moves, the DALI bus itself is the problem (wiring, voltage, ballast power).
Run an on-bus scan in MAPS — Commissioning → Scan on DALI Channel A lists every ballast the gateway can see. Missing ballasts usually mean unpowered ECGs, an unassigned DALI short address, or a cut in the DALI bus.
Verify short addresses — TapHome addresses ECG 5 at register H:506; if short address 5 has not been assigned in MAPS, the register exists but the physical ballast is not bound to it.
A specific ECG reports a fault in TapHome
TapHome surfaces two failure sources for every ECG:
Module failRegister (H:0 – H:3) — one bit per ECG. A set bit raises a communication error (the gateway cannot talk to the ballast at all).
ECG ballast status (H:SA+5) — a per-ECG bitmask. BallFail and LampFail raise errors (hardware ballast or lamp failure), MissingShortAddr raises an error (the ECG answered, but it has no short address), BallLimit, Reset and PowerCycle raise warnings, FadeRun is informational.
Replace the faulty ballast or re-commission the short address in MAPS to clear the fault.
Write accepted but ballast does not change level
Confirm the ballast is not in fade — FadeRun on H:SA+5 means the ballast is currently fading; wait for it to finish. Shortening Fade Time (H:SA+23) reduces the perceived latency.
Check Min / Max Level — TapHome linearly maps its 0–1 dimmer scale into the [min level, max level] window read from the ballast (H:SA+9 / H:SA+10). If both are equal, the ballast cannot change level; re-configure min/max in MAPS.
Add/Remove from DALI Group — on latest r1.5 firmware these per-ECG actions are marked as deprecated; perform group assignments in MAPS instead. The user manual of the 700 series IN703DAL0640000 lists them as read/write.
Available devices 80
These devices appear in TapHome after import.
Intesis DALIModule
Service Actions
All — On
Broadcasts 100 % arc power to every ballast on the DALI line — panic-on or morning preset in one Modbus write
All — Off
Broadcasts 0 % arc power to every ballast on the DALI line — panic-off or cleaning preset in one Modbus write
All — Set Power-on Level
Broadcasts a new power-on level (0–100 %) to every ballast — the level they return to after DALI bus power-up
All — Set System-failure Level
Broadcasts a new system-failure level (0–100 %) to every ballast — the level they enter on DALI bus failure
Individual DALI ballast at short address 0 — dimmer with actual-level feedback, ballast/lamp failure status, arc power write, and per-ECG fade time/rate and power-on / system-failure level configuration
Register: H:6 → H:15UInt16Unit: %numeric
Service Attributes
Main Device Type
DALI device type — Fluorescent (0), Emergency (1), Discharge (2), Halogen (3), Incandescent (4), Digital signal (5), LED (6), Switching (7) or Colour Control (8)
Power-on Level
Level (0–100 %) the ballast returns to after DALI bus power-up
System-failure Level
Level (0–100 %) the ballast enters on DALI bus failure
Fade Time
DALI fade-time index (0–15) — time to reach a target level on direct arc power writes
Fade Rate
DALI fade-rate index (1–15) — speed of step up / step down commands
Service Actions
Set Power-on Level
Writes a new power-on level (0–100 %) to this ECG
Set System-failure Level
Writes a new system-failure level (0–100 %) to this ECG
Set Fade Time
Writes a new DALI fade-time index (0–15) to this ECG
Set Fade Rate
Writes a new DALI fade-rate index (1–15) to this ECG
Add to DALI Group
Assigns this ECG to a DALI group (0–15) so it can be addressed via the group's broadcast dimmer
Remove from DALI Group
Removes this ECG from the specified DALI group (0–15)
ECG 0
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 1DimmerRead and write
Register: H:106 → H:115UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 1
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 2DimmerRead and write
Register: H:206 → H:215UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 2
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 3DimmerRead and write
Register: H:306 → H:315UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 3
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 4DimmerRead and write
Register: H:406 → H:415UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 4
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 5DimmerRead and write
Register: H:506 → H:515UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 5
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 6DimmerRead and write
Register: H:606 → H:615UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 6
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 7DimmerRead and write
Register: H:706 → H:715UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 7
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 8DimmerRead and write
Register: H:806 → H:815UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 8
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 9DimmerRead and write
Register: H:906 → H:915UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 9
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 10DimmerRead and write
Register: H:1006 → H:1015UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 10
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 11DimmerRead and write
Register: H:1106 → H:1115UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 11
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 12DimmerRead and write
Register: H:1206 → H:1215UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 12
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 13DimmerRead and write
Register: H:1306 → H:1315UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 13
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 14DimmerRead and write
Register: H:1406 → H:1415UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 14
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 15DimmerRead and write
Register: H:1506 → H:1515UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 15
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 16DimmerRead and write
Register: H:1606 → H:1615UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 16
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 17DimmerRead and write
Register: H:1706 → H:1715UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 17
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 18DimmerRead and write
Register: H:1806 → H:1815UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 18
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 19DimmerRead and write
Register: H:1906 → H:1915UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 19
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 20DimmerRead and write
Register: H:2006 → H:2015UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 20
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 21DimmerRead and write
Register: H:2106 → H:2115UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 21
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 22DimmerRead and write
Register: H:2206 → H:2215UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 22
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 23DimmerRead and write
Register: H:2306 → H:2315UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 23
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 24DimmerRead and write
Register: H:2406 → H:2415UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 24
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 25DimmerRead and write
Register: H:2506 → H:2515UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 25
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 26DimmerRead and write
Register: H:2606 → H:2615UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 26
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 27DimmerRead and write
Register: H:2706 → H:2715UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 27
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 28DimmerRead and write
Register: H:2806 → H:2815UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 28
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 29DimmerRead and write
Register: H:2906 → H:2915UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 29
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 30DimmerRead and write
Register: H:3006 → H:3015UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 30
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 31DimmerRead and write
Register: H:3106 → H:3115UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 31
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 32DimmerRead and write
Register: H:3206 → H:3215UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 32
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 33DimmerRead and write
Register: H:3306 → H:3315UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 33
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 34DimmerRead and write
Register: H:3406 → H:3415UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 34
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 35DimmerRead and write
Register: H:3506 → H:3515UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 35
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 36DimmerRead and write
Register: H:3606 → H:3615UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 36
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 37DimmerRead and write
Register: H:3706 → H:3715UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 37
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 38DimmerRead and write
Register: H:3806 → H:3815UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 38
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 39DimmerRead and write
Register: H:3906 → H:3915UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 39
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 40DimmerRead and write
Register: H:4006 → H:4015UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 40
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 41DimmerRead and write
Register: H:4106 → H:4115UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 41
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 42DimmerRead and write
Register: H:4206 → H:4215UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 42
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 43DimmerRead and write
Register: H:4306 → H:4315UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 43
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 44DimmerRead and write
Register: H:4406 → H:4415UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 44
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 45DimmerRead and write
Register: H:4506 → H:4515UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 45
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 46DimmerRead and write
Register: H:4606 → H:4615UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 46
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 47DimmerRead and write
Register: H:4706 → H:4715UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 47
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 48DimmerRead and write
Register: H:4806 → H:4815UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 48
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 49DimmerRead and write
Register: H:4906 → H:4915UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 49
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 50DimmerRead and write
Register: H:5006 → H:5015UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 50
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 51DimmerRead and write
Register: H:5106 → H:5115UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 51
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 52DimmerRead and write
Register: H:5206 → H:5215UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 52
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 53DimmerRead and write
Register: H:5306 → H:5315UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 53
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 54DimmerRead and write
Register: H:5406 → H:5415UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 54
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 55DimmerRead and write
Register: H:5506 → H:5515UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 55
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 56DimmerRead and write
Register: H:5606 → H:5615UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 56
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 57DimmerRead and write
Register: H:5706 → H:5715UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 57
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 58DimmerRead and write
Register: H:5806 → H:5815UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 58
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 59DimmerRead and write
Register: H:5906 → H:5915UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 59
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 60DimmerRead and write
Register: H:6006 → H:6015UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 60
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 61DimmerRead and write
Register: H:6106 → H:6115UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 61
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 62DimmerRead and write
Register: H:6206 → H:6215UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 62
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
var base := base_modifier + (100 * SA);
modbusr(H, base + 11, uint16);
System Failure Level [%]
var base := base_modifier + (100 * SA);
modbusr(H, base + 12, uint16);
Fade Time
var base := base_modifier + (100 * SA);
modbusr(H, base + 13, uint16);
Fade Rate
var base := base_modifier + (100 * SA);
modbusr(H, base + 14, uint16);
Service Actions
Set Power-on Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 27, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set System-failure Level
Parameters: Level (0–100 Lvl)
var base := base_modifier + (100 * SA);
modbusw(H, base + 28, uint16, Lvl);
modbusw(H, base + 4, uint16, 1);
Set Fade Time
Parameters: Fade Time (0–15 FT)
var base := base_modifier + (100 * SA);
modbusw(H, base + 23, uint16, FT);
modbusw(H, base + 4, uint16, 1);
Set Fade Rate
Parameters: Fade Rate (1–15 FR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 24, uint16, FR);
modbusw(H, base + 4, uint16, 1);
Add to DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 29, uint16, GR);
modbusw(H, base + 4, uint16, 1);
Remove from DALI Group
Parameters: Group (0–15 GR)
var base := base_modifier + (100 * SA);
modbusw(H, base + 30, uint16, GR);
modbusw(H, base + 4, uint16, 1);
ECG 63DimmerRead and write
Register: H:6306 → H:6315UInt16Unit: %numeric
Service Attributes
Main Device Type
Power On Level [%]
System Failure Level [%]
Fade Time
Fade Rate
Service Actions
Set Power-on Level
Set System-failure Level
Set Fade Time
Set Fade Rate
Add to DALI Group
Remove from DALI Group
ECG 63
Read (module)
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"));
Initialize
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);
Read level
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
Write level
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);
H:6800Broadcast 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:6802Broadcast 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:6803Broadcast Recall Min Level — Write 1 → every ballast jumps to its individually configured Min Level
H:6804Broadcast Recall Max Level — Write 1 → every ballast jumps to its individually configured Max Level
H:6805Broadcast 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:6806Broadcast Store Current Level as Scene — Write 0–15 to save the current arc power level of every ballast into the selected scene slot
H:6807Broadcast Clear/Remove Scene — Write 0–15 to erase the selected scene on every ballast
H:6808Broadcast 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:6809Broadcast Set Fade Rate — Write 1–15 to apply the same fade-rate index to every ballast
H:6810Broadcast Set Min Level — Write 0–100 % to set the same minimum dim level on every ballast
H:6811Broadcast Set Max Level — Write 0–100 % to set the same maximum dim level on every ballast
H:SA+8Physical Minimum Level (per ECG) — Hardware-defined minimum dim level per ballast (distinct from user-settable Min Level at +9); read-only
H:SA+16Arc 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+17Step Down/Up (per ECG) — 0 = Step Down, 1 = Step Up — relative dimming per ballast using the stored fade-rate
H:SA+18Recall Min Level (per ECG) — Write 1 → this ECG jumps to its Min Level
H:SA+19Recall Max Level (per ECG) — Write 1 → this ECG jumps to its Max Level
H:SA+20Go to Scene (per ECG) — 0–15 scene recall per ballast
H:SA+21Store Current Level as Scene (per ECG) — 0–15 scene save per ballast
H:SA+22Clear/Remove Scene (per ECG) — 0–15 scene clear per ballast
H:SA+25Set 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+26Set Max Level (per ECG) — 0–100 %; mirror of the above for maxLevel
H:SA+31Multicontrol (per ECG) — Compound write (see Broadcast Multicontrol for encoding) — advanced single-register scripting entry-point per ECG
H:6401+20*GRGroup 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*GRGroup Step Down/Up — Relative dim per group
H:6403+20*GRGroup Recall Min Level
H:6404+20*GRGroup Recall Max Level
H:6405+20*GRGroup Go to Scene — 0–15
H:6406+20*GRGroup Store Current Level as Scene — 0–15
H:6407+20*GRGroup Clear/Remove Scene — 0–15
H:6408+20*GRGroup Set Fade Time — 0–15
H:6409+20*GRGroup Set Fade Rate — 1–15
H:6410+20*GRGroup Set Min Level — 0–100 %
H:6411+20*GRGroup Set Max Level — 0–100 %
H:6412+20*GRGroup Set Power-on Level — 0–100 %
H:6413+20*GRGroup Set System-failure Level — 0–100 %
H:SA+42..+73Emergency 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..+93LED 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*SIGDALI 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
Import parameters
Enter these values when you import the XML.
Asked in the app
Default
Slave Id
1
IP address
192.168.1.0
Sources
Intesis Modbus Server – DALI User Manual (r1.5, 2024)
The WhatsApp message was not sent within 60 minutes.
✓
The request is with support
Beta · TapHome 2026.1
We're looking for testers of the new version
You are among the first partners who can roll out 2026.1 to customers. The support assistant does the upgrade for you on WhatsApp or by e-mail — it checks the unit and makes a backup before the change.
Try 2026.1 before everyone else. The support assistant does the upgrade for you on WhatsApp or by e-mail — it checks the unit and makes a backup before the change.