Системы управления светом DALI

  1. Система управления светом, запускается по согласованному заранее таймеру.
  2.  Точные параметры таймера и принципы световой сцены заданы в скрипте.
  3. Скрипт загружен во внутреннюю память каждого контроллера.
  4. Каждый контроллер снабжен индивидуальной аккумуляторной батареей, при отсутствии питающего напряжения на контроллере, все настройки сохраняются.
    При возобновлении питания Контроллер воспроизводит световые сцены в заданном скриптом, режиме.

Порядок действий по настройке системы управления светом DALI.

  1. Подключить все контроллеры к одной сети Ethernet. К одному роутеру или свичу.
  2. Подключить к этой же сети, к этому же роутеру или свичу, компьютер на OS Windows.
  3. Запустить на компьютере Arlight DALI Configurator. Arlight DALI Configurator — не требует установки.
  4. Нажмите – Select Devices.
  5. Поставьте галочки напротив трех контроллеров, которые определились программой.
  6. Далее Gateway Server – Properties. В данной вкладке нажать кнопку SYNC. Тем самым синхронизировать время на контроллере с временем на компьютере.
  7. Далее нажмите кнопку UPLOAD. Тем самым вы сохраните настройки времени во внутреннюю память контроллера.
  8. Нажмите – Smart Engines/Smart Scene Setup.
    1. в поле Size — пишем 1.
    2. жмем Change.
    3. Появиться сцена, в которую необходимо загрузить файл со скриптом (кнопкой Select File выбираем файл с нашим скриптом).
    4. Проверить работоспособность скрипта можно нажав кнопку Active. Все светильники согласно скрипта снизят свою яркость на 40 % и останутся в таком режиме на время заданное таймером.
    5. Остановить проверку, нажав кнопку STOP.
  9. Загрузив скрипт во все три контроллера – Нажать кнопку UPLOAD ALL. Все скрипты загрузятся во внутреннюю память контроллеров.
  10. Первая световая сцена запустится автоматически в — 09:59:45. Все светильники снизят свою яркость на 40 %. И включаться на полную мощность во время окончания работы скрипта.
  11. Все световые сцены далее будут запускаться в автоматическом режиме.

В случае неисправности, какой либо из групп освещения

  1. Проверьте напряжение на каждом контроллере.
  2. Подключить все контроллеры к одной сети Ethernet. К одному роутеру или свичу.
  3. Подключить к этой же сети, к этому же роутеру или свичу, компьютер на OS Windows.
  4. Запустить на компьютере Arlight DALI Configurator
  5. Нажмите – Select Devices.
  6. Если во вкладке 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