Показано с 1 по 7 из 7

Тема: Всплывающее окно только на определённой WEB-визуализации

  1. #1

    Question Всплывающее окно только на определённой WEB-визуализации

    Добрый день!
    По определённому условию хочу сделать появляющееся окно с уведомлением и кнопкой ОК (не на весь экран, а, например, посередине). По нажатию на этот ОК - окно должно закрыться.
    Такое окно должно появляться ТОЛЬКО на определённой WEB-визуализации. А на всех прочих WEB-визуализациях оно появляться не должно
    Это реально сделать? Если да - то есть, где посмотреть пример?

    Спасибо!

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,800

    По умолчанию

    Цитата Сообщение от aaaSashaMGGU Посмотреть сообщение
    Добрый день!
    По определённому условию хочу сделать появляющееся окно с уведомлением и кнопкой ОК (не на весь экран, а, например, посередине). По нажатию на этот ОК - окно должно закрыться.
    Такое окно должно появляться ТОЛЬКО на определённой WEB-визуализации. А на всех прочих WEB-визуализациях оно появляться не должно
    Это реально сделать? Если да - то есть, где посмотреть пример?

    Спасибо!
    Добрый день.
    Если клиента этой определённой WEB-визуализации можно как-то однозначно идентифицировать (например, по IP-адресу) - то можно.
    См. п. 1 здесь:
    https://ftp.owen.ru/CoDeSys3/98_Book...isuIecCode.pdf

  3. #3

    По умолчанию

    Вместо окна можете просто нарисовать прямоугольник с кнопкой и менять его бит видимости в программе. Я так делаю отображение статусов.

    Зачем вы всё усложняете?

  4. #4

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Вместо окна можете просто нарисовать прямоугольник с кнопкой и менять его бит видимости в программе. Я так делаю отображение статусов.

    Зачем вы всё усложняете?
    Вот у меня 1 контроллер и 2 ПК: один зашёл на 192.168.1.10:8080/webvisu1.htm, второй зашёл на 192.168.1.10:8080/webvisu2.htm
    Как сделать так, чтобы у ПК1 бит невидимости был true, а у ПК2 бит он же был false?
    Последний раз редактировалось aaaSashaMGGU; 29.05.2024 в 20:04.

  5. #5

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.
    Если клиента этой определённой WEB-визуализации можно как-то однозначно идентифицировать (например, по IP-адресу) - то можно.
    См. п. 1 здесь:
    https://ftp.owen.ru/CoDeSys3/98_Book...isuIecCode.pdf
    Отличительной особенностью визуализации CODESYS является возможность ее
    отображения на нескольких клиентах визуализации одновременно. Например, представим себе
    следующую ситуацию: на производственной линии некоторой фабрики используется панельный
    контроллер с поддержкой web-визуализации. Оператор производственной линии взаимодействует
    с экраном контроллера (таргет-визуализацией) – наблюдает за значениями параметров
    технологического процесса, переключает экраны, вводит значения уставок и т. д. В это же время с
    web-визуализацией контроллера работают один или даже несколько сотрудников отдела
    аналитики – формируют отчеты, просматривают историю сообщений и т. д. В этот момент на линии
    завершается изготовление очередной партии продукции, и программа контроллера должна
    уведомить об этом оператора – например, отобразив диалоговое окно с соответствующим
    сообщением. Должно ли «всплыть» это же окно у аналитиков? Ответ, конечно, может отличаться в
    зависимости от конкретной ситуации – но вообще, вряд ли аналитики заинтересованы в подобного
    рода оперативной информации; их, скорее, интересуют показатели оптимальности работы
    оборудования, количество произведенной продукции за определенный интервал времени,
    длительность периодов простоя линии из-за поломок и т. д. Соответственно, возникает задача не
    просто «сделать что-то из кода», а «сделать что-то из кода для конкретного клиента
    визуализации». Для этого нужно как-то идентифицировать конкретного клиента – и именно для
    этого используется функциональный блок FbIterateClients. Получив информацию о клиентах
    визуализации – можно по каким-то критериям (например, типу визуализации или IP-адресу
    устройства, на котором открыта web-визуализация) выделить среди них интересующих вас и
    выполнить для этих какое-то действие с помощью одного из блоков библиотеки (например,
    FbOpenDialog).


    Спасибо, во вступлении прям 100% то, что нужно. Будем смотреть

  6. #6

    По умолчанию

    Вы говорите о разных веб страницах, но почему-то об одном бите... Вы же всплывающее окно хотите видеть или не видеть? Или именно определённую веб? Согласно первого сообщения одно, согласно второго - другое. Для второго варианта вам выше ответили.

    ПС Если у оператора одна веб, а у аналитика другая, то прямоугольник, будь он не ладен, будет у вас нарисован только на нужной вам вебке, и следовательно оно выскочит только у одного. Но это вроде только на таргет будет работать, иначе будет как vnc, что у одного, то и у другого. Вроде так.
    Последний раз редактировалось МихаилГл; 29.05.2024 в 20:15.

  7. #7

    По умолчанию

    Всё получилось. Убрал всё лишнее, осталось совсем мало:

    Основная программа
    Код:
    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);

Похожие темы

  1. всплывающее окно
    от Андрей Абр в разделе Master SCADA 4D
    Ответов: 2
    Последнее сообщение: 31.03.2022, 10:41
  2. Ответов: 1
    Последнее сообщение: 30.10.2018, 10:34
  3. Всплывающее окно
    от Билл в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 29.05.2017, 14:29
  4. Окно визуализации закрывается
    от StAnatoliy в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 17.11.2016, 12:36
  5. Ответов: 1
    Последнее сообщение: 22.09.2014, 20:05

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •