Вход

Просмотр полной версии : Вызов окна web визуализации с различными параметрами для каждого пользователя



NightBeer
18.11.2015, 16:14
Всем привет! Помогите, пожалуйста, с web визуализацией.
Появилась необходимость в web визуализации, до этого всё крутилось на СПК 107.
Но теперь нужна возможность одновременной работы пользователей с различных устройств.
Так вот, в визуализации просматриваются/редактируются параметры зон отопления. Т.е. пользователь выбирает из списка зону после чего открывается окно с параметрами выбранной зоны.
Когда был один пользователь это прекрасно реализовывалось, но теперь выходит так, что если первый пользователь смотрит параметры одной зоны, а второй открывает у себя другую зону, то и у первого отобразится зона, которую выбрал второй. Можно ли как-то обойти это? Т.е. необходимо запоминать индекс или указатель на переменную массива зоны, отдельный для каждого пользователя.
Как вариант создать для каждой зоны отдельное окно, но проблема в том что зон может быть достаточно много.

Евгений Кислов
18.11.2015, 17:45
Всем привет! Помогите, пожалуйста, с web визуализацией.
Появилась необходимость в web визуализации, до этого всё крутилось на СПК 107.
Но теперь нужна возможность одновременной работы пользователей с различных устройств.
Так вот, в визуализации просматриваются/редактируются параметры зон отопления. Т.е. пользователь выбирает из списка зону после чего открывается окно с параметрами выбранной зоны.
Когда был один пользователь это прекрасно реализовывалось, но теперь выходит так, что если первый пользователь смотрит параметры одной зоны, а второй открывает у себя другую зону, то и у первого отобразится зона, которую выбрал второй. Можно ли как-то обойти это? Т.е. необходимо запоминать индекс или указатель на переменную массива зоны, отдельный для каждого пользователя.
Как вариант создать для каждой зоны отдельное окно, но проблема в том что зон может быть достаточно много.

Это происходит только при наличии в Менеджере визуализации галочки Использовать CurrentVisu. Без нее пользователи работают с визуализациями независимо друг от друга.

NightBeer
18.11.2015, 17:52
CurrentVisu естественно снята, с CurrentVisu у всех пользователей открываются одни и теже окна, это понятно.
Проблема в другом, допустим в проекте 2 окна визуализации:
1. Список зон
2. Просмотр/редактирование выбранной зоны.
Так вот в первом окне выбрав нужную зону записываем в переменную "Индекс" во втором окне отображаются переменные Зона[Индекс].Наименование, Зона[Индекс].Температур и т.д.
При этом переменная Индекс объявлена глобальной, и при смене её значения, естественно меняется у всех пользователей.

Евгений Кислов
18.11.2015, 18:17
CurrentVisu естественно снята, с CurrentVisu у всех пользователей открываются одни и теже окна, это понятно.
Проблема в другом, допустим в проекте 2 окна визуализации:
1. Список зон
2. Просмотр/редактирование выбранной зоны.
Так вот в первом окне выбрав нужную зону записываем в переменную "Индекс" во втором окне отображаются переменные Зона[Индекс].Наименование, Зона[Индекс].Температур и т.д.
При этом переменная Индекс объявлена глобальной, и при смене её значения, естественно меняется у всех пользователей.

Если я правильно уловил концепцию, то посмотрите п. 11.3.3 в документе СПК. Визуализация.

NightBeer
18.11.2015, 19:28
Спасибо, как раз смотрел в сторону интерфейсов, скорее всего придется остановится на них. Но при этом надо создать фрейм с большим количеством ссылок, по одной для каждой зоны (более 100). Далее у каждой зоны настраивается список сервоприводов (добавление/изменение/просмотр состояния), и тут получается количество ссылок во фрейме сервопривода зоны увеличивается в разы т.е. более 500 ссылок. (произведение максимально возможного количества зон на макс. возможное количество сервоприводов в зоне) :(
Ну неужели нельзя вызвать фрейм/визуализацию с параметром, локальным для текущей визуализации?

NightBeer
18.11.2015, 20:39
Евгений, посмотрел Ваш пример, из документации, думаю не подходит мне это. Слишком уж много описывать ссылок, вызовов, и т.д.
Пока остановился на том что пользователю при входе будет присваиваться ID, а при редактировании зоны будет открыта визуализация с переменными не Зона[Индекс].Параметр, а Зона[Индекс].Параметр, где Индекс[ID_USER] - индекс зоны, выбранной пользователем ID_USER.

[I]Добавлено после обдумывания:
И этот вариант не подходит, т.к. нельзя создавать локальные переменные для пользователя :(
Придется описывать интерфейсы.

Mikhail_NNT
27.03.2025, 19:06
Добрый вечер. Подскажите по web визуализации. Имеем 4 телевизора, которые должны выводить информацию по соответствующим станциям. 1 телевизор - 1...4 станции, 2 телевизор - 5...8 станции, 3 телевизор - 9...12 станции, 4 телевизор - 13...16 станции. Нарисовал Общий экран, который постоянно отображается на всех телевизорах. При нажатии кнопки на соответствующей станции, например, на станции 2 экран должен смениться только на телевизоре 1, при нажатии на станции 10 - смениться только на телевизоре 3.
Нарисовал 4 отдельных экрана для каждого телевизора, но не пойму как осуществить их работу, согласно вышеописанной схеме.

Евгений Кислов
27.03.2025, 19:18
Добрый вечер. Подскажите по web визуализации. Имеем 4 телевизора, которые должны выводить информацию по соответствующим станциям. 1 телевизор - 1...4 станции, 2 телевизор - 5...8 станции, 3 телевизор - 9...12 станции, 4 телевизор - 13...16 станции. Нарисовал Общий экран, который постоянно отображается на всех телевизорах. При нажатии кнопки на соответствующей станции, например, на станции 2 экран должен смениться только на телевизоре 1, при нажатии на станции 10 - смениться только на телевизоре 3.
Нарисовал 4 отдельных экрана для каждого телевизора, но не пойму как осуществить их работу, согласно вышеописанной схеме.

На каком устройстве у вас создается web-визуализация?
Что вы называете словом "телевизор"?
Что вы называете словом "cтанция"?


При нажатии кнопки на соответствующей станции

Кто, где и каким образом нажимает эту кнопку?

В дополнение к ответам на вопросы - желательно приложить видео с демонстрацией того, что у вас происходит.

Mikhail_NNT
27.03.2025, 19:57
Визуализация создается на PLK 210-11, передача данных по Ethernet.
Телевизор - телевизор со смарт ТВ и браузером
Станция - сборочная станция Линии сборки автомобилей.

При возникновении внештатной ситуации (поломка оборудования, нехватка деталей и т.д.) оператор нажимает кнопку с фиксацией Авария, запускается таймер простоя, после отжатия кнопки, таймер останавливается и время простоя заносится в таблицу на СП310Р.

На всех телевизорах в линии, при отсутствии внештатных ситуаций, отображается Главный экран. При нажатии кнопки Авария, соответствующий телевизор меняет экран на другой, с отображением времени простоя. Каждый телевизор должен отображать информацию по своим 4-м станциям.

Фото главного экрана 82744 Фото экрана для 1-го телевизора 1-4 станции 82745
Фото/видео сборочной линии пока нет возможности сделать.

Евгений Кислов
28.03.2025, 06:30
Если я правильно понял все вышеописанное - к вашей веб-визуализации подключены несколько веб-клиентов (телевизоров), и требуется при возникновении определенного события (нажатия оператором физической кнопки) переключить экран для конкретного клиента.

Для этого можно использовать ФБ FbChangeVisu из библиотеки Visu Utils.
Основной задачей будет создать фильтр клиента (itfClientFilter) и в нём определить нужного клиента (т.е. телевизор с нужным IP-адресом).
См. п. 1.3 в этой статье:
https://ftp.owen.ru/CoDeSys3/98_Books/CodesysVisuIecCode.pdf

Если возникнут дополнительные вопросы - напишите, пожалуйста, мне в телеграм (см. в подписи).

Mikhail_NNT
29.03.2025, 08:11
Евгений, да, результат должен быть такой, как вы резюмировали. Спасибо, буду разбираться.

Mikhail_NNT
15.05.2025, 12:57
Добрый день, изучив материал написал такой код.

//Определение набора клиентов, для которых произойдет переключение WEB-визуализации
IF arRedButtonStation[1] OR arRedButtonStation[2] Если нажата Кнопка1 или Кнопка2
THEN fbClientFilter.sInputIp:='192.168.1.70'; Тогда передаем IP клиента в ФБ fbChangeVisu
sNameWebVisualization:='Downtime_screen_Chassis_li neSt1_1a_2'; передаем название визуализации в ФБ fbChangeVisu
xExecute:=fbDowntime_Chassis_line[1].tofDowntime.IN OR fbDowntime_Chassis_line[2].tofDowntime.IN; запускаем ФБ fbChangeVisu в работу (переключаем WEB визуализацию на клиенте)
ELSE fbClientFilter.sInputIp:='192.168.1.70'; Иначе передаем IP клиента в ФБ fbChangeVisu
sNameWebVisualization:='Main_screen'; передаем название визуализации в ФБ fbChangeVisu
xExecute:=fbDowntime_Chassis_line[1].tofDowntime.Reset OR fbDowntime_Chassis_line[2].tofDowntime.Reset; запускаем ФБ fbChangeVisu в работу (возвращаемся на первоначальную WEB визуализацию на клиенте)
END_IF

IF arRedButtonStation[3] OR arRedButtonStation[4]
THEN fbClientFilter.sInputIp:='192.168.1.71';
sNameWebVisualization:='Downtime_screen_Chassis_li neSt3_4';
xExecute:=fbDowntime_Chassis_line[3].tofDowntime.IN OR fbDowntime_Chassis_line[4].tofDowntime.IN;
ELSE fbClientFilter.sInputIp:='192.168.1.71';
sNameWebVisualization:='Main_screen';
xExecute:=fbDowntime_Chassis_line[3].tofDowntime.Reset OR fbDowntime_Chassis_line[4].tofDowntime.Reset;
END_IF

//Вызов ФБ Переключение WEB-визуализации для конкретного набора клиентов
fbChangeVisu (xExecute:=xExecute,
itfClientFilter:=fbClientFilter,
sVisuName:=sNameWebVisualization);

При проверке, каждое из условий по отдельности работает: при нажатии одной из кнопок (с фиксацией), происходит переключение на определенном клиенте на нужный экран, при отжатии, происходит возврат на стартовый экран.
Но когда несколько условий идут подряд, как описано выше, то работает только последнее условие. Все условия выше не реагируют на нажатия кнопок (не отправляют в ФБ fbChangeVisu нужные IPклиента и название визуализации).
Подскажите, в чем может быть проблема?

Евгений Кислов
15.05.2025, 13:05
Напишите, пожалуйста, завтра утром мне в телеграм и продемонстрируйте вашу ситуацию по AnyDesk.