Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: karim от 12 Октября 2023, 14:30:46

Название: Создаём мнемознак
Отправлено: karim от 12 Октября 2023, 14:30:46
Есть необходимость создать свой мнемознак трехходового крана.
Концептуально он должен выглядеть как на приложенном рисунке.
Как создать?
Я думаю пройти по следующему пути:
1) с ПЛК получаем переменную состояния varSost, которая принимает следующие значения:

1 - в промежуточном состоянии (открыт в обоих направлениях)
2 - кран в положении сработанного концевика 2 (открыт только в направлении 2)
3 - кран в положении сработанного концевика 1 (открыт только в направлении 1)
4 - кран идет в направлении концевика 1
5 - кран идет в направлении концевика 2
0- ошибка

2) создаем шаблом, в котором кидаем 6 объектов Image. По числу состояний varSost.
Так как на линии нет привязанной переменной. Привязываем к каждому Image varSost.
Кидаем в Image рисунки, соответствующие состояниям 0..5

3) по событию OnDataChange выставляем для каждого Image Параметр Visible.

Может есть другие варианты? И этот вариант подходящ вообще?
Название: Re: Создаём мнемознак
Отправлено: Timothy Clement от 12 Октября 2023, 15:49:12
Мне кажется проще из 6 картинок сделать анимацию через Pictures на 6 кадров. И в свойство Frame записывать значение переменной по-изменению
Название: Re: Создаём мнемознак
Отправлено: karim от 12 Октября 2023, 16:03:03
Мне кажется проще из 6 картинок сделать анимацию через Pictures на 6 кадров. И в свойство Frame записывать значение переменной по-изменению
я изучаю simple scada дня 4, не в купсе ещё как это всё делать
Название: Re: Создаём мнемознак
Отправлено: Simple Scada от 12 Октября 2023, 16:18:27
Здравствуйте.

Вместо использования нескольких изображений и изменения их видимости нужно создать одно изображение, состоящее из нескольких кадров. Далее с помощью утилиты "Pictures (https://simple-scada.com/help/manual/pictures.html)" разбить его на кадры и менять их через свойство "Кадр(Frame) (https://simple-scada.com/help/script/imgframe.html)". Пример универсального скрипта:
Код: (delphi)
begin
  if Sender is TM_Image then   // проверяем, что Sender это изображение
    with Sender as TM_Image do // приводим Sender к типу "TM_Image"
      Frame := AsInt;          // показать кадр изображения равный значению переменной
end.
Данный скрипт нужно назначить на событие "OnDataChange" (https://simple-scada.com/help/script/by-obj-event.html) изображения, а в свойство "Переменная" указать переменную "varSost". Теперь кадр изображения будет меняться в зависимости от значения переменной "varSost". Например, если переменная равна 1, то будет показан 1 кадр, если 2, то 2 кадр и тд.
Название: Re: Создаём мнемознак
Отправлено: karim от 12 Октября 2023, 16:24:51
а какие есть варианты для создания мнемознаков?
вот прикладываю регулятор давления, как такое к примеру отрисовать? (хотя мне пока такое без надобности, но трехходовой кран необходим)

хотя лучше смотреть в сторону задвижки из вот этого документа https://niitn.transneft.ru/u/ovp_main_pdf_file/5563/rd-35.240.50-ktn-243-19_spec_red.pdf стр 40.
она там и в имитации и реальные концевики при этом тоже должны отображаться. при закрытии-открытии мигает.... :o
вот если бы иметь возможность рисовать такие штуки: то всё, скада позволяет выполнить все вещи.)
Название: Re: Создаём мнемознак
Отправлено: karim от 12 Октября 2023, 16:26:45
Данный скрипт нужно назначить на событие "OnDataChange" (https://simple-scada.com/help/script/by-obj-event.html) изображения, а в свойство "Переменная" указать переменную "varSost". Теперь кадр изображения будет меняться в зависимости от значения переменной "varSost". Например, если переменная равна 1, то будет показан 1 кадр, если 2, то 2 кадр и тд.
завтра попробую сделать!
но изначально хотелось ещё и моргать теми линиями, что на бумажном рисунке пунктиром. как такое реализовать возможно?
Название: Re: Создаём мнемознак
Отправлено: Simple-Scada от 13 Октября 2023, 11:35:46
Цитировать
а какие есть варианты для создания мнемознаков? вот прикладываю регулятор давления, как такое к примеру отрисовать?
Вы можете добавить любые изображения и вывести их на мнемосхему. Для однотипных объектов рекомендуем использовать шаблоны (https://simple-scada.com/help/manual/template.html). Т.е. создать один шаблон с мнемознаком, а затем добавлять шаблонные объекты на его основе на мнемосхему. Тогда при редактировании шаблона, все шаблонные объекты автоматически обновятся.

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

См. пример во вложении (для последней версии 2.6.9.0). В примере используется один шаблон.
Инструкции по использованию:
1. Скачайте изображения "FlapBack.png" и "FlapFront.png" из вложения;
2. Поместите их в папку "Pictures\" (перейти в папку можно через ярлык на рабочем столе (https://simple-scada.com/help/manual/installation.html?anchor=userdata));
3. Запустите утилиту Pictures.exe и для "FlapBack" / "FlapFront" задайте "Кадров по ширине" = 5, "Кадров по высоте" = 1. Нажмите "Сохранить изменения";
4. Перезапустите сервер скады и редактор, если они были запущены, чтобы изменения вступили в силу;
5. Скачайте пример проекта "FlapDemo.rar" из вложения и распакуйте его в папку "Projects\";
6. Запустите проект "FlapDemo" и посмотрите как он работает.

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