Всё получилось. Убрал всё лишнее, осталось совсем мало:
Основная программа
Код:
PROGRAM P160_WindowsTest //Всплывающее окно
VAR
//Условие запуска
xExecute: BOOL := FALSE;
//Блок-фильтр клиентов
fbClientFilter: VisuClientFilter;
//Блок для вызова окна
fbOpenFeedbackDialog: VU.FbOpenDialog;
END_VAR
Код:
//Вызываем окно 'window' только у клиентов, указанных в ФБ fbClientFilter
fbOpenFeedbackDialog
(
xExecute := xExecute, //Запуск блока
itfClientFilter := fbClientFilter, //Блок-фильтр клиентов
sDialogName := 'window', //Имя окошка
xModal := FALSE, //Можно менять главные мнемосхемы
pTopLeftPosition := , //Позиция окна
);
ФБ для фильтра по IP:
Код:
//Блок-фильтр клиентов для вызова всплывающих окон
FUNCTION_BLOCK VisuClientFilter IMPLEMENTS VU.IVisualizationClientFilter
Метод ФБ:
Код:
//Метод проверки, что у нас нужный клиент
METHOD IsAccepted: BOOL
VAR_INPUT
//Даже не спрашивайте... Типа какой-то клиент визуализации
itfClient: VU.IVisualizationClient;
END_VAR
VAR CONSTANT
//IP нашего нужного клиента, т.е., панель Siemens оператора
IP: STRING(15) := '192.168.4.231';
END_VAR
Код метода
Код:
//Получаем текущий IP и сравниваем его с нашей константой
IsAccepted := (itfClient.GetIPv4Address() = IP);