Горячая линия Embedded System Rus:8-800-775-06-34 (звонок по России бесплатный)

LM5_N
LM-Wall_N
DALI_N
Vita_N

Реализация "горячей" замены LogicMachine

Пример: Реализация «горячей» замены LogicMachine
Задача:

Реализовать автоматическую «горячую» замену LogicMachine (MASTER — ведущий) на LogicMachine (SLAVE — подчинённый) при потере связи с MASTER устройством.

Backup файл

На MASTER устройстве создаем backup файл с рабочей конфигурацией в меню Утилиты -> Резервное копирование (Utilities -> Backup) и импортируем этот файл на SLAVE устройство через Утилиты -> Восстановление (Utilities -> Restore).

Тестовый групповой адрес
Добавляем тестовый групповой адрес например 1/1/1 на оба устройства с типом данных 12. 4 байта, целое без знака (12. 4 byte unsigned integer)

MASTER резидентный скрипт
На MASTER добавляем резидентный скрипт с задержкой 5 секунд и код:

grp.write('1/1/1', os.time(), dt.uint32)

SLAVE резидентный скрипт

На SLAVE добавляем резидентный скрипт с задержкой 10 секунд и код:

-- current object value (получаем значение объекта)
curr = grp.getvalue('1/1/1')
-- previous object value or current if not set (предыдущее значение, или текущее, 
-- если предыдущее не было установлено)
prev = prev or curr
 
-- master timeout
if curr == prev then
-- first error (первая ошибка)
	if not timeout then
		alert('master offline')
		-- enable scripts here (включаем скрипты в этом месте)
    script.enable('test1')
    script.enable('test2')
		timeout = true
	end
-- master ok, recovered from error (мастер восстановился)
elseif timeout then
	alert('master online')
	-- disable scripts here (отключаем скрипты в этом месте)
  script.disable('test1')
  script.disable('test2')
	timeout = false
end
 
-- save previous object value (сохраняем в предыдущем значении текущее)
prev = curr