// Назначение: Обработчик событий от окон.
// Автор: Мезенцев Вячеслав
// Дата: 10 июня 2015 г.
// Настройки: период выполнения 100 мсек.
unsigned short CurrentWindow
// Окна.
unsigned short WINDOW_REACTOR = 10
unsigned short WINDOW_CONTROL = 11
unsigned short WINDOW_PARAMETERS = 12
unsigned short WINDOW_ARCHIVE_1 = 13
unsigned short WINDOW_ARCHIVE_2 = 14
unsigned short WINDOW_ARCHIVE_3 = 15
// Меню выглядит так:
// РЕАКТОР (Функциональная клавиша)
// УПРАВЛЕНИЕ (Функциональная клавиша)
// ПАРАМЕТРЫ (Функциональная клавиша)
// АРХИВ (Установить бит, переключить, LB-550)
// |
// +- АРХИВ 1 (Установить бит, Установить (ON), LB-570) \
// +- АРХИВ 2 (Установить бит, Установить (ON), LB-571) } - окно "Выбор окна архива" (Direct window, НЕ монопольно LB-597)
// +- АРХИВ 3 (Установить бит, Установить (ON), LB-572) /
// LW-500 - Триггер смены базового окна. Нужно добавить смену базового окна в список триггеров ПЛК.
// Галочку очистки значения поставить.
// Обработчик прочих элементов управления.
sub OtherEventHandler()
bool tmp = false
bool Archive1KeyPressed = false
bool Archive2KeyPressed = false
bool Archive3KeyPressed = false
bool SelectArchiveWindowVisible = false
GetData( SelectArchiveWindowVisible, "Local HMI", LB, 597, 1 )
// Обработчик окна выбора архива.
if SelectArchiveWindowVisible == true then
//
GetData( Archive1KeyPressed, "Local HMI", LB, 570, 1 )
GetData( Archive2KeyPressed, "Local HMI", LB, 571, 1 )
GetData( Archive3KeyPressed, "Local HMI", LB, 572, 1 )
if Archive1KeyPressed == true then
tmp = false
// Сбрасываем состояние кнопки.
SetData( tmp, "Local HMI", LB, 570, 1 )
// Сбрасываем состояние кнопки выбора архива.
SetData( tmp, "Local HMI", LB, 550, 1 )
// Переключаем базовое окно.
SetData( WINDOW_ARCHIVE_1, "Local HMI", LW, 500, 1 )
else if Archive2KeyPressed == true then
tmp = false
// Сбрасываем состояние кнопки.
SetData( tmp, "Local HMI", LB, 571, 1 )
// Сбрасываем состояние кнопки выбора архива.
SetData( tmp, "Local HMI", LB, 550, 1 )
// Переключаем базовое окно.
SetData( WINDOW_ARCHIVE_2, "Local HMI", LW, 500, 1 )
else if Archive3KeyPressed == true then
tmp = false
// Сбрасываем состояние кнопки.
SetData( tmp, "Local HMI", LB, 572, 1 )
// Сбрасываем состояние кнопки выбора архива.
SetData( tmp, "Local HMI", LB, 550, 1 )
// Переключаем базовое окно.
SetData( WINDOW_ARCHIVE_3, "Local HMI", LW, 500, 1 )
end if
end if
end sub
// Обработчик окна "Реактор".
sub ReactorWindowEventHandler()
end sub
// Обработчик окна "Управление".
sub ControlWindowEventHandler()
end sub
// Обработчик окна "Параметры".
sub ParametersWindowEventHandler()
end sub
// Обработчик окна "Архив 1".
sub Archive1WindowEventHandler()
end sub
// Обработчик окна "Архив 2".
sub Archive2WindowEventHandler()
end sub
// Обработчик окна "Архив 3".
sub Archive3WindowEventHandler()
end sub
macro_command main()
bool ArchiveKeyPressed = false
// Считываем номер текущего базового окна.
GetData( CurrentWindow, "Local HMI", LW, 9050, 1 )
// Главное меню (одинаковое для всех окон).
// Копируем состояние в триггер окна "Выбор окна архива".
GetData( ArchiveKeyPressed, "Local HMI", LB, 550, 1 )
SetData( ArchiveKeyPressed, "Local HMI", LB, 597, 1 )
if CurrentWindow == WINDOW_REACTOR then
ReactorWindowEventHandler()
else if CurrentWindow == WINDOW_CONTROL then
ControlWindowEventHandler()
else if CurrentWindow == WINDOW_PARAMETERS then
ParametersWindowEventHandler()
else if CurrentWindow == WINDOW_ARCHIVE_1 then
Archive1WindowEventHandler()
else if CurrentWindow == WINDOW_ARCHIVE_2 then
Archive2WindowEventHandler()
else if CurrentWindow == WINDOW_ARCHIVE_3 then
Archive3WindowEventHandler()
end if
// Прочие элементы управления.
OtherEventHandler()
end macro_command