Broadcast control commands are working properly. But, I am not able to get the response from Dali Driver, for broadcast query or special commands.
And also I am not able to set short address for the driver. Steps followed by me to set the short address: 1. Initialize Command 2. Randomize Command 3. Program Short Address 4. Query Short Address(Not getting any response)
Thanks.
The command sequence to set a short address when I only have one gear on the bus is:
I sent broadcast with Command 145
->>FF91
I got 0xFF.
Then I sent A307(Command257)
->>FF80(Command 128)
->>0791(Command 145)
but I get no response
I sent FF98 (command 152)
get 07
——————————————————————————————-
Now I can set a short address and turn the lamp on or off when I only have one gear on the bus by follow:
*Set the DTR
to the required short address in the special format (shifted left one place, least significant bit set to 1).
*Read the DTR
to check that it is correct.
*Send Command 128 Store DTR as Short Address
, using broadcast addressing.(But I need to send Command 128 many times,Is this a problem?)
There are some mistakes : Procedure for short addressing when I have two gears on the bus:
I sent FF91
once, got 0xFF once
I sent 0591
once, got 0xFF once sent 0391
once, got 0xFF once
I sent 0508/0500
once,the lamp on/off.
I sent 0308/0300
once, the other lamp on/off
I sent A500
four times->> sent A700
two times->>sent B5FF
->>sent B3FF
->>sent B1FF
->>sent A900
got no response
And then, I sent 0591
, got 0xFF sent 0391
, got 0xFF
I have sent command 258
, but the two gears didn't initialized.
That's Very confusing.
Best Answer
I would recommend you first get broadcast queries working before you attempt the more complicated procedure for short addressing, since it requires that broadcast queries and responses are working. Start by running broadcast queries on a single driver. If you get no response with your DALI interface tool, look at the line with a scope to check the voltage levels and bit timings. Check that your query (forward frame) meets the timing requirements of IEC62386-101.
The commands which change a non volatile variable (a setting) and some of the special commands (Intialise, Randomise) have to be sent twice within 75ms to be accepted (Ed 2 timing, was 100ms with 10% tolerance in Ed 1). See Table 16 of IEC62386-102 Ed 2 for details of which command have to be sent twice.
Program Short Address is only accepted when the search address matches the random address and the gear is either in Withdrawn or Initialised state. Also beware that the short address used in this command and Verify Short Address uses a left shifted version with the least significant bit set to 1. In binary, this is described in the standard as
0AAAAAA1
, where A is an address bit.This format is also used by command 128 STORE DTR AS SHORT ADDRESS so if you have DTR value of 7, then you have set a short address of (7 >> 1) = 3.