Table of contents

Мнемосхемы

Мнемосхема – это графический интерфейс оператора, представляющий собой схематическое изображение технологического процесса или объекта управления в реальном времени. Она отображает текущее состояние оборудования, значения параметров и взаимосвязи между элементами системы с помощью условных обозначений и анимированных элементов.

В терминах Rapid SCADA мнемосхема является представлением. Элементы мнемосхемы привязывается к каналам и отображают состояние объекта автоматизации на основе текущих данных.

Настройка плагинов

Работа мнемосхем обеспечивается несколькими плагинами приложения Вебстанция:

  • Плагин Мнемосхемы (PlgMimic) отвечает за работу мнемосхем в режиме выполнения;
  • Плагин Редактор мнемосхем (PlgMimicEditor) позволяет создавать и редактировать мнемосхемы;
  • Плагин Основные компоненты мнемосхем (PlgMimBasicComp) предоставляет минимальный набор необходимых компонентов;
  • Плагин Дополнительные компоненты мнемосхем (PlgMimExtraComp) расширяет библиотеку дополнительными компонентами.

Файл конфигурации PlgMimic.xml содержит параметры, используемые плагинами Мнемосхемы и Редактор мнемосхем. Этот файл входит в шаблон проекта, поэтому при создании нового проекта файл конфигурации добавляется с параметрами по умолчанию. Плагины компонентов мнемосхем не требуют настройки.

Следующая таблица описывает содержимое файла PlgMimic.xml:

XML-элемент Описание
GeneralOptions Секция основных параметров мнемосхем, используемых в режимах выполнения и редактирования.
CustomCss Путь к пользовательскому файлу CSS.
CustomJs Путь к пользовательскому файлу JavaScript.
Fonts Секция шрифтов, используемых мнемосхемами.
Font Элемент, определяющий шрифт.
name Наименование шрифта в редакторе.
family Обозначение семейства шрифтов в HTML-документе.
url Путь к CSS-файлу шрифта.
RuntimeOptions Секция параметров времени выполнения.
ScaleType Тип масштабирования по умолчанию.
ScaleValue Значение масштаба по умолчанию.
RememberScale Запоминать масштаб.
ShowToolbar Отображать панель инструментов мнемосхемы.
BlinkingRate Частота мигания компонентов в миллисекундах, если включено соответствующее свойство.
EditorOptions Секция параметров редактора.
UseGrid Использовать сетку для расположения компонентов.
ShowGrid Отображать сетку.
GridStep Шаг сетки в пикселях.

Пути к пользовательским файлам CSS и JavaScript, которые задаются параметрами CustomCss и CustomJs, начинаются с символа тильды, который обозначает корень веб-приложения. Пути могут быть пустыми. Сами пользовательские файлы должны располагаться внутри директории ScadaWeb\wwwroot\. Если необходимо добавить несколько файлов стилей и скриптов, их необходимо слить в единый файл с помощью сторонних утилит.

Создание мнемосхемы

Чтобы создать новую мнемосхему, в приложении Администратор перейдите в раздел Представления проекта, щёлкните правой кнопокой мыши на нужной папке и выберите пункт Создать файл в контекстном меню. В открывшемся окне (рис. 1) выберите тип представления Мнесмохема новая, укажите имя файла и нажмите кнопку OK. Созданный файл отобразится в проводнике проекта.

Диалог создания представления
Рис. 1. Диалог создания представления

После того, как файл представления создан, откройте его двойным щелчком в веб-браузере в Редакторе мнемосхем. Приложение Вебстанция должно быть установлено и запущено на том же компьютере, на котором работает приложение Администратор.

Компоненты

Компонент – это интерактивный графический объект мнемосхемы, который динамически отображает состояние конкретного устройства или параметра в реальном времени и позволяет на него воздействовать. Это "кирпичик", из которого строится мнемосхема.

Компоненты в Редакторе мнемосхем разделены на группы в зависимости от того, в каком плагине они реализованы. Компоненты из группы Стандартные реализованы в плагине Мнемосхемы. Компоненты из групп Основные и Дополнительные реализованы в плагинах с соответствующими названиями.

Таблица ниже содержит краткое описание компонентов.

Компонент Описание
Стандартные компоненты
Панель Предназначена для размещения дочерних компонентов с целью группироваки. Может быть вложена одна в другую.
Рисунок Отображает рисунок. Рисунок может быть статическим или переключаться в зависимости от заданных условий. Рекомендуемый формат изображений – SVG. Поддерживаются также PNG и GIF, в том числе анимированные.
Текст Отображает текст. Текст может быть статическим, содержать значение привязанного канала или выбираться по условиям.
Основные компоненты
Кнопка Представляет кнопку для отправки команды телеуправления, отображения всплывающего окна или другого действия.
Светодиод Круглый или прямоугольный светодиод, который меняет цвет в соответствии со значением привязанного канала согласно заданным условиям.
Тумблер Двухпозиционный переключатель, который при переключении отправляет команды телеуправления.
Дополнительные компоненты
Прибор Стрелочный прибор. Изображение-подложка, шкала и стрелка настраиваемые.
Разметка Компонент предназначен для вставки произвольного HTML-кода. Полезен при создании фейсплейтов.
Тренд Строит простой тренд заданного параметра на основе меняющихся текущих данных.
Уровень Отображает значение привязанного канала в виде вертикального или горизонтального уровня.
Фрейм Позволяет вставить на мнемосхему произвольную веб-страницу, в том числе график или другое представление.

Фейсплейты

Фейсплейт – это компонент, созданный пользователем на основе других компонентов с целью многократного использования на различных мнемосхемах. Изменения, сделанные в фейсплейте, отражаются на мнемосхемах, в которых он используется.

Фейсплейты создаются из приложения Администратор, а редактируются в Редакторе мнемосхем по аналогии с мнемосхемами. Для создания фейсплейта вызовите описанный выше диалог создания файла (рис. 1), выберите тип Фейсплейт, укажите имя файла и нажмите кнопку OK. Затем двойным щелчком откройте созданный файл в редакторе.

Фейсплейты могут экспортировать свойства, созданные пользователем. Соответствующее свойство фейсплейта в редакторе так и называется – Экспортируемые свойства. При добавлении фейсплейта на мнемосхему на основе экспортируемых свойств создаются пользовательские свойства экземпляра фейсплейта и отображаются в таблице свойств в категории Разное.

Каждое экспортируемые свойство является структурой, поля которой описаны в следующей таблице:

Поле Описание
Имя свойства Обязательное поле. Может содержать латинские символы и цифры, должно начинаться с буквы, точки не допускаются.
Путь Связывает экспортируемое свойство фейсплейта и целевое свойство дочернего компонента. Содержит наименование дочернего компонента и имя его свойства, разделённые точками. При изменении значения экспортируемого свойства изменяется целевое свойство. Значение целевого свойства является значением по умолчанию для экспортируемого свойства.
Значение по умолчанию Используется, если путь пустой и экспортируемое свойство обрабатывается скриптом.
Привязка по умолчанию Позволяет заранее настроить привязку к данным, которая создаётся в экземпляре фейсплейта при добавлении на мнемосхему.

Привязка к данным

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

Структура привязки одного свойства:

Поле Описание
Имя свойства Обязательное поле. Для свойств, имеющих сложную стуктуру, полное имя разделяется точками.
Источник данных Это номер канала, часть кода канала или код тега.
Элемент данных Определяет, на основе какой части данных канала формируется значение свойства.
Выражение Позволяет преобразовать значение с помощью JavaScript.
Формат Преобразует строку по формату, например, Hello {0} world. Работает только для строковых свойств.

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

Элемент данных Аргумент выражения Пример выражения
Значение Числовое значение канала или Number.NaN, если статус канала равен 0 isNaN(x) ? "None" : x * 2
Статус Статус канала, число
Данные Значение и статус канала, объект { val, stat } x.stat > 0 ? x.val * 2 : "None"
Отображаемое значение Строка "Value: " + x
Значение и размерность Строка "Value and unit: " + x
Основной цвет Строка
Второй цвет Строка
Цвет фона Строка

Привязка свойств компонента работает по-разному в зависимости от того, какое свойство из категории Данные задано:

  1. Задан Номер объекта. В поле Источник данных в привязке содержится часть кода канала. Приложение определяет номер канала так: к коду объекта присоединяется строка из источника данных, и канал ищется по полученному коду среди каналов заданного объекта.
  2. Задан Номер устройства. В поле Источник данных в привязке содержится код тега. Номер канала определяется по номеру устройства и коду тега.
  3. Задан Входной канал. Если номер объекта или устройства не заданы, источник данных в привязке должен содержать конкретный номер канала.

Для некоторых свойств привязка к данным недоступна. Это свойства из категорий Данные и Проектирование, скрипты. Такие свойства отмечены серым цветом в диалоге выбора свойств.

Привязка свойств по умолчанию

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

Например, если задать входной канал для компонента типа Текст, то его текст и цвет будут отображаться в соответствии со значением и статусом канала. Значение выводится с размерностью. Таким образом, для текстового компонента привязки по умолчанию создаются для свойств Текст и Основной цвет.

Скрипты

Скрипты мнемосхемы и компонентов

Для мнемосхемы, фейсплейтов и всех компонентов доступно свойство Скрипт. Скрипты предназначены для реализации нестандартной функциональности. Если каком-либо пользовательском скрипте содержится ошибка, работоспособность мнемосхемы сохраняется.

Все пользовательские скрипты должны наследоваться от базового класса ComponentScript, в котором доступны следующие методы:

Метод Аргументы Описание
domCreated(args)
{
  mimic,
  component,
  renderContext
}
Вызывается один раз сразу после создания DOM мнемосхемы или компонента. Для фейсплейта вызывается после вызова аналогичных методов входящих в него компонентов.
domUpdated(args)
{
  mimic,
  component,
  renderContext
}
Вызывается сразу после обновления DOM компонента. Для мнемосхемы по факту не вызывается. Для фейсплейта вызывается после вызова аналогичных методов входящих в него компонентов.
dataUpdated(args)
{
  mimic,
  component,
  dataProvider,
  propertyChanged,
  handled
}
Для компонента вызывается после обновления его данных. Для мнемосхемы вызывается после обновления данных всех компонентов. Если свойство компонента было изменено, нужно присвоить args.propertyChanged = true, чтобы визуально обновить компонент. Установка args.handled = true предотвращает вызов собственного скрипта компонента.
getCommandValue(args)
{ component }
Возвращает значение команды, которое нужно отправить. Вызывается при отправке команды без вызова диалогового окна.

Методы domCreated и domUpdated вызываются для мнемосхемы, компонентов и дочерних компонентов фейсплейтов как в режиме выполнения, так и в режиме редактирования. Однако если сам фейсплейт открыт для редактирования, эти методы для него не вызываются, чтобы избежать неоднозначности аргументов: в рабочем режиме доступен args.component, а при редактировании args.mimic.

Пример пользовательского скрипта компонента типа Текст:

class extends ComponentScript {
  domCreated(args) {
    console.log("DOM created for component " + args.component.id);
  }

  domUpdated(args) {
    console.log("DOM updated for component " + args.component.id);
  }

  dataUpdated(args) {
    const props = args.component.properties;
    const cnlData = args.dataProvider.getCurData(props.inCnlNum);
    const blinking = cnlData.d.stat > 0 && cnlData.d.val >= 10;

    if (props.blinking !== blinking) {
      props.blinking = blinking;
      args.propertyChanged = true;
    }
  }
}

Скрипт действия

Под скриптом действия понимается скрипт, который выполняется по щелчку на компоненте. Скрипт компилируется на лету при каждом вызове действия. Код скрипта должен содержать функцию, например:

function (args) {
  args.renderContext.viewHub.features.chart.show(args.component.properties.inCnlNum);
}

В качестве аргумента функции передаётся объект вида { component, renderContext }

Редактор мнемосхем

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

Редактор мнемосхем
Рис. 2. Редактор мнемосхем

В верхней части веб-страницы редактора расположена панель инструментов с кнопками, с помощью которых выполняются основные действия. В левой части находятся инструментальные окна: Компоненты, Структура (рис. 3) и Свойства (рис. 4). В центральной части веб-страницы – редактируемая мнемосхема.

Структура мнемосхемы
Рис. 3. Структура мнемосхемы
Свойства компонента
Рис. 4. Свойства компонента

Наиболее удобный способ открыть мнемосхему в редакторе – двойной щелчок по редактируемому файлу в приложении Администратор. Однако можно открыть мнемосхему через веб-приложение, выбрав Главное меню > Редактор мнемосхем > Активные мнемосхемы и указав путь к файлу на диске.

Важно

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

Изменение положения и размера компонентов

Компоненты выбираются щелчком мыши по компоненту на мнемосхеме или в окне структуры. Чтобы выбрать несколько компонентов, зажмите клавишу Ctrl и выберите компоненты левой кнопкой мыши.

Выбранные компоненты перемещаются путём перетаскивания мышью или с помощью клавиатуры:

  • клавиши стрелок перемещают выбранные компоненты на размер сетки;
  • если зажать Ctrl, клавиши стрелок перемещают компоненты на 1 пиксель;
  • если зажать Shift, клавиши стрелок изменяют размеры компонентов.

Шаблоны мнемосхем

Один и тот же файл мнемосхемы *.mim может быть использован для создания нескольких представлений-мнемосхем, каналы и заголовок которых отличаются от исходной. Такой файл называется шаблоном мнемосхемы.

Чтобы использовать мнемосхему как шаблон, нужно в таблице Представления задать поле Аргументы. Пример аргументов представления: cnlOffset=100&titleCompID=1, где
cnlOffset - смещение номеров каналов,
titleCompID - идентификатор текстового компонента для вывода заголовка.

Аргументы применяются на стороне сервера при загрузке представления. Смещение номеров каналов выполняется, если каналы для компонента указаны явно, а номера объекта и устройства в свойствах компонента равны 0. Текст заголовка для мнемосхемы, работающей на основе шаблона, берётся из поля Заголовок таблицы Представления.