Introduction
IEC 62386-306 describes DALI control devices that are defined as general purpose sensors.
DALI control devices according to IEC 62386-306 correspond to instance type 6. The type of an instance can be queried with the function block FB_DALI103QueryInstanceType.
Input value
The function block FB_DALI103QueryInputValue can be used to query the current state (inputValue) of the general purpose sensor.
Timer
IEC 62386-306 defines various timers for triggering device-specific events.
The event for the instance type 6 in conjunction with the associated timers is explained below.
The respective time is calculated from

Time | Multiplier | Preset value of the multiplier | Tincr Incremental value | Tdefault Default value | Tmin lowest possible set value | Tmax highest possible set value |
---|---|---|---|---|---|---|
Tdeadtime | tDeadtime | 30 | 50 ms | 1.5 s | 0 s | 12.75 s |
Treport | tReport | 30 | 5 s | 2 min 30 s | 5 s | 21 min 15 s |
TalarmReport | tAlarmReport | 30 | 5 s | 2 min 30 s | 5 s | 21 min 15 s |
![]() | Set the times so that as few events as possible are sent. If too many events are sent, this can have a negative effect on the behavior of the application. |
Event filter
DALI control devices are capable of sending different events. The event filter consists of an 8-bit value, where each individual bit defines whether an event is blocked or released. The event is released if the corresponding bit is set, otherwise it is blocked.
The function block FB_DALI103QueryEventFilter can be used to read the value of the event filter; the function block FB_DALI103SetEventFilter can be used to write to it.
The event filter (see eventFilter) must be configured accordingly in order to trigger time-controlled events.
Bit | Event | Description |
---|---|---|
0 | Measured value report | Measured Value Report event activated. |
1 | Alarm 0 activated | Alarm 0 activated-Event is active. |
2 | Alarm 0 deactivated | Alarm 0 deactivated-Event is active. |
3 | Alarm 1 activated | Alarm 1 activated-Event is active. |
4 | Alarm 1 deactivated | Alarm 1 deactivated-Event is active. |
5 | Alarm 2 activated | Alarm 2 activated-Event is active. |
6 | Alarm 2 deactivated | Alarm 2 deactivated-Event is active. |
7 | Alarm 3 activated | Alarm 3 activated-Event is active. |
8 | Alarm 3 deactivated | Alarm 3 deactivated-Event is active. |
9…15 | - | Reserved |
Input Notification event
With instance type 6 there is the possibility to release the event with the help of the event filter. The event is sent from the DALI control device by a Input Notification and can be received with FB_DALIGetInputNotification.
The events are listed in the following table.
Event Name |
Event Information |
Description |
---|---|---|
Measured Value |
2#1X_XXXX_XXXX |
The event contains the current measured value (9 bits). If the resolution is greater than 9, only a change of the input value is communicated with this event. This can then be read with FB_DALI103QueryInputValue. If the resolution is less than or equal to 9, this event contains the current input value. |
Alarm 0 |
2#00_XXXX_XX00 |
alarmIsActivated[0] is 0 and has not changed since the last alarm event transmission. |
2#00_XXXX_XX01 |
alarmIsActivated[0] is 1 and has not changed since the last alarm event transmission. | |
2#00_XXXX_XX10 |
alarmIsActivated[0] is 0 and has changed since the last alarm event transmission. | |
2#00_XXXX_XX11 |
alarmIsActivated[0] is 1 and has changed since the last alarm event transmission. | |
Alarm 1 |
2#00_XXXX_00XX |
alarmIsActivated[1] is 0 and has not changed since the last alarm event transmission. |
2#00_XXXX_01XX |
alarmIsActivated[1] is 1 and has not changed since the last alarm event transmission. | |
2#00_XXXX_10XX |
alarmIsActivated[1] is 0 and has changed since the last alarm event transmission. | |
2#00_XXXX_11XX |
alarmIsActivated[1] is 1 and has changed since the last alarm event transmission. | |
Alarm 2 |
2#00_XX00_XXXX |
alarmIsActivated[2] is 0 and has not changed since the last alarm event transmission. |
2#00_XX01_XXXX |
alarmIsActivated[2] is 1 and has not changed since the last alarm event transmission. | |
2#00_XX10_XXXX |
alarmIsActivated[2] is 0 and has changed since the last alarm event transmission. | |
2#00_XX11_XXXX |
alarmIsActivated[2] is 1 and has changed since the last alarm event transmission. | |
Alarm 3 |
2#00_00XX_XXXX |
alarmIsActivated[3] is 0 and has not changed since the last alarm event transmission. |
2#00_01XX_XXXX |
alarmIsActivated[3] is 1 and has not changed since the last alarm event transmission. | |
2#00_10XX_XXXX |
alarmIsActivated[3] is 0 and has changed since the last alarm event transmission. | |
2#00_11XX_XXXX |
alarmIsActivated[3] is 1 and has changed since the last alarm event transmission. |
The points marked with X can either assume the value 0 or 1 and thus combine several events or output the measured value.
Hysteresis
To avoid too frequent, disturbing changes of the output value, it is possible to define a hysteresis for DALI devices with instance type 6.
A percentage value can be specified via the hysteresis variable for the calculation of a hysteresis band.
The function block FB_DALI306QueryHysteresis can be used to query the value, the function block FB_DALI306SetHysteresis can be used to specify it.
As the percentage hysteresis can lead to strong fluctuations with a low measured value, a minimum hysteresis can be specified via the variable hysteresisMin. The minimum hysteresis is an absolute value with a range from 0 to 255.
The reset value depends on the resolution of the input values specified by the vendor.
resolution | Vendor-dependent reset value |
---|---|
1…6 | 0 |
7 | 1 |
8 | 2 |
9 | 5 |
10 | 10 |
11 | 20 |
12 | 40 |
13 | 81 |
14 | 163 |
> 15 | 255 |
The function block FB_DALI306QueryHysteresisMin can be used to query the value, the function block FB_DALI306SetHysteresisMin can be used to specify it manually.
Deadtime timer
Several events may not be sent from an instance at the same time. To avoid this a dead time (Tdeadtime) can be activated (see tDeadtime).
If the Deadtime Timer is active, an instance should not send any further events until the timer Tdeadtime has expired. The timer is restarted after the sending of an event.
If a new event occurs before the current event is sent, then the new event replaces the existing one. This can happen if the bus is not available or if the timer TDeadtime is in use.
If Treport < Tdeadtime, then Treport = Tdeadtime, regardless of which value Treport had before.
If TalarmReport < Tdeadtime, then TalarmReport = Tdeadtime, regardless of the previous value of TalarmReport.