Вопрос: мы используем для управления техпроцессом панельный контроллер СПК. Требуется, чтобы элементы управления (кнопки, поля ввода и т. д.) были активны только в таргет-визулизации (с экрана СПК), но неактивны для клиентов web-визуализации. Как это можно реализовать?
Ответ: в параметре Переменные состояний/Отключение ввода для всех нужных элементов введите выражение
Код:
VisuElems.CurrentClientType = VisuElems.Visu_ClientType.WebVisualization
Вопрос: но что, если для конкретного web-клиента (с известным IP-адресом) требуется разрешить управление?
Ответ: создайте в проекте функцию:
Код:
FUNCTION DisableVisuElement : BOOL
VAR
pClientData: POINTER TO VisuElems.VisuStructClientData;
fbHelper: VisuElems.VisuFbClientTagDataHelper;
sCurrentClientIp: STRING;
i: DINT;
END_VAR
VAR CONSTANT
// Массив IP-адресов клиентов, которым разрешено управление
// Отредактируйте его под свою задачу
c_asAllowIp: ARRAY [1..2] OF STRING := ['212.16.18.23', '212.16.18.24'];
END_VAR
// Код функции
pClientData := VisuElems.CurrentVisuClient;
IF pClientData <> 0 THEN
fbHelper(pClientData := pClientData, stIPv4 => sCurrentClientIp);
FOR i := 1 TO UPPER_BOUND(c_asAllowIp, 1) DO
IF sCurrentClientIp = c_asAllowIp[i] THEN
DisableVisuElement := FALSE;
RETURN;
ELSE
DisableVisuElement := TRUE;
END_IF
END_FOR
END_IF
Привяжите вызов этой функции к параметру Переменные состояний/Отключение ввода всех нужных элементов:
28-07-2025 13-28-41.png