Вопросы по WEB в Simple-Scada 2

Автор Simple-Scada, 08 февраля 2018, 00:10:31

alan54

Здравствуйте. С переходом на версию 2.4 веб-клиент на планшете нашего генерального директора стал жутко тормозить и зависать. Я, как сопровождающий программист, с удовольствием бы откатился на последнюю сборку версии 2.3 (она работала у директора без проблем), но  в проект уже внесено много доработок и он сохранен в версии 2.4. Как быть? Нельзя ли как-то облегчить сильно потяжелевшую веб-версию (да и не только ее, обычный клиент тоже стал неоправданно тяжелым).

Simple-Scada

#136
Здравствуйте.

Старая версия веб-клиента была сделана на скорую руку. Сервер генерировал html-код web-страницы целиком и отправлял его клиенту. И при переходах по страницам сервер каждый раз генерировал новый html-код. Самый большой недостаток этого способа в том, что сервер делает работу браузера и бесполезно нагружается, а также то, что по сети передаётся очень много ненужных данных (html теги, имена всех свойств в текстовом виде). Их много по объёму, из-за чего появляется сильная зависимость от скорости сети, что особенно плохо для web-клиентов, т.к. они обычно работают через интернет. Так web-клиенты не делаются.
Начиная с версии 2.4.0.0 мы наконец внедрили правильную систему и сейчас сервер передаёт минимально возможное количество данных клиентам. Передаются практически только цифры: координаты объектов, коды цветов, прозрачность, тип объекта и т.п. Web-клиент получает их и создаёт объекты по этим данным. Это стандартный правильный вариант web-клиента. Теперь он практически не зависит от скорости сети, т.к. между клиентом и сервером передаётся очень мало данных. Он может стабильно работать в плохой сети, в которой старый клиент просто отключался бы по пингу. Также компоненты "Кнопка", "Уровень" и "Поле" стали гораздо легче. Теперь это просто блоки <div>, а раньше были тяжелыми компонентами со своим набором стилей и отдельными .js-файлами. Остальные изменения описаны здесь.
В этом основное отличие старого web-клиента от нового. Мы пока не встречали проектов в которых новая версия клиента работает медленнее. В мелких проектах при работе по локальной сети производительность не отличается на глаз. В крупных проектах новый клиент работает быстрее. Другие пользователи отмечают более быструю работу клиентов, особенно скорость подключения к проекту и работу в нестабильных сетях.

Есть предположение, что повлиять на скорость могли другие доработки связанные с компонентами или опциями. Например, начиная с версии 2.3.6.8 компонент "Трубопровод" больше не заменяется линиями, а отображается как и в обычном клиенте, как изображение. Но он теперь гораздо тяжелее для отрисовки и браузер будет отрисовывать его дольше. Но при желании можно просто заменить компонент "Трубопровод" компонентом "Линия", тогда всё будет как раньше.
Начиная с версии 2.3.6.3 компонент "Временные тренды" поддерживает смену свойств через скрипты и визуально больше не отличается от отображения на обычном клиенте. Но из-за этого он также стал немного тяжелее для обработки браузером. Также многие компоненты стали поддерживать мигание (FlashColor), а раньше оно просто не работало. А чем больше мигающих объектов на странице, тем тяжелее браузеру. С версии 2.3.6.4 в настройки добавилась опция "Продвинутый просмотрщик отчетов", он имеет гораздо больше функций, чем стандартный просмотрщик, но для браузера он тяжелее. С версии 2.3.6.9 добавилась опция автоматического масштабирования мнемосхем, но она требует двойной перерисовки, поэтому тоже тяжелее. Если Вы используете их, то при желании можете отключить. На практике, судя по тестам, вышеописанные "утяжеления" обычно компенсируются более быстрой передачей данных в новом web-клиенте и облегчением других компонентов.
В целом наиболее тяжелыми для web-клиента являются: временные тренды (т.к. они периодически перерисовываются), мигание объектов, большие пользовательские изображения, анимация (чем выше скорость анимации, тем хуже, т.к. каждая смена кадра вызывает перерисовку). Если Вы в последнее время добавляли в проект много мигающих компонентов, или анимированных изображений, то производительность web-версии могла бы снизиться из-за них, а не из-за обновления скады.

Также сделали тесты с проектом "Oplax-Sever" (если речь идёт о нём), протестировали на двух планшетах (Android), на шести ПК и двух смартфонах (тоже Android) в браузере Chrome, сначала на версии Simple-Scada 2.3.5.0, затем на 2.4.0.10, в локальной сети. Проект очень лёгкий, на глаз никакой разницы не заметили, в двух случаях работает очень быстро. Если смотреть через панель разработчика Chrome, то видно только, что новый клиент передаёт гораздо меньше данных. Если проект сильно изменился за прошедшее время, то просьба выслать текущую версию для проверки, мы можем указать на конкретные компоненты, которые требуют наибольшего времени на загрузку или отрисовку.

Цитироватьс удовольствием бы откатился на последнюю сборку версии 2.3 (она работала у директора без проблем), но  в проект уже внесено много доработок и он сохранен в версии 2.4. Как быть?
Откатить версию проекта невозможно. Только открывать старую версию скады и проекта и дорабатывать его снова. Но нужно учитывать, что в случае отката придётся больше не обновлять скаду, т.к. клиенты точно никак не станут работать быстрее чем сейчас. Ведь как описано выше в них уже практически нечего улучшать, нельзя сократить передаваемые данные, т.к. сейчас передаются только чистые значения свойств, ничего лишнего.

Цитировать...и зависать
На зависание планшета мы повлиять не можем. В коде web-страницы при желании можно написать жуткие вещи и от этого максимум можно добиться выключения web-страницы. Но на работу планшета или даже других вкладок браузера таким образом повлиять невозможно, насколько нам известно. Поэтому здесь нужно разбираться с самим планшетом.

alan54

#137
Спасибо за столь подробный ответ. Я тоже тестировал веб-клиент на своем планшете и смартфоне, вроде работало без особых проблем. Так что скорее всего дело в планшете директора, ему уже более 5 лет. Попробую обновить его прошивку. А свой проект с доработками вышлю вам на почту.
P.S. Но по моим ощущениям, и сервер, и клиент в локальной сети все-таки стали работать медленнее.

titanicnwa

Хотелось иметь возможность связать свойства переменной HighAlarm, LowAlarm с OPC тегами контроллера. Иметь возможность пользоваться штатным механизмом формирования аварийных сообщений SimpleScada и включать сирену на контроллере с учетом изменения аварийных границ.

grachev

Добрый день.
версия скады 2.5.4.0
включен web-клиент на http на 8750
мобильные пользователи и пользователи использующие google chrome подключаются нормально.
Пользователи использующие IE и яндекс браузер получают ошибку:
Обрыв соединения с сервером. Перезагрузите страницу чтобы подключиться снова.
code: 1006

Simple-Scada

#140
Цитата: titanicnwa от 14 апреля 2021, 08:50:27Хотелось иметь возможность связать свойства переменной HighAlarm, LowAlarm с OPC тегами контроллера. Иметь возможность пользоваться штатным механизмом формирования аварийных сообщений SimpleScada и включать сирену на контроллере с учетом изменения аварийных границ.
Это можно реализовать только через скрипты, копируя значения переменных контроллера в свойства границ переменных.

Цитата: grachev от 14 апреля 2021, 09:54:53включен web-клиент на http на 8750
У Вас web-клиент точно подключен на порт 8750. Это стандартный порт для обычных клиентов скады (не web). В веб-клиентах по-умолчанию используется порт 8755, т.к. ссылка выглядит как "http://127.0.0.1:8755/ProjectName". Вы меняли порты через утилиту настроек?

ЦитироватьПользователи использующие IE и яндекс браузер получают ошибку:
Обрыв соединения с сервером.
Перепроверили с Яндекс браузером. Работает корректно. C IE тоже (только нужно учитывать что скада с IE никогда не будет работать полноценно, т.к. мы не ведём разработку под этот браузер).
У Вас сообщение "Обрыв соединения с сервером" возникает сразу после подключения или через время?
Включено ли у Вас ограничение по IP или паролю?
После неудачного подключения обязательно проверьте журнал сервера скады. См. сообщения связанные с отключением клиентов.
Вышлите текущую версию проекта на support@simple-scada.com для проверки. Можем проверить его со всеми браузерами.

sidkurt

Добрый день. В веб версии элемент "расписание" не отображается, можно ли его отображать хоть и без функции редактирования?

Simple_Scada

Здравствуйте.

В web-клиенте компонент расписание недоступен. С другими ограничениями web-клиента можно ознакомиться по ссылке.

metamorphogenesis

У меня веб-клиент отваливается при бездействии, при том, что авторизованный пользователь имеет неограниченную длительность сессии. Это исправимо?


Simple-Scada

Опция "Отключать по бездействию". В этой же статье можно прочесть описание других опций касающихся web-клиентов.

metamorphogenesis


Спасибо за ответ, недоглядел.

У меня вопрос по реализации мигания объекта цветом. Складывается впечатление, будто у каждого объекта свой собственный экземпляр таймера мигания, потому что в веб-клиенте объекты мигают несинхронно. Если среди синхронно мигающих объектов у одного выключить мигание и включить в произвольный момент времени, он начинает мигать начиная именно с этого момента, не дожидаясь цикла мигания, как это реализовано в приложении. Выглядит это сомнительно, это удастся исправить?


По ссылке демонстрация описанной работы
https://dropmefiles.com/x1foz

Simple-Scada

#146
Да, в web-клиентах мигание может отображаться не синхронно. Внесем изменения в будущих обновлениях.

UPD: добавили синхронное мигание в обновлении 2.5.7.0.

metamorphogenesis

Добрый день.


В веб версии у меня по клику на трендвьювер и текст не открылось привязанное к ним шаблонное окно. По клику на изображение открывается нормально. Так же на ярлыке текущей страницы разместил прозрачный шейп, который так же открывает шаблон, привязанный к этой странице. В приложении ярлык текущей страницы не является ссылкой и не работает, потому клик принимается шейпом и вызывается шаблон. в веб версии ярлык текущей страницы остается ссылкой на эту же страницу и при нажатии на него вместо шаблона просто обновляется страница.


Кроме того, в настройках шаблонного окна я отключил заголовок и использовал освобожденное место под объекты.







В веб-версии заголовок все равно отрисовывается и получается такое вот





Simple-Scada

#148
Здравствуйте.

ЦитироватьВ веб версии у меня по клику на трендвьювер и текст не открылось привязанное к ним шаблонное окно.
Да, шаблонные окна не открываются при клике по компонентам "Временные тренды" и "Таблица", исправим в ближайшем обновлении.
Но по компоненту "Текст" мы не смогли воспроизвести проблему, у нас окно при клике по тексту открывается. Может быть у Вас текст перекрыт другим объектом? Попробуйте переместить его на передний план.

ЦитироватьТак же на ярлыке текущей страницы разместил прозрачный шейп, который так же открывает шаблон, привязанный к этой странице. В приложении ярлык текущей страницы не является ссылкой и не работает, потому клик принимается шейпом и вызывается шаблон. в веб версии ярлык текущей страницы остается ссылкой на эту же страницу и при нажатии на него вместо шаблона просто обновляется страница.
Если Вы хотите взять стандартную панель страниц и перекрыть её другими компонентами чтобы переопределить поведение кнопок, то так сделать не получится. Нужно определиться и использовать какой-то один вариант. Если Вам не подходит стандартная панель страниц, то её нужно скрыть и создать собственную панель страниц с нужным поведением.

ЦитироватьВ веб-версии заголовок все равно отрисовывается и получается такое вот
Исправили. В ближайшем обновлении в web окна со скрытыми заголовками будут отображаться правильно.

metamorphogenesis

Добрый день. В версии 2.5.9 в приложении и вебе разное отображение текста кнопки в шаблонном окне (в других ситуациях не проверял). Ниже ссылка на видео-демонстрацию, а также код присвоения текста кнопке.


https://dropmefiles.com/YU7T7


Код: pascal
var
    button: TM_Button;
begin
    if not (Sender is TM_Button) then exit;

    button := TM_Button(Sender);

    if tempStatusTrendsVisibilityCode.Value <> 65535 then
    begin
        tempStatusTrendsVisibilityCode.Value := 65535;
        button.Caption := 'Скрыть все';
    end
    else begin
        tempStatusTrendsVisibilityCode.Value := 0;
        button.Caption := 'Показать все';
    end;
end.