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

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

Автор Тема: Создаём мнемознак  (Прочитано 6003 раз)

karim

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Создаём мнемознак
« : 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.

Может есть другие варианты? И этот вариант подходящ вообще?
« Изменён: 12 Октября 2023, 14:47:56 от Simple_Scada »

Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 166
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Re: Создаём мнемознак
« Ответ #1 : 12 Октября 2023, 15:49:12 »
Мне кажется проще из 6 картинок сделать анимацию через Pictures на 6 кадров. И в свойство Frame записывать значение переменной по-изменению

karim

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Создаём мнемознак
« Ответ #2 : 12 Октября 2023, 16:03:03 »
Мне кажется проще из 6 картинок сделать анимацию через Pictures на 6 кадров. И в свойство Frame записывать значение переменной по-изменению
я изучаю simple scada дня 4, не в купсе ещё как это всё делать

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 288
    • Просмотр профиля
    • Simple-Scada
Re: Создаём мнемознак
« Ответ #3 : 12 Октября 2023, 16:18:27 »
Здравствуйте.

Вместо использования нескольких изображений и изменения их видимости нужно создать одно изображение, состоящее из нескольких кадров. Далее с помощью утилиты "Pictures" разбить его на кадры и менять их через свойство "Кадр(Frame)". Пример универсального скрипта:
Код: (delphi)
begin
  if Sender is TM_Image then   // проверяем, что Sender это изображение
    with Sender as TM_Image do // приводим Sender к типу "TM_Image"
      Frame := AsInt;          // показать кадр изображения равный значению переменной
end.
Данный скрипт нужно назначить на событие "OnDataChange" изображения, а в свойство "Переменная" указать переменную "varSost". Теперь кадр изображения будет меняться в зависимости от значения переменной "varSost". Например, если переменная равна 1, то будет показан 1 кадр, если 2, то 2 кадр и тд.
« Изменён: 12 Октября 2023, 16:22:17 от Simple_Scada »

karim

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Создаём мнемознак
« Ответ #4 : 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
вот если бы иметь возможность рисовать такие штуки: то всё, скада позволяет выполнить все вещи.)
« Изменён: 12 Октября 2023, 18:00:37 от karim »

karim

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Создаём мнемознак
« Ответ #5 : 12 Октября 2023, 16:26:45 »
Данный скрипт нужно назначить на событие "OnDataChange" изображения, а в свойство "Переменная" указать переменную "varSost". Теперь кадр изображения будет меняться в зависимости от значения переменной "varSost". Например, если переменная равна 1, то будет показан 1 кадр, если 2, то 2 кадр и тд.
завтра попробую сделать!
но изначально хотелось ещё и моргать теми линиями, что на бумажном рисунке пунктиром. как такое реализовать возможно?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Создаём мнемознак
« Ответ #6 : 13 Октября 2023, 11:35:46 »
Цитировать
а какие есть варианты для создания мнемознаков? вот прикладываю регулятор давления, как такое к примеру отрисовать?
Вы можете добавить любые изображения и вывести их на мнемосхему. Для однотипных объектов рекомендуем использовать шаблоны. Т.е. создать один шаблон с мнемознаком, а затем добавлять шаблонные объекты на его основе на мнемосхему. Тогда при редактировании шаблона, все шаблонные объекты автоматически обновятся.

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

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

При необходимости измените изображения клапана, цвет мигания, добавьте доп. элементы и др. как Вам нужно.
« Изменён: 03 Марта 2025, 10:37:35 от Simple_Scada »