Мнемосхемы
Мнемосхема – это графический интерфейс оператора, представляющий собой схематическое изображение технологического процесса или объекта управления в реальном времени. Она отображает текущее состояние оборудования, значения параметров и взаимосвязи между элементами системы с помощью условных обозначений и анимированных элементов.
В терминах 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. Созданный файл отобразится в проводнике проекта.
После того, как файл представления создан, откройте его двойным щелчком в веб-браузере в Редакторе мнемосхем. Приложение Вебстанция должно быть установлено и запущено на том же компьютере, на котором работает приложение Администратор.
Компоненты
Компонент – это интерактивный графический объект мнемосхемы, который динамически отображает состояние конкретного устройства или параметра в реальном времени и позволяет на него воздействовать. Это "кирпичик", из которого строится мнемосхема.
Компоненты в Редакторе мнемосхем разделены на группы в зависимости от того, в каком плагине они реализованы. Компоненты из группы Стандартные реализованы в плагине Мнемосхемы. Компоненты из групп Основные и Дополнительные реализованы в плагинах с соответствующими названиями.
Таблица ниже содержит краткое описание компонентов.
| Компонент | Описание |
|---|---|
| Стандартные компоненты | |
| Панель | Предназначена для размещения дочерних компонентов с целью группироваки. Может быть вложена одна в другую. |
| Рисунок | Отображает рисунок. Рисунок может быть статическим или переключаться в зависимости от заданных условий. Рекомендуемый формат изображений – 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 |
| Основной цвет | Строка | |
| Второй цвет | Строка | |
| Цвет фона | Строка |
Привязка свойств компонента работает по-разному в зависимости от того, какое свойство из категории Данные задано:
- Задан Номер объекта. В поле Источник данных в привязке содержится часть кода канала. Приложение определяет номер канала так: к коду объекта присоединяется строка из источника данных, и канал ищется по полученному коду среди каналов заданного объекта.
- Задан Номер устройства. В поле Источник данных в привязке содержится код тега. Номер канала определяется по номеру устройства и коду тега.
- Задан Входной канал. Если номер объекта или устройства не заданы, источник данных в привязке должен содержать конкретный номер канала.
Для некоторых свойств привязка к данным недоступна. Это свойства из категорий Данные и Проектирование, скрипты. Такие свойства отмечены серым цветом в диалоге выбора свойств.
Привязка свойств по умолчанию
Многие компоненты поддерживают упрощённую привязку свойств по умолчанию. Если задано свойство Входной канал, компонент может неявно привязать свои свойства к данным этого канала. Если привязка какого-либо свойства компонента задана явно, то для данного свойства привязка по умолчанию не создаётся.
Например, если задать входной канал для компонента типа Текст, то его текст и цвет будут отображаться в соответствии со значением и статусом канала. Значение выводится с размерностью. Таким образом, для текстового компонента привязки по умолчанию создаются для свойств Текст и Основной цвет.
Скрипты
Скрипты мнемосхемы и компонентов
Для мнемосхемы, фейсплейтов и всех компонентов доступно свойство Скрипт. Скрипты предназначены для реализации нестандартной функциональности. Если каком-либо пользовательском скрипте содержится ошибка, работоспособность мнемосхемы сохраняется.
Все пользовательские скрипты должны наследоваться от базового класса 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 }
Редактор мнемосхем
Редактор мнемосхем – это плагин, работающий под управлением приложения Вебстанция. Редактор открывает файлы мнемосхем и фейсплейтов, расположенные локально на том же компьютере, на котором установлены приложения Администратор и Вебстанция. Пользователь веб-приложения должен иметь роль Администратор.
В верхней части веб-страницы редактора расположена панель инструментов с кнопками, с помощью которых выполняются основные действия. В левой части находятся инструментальные окна: Компоненты, Структура (рис. 3) и Свойства (рис. 4). В центральной части веб-страницы – редактируемая мнемосхема.
Наиболее удобный способ открыть мнемосхему в редакторе – двойной щелчок по редактируемому файлу в приложении Администратор. Однако можно открыть мнемосхему через веб-приложение, выбрав Главное меню > Редактор мнемосхем > Активные мнемосхемы и указав путь к файлу на диске.
Важно
При передаче проекта на выполнение веб-приложение перезапускается, и открытые мнемосхемы закрываются без сохранения изменений. Эту особенность необходимо учитывать.
Изменение положения и размера компонентов
Компоненты выбираются щелчком мыши по компоненту на мнемосхеме или в окне структуры. Чтобы выбрать несколько компонентов, зажмите клавишу Ctrl и выберите компоненты левой кнопкой мыши.
Выбранные компоненты перемещаются путём перетаскивания мышью или с помощью клавиатуры:
- клавиши стрелок перемещают выбранные компоненты на размер сетки;
- если зажать Ctrl, клавиши стрелок перемещают компоненты на 1 пиксель;
- если зажать Shift, клавиши стрелок изменяют размеры компонентов.
Шаблоны мнемосхем
Один и тот же файл мнемосхемы *.mim может быть использован для создания нескольких представлений-мнемосхем, каналы и заголовок которых отличаются от исходной. Такой файл называется шаблоном мнемосхемы.
Чтобы использовать мнемосхему как шаблон, нужно в таблице Представления задать поле Аргументы. Пример аргументов представления: cnlOffset=100&titleCompID=1, где
cnlOffset - смещение номеров каналов,
titleCompID - идентификатор текстового компонента для вывода заголовка.
Аргументы применяются на стороне сервера при загрузке представления. Смещение номеров каналов выполняется, если каналы для компонента указаны явно, а номера объекта и устройства в свойствах компонента равны 0. Текст заголовка для мнемосхемы, работающей на основе шаблона, берётся из поля Заголовок таблицы Представления.