Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Замечания и предложения при создании проекта  (Прочитано 9549 раз)

asutpvit

  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Часто нужно вручную позиционировать компонент с точностью до пикселя, чему очень мешает жирная рамка выделения.
Предлагаю:
1. Включать/отключать рамку горячей клавишей.
2. Повысить максимальный коэффициент масштабирования с 2.00 до 4.00 (или задавать его в настройках).
Поддерживаю, тоже намучался с подгоном положения элементов путем выставления позиции через редактор элемента

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Цитировать
Решать за пользователя что ему нужно - неверный подход.
Сомневаемся что кто-то вообще использовал бы скаду, если бы мы реализовали все, что хочется пользователям. Результат не понравился бы никому. Мы считаем наоборот, нужно прислушиваться к мнению пользователей, выделять полезные идеи и внедрять их, отсеивая плохие/лишние. Такого подхода мы и придерживаемся.

Цитировать
У меня, например, такая задача - пробегаться по двум сотням тегов и формировать сводный статус, с учетом качества тегов.
Мы не вносим изменения в скаду под каждый конкретный случай, можем добавить только решение которое подойдёт всем. Если Вам будет достаточно смены частоты скрипта до 500 мс., то другой пользователь попросит 200 мс, а третий 1мс. Причем в зависимости от производительности ПК-сервера и величины цикла в скрипте можно добиться того, что цикл не будет успевать исполняться за заданный интервал времени. А учитывая, что качество тегов обычно меняется редко, например в нештатных ситуациях, проход в цикле по всем переменным каждую секунду (или чаще) будет плохим решением, т.к. большинство срабатываний будут лишними. В проектах с большим количеством тегов это может привести и к задержкам в выполнении скриптов. Мы могли бы добавить отдельный тип скрипта на изменение качества тегов, который исключил бы "лишние" срабатывания и выполнялся только по смене качества. И если множество тегов меняют качество в один момент времени (что происходит довольно часто, например при возникновении проблемы с ПЛК), то скрипт срабатывал бы один раз. Если качество тегов меняется последовательно друг за другом, то можно было бы предусмотреть отдельный параметр - интервал времени, который не давал бы скрипту выполняться отдельно для каждого тега, а группировал бы все смены качества за заданный интервал времени и срабатывал один раз на каждый интервал. Такой вариант подошел бы для решения Вашей задачи?

В редакторе скриптов очень нужны "Горячие клавиши"... с возможностью переходить в скрипт для редактирования клавишами "Вверх", "Вниз" и "Enter".
Добавим комбинации клавиш для перехода к следующему/предыдущему скрипту, без необходимости манипуляций с фокусом.

Лично я против введения группировок, заморозки слоёв и прочих фичей если они повлияют на производительность.
Описанные требования не повлияют на производительность и простоту интерфейса.

Часто нужно вручную позиционировать компонент с точностью до пикселя, чему очень мешает жирная рамка выделения.
Поддерживаю, тоже намучался с подгоном положения элементов путем выставления позиции через редактор элемента
Рамка выделения имеет толщину в 1 пиксель и расположена ровно на границе объекта. Подогнать точную позицию объекта можно удерживая клавишу Alt ("Alt + Стрелка вверх/вниз/влево/вправо", или "Alt + Перемещение объекта мышью")

kedr

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
Мы могли бы добавить отдельный тип скрипта на изменение качества тегов, который исключил бы "лишние" срабатывания и выполнялся только по смене качества. И если множество тегов меняют качество в один момент времени (что происходит довольно часто, например при возникновении проблемы с ПЛК), то скрипт срабатывал бы один раз. Если качество тегов меняется последовательно друг за другом, то можно было бы предусмотреть отдельный параметр - интервал времени, который не давал бы скрипту выполняться отдельно для каждого тега, а группировал бы все смены качества за заданный интервал времени и срабатывал один раз на каждый интервал. Такой вариант подошел бы для решения Вашей задачи?
Да, это было бы идеально.
Предлагаю организовать новое событие "Обработка переменных" с обработчиком типа:
Код: (delphi)
procedure Ustanovka_Changed(IsChanged: Boolean; Variables: array of TM_Variable; Changed: array of Byte);
var
  i: Integer;
  Stat: Word;  //-- Итоговый статус
begin
  Stat := 0;
  for i := Low(Variables) to High(Variables) do begin
    Stat := Stat OR Variables[i].Value;    //-- Собираем общий статус установки
    if not Variables[i].IsGoodQuality then Stat := Stat OR $8000;      //-- Общий признак отсутствия связи
    case Changed[i] of
      1:  //-- Изменилось значение
        AddMessage(Now, mkMessage, Variables[i].Description + ". Статус изменён:" + IntToStr(Variables[i].AsInt), False, False);
      2: //-- Изменилось качество
        if Variables[i].IsGoodQuality then
          AddMessage(Now, mkWarning, Variables[i].Description + ". Связь утеряна", False, True);
        else
          AddMessage(Now, mkMessage, Variables[i].Description + ". Связь восстановлена", False, True);
    end;
  end;
  vUstanovka_Stat.Value := Stat;  //-- Устанавливаем общий статус установки
end.
Т.е. обработчик в качестве параметров получает общий признак изменённости хотя бы одной переменной и два массива одинаковой размерности, один из которых содержит все привязанные к скрипту переменные, другой - признаки изменённости переменных с момента последнего вызова (0-не изм, 1-изм.значение, 2-изм.качество).
Периодичность вызова скриптов по данному событию задавать в настройках.


Рамка выделения имеет толщину в 1 пиксель
Намного толще. Вот как здесь подогнать выделенный кружок ровно посредине фоновой колонны?

« Изменён: 26 Мая 2018, 10:40:39 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Цитировать
Намного толще. Вот как здесь подогнать выделенный кружок ровно посредине фоновой колонны?
Для этого проще использовать функции выравнивания. Сначала выделить мышью колонну (т.е. объект по которому нужно выровнять). Затем, удерживая SHIFT выделить кружок (объект который нужно выровнять). И через меню "Действия" -> "Выравнивание" -> "Центрировать по вертикали" (либо нажать комбинацию: Ctrl + Shift + V).

Но с рамкой все таки что-то не так. Она должна быть 1 пиксель при любом масштабе, как и линия до фиолетовой точки изменения угла. Какой тип рендера у Вас выбран в Options.exe? Включено ли полноэкранное сглаживание в Options.exe? На ПК установлена последняя версия видеодрайвера? При необходимости обновите драйвер, скачав его с сайта официального производителя видеокарты.
« Изменён: 08 Мая 2018, 22:29:02 от Simple-Scada »

kedr

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
Для этого проще использовать функции выравнивания. Сначала выделить мышью колонну (т.е. объект по которому нужно выровнять).
Колонна невыделяемая, фоновая: часть картинки-подложки.
Но с рамкой все таки что-то не так. Она должна быть 1 пиксель при любом масштабе, как и линия до фиолетовой точки изменения угла. Какой тип рендера у Вас выбран в Options.exe? Включено ли полноэкранное сглаживание в Options.exe? На ПК установлена последняя версия видеодрайвера? При необходимости обновите драйвер, скачав его с сайта официального производителя видеокарты.
При смене рендера на OpenGL рамка стала толщиной 1 пиксель.
Однако всё равно края колонны и кружка закрыты, точно позиционировать не получается. И это при масштабе 2.00. Если хотя бы можно было ещё увеличить масштаб...


PS При смене рендера c DirectX на OpenGL загрузка процессора процессом Client.exe выросла с 6% до 22%. Сглаживание отключено.
« Изменён: 10 Мая 2018, 13:17:39 от kedr »

kedr

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
  • При попытке схватить узловую точку фигуры для изменения размера, если эта узловая точка находится над меню страниц/подстраниц, происходит переключение страницы, а не захват узловой точки. ИМХО, если уж курсор принял форму раздвигающей стрелочки над узловой точкой, должен происходить именно захват узловой точки.
  • Очень не хватает глобального модуля или скрипта, куда можно было бы вынести общие для всего проекта переменные, процедуры и функции. Если в частности - нужно пинговать почти 200 устройств; при пропаже пинга выставить бит в соответствующей глобальной переменной - статусе устройства. Напрашивается заведение двумерного массива, в первом индексе хранить IP-адрес, во втором - имя переменной статуса устройства. При старте проекта заполнить массив и запустить пинги. Далее раз в секунду проверять пропажу пинга в цикле по массиву. Сейчас приходится одинаковый кусок кода (заполнение массива) иметь в двух скриптах. И собственно заполнение массива каждую секунду тоже не есть айс. На самом деле из-за отсутствия глобального модуля приходится иметь много кусков повторяющегося кода в разных скриптах.
    Кстати, с пингами тоже напрашивается событийная модель - при потере пинга выполнять скрипт с передачей IP-адреса в качестве параметра.
  • Не хватает Ctrl+D - дублирование компонента.
  • Очень неудобно, что меню страниц и подстраниц нельзя отобразить строго поверх компонентов. Они смешиваются, получается такая хрень:

    Долго думал, придумал обрезать подложку сверху на 50 пикселей, а слева и справа от субменю поставить прямоугольники, совпадающие по цвету с фоновой картинкой. И так 6 раз. ИМХО должна быть возможность для меню страниц/подстраниц задавать хотя бы прозрачность.
« Изменён: 04 Июня 2018, 16:48:32 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
неудобно, что меню страниц и подстраниц нельзя отобразить строго поверх компонентов. Они смешиваются...
Цитировать
...если эта узловая точка находится над меню страниц/подстраниц, происходит переключение страницы
В ближайшем обновлении вынесем подстраницы на передний план и поправим работу с узловыми точками в зоне страниц.

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

Цитировать
PS При смене рендера c DirectX на OpenGL загрузка процессора процессом Client.exe выросла с 6% до 22%. Сглаживание отключено.
Нагрузка на процессор возрастает в случаях, когда видеокарта не справляется с отрисовкой. На ПК отвечающих минимальным системным требованиям:
  • Процессор — Intel Atom D2550 и выше
  • Видеокарта — Intel GMA 3650
  • 1 Гб ОЗУ
  • 1 Гб свободного места на жестком диске (HDD)
  • Звуковая карта
  • DirectX 9.0c или выше / OpenGL
, нагрузка на процессор обычно не превышает 8%. Если ПК ниже этих требований, то нагрузка может быть выше. Если ПК соответствует требованиям, но нагрузка выше, то причину можно искать в драйверах видеокарты (наиболее распространенная причина), других приложениях которые нагружают видеокарту или другие компоненты  ПК во время работы скады.
« Изменён: 11 Мая 2018, 10:22:53 от Simple-Scada »

kedr

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
В ближайшем обновлении вынесем подстраницы на передний план и поправим работу с узловыми точками в зоне страниц.
Рассмотрите, пожалуйста, возможность в ближайших обновлениях реализовать простую линию, с произвольными координатами начала и конца.
Реально не хватает, приходится обычные выноски делать с помощью PNG-файлов (!)

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Рассмотрите, пожалуйста, возможность в ближайших обновлениях реализовать простую линию, с произвольными координатами начала и конца.
Добавим компонент Линия, но не в самом ближайшем обновлении.

kedr

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
Ок. Хорошо бы также иметь возможность задавать тип начала и конца линии: обычный, стрелка, мини-стрелка, точка, пустая точка.

Не хватает:
- компонента, выводящего RTSP-поток от видеокамеры
- возможности отправить HTTP(S) GET-запрос для отправки информации в стороннюю систему
« Изменён: 20 Мая 2018, 13:09:31 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Хорошо бы также иметь возможность задавать тип начала и конца линии: обычный, стрелка, мини-стрелка, точка, пустая точка.
Возможно мы неправильно Вас поняли? Мы изначально подумали, что Вам не хватает компонента линия с произвольным углом наклона и говорим о том, что добавим компоненту Линия такую возможность в будущих обновлениях. Сам же компонент Линия уже давно есть в скаде, он поддерживает 18 разных типов концов. Но этот компонент не позволяет разместить линию под произвольным углом, только вертикально/горизонтально, аналогично компоненту Трубопровод.

- компонента, выводящего RTSP-поток от видеокамеры
Добавление этого функционала не планируется в ближайшем будущем.

- возможности отправить HTTP(S) GET-запрос для отправки информации в стороннюю систему
Рассмотрим добавление функций для выполнения таких запросов.

asutpvit

  • Новичок
  • *
  • Сообщений: 48
    • Просмотр профиля
Возможно мы неправильно Вас поняли? Мы изначально подумали, что Вам не хватает компонента линия с произвольным углом наклона
Именно такого функционала очень не хватает

kedr

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
Возможно мы неправильно Вас поняли? Мы изначально подумали, что Вам не хватает компонента линия с произвольным углом наклона и говорим о том, что добавим компоненту Линия такую возможность в будущих обновлениях. Сам же компонент Линия уже давно есть в скаде, он поддерживает 18 разных типов концов. Но этот компонент не позволяет разместить линию под произвольным углом, только вертикально/горизонтально, аналогично компоненту Трубопровод.
Речь именно о линии с произвольным углом.
Но хорошо бы, если это не очень затруднительно реализовать, чтобы и у этой линии была возможность задавать тип конца.

kedr

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
  • Можно ли при открытии "большого" окна работы с сообщениями не отображать данное меню? Или хотя бы сразу вставать на "Все сообщения".

    В проекте не используется подтверждение сообщений, запись действий оператора и т.п. - все сообщения идут одним потоком.
    Операторам заказчика приходится рассказывать, что нужно встать на "Все сообщения", а другие пункты меню не используются.
  • И еще очень неудобно - в компоненте MessageViewer более новые сообщения как надо - сверху, а в "большом" окне как не надо - снизу.
    Можно ли везде сделать как надо? Или хотя бы как не надо, но одинаково?
  • В редакторе скриптов не хватает типовой для редакторов функции "Найти и заменить" (Ctrl+H). Есть только "Найти". Причём работает очень неудобно, не так, как привычно по другим редакторам: Ctrl+F не работает, только через меню, первое найденное сочетание выделяется особо, однако выделение "не настоящее". Фокус - у поля ввода искомой строки, так что нажатие Ctrl+V меняет не выделение в области кода скрипта, а искомую строку. При клике в области кода скрипта выделение найденных строк пропадает. Можно даже обойтись без "Найти и заменить", если бы Ctrl+V отрабатывало особо для найденных строк - заменяло первую найденную строку и переходило к следующей.
  • Для внутренних тегов было бы удобно задавать начальное значение, присваиваемое при старте проекта.
« Изменён: 04 Июня 2018, 16:52:23 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Можно ли при открытии "большого" окна работы с сообщениями не отображать данное меню? Или хотя бы сразу вставать на "Все сообщения".
Клик по стандартной панели сообщений всегда приводит к переходу к списку неподтверждённых сообщений. При желании можно отключить стандартную панель и разместить вместо неё компонент "Список сообщений". Для перехода сразу в группу "Все сообщения" можно на событие OnClick компонента написать следующий скрипт:
Код: (delphi)
begin
  { переходим в меню сообщений в группу "Все сообщения" }
  GoToMessagesGroupClient(GetClientName, -1);
end.
Цитировать
В проекте не используется подтверждение сообщений, запись действий оператора и т.п. - все сообщения идут одним потоком.
Вы можете отключить группы "Активные действия", "Действия оператора", "Виртуальные сообщения", "Нарушенные границы" и "Пользователи" через меню "Пользователи". Для каждого пользователя можно отключить сформировать свой набор групп. Группы "Неподтверждённые" и "Все сообщения" отключить нельзя.

Цитировать
Для внутренних тегов было бы удобно задавать начальное значение, присваиваемое при старте проекта.
В редакторе скриптов не хватает типовой для редакторов функции "Найти и заменить" (Ctrl+H).
Уже есть в списке на доработку, эти возможности будут добавлены.
« Изменён: 26 Мая 2018, 10:40:05 от Simple-Scada »