- Система управления светом, запускается по согласованному заранее таймеру.
- Точные параметры таймера и принципы световой сцены заданы в скрипте.
- Скрипт загружен во внутреннюю память каждого контроллера.
- Каждый контроллер снабжен индивидуальной аккумуляторной батареей, при отсутствии питающего напряжения на контроллере, все настройки сохраняются.
При возобновлении питания Контроллер воспроизводит световые сцены в заданном скриптом, режиме.
Содержание
Порядок действий по настройке системы управления светом DALI.
- Подключить все контроллеры к одной сети Ethernet. К одному роутеру или свичу.
- Подключить к этой же сети, к этому же роутеру или свичу, компьютер на OS Windows.
- Запустить на компьютере Arlight DALI Configurator. Arlight DALI Configurator — не требует установки.
- Нажмите – Select Devices.
- Поставьте галочки напротив трех контроллеров, которые определились программой.
- Далее Gateway Server – Properties. В данной вкладке нажать кнопку SYNC. Тем самым синхронизировать время на контроллере с временем на компьютере.
- Далее нажмите кнопку UPLOAD. Тем самым вы сохраните настройки времени во внутреннюю память контроллера.
- Нажмите – Smart Engines/Smart Scene Setup.
- в поле Size — пишем 1.
- жмем Change.
- Появиться сцена, в которую необходимо загрузить файл со скриптом (кнопкой Select File выбираем файл с нашим скриптом).
- Проверить работоспособность скрипта можно нажав кнопку Active. Все светильники согласно скрипта снизят свою яркость на 40 % и останутся в таком режиме на время заданное таймером.
- Остановить проверку, нажав кнопку STOP.
- Загрузив скрипт во все три контроллера – Нажать кнопку UPLOAD ALL. Все скрипты загрузятся во внутреннюю память контроллеров.
- Первая световая сцена запустится автоматически в — 09:59:45. Все светильники снизят свою яркость на 40 %. И включаться на полную мощность во время окончания работы скрипта.
- Все световые сцены далее будут запускаться в автоматическом режиме.
В случае неисправности, какой либо из групп освещения
- Проверьте напряжение на каждом контроллере.
- Подключить все контроллеры к одной сети Ethernet. К одному роутеру или свичу.
- Подключить к этой же сети, к этому же роутеру или свичу, компьютер на OS Windows.
- Запустить на компьютере Arlight DALI Configurator
- Нажмите – Select Devices.
- Если во вкладке Select Devices вы увидите все три контроллера, значит, они работают в штатном режиме. Соответственно проблема на физическом уровне.
— Нет контакта на линии.
— Не исправлены светильники на линии.
— Короткое замыкание.
Адресация устройств на шине происходит на вкладке
DALI Tool — Addressing Tool. На вкладке выбираем Gear — Auto-Addressing выбираем наш контроллер и нажимаем Start
Таймер
dali.arc l[0],e[6],100
wait 10s
dali.arc l[0],e[6],254
L[0] — шина Channel 1
E[1] — адрес устройства на шине
0 — номер сцены
60s — таймер задержки между активацией сцены
Настройки
1) Объединения устройств в группы происходит на вкладке DALI Tool/ Control Gears/Slaves Tool в блоке Group Members. После выбора групп нажимаем Upload для загрузки настроек в устройство.
2) Сцены настраиваются там же DALI Tool/ Control Gears/Slaves Tool в блоке Scene Arc Levels. После настройки так же жмем Upload
3) Скрипты пишутся в текстовом редакторе блокнот (во вложении пример скрипта по уменьшению яркости и краткое описание скриптового языка).
Сама настройка скрипта происходит в двух разделах меню:
Smart Engines/Smart Scene Setup — тут загружается сам файл со скриптом
Smart Engines/Smart Trigger Setup — тут настраиваются условия запуска скрипта. По таймеру/времени, скрипт постоянно работает, либо запускается по событию на шине.
В разделе Smart Engines/Smart Scene Setup в поле Size пишем 1 (будет один скрипт), жмем Change. Появиться сцена, в которую необходимо загрузить файл со скриптом (кнопкой Select File выбираем файл с нашим скриптом и можем проверить его в работе кнопками Active и Stop, кнопка Upload Scene Program служит для загрузки в контроллер. Жмем Upload для загрузки в контроллер настройки.
В разделе Smart Engines/Smart Trigger Setup в поле Size пишем 1 (будет один скрипт), жмем Change. В окне Trigger/Event Parameters Type: Timer/Clock. Выбираем в Smart Scene загруженный нами ранее скрипт и настраиваем условие запуска сцены (день/месяц/день недели/часы/минуты/секунды). Жмем Upload для загрузки в контроллер настройки.
The Smart Scene programming languages
Variables
Global Variables, GV0 ~ GV63. Shared across all Smart Scenes
Local Variables, LV0 ~ LV63. Own by each running Smart Scene.
Data setting (example)
GV0 = 32
LV2 = 5
Math functions (example)
Syntax: #Var = #Var + Constant/#Var
Add: LV0 = LV1 + 5
Subtract: LV1 = LV2 – 1
Multiply: LV0 = LV1 * LV2
Divide: LV0 = LV1 / LV2
AND: LV0 = LV1 & 2
OR: LV1 = LV2 | 6
XOR: LV1 = LV3 ^ LV2
Get Random: LV1 = Random(0,LV2)
Jump functions
Notation: #NAME
Unconditional Jump: Jump #NAME
Conditional Jump functions
Syntax: If (Condition) Jump #NAME
Equals: If (LV0 == LV1) Jump #Do1
Greater: If (LV0 > 10) Jump #Do2
Lesser: If (LV0 < 10) Jump #Do2
Not Equal: If (LV0 != 10) Jump #Do2
Greater and Equal: If (LV0 >= 10) Jump #Do2
Lesser and Equal: If (LV0 <= 10) Jump #Do2
Wait command
Wait: Wait #Time
Where #Time can be seconds: Wait 2s wait for 2 seconds
Milli-seconds: Wait 100 wait for 100 ms
Time/Date Commands
Get Time: GetTime #1, #2, #3, #4
Where #1, #2, #3, #4 must be a local variable
#1 will store the hour of current time
#2 will store the minutes of the current time
#3 will store the second of the current time
#4 will store the milli-second of the current time
e.g. GetTime Lv5, LV6, LV7, LV8
Get Date: GetDate #1, #2, #3, #4
Where #1, #2, #3, #4 must be a local variable
#1 will store the year (D.C.) of current date
#2 will store the month of the current date.
#3 will store the day of the month of the current date
#4 will store the day of the current week
DALI commands
Syntax: DALI.CMD L[#1], TARGET, …
Where #1 is the Dali channel no. Channel A = 0, Channel B = 1, etc…
Where Target can be:
ALL
G[#2], where #2 is the DALI group number
E[#3], where #3 is the DALI gear’s address
Direct Dimming: DALI.Arc L[0], G[0], #LV
Where #LV is arc level between 0~254
Dim up: DALI.DimUp L[1], E[2]
Dim Down: DALI.DimDown L[0], G[0]
Step up: Dali.StepUp L[1], E[3]
Step Down: Dali.StepDown L[0], G[0]
Call Scene: Dali.Scene L[0], G[2], #Scene
Where #Scene is the scene number between 0 ~ 15
Recall Max level: Dali.Max L[0], G[0]
Recall Min level: Dali.Min L[0], G[0]
Set FadeTime: Dali.SetFadeTime L[0], All, #FT
Where #FT is the fade time between 0 ~ 15
Set FastFadeTime: Dali.SetFastFadeTime L[0], All, #FT
Where #FT is the fast fade time, between 0 ~ 15
Join Group: Dali.JoinGroup L[0], E[2], #GP
Where #GP is the group number between 0 ~ 15
Remove Group: Dali.RemoveGroup L[0], E[3], #GP
Where #GP is the group number between 0 ~ 15
Change RGB color: Dali.RGB L[0], E[1], #RGB
Where #RGB is its color. Example: 0x908090. The max value is FE
Change WAF color: Dali.WAF L[0], E[1], #WAF
Where #WAF is its color. Example: 0x908090. The max value is FE
Change CT: Dali.ColorTemp L[0], E[2], #CT
Where #CT is its color temperature. E.g. 3200
Active RGB’s change: DALI.RGBActivate L[0], E[2]
Usually after changing its color, Activate must be called.
e.g.
Dali.RGB L[0], E[0], 0xfe80FE
Dali.RGBActivate L[0], E[0]
DALI Tracer Trigger commands
Get Tracer Buffer data: Tracer.GetData #1, #2, #3, #4
Where #1, #2, #3, #4 must be a local variable
#1 will store the size of the dali command and new/old state
#2 will store the source of the commands. Which server and channel
#3 will store the command data
#4 will store the status of command data, if corrupted, and direction (send/receive)
Remove/Clear first tracer buffer data: Tracer.Clear
Check Data Availability:
If (#1 IsDali.Available[#A, #B]) Jump #Name
If (#1 IsNotDali.Available[#A, #B]) Jump #Name
#1 is the #1 of Tracer.GetData #1, #2, #3, #4
#A can be Any, 2B(2-byte commands), 3B(3-byte commands/events).
#B can be Any, New, Old
Check Data Direction
If (#4 IsDali.Direction[#A, #B]) Jump #Name
If (#4 IsNotDali.Direction[#A, #B]) Jump #Name
#4 is the #4 of Tracer.GetData #1, #2, #3, #4
#A can be Any, Receive, Send
#B can be Any, Pass, Collision
Check Data Source
If (#2 isDALI.Source[#A, #B]) Jump #Name
If (#2 isNotDALI.Source[#A, #B]) Jump #Name
#2 is the #2 of Tracer.GetData #1, #2, #3, #4
#A can be Local, Any, or other server’s ID
#B is the channel ID. Where channel A = 0, B = 1, etc…
Check Command address
If (#3 isDali.2BAddr[#A, #B]) Jump #Name
If (#3 isNotDali.2BAddr[#A, #B]) Jump #Name
#A can be Group, Device
#B is the group or device’s address
Repeat the commands
Dali.Direct L[#A], 2, #3
#A is the channel ID, where Channel A = 0, etc…
#3 is the 2-byte DALI commands
Dali.Direct L[#A], 3, #3
#A is the channel ID, where Channel A = 0, etc…
#3 is the 3-byte DALI commands
Smart Scene Control
Stop all running smart scenes including self
Macro.StopAll
Stop all other running smart scenes, not including self
Macro.StopOthers
Stop smart scene by its ID
Macro.StopMacroBy ID #1
Where #1 is the smart scene’s ID.
Start a smart scene
Macro.StartMacro #1
Where #1 is the smart scene’s ID.
Example 1
dali.arc l[0],g[0],0
lv0=10
wait 1s
dali.arc l[0],e[1],254
wait 200
dali.arc l[0],e[0],254
wait 200
dali.arc l[0],e[1],0
dali.arc l[0],e[3],254
#repeat
wait 200
dali.arc l[0],e[0],0
dali.arc l[0],e[2],254
wait 200
dali.arc l[0],e[3],0
dali.arc l[0],e[7],254
wait 200
dali.arc l[0],e[2],0
dali.arc l[0],e[5],254
wait 200
dali.arc l[0],e[7],0
dali.arc l[0],e[6],254
wait 200
dali.arc l[0],e[5],0
dali.arc l[0],e[4],254
wait 200
dali.arc l[0],e[6],0
dali.arc l[0],e[1],254
wait 200
dali.arc l[0],e[4],0
dali.arc l[0],e[0],254
wait 200
dali.arc l[0],e[1],0
dali.arc l[0],e[3],254
lv0=lv0-1
if (lv0 != 0) jump #repeat
wait 200
dali.arc l[0],e[0],0
wait 200
dali.arc l[0],e[3],0
Example 2
dali.arc l[0],g[0],0
lv1=0
lv3=20
#STEP0
lv30 = 0
LV2=lv3
dali.arc l[0],g[0],0
dali.arc l[0],gear[0],254
gv30=100
#chkag0
wait 100
if (gv30 == lv30) jump #OnMatch
LV2=LV2-1
if (LV2 > 0) jump #chkag0
#STEP1
lv30 = 1
LV2=lv3
dali.arc l[0],g[0],0
dali.arc l[0],gear[1],254
gv30=100
#chkag1
wait 100
if (gv30 == lv30) jump #OnMatch
LV2=LV2-1
if (LV2 > 0) jump #chkag1
#STEP2
lv30 = 2
LV2=lv3
dali.arc l[0],g[0],0
dali.arc l[0],gear[2],254
gv30=100
#chkag2
wait 100
if (gv30 == lv30) jump #OnMatch
LV2=LV2-1
if (LV2 > 0) jump #chkag2
#STEP3
lv30 = 3
LV2=lv3
dali.arc l[0],g[0],0
dali.arc l[0],gear[3],254
gv30=100
#chkag3
wait 100
if (gv30 == lv30) jump #OnMatch
LV2=LV2-1
if (LV2 > 0) jump #chkag3
#STEP4
lv30 = 4
LV2=lv3
dali.arc l[0],g[0],0
dali.arc l[0],gear[4],254
gv30=100
#chkag4
wait 100
if (gv30 == lv30) jump #OnMatch
LV2=LV2-1
if (LV2 > 0) jump #chkag4
#STEP5
lv30 = 5
LV2=lv3
dali.arc l[0],g[0],0
dali.arc l[0],gear[5],254
gv30=100
#chkag5
wait 100
if (gv30 == lv30) jump #OnMatch
LV2=LV2-1
if (LV2 > 0) jump #chkag5
#STEP6
lv30 = 6
LV2=lv3
dali.arc l[0],g[0],0
dali.arc l[0],gear[6],254
gv30=100
#chkag6
wait 100
if (gv30 == lv30) jump #OnMatch
LV2=LV2-1
if (LV2 > 0) jump #chkag6
#STEP7
lv30 = 7
LV2=lv3
dali.arc l[0],g[0],0
dali.arc l[0],gear[7],254
gv30=100
#chkag7
wait 100
if (gv30 == lv30) jump #OnMatch
LV2=LV2-1
if (LV2 > 0) jump #chkag7
#STEP8
lv30 = 8
LV2=lv3
dali.arc l[0],g[0],0
dali.arc l[0],gear[8],254
gv30=100
#chkag8
wait 100
if (gv30 == lv30) jump #OnMatch
LV2=LV2-1
if (LV2 > 0) jump #chkag8
Jump #STEP0
#OnMatch
dali.arc l[0],g[0],0
lv0=2
wait 50
dali.arc l[0],e[1],254
wait 200
dali.arc l[0],e[0],254
wait 200
dali.arc l[0],e[1],0
dali.arc l[0],e[3],254
#repeat
wait 200
dali.arc l[0],e[0],0
dali.arc l[0],e[2],254
wait 200
dali.arc l[0],e[3],0
dali.arc l[0],e[7],254
wait 200
dali.arc l[0],e[2],0
dali.arc l[0],e[5],254
wait 200
dali.arc l[0],e[7],0
dali.arc l[0],e[6],254
wait 200
dali.arc l[0],e[5],0
dali.arc l[0],e[4],254
wait 200
dali.arc l[0],e[6],0
dali.arc l[0],e[1],254
wait 200
dali.arc l[0],e[4],0
dali.arc l[0],e[0],254
wait 200
dali.arc l[0],e[1],0
dali.arc l[0],e[3],254
lv0=lv0-1
if (lv0 != 0) jump #repeat
wait 200
dali.arc l[0],e[0],0
wait 200
dali.arc l[0],e[3],0
#endMatch
dali.arc l[0],g[0],0