OpenSCADAWiki: Doc/ Quick Start
 
English (1 Kb) English version
Ukrainian (1 Kb) Українська версія

Быстрый старт

Автор: Роман Савоченко, Максим Лысенко
Статус: Публикация

Contents Быстрый старт

Введение

Открытая система Open SCADA является предельно модульной, гибкой и многофункциональной SCADA-системой. Как следствие этого первое знакомство с Open SCADA может быть достаточно сложным по причине малых шансов совпадения предыдущего опыта пользователя или полного его отсутствия, с подходами работы в Open SCADA. Однако, в значительной степени это только первое впечатление, поскольку вся мощь Open SCADA оказывается на ладони у пользователя, от изобилия которой пользователь может растеряться, и ему могут понадобиться значительные усилия для отбора функций, нужных в решении его задачи.

По этой причине и для наглядного представления общей концепции работы в Open SCADA создан данный документ. Документ в достаточно краткой и наглядной форме представляет путь от запуска Open SCADA до создания элементов пользовательского интерфейса на реальных примерах. Кроме того, документ содержит раздел с рецептами по конфигурации, реализации и решению типовых задач пользователя.

Документ не содержит детального описания концепции и глубокого погружения в детали Open SCADA, а предоставляет ссылки на документы Open SCADA, содержащие такую информацию.

Описание документа ведётся синхронно с реализацией примеров на демонстрационной базе данных (БД), модели АГЛКС. Следовательно, пользователь должен получить дистрибутив Open SCADA с этой БД, для наглядного изучения и опробования примеров.

1. Термины, определения и аббревиатуры

АРМ (аббревиатура) - Автоматизированное Рабочее Место. Обычно представляет из себя системный блок вычислительной системы, дисплей, манипулятор «мышь» иногда с клавиатурой, и другое периферийное оборудование, которое служит для визуального представления данных технологического процесса, а также выдачи управляющих воздействий на ТП.

Блокировка (термин) – условная граница технологического параметра, по преодолению которой выполняются предустановленные алгоритмом действия по предотвращению аварии. В некоторых режимах ТП (пуск) в соответствии с регламентом может быть необходимо отключение блокировки (деблокирование).

Деблокирование (термин) – процесс отключения блокировки на время работы ТП в режимах, для которых в регламенте предусмотрена данная операция. Внимание, деблокирование технологических параметров является строго отчётной операцией и должно производится оперативным персоналом в соответствующем порядке.

Квитация (термин) – процесс подтверждения факта того, что оперативный персонал обратил внимание на нарушение в работе ТП. Обычно этот процесс подразумевает принятие мер оператором для устранения нарушения и нажатие соответствующей кнопки для прекращения сигнализации.

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

Сигнализация (термин) – процесс уведомления оперативного персонала о нарушении технологического процесса или работы оборудования автоматизации. Способы сигнализации могут быть различных типов воздействия на органы чувств человека с целью привлечения внимания. Часто предусматриваются следующие типы сигнализации:

ТП (аббревиатура) - Технологический Процесс. Весь комплекс технологического оборудования производственного процесса.

УСО (аббревиатура) – Устройство Сопряжения с Объектом. Ряд устройств или модулей ПЛК, к которым непосредственно подключаются сигналы с датчиков ТП для последующего преобразования из аналогового в цифровой вид и обратно. Преобразование осуществляется с целю последующей обработки значений технологических параметров в ПЛК.

Уставка сигнализации (термин) - условная граница значения технологического параметра, преодоление которой считается нештатной ситуацией. Обычно предусматриваются следующие границы:

SCADA (аббревиатура-ан.) - Supervisory Control And Data Acquisition (Диспетчерская система управления и сбора данных). Программное обеспечение, выполняющее комплекс задач по сбору данных ТП, их архивирование и представление, а также выдачу управляющих воздействий оператором в ручном режиме.

2. Установка и запуск

Установку дистрибутива Open SCADA можно осуществить двумя способами. Первый и простой способ - это получить готовые пакеты для используемого дистрибутива ОС Linux. Второй - собрать систему Open SCADA из исходных текстов. В целом процедура установки сильно зависит от используемого дистрибутива Linux и исчерпывающе её описать в данном руководстве не представляется возможным! Поэтому может понадобиться глубокое знакомство с механизмами установки ПО выбранного дистрибутива Linux в его документации.

В случае отсутствия у пользователя достаточно глубоких знаний и умений в выбранном дистрибутиве Linux, настоятельно рекомендуется выбирать дистрибутив Linux по критерию наличия для него пакетов системы Open SCADA в репозиториях дистрибутива, что позволит и гарантирует простейшую и безпроблемную установку!

Если у пользователя вызывает затруднение установка не только Open SCADA, но и дистрибутива Linux, то на первое время он может воспользоваться "живым" дистрибутивом Linux, с установленной и готовой для работы и изучения демонстрацией Open SCADA. На данный момент доступны "живые" сборки на основе дистрибутива ALTLinux в виде CD и Flash-образов, на странице: http://oscada.org/ru/glavnaja/zagruzit. Детальнее смотрите в разделе "Рецепты".

Внимание! Динамическая модель компрессорной станции, на 6 газовых компрессоров, которая лежит в основе демонстрационной БД, требует значительных вычислительных ресурсов, а именно процессора с частотой более 1 ГГц. Данные ресурсы требуются именно для динамической модели и не являются общим показателем ресурсоёмкости программы в конечных задачах!

2.1. Установка Open SCADA из готовых пакетов

Установка Open SCADA из готовых пакетов, в свою очередь, может осуществляться двумя методами. Первый — простейший, когда пакеты Open SCADA уже присутствуют в официальных или дополнительных репозиториях используемого дистрибутива ОС Linux, и установка их — вопрос запуска типовой программы управления пакетами дистрибутива с последующим выбором пакетов Open SCADA. Второй подразумевает получение пакетов Open SCADA и установку их вручную.

На данный момент пакеты системы Open SCADA можно встретить в репозиториях таких дистрибутивов ОС Linux: ALTLinux и дистрибутивах, основанных на пакетной базе Fedora.

Проверить на наличие пакетов Open SCADA в репозиториях используемого дистрибутива Linux, а также загрузить пакеты Open SCADA для ручной установки можно на странице загрузки официального сайта Open SCADA (http://oscada.org/ru/zagruzka). Внимание! Загружать пакеты нужно непосредственно для версии используемого дистрибутива, иначе при установке могут возникнут неразрешимые проблемы с зависимостями.

Описание установки из репозитория выбранного дистрибутива Linux пропустим и отошлём читателя к документации соответствующего дистрибутива.

Для ручной установки пакетов Open SCADA загрузим их из официального сайта или другого источника. Загрузить можно два набора пакетов.

Первый набор представлен девятью пакетами:

Второй набор представлен порядка пятидесятью пакетами, с выделением модулей Open SCADA в отдельные пакеты:

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

При установке из репозитория выбираем только пакет "openscada-Model.AGLKS". Всё остальное, в соответствии с зависимостями, будет выбрано и установлено автоматически.

Ручную установку RPM-пакетов первого набора можно осуществить командой, предварительно сменив рабочую директорию на директорию с пакетами:
# rpm -i openscada-LibDB.Main-0.8.0-alt1.noarch.rpm openscada-LibDB.VCA-0.8.0-alt1.noarch.rpm openscada-Model.AGLKS-0.8.0-alt1.i586.rpm openscada-0.8.0-alt1.i586.rpm


Ручную установку DEB-пакетов первого набора можно осуществить командой, предварительно сменив рабочую директорию на директорию с пакетами:
# dpkg -i openscada-libdb.main-0.8.0-1_all.deb openscada-libdb.vca-0.8.0-1_all.deb openscada-model.aglks-0.8.0-1_all.deb openscada_0.8.0-1_i386.deb


В процессе выполнения установки могут возникнуть ошибки, связанные с неудовлетворёнными зависимостями. При ручной установке из пакетов удовлетворять их нужно будет вручную, подобно установке пакетов Open SCADA, или через менеджер пакетов дистрибутива Linux. Детальнее ознакомиться с процессом установки ПО в RPM-пакетах можно по ссылке: http://skif.bas-net.by/bsuir/admin/node51.html.

2.2. Установка из исходных текстов

Если нет возможности получить готовые пакеты Open SCADA для выбранного дистрибутива, то остаётся только вариант сборки Open SCADA из исходных текстов. Процесс сборки Open SCADA детально описан в руководстве по ссылке http://wiki.oscada.org/Doc/SborkaIzIsxodnikov. Однако нужно иметь в виду, что если Вам удалось собрать Open SCADA из исходных текстов, то это руководство не для Вас и Вы, скорее всего, можете легко освоить базовую документацию Open SCADA (http://wiki.oscada.org/Doc/OpisanieProgrammy).

Данный раздел приведён здесь только для полноты и целостности рассмотрения вопроса, поскольку требование квалификационного уровня пользователя для этого раздела значительно выше уровня документа в целом!

3. Первичная конфигурация и запуск

После корректной установки Open SCADA с БД модели "АГЛКС" никакой предварительной настройки не требуется. Если нужно выполнить особую настройку, которая отличается от базовой, то воспользуйтесь документом описания программы Open SCADA по ссылке: http://wiki.oscada.org/Doc/OpisanieProgrammy#h827-1.

Внимание! Демонстрация Open SCADA на основе БД модели "АГЛКС" это не то же что обычно предоставляют коммерческие производители ПО с целью продемонстрировать возможности, но исключить или усложнить нормальную работу путём ограничения функций. Демонстрация Open SCADA это полно-функциональная система, предоставляющая примеры реализации и настройки различных компонентов. На основе БД модели "АГЛКС" и других моделей Open SCADA можно легко создавать собственные проекты, используя предоставленные наработки.

Запустить на исполнение Open SCADA с БД модели "АГЛКС" можно из меню окружения рабочего стола в разделе "Графика", пункт "Модель 'АГЛКС' на открытой системе визуального контроля и сбора данных" с характерной иконкой (рис.3.1).

Пункт меню окружения рабочего стола для запуска демонстрации OpenSCADA. (359 Kb)
Рис. 3.1. Пункт меню окружения рабочего стола для запуска демонстрации Open SCADA.


Запуск также можно осуществить из консоли командой:
$ openscada_demo


Внимание! При запуске Open SCADA из консоли, с помощью команды "$ openscada", осуществляется запуск без конфигурации, в результате которого запрашивается пользователь и пароль для входа. По умолчанию в системе Open SCADA предусмотрен привилегированный пользователь "root" (пароль "openscada") и непривилегированный "user" (пароль "user"), которые не имеют никакого отношения к пользователям операционной системы. Запуск Open SCADA таким образом имеет смысл только от суперпользователя ОС ("root") или в режиме демона.

После запуска получим окно графического конфигуратора системы Open SCADA — QTCfg (рис.3.2) с открытой корневой страницей. Демонстрационная БД специально настроена так, что бы первым при запуске появлялось окно конфигуратора. В дальнейшем можно открыть окно разработки графических интерфейсов пользователя, а также запустить проект пользовательского интерфейса на исполнение.

OpenSCADA конфигуратор – QTCfg, корневая страница. (124 Kb)
Рис. 3.2. Open SCADA конфигуратор - QTCfg, корневая страница.


Конфигуратор Open SCADA является основным и достаточным средством для конфигурации любого компонента системы. Как и многие компоненты Open SCADA, конфигуратор реализован в виде модуля. Кроме конфигуратора QTCfg могут быть доступны другие конфигураторы, выполняющие те же функции, но реализованные на основе других технологиях. Например, таковыми являются Web-конфигураторы: WebCfg и WebCfgD.

Все действия в дальнейшем мы будем рассматривать только в конфигураторе QTCfg, хотя их можно будет выполнить и в других конфигураторах.

Структуру интерфейса окна конфигуратора можно детально рассмотреть по ссылке http://wiki.oscada.org/Doc/QTCfg. Для нас же сейчас более важно рассмотреть все доступные интерфейсы Open SCADA, поэтому нажмём предпоследнюю с верху иконку на панели инструментов после чего откроется окно разработки пользовательского интерфейса (рис.3.3).

Окно разработки пользовательского интерфейса. (44 Kb)
Рис. 3.3. Окно разработки пользовательского интерфейса.


Далее можем запустить проект "AGLKS" на исполнение. Для этого выбираем его в перечне проектов и запускаем путём нажатия на первую слева иконку на панели инструментов или в контекстном меню, в результате чего получим окно пользовательского интерфейса (рис.3.4).

Окно пользовательского интерфейса проекта "AGLKS". (106 Kb)
Рис. 3.4. Окно пользовательского интерфейса проекта "AGLKS".


Построение и исполнение пользовательских интерфейсов осуществляется модулем Vision подсистемы "Пользовательские интерфейсы". Кроме этого модуля могут быть доступны иные модули визуализации. Например, Open SCADA предоставляет модуль WebVision, который позволяет исполнять проекты, ранее разработанные в интерфейсе модуля Vision, посредством Web-технологий и стандартного Web-браузера. Все действия в дальнейшем мы будем рассматривать только в интерфейсе модуля Vision.

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

Закроем окно исполнения проекта "AGLKS" и окно разработки пользовательского интерфейса для подготовки к изучению следующих разделов.

Весь процесс конфигурации SCADA-системы для выполнения функций верхнего уровня можно условно разделить на два этапа:

3.1. Создание пользовательского проекта с чистого листа

Все действия в последующих разделах описаны в окружении БД модели "АГЛКС" (демонстрация) с целью как можно более полного и наглядного представления процесса конфигурации, с возможностью подключения к реальному-живому источнику данных, реализованному на основе модели технологического процесса (ТП) газо-компрессорной станции. Однако нужно несколько отвлечься и описать процесс создания пользовательского проекта с чистого листа, что очевидно является Вашей конечной целью. На основе нового пользовательского проекта можно выполнять все описанные ниже действия с БД модели "АГЛКС", но с оглядкой на источники данных собственного, нового, проекта.

Для запуска чистого пользовательского проекта в меню окружения рабочего стола, разделе "Графика", предусмотрен пункт "Открытая SCADA система" с характерной иконкой (рис.3.1.1).

Пункт меню окружения рабочего стола для запуска чистого пользовательского проекта. (308 Kb)
Рис. 3.1.1. Пункт меню окружения рабочего стола для запуска чистого пользовательского проекта.


Запуск также можно осуществить из консоли командой:
$ openscada_start


Чистый пользовательский проект не содержит никакой специфической для конкретного проекта конфигурации и настроен на работу в директории пользователя "/.openscada", с основной SQLite БД в файле "DATA/MainSt.db". Создавать сложный проект SCADA-системы проще с использованием библиотек функций API объектной модели системы OpenSCADA, библиотек графических элементов, а так-же других библиотек Open SCADA. Для использования билиотек Open SCADA, хранящихся в файле БД, их нужно подключить, добавить в объекте модуля БД "SQLite" (рис.3.1.2), установить адрес и кодировку БД в "UTF-8" (рис.3.1.3).

Добавление объекта БД "SQLite". (101 Kb)
Рис. 3.1.2. Добавление объекта БД "SQLite".


Объект БД "SQLite" библиотеки OpenSCADA. (100 Kb)
Рис. 3.1.3. Объект БД "SQLite" библиотеки Open SCADA.


Дистрибутивы Open SCADA поставляются с рядом библиотек в виде файлов БД "SQLite" (таблица 3.1), которые, при запуске чистого пользовательского проекта, помещаются в директорию "Libs DB/". Согласно этому списку добавляем их в объекте модуля БД "SQLite", устанавливаем им флаг "Включать" и сохраняем. Далее, для загрузки содержимого библиотек можно включить БД и нажать кнопку "Загрузить систему из этой БД", однако при загрузке ряд новых объектов не включатся поэтому проще завершить чистый пользовательский проект и запустить по новой.

Таблица 3.1. Библиотеки Open SCADA в составе дистрибутива.
ID Имя Адрес Языки/кодировка
Oscada Libs Библиотеки функций ./LibsDB/OscadaLibs.db EN,RU,UK/UTF-8
vcaBase СВУ: Главные библиотеки ./LibsDB/vcaBase.db EN,RU,UK/UTF-8
vcaTest СВУ: Тесты ./LibsDB/vcaTest.db EN,RU,UK/UTF-8
vcaElectroEls СВУ: Библиотека электроэлементов мнемосхем пользовательского интерфейса ./LibsDB/vcaElectroEls.db EN,RU,UK/UTF-8

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

4. Работа с источниками данных

Основной функцией любой SCADA-системы является работа с источниками данных реального времени, а именно опрос программируемых логических контроллеров (ПЛК) и простых модулей УСО. Детальнее ознакомиться с этим вопросом можно в документе "Сбор данных в Open SCADA" по ссылке: http://wiki.oscada.org/Doc/DAQ.

Поддержка того или иного источника данных зависит от протокола или API, по которому источник свои данные предоставляет, и наличия для протокола/API модуля подсистемы "Сбор данных" в Open SCADA. Общий перечень модулей подсистемы "Сбор данных" и документацию по ним можно получить по ссылке http://wiki.oscada.org/Doc#h79-4, в соответствующем разделе.

Полученные из источников данные впоследствии архивируются, обрабатываются и используются для визуального представления оператору ТП.

4.1. Опрос данных аппарата ТП

В качестве примера рассмотрим и создадим опрос данных для аппарата воздушного холодильника. Демонстрационная БД содержит модель реального времени ТП компрессорной станции из шести компрессоров. Данные для двух аппаратов воздушных холодильников "AT101_1" и "AT101_2" компрессорной станции "KM101" доступны по протоколу Mod Bus / TCP на порту 10502.

Мы создадим контроллер опроса по протоколу Mod BUS / TCP и получим эти данные, тем самым фактически реализовав задачу опроса реальных данных, поскольку от настоящего внешнего устройства наша конфигурация будет отличаться адресом этого устройства, адресами регистров Mod BUS и возможно интерфейсом взаимодействия.

Для опроса данных по протоколу "Mod BUS" в Open SCADA присутствует модуль "Mod BUS" подсистемы "Сбор данных". Для добавления нового контроллера откроем в конфигураторе страницу модуля ModBUS ("Демо станция"->"Сбор данных"->"Модуль"->"Mod BUS") и в контекстном меню пункта "Mod BUS" нажмём "Добавить" (рис.4.1.1).

Добавление контроллера в модуле "ModBUS", подсистемы "Сбор данных". (80 Kb)
Рис. 4.1.1. Добавление контроллера в модуле "Mod BUS" подсистемы "Сбор данных".


В результате появится окно диалога (рис.4.1.2) с предложением ввести идентификатор и имя нового контроллера. Идентификаторы любых объектов в Open SCADA ограничены размером в 20 символов и их рекомендуется вводить символами английского алфавита и цифрами. Кроме этого, начинать идентификатор желательно с буквы. Это связано с тем, что идентификатор впоследствии может использоваться в скриптах. Имена объектов Open SCADA ограничены размером в 50 символов и могут вводиться любыми символами. Имена обычно используются для отображения. Если поле имени оставить пустым, то вместо него для отображения будет использоваться идентификатор. Введём идентификатор "KM101" и имя "KM 101".

Диалог для указания идентификатора и имени нового объекта. (14 Kb)
Рис. 4.1.2. Диалог для указания идентификатора и имени нового объекта.


После подтверждения у нас появится объект нового контроллера. Выберем его в конфигураторе и познакомимся с настройками (рис.4.1.3).

Главная вкладка настройки объекта контроллера модуля ModBUS. (120 Kb)
Рис. 4.1.3. Главная вкладка настройки объекта контроллера модуля Mod BUS.


Настройки объекта контроллера, как правило, специфичны для разных типов источников данных и протоколов. Детально ознакомиться с настройками объекта контроллера модуля ModBUS можно по ссылке http://wiki.oscada.org/Doc/ModBus#h592-14. Мы же рассмотрим общие и ключевые настройки для модуля ModBUS.

Перед конфигурацией связи со своим контроллером предварительно необходимо, из документации на контроллер, выяснить настройки его сетевых интерфейсов и протоколов, а так-же, в случае использования "Mod Bus", получить таблицу назначения внешних и внутренних сигналов контроллера на номера регистров "Mod Bus".

С помощью страницы объекта контроллера в разделе "Состояние" можно в первую очередь оценить текущее состояние объекта контроллера и реальное состояние связи с физическим контроллером, а также оперативно его менять. Так, поле "Статус" содержит код ошибки и текстовое описание текущего состояния связи с контроллером, в нашем случае объект контроллера выключен. Мы его можем включить и запустить, установив флажки напротив соответствующих полей. Включенный объект контролера инициализирует объекты параметров, запущенный же запускает задачу опроса и предоставляет возможность передавать данные в контроллер через атрибуты параметров. Поле БД указывает на то, в какой БД хранится конфигурация данного объекта. Нас устроит хранение в главной БД, т.е. оставим по умолчанию.

В разделе "Конфигурация" непосредственно содержится конфигурация объекта контроллера:

Сохраним наши изменения в БД, нажав вторую слева иконку на панели инструментов.

Теперь таким же образом, как и объект контроллера, создадим исходящий транспорт в модуле "Sockets" ("Демо станция"->"Транспорты"->"Сокеты") посредством контекстного меню (рис.4.1.4) и назовём транспорт так же, как контроллер: "KM101" и имя "KM 101". Обратите внимание, что в поле "Тип элемента" диалога ввода идентификатора и имени (рис.4.1.2) нужно выбрать "Выходной транспорт"!

Добавление исходящего транспорта в модуле "Sockets", подсистемы "Транспорты". (80 Kb)
Рис. 4.1.4. Добавление исходящего транспорта в модуле "Sockets" подсистемы "Транспорты".


Страница конфигурации полученного исходящего транспорта приведена на рис.4.1.5. Эта страница также содержит раздел состояния и оперативного управления. В поле "Статус" содержится текстовое описание текущего состояния транспорта. Мы его можем запустить на исполнение, установив флажок напротив соответствующего поля. Выполняющийся объект транспорта инициирует соединение с внешним узлом. Поле БД указывает на то, в какой БД хранится конфигурация данного объекта. Нас устроит хранение в главной БД.

Страница конфигурации исходящего транспорта модуля "Sockets" подсистемы "Транспорты". (71 Kb)
Рис. 4.1.5. Страница конфигурации исходящего транспорта модуля "Sockets" подсистемы "Транспорты".


В разделе "Конфигурация" непосредственно содержится конфигурация объекта транспорта:

Транспорты других типов создаются подобным к рассмотренному для "Sockets" способу, а конфигурация их отличается обычно только форматом записи адреса и таймаутов. В случае с транспорта модуля "Serial" в адресе указывается путь к последовательному устройству, скорость, и формат. Для переходников USB->Serial этот адрес нужно узнать в операционной системе, например, консольной командой "$ dmesg", сразу после подключения переходника.

Сохраним объект транспорта и вернёмся к конфигурационному полю "Адрес транспорта" объекта контроллера, где выберем адрес "Sockets.KM101". На этом настройка объекта контроллера закончена. Следующим этапом является конфигурация и выбор тех данных, которые нужно опрашивать из контроллера. Эта настройка производится путём создания объекта "Параметр" контроллера. Объект "Параметр" позволяет описать перечень данных, получаемых у контролера и передать их в окружение Open SCADA.

Для добавления нового объекта параметра откроем в конфигураторе страницу нашего объекта контроллера и в контекстном меню пункта "KM101" нажмём "Добавить". Объект параметра назовём: "AT101_1" и имя "AT 101_1".

Страница конфигурации полученного параметра приведена на рис.4.1.6. Эта страница содержит раздел состояния и оперативного управления. В поле "Тип" содержится идентификатор типа параметра, в нашем случае тип "Стандартный" (std). Параметр мы можем включить, установив флажок напротив соответствующего поля. Включенный параметр участвует в процессе обмена с контроллером.

Страница конфигурации параметра контроллера "ModBUS". (99 Kb)
Рис. 4.1.6. Страница конфигурации параметра контроллера "Mod BUS".


В разделе "Конфигурация" непосредственно содержится конфигурация объекта параметра:
R:100:r:Ti:T вход
R:101:r:To:T выход
R:102:rw:Cw:Производ.

Таким же образом создадим второй параметр: "AT101_2" с именем "AT 101_2". Перечень атрибутов для него установим в:
R:103:r:Ti:T вход
R:104:r:To:T выход
R:105:rw:Cw:Производ.


Сохраним оба объекта параметра. Теперь мы можем включить и запустить наш контроллер для инициации обмена. Для этого вернёмся на страницу нашего объекта контроллера и в разделе "Состояние" установим флажок "Запущен". Если мы ничего не пропустили, то обмен успешно запустится и в поле "Статус" мы получим подобное представленному на рис.4.1.7.

Страница объекта контроллера при успешном обмене с физическим контроллером. (127 Kb)
Рис. 4.1.7. Страница объекта контроллера при успешном обмене с физическим контроллером.


В случае успешного обмена с физическим контроллером мы получим описанные данные контроллера в инфраструктуре Open SCADA. Увидеть эти данные можно на вкладке "Атрибуты" наших параметров AT101_1 (рис.4.1.8) и AT101_2. Поскольку опрос производится регулярно и с периодичностью в секунду, то мы можем наблюдать их изменение, нажимая кнопку "Обновить текущую страницу" на панели инструментов.

Страница описанных атрибутов параметра AT101_1. (56 Kb)
Рис. 4.1.8. Страница описанных атрибутов параметра AT101_1.


На этом конфигурация сбора данных считается законченной.

4.2. Обработка полученных данных ТП

Часто встречается ситуация, когда исходные данные, полученные из источника данных, являются "сырыми", т.е. неготовыми или неудобными для визуального представления, поэтому необходимо выполнить эту подготовку. В нашем примере мы получили данные, которые поступают в коде от шкалы внутри контроллера. Наша задача — выполнить вычисление реальных значений из полученных данных. Обработку данных в Open SCADA можно делать, как непосредственно при визуализации, так и в подсистеме "Сбор данных". Однако, смешивание процесса визуализации и обработки исходных данных вносит путаницу в конфигурацию, а также делает полученные образы визуализации мало пригодными для повторного использования. По этой причине выполним подготовку данных в подсистеме "Сбор данных".

Вычисления в подсистеме "Сбор данных" выполняются посредством модуля логического уровня LogicLev и шаблонов параметров подсистемы "Сбор данных". Детальнее ознакомиться с концепцией "Логического уровня" можно по ссылке http://wiki.oscada.org/Doc/DAQ#h831-9.

Для выполнения вычислений в модуле логического уровня нужно предварительно создать шаблон параметра подсистемы "Сбор данных". Для этого откроем страницу библиотеки шаблонов "Базовые шаблоны" ("Демо станция"->"Сбор данных"->"Библиотека шаблонов"->"Базовые шаблоны") и посредством контекстного меню создадим объект шаблона "airCooler" c именем "Воздушный холодильник". Страница конфигурации полученного объекта представлена на рис.4.2.1. Эта страница содержит раздел состояния и оперативного управления. Мы можем сделать шаблон доступным, установив флажок напротив соответствующего поля. Доступные шаблоны могут подключаться к параметрам сбора данных, а параметры будут выполнять вычисления по этому шаблону. В поле "Использовано" указывается число объектов, которые используют данный шаблон для вычисления образа параметра. В разделе "Конфигурация" содержаться только уже знакомые нам поля конфигурации.

Страница конфигурации объекта шаблона. (67 Kb)
Рис. 4.2.1. Страница конфигурации объекта шаблона.


Основная конфигурация и формирование шаблона параметра сбора данных осуществляется во вкладке "IO" (рис.4.2.2) шаблона. Детальное описание процесса формирования шаблона можно получить по ссылке: http://wiki.oscada.org/Doc/OpisanieProgrammy#h827-6.

Создадим в шаблоне два свойства для входов ("Ti Cod", "To Cod"), два для выходов ("Ti","To") и один прозрачный ("Cw"). Свойствам "Ti Cod", "To Cod" и "Cw" установим флаг "Конфигурация" в "Связь", что позволит к ним подвязывать "сырой" источник. Параметрам "Ti" и "To" установим флаг "Атрибут" в "Только чтение", "Cw" в "Полный доступ" для формирования трёх атрибутов: два только на чтение и один на полный доступ, у результирующего параметра сбора данных.

Язык программы установим в "Java Like Calc.JavaScript", а программу в:
Ti=150*TiCod/65536;
To=100*ToCod/65536;


Вкладка "IO" страницы конфигурации объекта шаблона. (127 Kb)
Рис. 4.2.2. Вкладка "IO" страницы конфигурации объекта шаблона.


Полученный шаблон сохраним и установим флаг доступности.

Теперь создадим объекты контроллера и параметров в модуле "Logic Lev" подсистемы "Сбор данных". Контроллер и его параметры в модуле "Logic Lev" создаются идентично ранее созданным в модуле "Mod BUS" на странице: "Демо станция"->"Сбор данных"->"Модуль"->"Логический уровень". Объект контроллера и параметров назовём идентично объектам в модуле "Mod BUS".

Объект контроллера модуля "Logic Lev" (рис.4.2.3) не имеет специфических настроек и установленные по умолчанию можно не трогать, кроме поля "Планирование вычислений", которое установим в одну секунду.

Главная вкладка настройки объекта контроллера модуля LogicLev. (110 Kb)
Рис. 4.2.3. Главная вкладка настройки объекта контроллера модуля Logic Lev.


Объект параметра контроллера модуля "Logic Lev" (рис.4.2.4) из специфических настроек имеет только "Тип", где нужно установить "Логический" (std), а в поле "Шаблон параметра" выбрать адрес созданного нами шаблона.

Страница конфигурации параметра контроллера "LogicLev". (86 Kb)
Рис. 4.2.4. Страница конфигурации параметра контроллера "Logic Lev".


Кроме базовой конфигурации параметра нужно сконфигурировать подключенный шаблон (рис. 4.2.5). Вкладка конфигурации шаблона появляется в режиме параметра "Включен". Включить параметр можно, включив предварительно контроллер. Флаг "Показывать только атрибуты" позволяет устанавливать отдельно каждую связь (рис.4.2.6). Поскольку мы в шаблоне предусмотрительно описали формат связей в виде "Параметр|Ti", то все три связи мы можем установить просто указав адрес к параметру в контроллере "Mod Bus". Укажем адреса "Mod Bus.KM101.AT101_1" и "Mod Bus.KM101.AT101_2" в соответствующих параметрах.

Нужно отметить, что все поля ввода адресов объектов в Open SCADA снабжены механизмом набора адреса. Данный механизм подразумевает поэлементный выбор, в процессе которого происходит движение в глубь. Например, при наборе адреса "Mod Bus.KM101.AT101_1" вначале мы будем иметь возможность выбора типа источника данных, в числе которых будет "Mod Bus". Выбрав пункт "Mod Bus" в перечень доступных элементов для выбора добавятся контроллеры модуля "Mod Bus", в числе которого будет "Mod Bus.KM101". Выбор элемента "Mod Bus.KM101" добавит в список параметры контроллера и т.д. до конечного элемента в соответствии с иерархией объектов (http://wiki.oscada.org/Doc/OpisanieProgrammy#h827-6). Для возможность возврата на уровни выше в список выбора вставляются элементы всех вышестоящих уровней от текущего значения адреса.

Вкладка "Конфигурация шаблона" cтраницы параметра контроллера "LogicLev". (74 Kb)
Рис. 4.2.5. Вкладка "Конфигурация шаблона" cтраницы параметра контроллера "Logic Lev".


Вкладка "Конфигурация шаблона" cтраницы параметра контроллера "LogicLev" с разворотом связей. (79 Kb)
Рис. 4.2.6. Вкладка "Конфигурация шаблона" страницы параметра контроллера "Logic Lev" с разворотом связей.


Сохраним созданные объекты контроллера и параметров. После этого запустим контроллер на исполнение, установив флаг контроллера "Запущен" в разделе "Состояние". Если мы ничего не пропустили, то вычисление успешно запустится и в поле "Статус" мы получим подобное представленному на рис.4.2.7.

Страница объекта контроллера при успешном вычислении контроллера в модуле "LogicLev". (114 Kb)
Рис. 4.2.7. Страница объекта контроллера при успешном вычислении контроллера в модуле "Logic Lev".


В случае успешной обработки кода шаблона в параметрах мы получим обработанные данные в инфраструктуре Open SCADA. Увидеть эти данные можно на вкладке "Атрибуты" наших параметров AT101_1 (рис.4.2.8) и AT101_2.

Страница атрибутов параметра AT101_1 модуля "LogicLev". (66 Kb)
Рис. 4.2.8. Страница атрибутов параметра AT101_1 модуля "Logic Lev".


На этом конфигурация обработки данных считается законченной.

4.3. Типизированные параметры источников данных

В предыдущих разделах был описан механизм подключения источника данных по объекту аппарата ("Воздушный холодильник"), который предусматривает объединение всех сигналов в одном объекте параметра источника данных. Однако более распространённым подходом является формирование объекта параметра вокруг сигнала, например, "Температура на выходе холодильника AT101_1 (TE1314_1)".

Создание объекта параметра вокруг сигнала позволяет формализовать его описание до шаблонов аналоговых и дискретных сигналов, включив в них всю необходимую обработку, сигнализацию и другую характерную информацию. Для простой конфигурации типизированных аналоговых и дискретных сигналов в библиотеках Open SCADA предусмотрены шаблоны параметров, а многие образы визуального представление адаптированны к работе и связыванию с такими параметрами прямо, без детализации по атрибутам.

Обычно для формирования объекта параметра на основе шаблона используется модуля логического уровня LogicLev, как это было описано в предыдущем разделе. Однако ряд модулей, в том числе и ModBus предоставляют возможность сразу создавать логические параметры, на основе шаблона. Добавим новые объекты параметра, открыв в конфигураторе страницу нашего объекта контроллера "Mod Bus", ранее созданного, и в контекстном меню пункта "KM101" нажмём "Добавить".

Объект аналогового параметра назовём "TE1314_1" и имя "TE1314_1" (рис.4.3.1). Тип параметра установим в "Логический (logic)", шаблон параметра выберем "base.anUnif", установим флажки "Включать" и "Включен". Далее нам нужно настроить шаблон параметра, в появившейся вкладке "Конфигурация шаблона" (рис.4.3.2): поле "Вход" устанавливаем в значение адреса Mod Bus-регистра этого параметра "R:101"; поле "Максимум шкалы модуля" устанавливаем в значение 65535, что соответствует 100 °C. Далее переходим во вкладку "Атрибуты" (рис.4.3.3) и устанавливаем некоторые поля: "Ед. изм" устанавливаем в "град. С"; "Шкала минимум" в "0"; "Шкала максимум" в "100"; "Граница верхняя ав." в "40"; "Граница верхняя пред." в "30". Сохраним объект параметра.

Страница логического параметра "TE1314_1", модуля "ModBus". (82 Kb)
Рис. 4.3.1. Страница логического параметра "TE1314_1", модуля "Mod Bus".


Страница конфигурации шаблона параметра "TE1314_1", модуля "ModBus". (89 Kb)
Рис. 4.3.2. Страница конфигурации шаблона параметра "TE1314_1", модуля "Mod Bus".


Страница атрибутов параметра "TE1314_1", модуля "ModBus". (115 Kb)
Рис. 4.3.3. Страница атрибутов параметра "TE1314_1", модуля "Mod Bus".


Объект дискретного параметра назовём: "KSH102" и имя "КШ102". Тип параметра установим в "Логический (logic)", шаблон параметра выберем "base.digitBlockUnif", установим флажки "Включать" и "Включен". Далее нам нужно настроить шаблон параметра, в появившейся вкладке "Конфигурация шаблона" (рис.4.3.4): поле "Команда 'Открыть'" устанавливаем в значение адреса Mod Bus-бита этого параметра "C:100:rw"; поле "Состояние 'Открыт'" устанавливаем в значение адреса Mod Bus-бита "C:101"; поле "Состояние 'Закрыть'" устанавливаем в значение адреса Mod Bus-бита "C:102"; поле "Время удерж. команды (с)" устанавливаем в 0, поскольку команда не импульсная. Далее переходим во вкладку "Атрибуты" (рис.4.3.5) и удостоверяемся в доступности команды и состояний. Сохраним объект параметра.

Страница конфигурации шаблона параметра "KSH102", модуля "ModBus". (81 Kb)
Рис. 4.3.4. Страница конфигурации шаблона параметра "KSH102", модуля "Mod Bus".


Страница атрибутов параметра "KSH102", модуля "ModBus". (81 Kb)
Рис. 4.3.5. Страница атрибутов параметра "KSH102", модуля "Mod Bus".

4.4. Включение архивирования данных ТП

Во многих задачах требуется ведение истории параметров ТП. Для включения архивирования атрибутов "Ti" и "To" параметров AT101_1 и AT101_2 в ранее созданном контроллере модуля "Logic Lev" достаточно на вкладке "Архивация" страницы параметров выбрать, какие атрибуты архивировать и на каких архиваторах (рис.4.4.1). Выберем архивацию атрибутов "Ti" и "To" в архиваторе "FSArch.1s". Тоже самое можно сделать для атрибута "var" аналогового параметра "Mod Bus.KM101.TE1314_1" и "com" дискретного параметра "Mod Bus.KM101.KSH102".

Вкладка "Архивация" параметра AT101_1 модуля "LogicLev". (70 Kb)
Рис. 4.4.1. Вкладка "Архивация" параметра AT101_1 модуля "Logic Lev".


В результате этой операции будут автоматически созданы объекты архивов для выбранных атрибутов. Например, объект архива для атрибута "Ti" параметра AT101_1 представлен на рис.4.4.2.

Страница объекта архива атрибута "Ti" параметра AT101_1. (134 Kb)
Рис. 4.4.2. Страница объекта архива атрибута "Ti" параметра AT101_1.


Обычно настройки архива менять не нужно, однако, если потребуется особая конфигурация, то её можно сделать на указанной выше странице. Чаще может понадобиться получение информации об архиве. Например, узнать размер архива как по времени, так и на носителе, а также взглянуть на график параметра (рис.4.4.3).

Вкладка "Значения" страницы объекта архива атрибута "Ti" параметра AT101_1. (120 Kb)
Рис. 4.4.3. Вкладка "Значения" страницы объекта архива атрибута "Ti" параметра AT101_1.

5. Формирование визуального представления

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

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

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

И третий уровень предусматривает владение всеми инструментами среды разработки визуальных интерфейсов Open SCADA, включая создание новых комплексных элементов и разработки новых интерфейсов пользователя в проекте.

Все работы над интерфейсом визуализации будем выполнять в окружении модуля "Vision" подсистемы "Пользовательские интерфейсы". Для открытия окна интерфейса "Vision" нажмём вторую иконку справа на панели инструментов конфигуратора. В результате получим окно, ранее изображённое на рис.3.3.

5.1. Добавление шаблонной страницы в проект и подключение динамики

Рассмотрим задачу первого уровня сложности, когда в уже разработанном интерфейсе нужно подключить динамику к шаблонной странице. Понятие "Шаблон страницы" подразумевает страницу на основе которой, путём наследования, может создаваться множество конечных страниц визуализации с индивидуальным перечнем динамики. Примером таких страниц являются: "Группа графиков", "Группа контуров", "Группа обзорных кадров" и "Сводные графики". На рис.5.1.1 представлена шаблонная страница "Группа графиков" в дереве проекта "Группы сигнализаций (шаблон)".

Шаблонная страница "Группа графиков". (63 Kb)
Рис. 5.1.1. Шаблонная страница "Группа графиков".


Шаблонная страница "Группа графиков" предоставляет возможность подключить до восьми сигналов для одновременного их отображения на графике. Элементы отображения значения сверху автоматически скрываются для неустановленных ссылок.

Создадим новую группу графиков "Графики 2" в шаблонном контейнере "Группа графиков" первой группы корневой страницы проекта "Группы сигнализаций (шаблон)". Для этого в контекстном меню пункта "Группа графиков" выберем "Добавить визуальный элемент" (рис.5.1.2). Для ввода идентификатора и имени нового визуального элемента появится диалог их ввода (рис.5.1.3). Введём идентификатор "2" и имя "Графики 2".

Добавление группы графиков "Графики 2". (101 Kb)
Рис. 5.1.2. Добавление группы графиков "Графики 2".


Диалог ввода идентификатора и имени. (15 Kb)
Рис. 5.1.3. Диалог ввода идентификатора и имени.


После подтверждения ввода имени будет создана новая страница. Однако, для её активации нам понадобится её включить. Включить страницу можно в диалоге редактирования свойств страницы (рис.5.1.4). Открыть эту страницу можно посредством выбора пункта меню "Свойства визуального элемента" в контекстном меню вновь созданной страницы. Создать страницу в логическом контейнере, на основе шаблона, можно и простым копированием шаблона внутрь себя.

Диалог редактирования свойств визуального элемента. (30 Kb)
Рис. 5.1.4. Диалог редактирования свойств визуального элемента.


После включения страницы можно приступать к установке связей на созданные в предыдущей главе параметры контроллеров. Для этого, не покидая диалога редактирования свойств вновь созданной страницы (рис.5.1.4), перейдём на вкладку "Связи" (рис.5.1.5). На этой вкладке мы увидим дерево с элементами "el1" ... "el8". Развернув любой из элементов мы увидим ветку "Parameter", вот в ней мы и должны указать или выбрать адрес наших атрибутов "Ti" и "To". Итого заполним четыре элемента. При заполнении элементов часть свойств нужно указывать как постоянные. Например, обязательно нужно указать:

Если заранее предусмотреть наличие атрибутов, указанных нами постоянными в шаблоне параметра контроллера, то можно будет указывать только параметр, а атрибуты расставятся автоматически, что мы можем увидеть, привязав созданный нами ранее типизированный аналоговый параметр "Mod Bus.KM101.TE1314_1".

Вкладка "Связи" диалога редактирования свойств визуального элемента. (86 Kb)
Рис. 5.1.5. Вкладка "Связи" диалога редактирования свойств визуального элемента.


Закончив ввод связей можем проверить что получилось в результате наших усилий. Для этого закроем окно диалога свойств и запустим проект "Группы сигнализаций (шаблон)" на исполнение, про кнопку запуска мы помним из первых глав. Затем выберем графики и переключимся на вторую страницу. При безошибочной конфигурации мы должны увидеть что-то подобное изображённому на рис.5.1.6. Заметьте, что для типизированного параметра, с установленными границами нарушений, выход значения за границы отмечается аварийным цветом. Для того что-бы увидеть выход за границу нарушения Вы можете установить значение производительности вентилятора в 100 (рис.4.2.8).

Созданная группа графиков с четырьмя подключенными сигналами и одним типизированным параметром (58 Kb)
Рис. 5.1.6. Созданная группа графиков с четырьмя подключенными сигналами и одним типизированным параметром.

5.2. Создание нового кадра, мнемосхемы

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

Новые кадры, предназначенные впоследствии для помещения в проект, принято создавать в библиотеке виджетов. Создадим новую библиотеку виджетов "KM101"; выбрав вертикальную вкладку "Виджет" и в контекстном меню окна библиотек виджетов выберем пункт "Новая библиотека" (рис.5.2.1). В диалоге ввода имени укажем идентификатор "KM101" и имя "KM 101", а затем подтвердим.

Добавление новой библиотеки виджетов. (77 Kb)
Рис. 5.2.1. Добавление новой библиотеки виджетов.


Далее добавляем новый кадр "AT101", выбрав пункт "Библиотека: originals"->"Группа элементов" в контекстном меню созданной библиотеки "KM101" (рис.5.2.2). В диалоге ввода имени укажем идентификатор "AT101" и имя "AT 101", а затем подтвердим. В основе любого кадра и страницы должен лежать элемент "Группа элементов (Box)" поэтому мы его и выбрали.

Добавление нового кадра. (92 Kb)
Рис. 5.2.2. Добавление нового кадра.


Сразу после создания элемента нового кадра нужно установить его базовые свойства, характерные для кадра мнемосхемы. Свойства или атрибуты любого визуального элемента можно указать в панели инструментов "Атрибуты", предварительно выбрав нужный визуальный элемент. Выберем созданный кадр "AT 101" и установим следующие свойства:

В результате получим пустой кадр (рис.5.2.3), готовый для добавления элементов на него. Для редактирования или просмотра вида кадра необходимо в контекстном меню кадра выбрать пункт "Редактировать визуальный элемент".

Вид нового кадра и установленных атрибутов для мнемосхемы. (72 Kb)
Рис. 5.2.3. Вид нового кадра и установленных атрибутов для мнемосхемы.


Теперь добавим на кадр элементы отображения значения аналогового параметра для наших четырёх сигналов и типизированного параметра "Mod Bus.KM101.TE1314_1". Для помещения на мнемосхему элемента отображения аналогового сигнала нужно выбрать нашу мнемосхему, а затем в меню окна выбрать пункт меню "Виджет"->"Библиотека: Main"->"Отобр аналог"; после чего появится курсор с образом этого элемента, который нужно подвести в желаемую область мнемосхемы и нажать левую кнопку мыши. В момент добавления появится диалог с запросом имени нового элемента. Добавлять подобным образом будем пять элементов, которые назовём: "A1_Ti", "A1_To", "A2_Ti", "A2_To" и "TE1314_1".

Добавим так-же элемент крана для типизированного дискретного параметра "Mod Bus.KM101.KSH102", для добавления которого используем библиотечный элемент "Виджет"->"Библиотека: mnEls"->"Кран шаровый" и назовём его "KSH102".

Для отображения списка текущих нарушений поместим на мнемосхему элемент протокола из библиотеки примитивов "Виджет"->"Библиотека: originals"->"Протокол" и назовём его "Protocol". В инспекторе атрибутов установим свойства для протокола:

Добавленные элементы можно впоследствии расположить как нужно, просто выделяя и перетаскивая мышью. После выполнения всех манипуляций у нас должна получиться мнемосхема с видом, похожим представленной на рис.5.2.4.

Вид нового кадра и установленных атрибутов для мнемосхемы. (101 Kb)
Рис. 5.2.4. Вид нового кадра и установленных атрибутов для мнемосхемы.


На этом процедуру создания мнемосхемы будем считать законченной. Сохраним новую библиотеку виджетов "KM101" и приступим к этапу размещения нашей мнемосхемы в дереве проекта "Группы сигнализаций (шаблон)".

Поместим нашу мнемосхему в ветвь "Группы сигнализаций (шаблон)"->"Корневая страница"->"Группа 1"->"Мнемосхемы" путём выбора в контекстном меню для пункта "Мнемосхемы" пункта "Библиотека: КМ101"->"AT 101". Идентификатор для новой мнемосхемы установим в "2", при этом поле имени оставим пустым. Сразу после добавления нужно установить базовое свойство мнемосхемы "Страница: группа" в значение "so".

Далее нужно произвести уже знакомую нам операцию по предыдущей главе, а именно установку связей на созданные в предыдущей главе параметры контроллеров. Для этого откроем диалог редактирования свойств мнемосхемы на вкладке "Связи" (рис.5.2.5). На этой вкладке мы увидим дерево с элементами "A1_Ti", "A1_To", "A2_Ti", "A2_To" и "TE1314_1". Развернув любой из элементов, мы увидим ветку "Parameter", в которой мы должны указать или выбрать адрес значений наших атрибутов "Ti" и "To" соответственно. При заполнении элементов часть свойств нужно указывать как постоянные. Например, обязательно нужно указать:

Как и в случае с группой графиков, в предыдущем разделе, для типизированных параметров "Mod Bus.KM101.TE1314_1" и "Mod Bus.KM101.KSH102" можно указавать только параметр, а атрибуты расставятся автоматически.

Вкладка "Связи" диалога редактирования свойств мнемосхемы. (83 Kb)
Рис. 5.2.5. Вкладка "Связи" диалога редактирования свойств мнемосхемы.


Теперь можем сохранить нашу мнемосхему и проверить что получилось. Для этого закроем окно диалога свойств и запустим проект "Группы сигнализаций (шаблон)" на исполнение. Затем переключимся на нашу мнемосхему кнопками перелистывания. При безошибочной конфигурации мы должны увидеть что-то подобное изображённому на рис.5.2.6.

Созданная мнемосхема с четырьмя подключенными сигналами, типизированными параметрами и протоколом. (78 Kb)
Рис. 5.2.6. Созданная мнемосхема с четырьмя подключенными сигналами, типизированными параметрами и протоколом.


Заметьте, что для типизированного параметра, с установленными границами нарушений, выход значения за границы отмечается миганием через аварийный цвет: параметра, объекта сигнализации и жёлтого кружочка снизу. При нарушении, кроме мигания, производится писк на бузер (если он доступен) и синтез речи с проговором позиции параметра (если установлена программа "ru_tts") указанной в поле связи "spName" (рис. 5.2.5). При активации нарушения справа и справа-внизу активируются кнопки с индикацией типа уведомления, а по нажатию на них осуществляется квитация соответствующего типа уведомления. По нажатию на мигающем жёлтым кружочке справа-внизу квитируются всё. Факт присутствия нарушения так-же отображается записью в протоколе, который мы добавили. Для того что-бы увидеть выход за границу нарушения Вы можете установить значение производительности вентилятора в 100 (рис.4.2.8). Детальнее про концепцию работы с нарушениями можно почитать в разделе "Рецепты".


5.3. Создание нового комплексного элемента

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

5.3.1. Создание виджета "Воздушный холодильник" на основе примитива "Элементарная фигура".

Виджет будем создавать в ранее нами созданной библиотеке "KM101". Для этого кликаем правой кнопкой манипулятора "мышь" по пункту этой библиотеке и выбираем пункт "Библиотека: originals"->"Элементарная фигура", как это показано на рисунке 5.3.1.1. Для нового элемента указываем идентификатор "air_cooler" и имя "Воздушный холодильник".

Добавление виджета на основе примитива "Элементарная фигура" в библиотеку "KM101". (90 Kb)
Рис. 5.3.1.1. Добавление виджета на основе примитива "Элементарная фигура" в библиотеку "KM101".


После подтверждения у нас появится объект нового виджета с именем "Воздушный холодильник". Выберем его в списке виджетов библиотеки "KM101" и откроем для редактирования посредством контекстного меню нового элемента. Зададим теперь во вкладке "Атрибуты" в пункте "Геометрия" ширину и высоту виджета в 200 пикселов (рис. 5.3.1.2).

Задание геометрических размеров виджета. (69 Kb)
Рис. 5.3.1.2. Задание геометрических размеров виджета.


Теперь нарисуем визуальное представление виджета. Эту процедуру можно проделать двумя нижеописанными способами:

Дополнительную информацию о редакторе можно прочитать здесь: http://wiki.oscada.org/Doc/Vision/ElFigure

Вход в режим рисования виджета на основе примитива "Элементарная фигра". (89 Kb)
Рис. 5.3.1.3. Вход в режим рисования виджета, основанного на примитиве "Элементарная фигура".


В нашем примере мы воспользуемся вторым способом. Для этого в поле "Список элементов" инспектора атрибутов введем нижеприведенный перечень и нажмем "Ctrl"+"Enter".

line:(20|80):(100|20)
line:(100|20):(180|80)
line:(180|80):(100|140)
line:(100|140):(20|80)
line:(100|20):(100|140)
line:(20|80):(180|80)
line:(50|165):(100|140)
line:(100|140):(150|165)
line:(150|165):(50|165)
fill:(20|80):(100|20):(180|80):(100|140)
fill:(50|165):(100|140):(150|165)


Все точки, в нашем случае, указаны в статическом виде, так как не предусматривается динамизация и смена координат в режиме исполнения, а все остальные параметры оставлены по умолчанию.

Вследствие этого наш виджет примет вид, изображенный на рис. 5.3.1.4.

Изображение, соответствующее "Списку элементов" виджета. (79 Kb)
Рис. 5.3.1.4. Изображение, соответствующее "Списку элементов" виджета.


Теперь поменяем цвет заливки (черный, если не указан никакой другой (по умолчанию)) во вкладке "Атрибуты" в пункте "Заполнение" на "lightgrey" (рис. 5.3.1.5). Цвет можно задавать, как с помощью названий цветов, так и в формате #RRGGBB( #RRGGBB-AAA).

Изменение цвета заполнения (заливки). (75 Kb)
Рис. 5.3.1.5. Изменение цвета заполнения (заливки).


Создадим иконку для нашего виджета, которая будет видна в дереве виджетов библиотеки "KM101" (рис. 5.3.1.6).

Создание иконки для виджета. (95 Kb)
Рис. 5.3.1.6. Создание иконки для виджета.


На этом процесс создания первого виджета можно считать завершенным. Перейдем теперь к этапу компоновки и созданию результирующего виджета.

5.3.2. Создание финального скомпонованного виджета "Холодильник" на основе примитива "Группа элементов"

Результирующий виджет будем создавать в библиотеке "KM 101". Для этого кликаем правой кнопкой манипулятора "мышь" по этой библиотеке и выбираем примитив "Группа элементов", как это показано на рисунке 5.3.2.1. Для нового элемента указываем идентификатор "elCooler" и имя "Холодильник".

Добавление виджета на основе примитива "Группа элементов" в библиотеку "KM 101". (112 Kb)
Рис. 5.3.2.1. Добавление виджета на основе примитива "Группа элементов" в библиотеку "KM 101".


После подтверждения у нас появится объект нового виджета с именем "Холодильник". Выберем его в списке виджетов библиотеки "KM 101" и открываем для редактирования. Зададим теперь во вкладке "Атрибуты" в пункте "Геометрия" ширину и высоту виджета в 250 и 200 пикселов соответственно.

Возьмём ранее созданный элемент "Воздушный холодильник" (air_cooler) и перетащим его (нажав на нем левую кнопку манипулятора "мышь", и перемещая курсор "мыши" до области виджета; после этого нужно отпустить кнопку) на вновь созданный нами виджет (рис. 5.3.2.2).

Перетаскивание( Drag&Drop ) виджета "air_cooler" в виджет-контейнер "elCooler". (65 Kb)
Рис. 5.3.2.2. Перетаскивание( Drag&Drop ) виджета "air_cooler" в виджет-контейнер "elCooler".


В результате появится окно диалога с предложением ввести идентификатор и имя нового виджета. Идентификатор и имя могут быть заданы произвольно. Мы введём идентификатор "air_cooler", а имя оставим пустым (оно унаследуется от родителя - элемента "air_cooler"). Таким образом, вновь созданный виджет внутри контейнера "elCooler" унаследует элемент - "Воздушный холодильник" ("air_cooler"). После подтверждения ввода идентификатора и имени виджет "Воздушный холодильник" ("air_cooler") добавится в наш виджет-контейнер "elCooler" (рис. 5.3.2.3)

Добавление унаследованного виджета "air_cooler". (70 Kb)
Рис. 5.3.2.3. Добавление унаследованного виджета "air_cooler".


Зададим на панели атрибутов виджета в пункте "Геометрия" координаты "x" и "у" верхнего левого угла виджета в 25 и 0 пикселов соответственно.

Далее развернем библиотеку "Элементы мнемосхемы", найдем там элемент "Вентилятор"(cooler2) и перетащим его на виджет-контейнер. Этот элемент будет динамически отображать интенсивность работы воздушного холодильника. В результате появится окно диалога для ввода идентификатора и имени нового виджета. Введём идентификатор "cooler2", а имя снова оставим пустым. Таким образом, вновь созданный виджет внутри контейнера "elCooler" унаследует элемент библиотеки "Элементы мнемосхемы" - "Вентилятор" ("cooler2"). После подтверждения ввода идентификатора и имени виджет "Вентилятор" ("cooler2") добавится в наш виджет-контейнер "elCooler". Если необходимо, "поднимем" виджет "cooler2" наверх относительно виджета "air_cooler" внутри виджета-контейнера "elCooler" с помощью панели инструментов размещения снизу. Зададим во вкладке "Атрибуты" в пункте "Геометрия" координаты "x" и "у" верхнего левого угла виджета "Вентилятор" в 75 и 30 пикселов соответственно. Изменим у унаследованного виджета "Вентилятор" альфа канал (прозрачность) цветов заливок (заполнений). Для этого во вкладке "Атрибуты" в полях "Цвет 1" и "Цвет 2" изменим значения цветов, добавив к ним "-200", где 200 - значение прозрачности ( "0" - полностью прозрачный, а "255" - полностью непрозрачный), как показано на рис. 5.3.2.4.

Изменение прозрачности цветов заполнений у унаследованного виджета "cooler2". (109 Kb)
Рис. 5.3.2.4. Изменение прозрачности цветов заполнений у унаследованного виджета "cooler2".


Теперь добавим в виджет-контейнер "elCooler" два текстовых поля, основанных на примитиве "Текст", с целью отображения входной и выходной температур потока. Для этого в библиотеке "KM 101" выделим виджет "холодильник" и нажмем на панели визуальных элементов на иконку примитива "Текст", как это показано на рис 5.3.2.5.

Добавление в контейнер нового элемента, основанного на примитиве "Текст". (81 Kb)
Рис. 5.3.2.5. Добавление в контейнер нового элемента, основанного на примитиве "Текст".


В результате появится диалог ввода идентификатора и имени вновь создаваемого элемента. Введем идентификатор "Ti" для первого текстового поля, а имя оставим пустым. Зададим геометрические размеры и координаты верхнего левого угла виджета, как это показано на рис. 5.3.2.6

Задание геометрии виджета "Ti". (75 Kb)
Рис. 5.3.2.6. Задание геометрии виджета "Ti".


Изменим размер и установим усиление шрифта для этого элемента (рис. 5.3.2.7). Обратим внимание, что измененные поля у унаследованных виджетов подсвечиваются синим цветом для удобства отслеживания изменений и последующей их "очистки"(отката) с помощью клика правой кнопкой манипулятора "мышь" по измененному атрибуту.

Изменение размера шрифта для виджета "Ti". (80 Kb)
Рис. 5.3.2.7. Изменение размера шрифта для виджета "Ti".


Теперь изменим поле "Текст" виджета "Ti", указав в нем наличие аргумента "%1", в который впоследствии будет передаваться реальное значение входной температуры (рис. 5.3.2.8).

Изменение поля "Текст" и указание в нем наличия атрибута для виджета "Ti". (75 Kb)
Рис. 5.3.2.8. Изменение поля "Текст" и указание в нем наличия атрибута для виджета "Ti".


Далее в перечне атрибутов виджета "Ti" в пункте "Количество аргументов" укажем "1" и сконфигурируем аргумент (рис. 5.3.2.9). Число "300.25" задано лишь только с целью наглядности, в режиме исполнения оно будет подменяться реальным значением входной температуры.

Конфигурация аргумента для виджета "Ti". (76 Kb)
Рис. 5.3.2.9. Конфигурация аргумента для виджета "Ti".


Теперь скопируем виджет "Ti" с целью создания аналогичного ему виджета "To" (выходная температура), как это показано на рисунке 5.3.2.10.

Копировние виджета "Ti". (133 Kb)
Рис. 5.3.2.10. Копирование виджета "Ti".


Вставим скопированный виджет в виджет-контейнер "Холодильник" в библиотеке "KM 101" (рис. 5.3.2.11). В диалоге ввода идентификатора и имени для вновь созданного виджета в поле "ID" укажем "To", а имя оставим пустым.

Вставка скопированного виджета в виджет-контейнер "Воздушный холодильник" библиотеки "KM 101" . (119 Kb)
Рис. 5.3.2.11. Вставка скопированного виджета в виджет-контейнер "Холодильник" библиотеки "KM 101" .


Изменим геометрию виджета "To", как показано на рис. 5.3.2.12.

Изменение геометрии виджета "To". (93 Kb)
Рис. 5.3.2.12. Изменение геометрии виджета "To".


Теперь добавим виджет, основанный на примитиве "Элементы формы", который будем использовать в качестве Combo Box для выбора заданий производительности холодильника. В качестве идентификатора укажем "cw", и поле "Имя" оставим пустым. (рис. 5.3.2.13)

Добавление виджета, основанного на примитиве "Элементы формы". (95 Kb)
Рис. 5.3.2.13. Добавление виджета, основанного на примитиве "Элементы формы".


Зададим параметры пункта "Геометрия" во вкладке "Атрибуты" для вновь добавленного виджета: координаты "x", "y" верхнего левого угла, ширину и высоту в 60, 158, 60, 40 соответственно. Изменим "Тип элемента" в Combo Box, как это показано на рис. 5.3.2.14.

Изменение "Геометрии" и "Типа элемента" для вновь созданного виджета. (91 Kb)
Рис. 5.3.2.14. Изменение "Геометрии" и "Типа элемента" для вновь созданного виджета.


Заполним поля: "Значение", "Элементы" и "Шрифт", как это показано на рис. 5.3.2.15. Кроме этого важно комбобокс поднять над всеми и сделать активным. Для активизации виджета комбобокса нужно установить соответствующее свойство для него.

Заполнение параметров ComboBox "cw". (84 Kb)
Рис. 5.3.2.15. Заполнение параметров Combo Box "cw".


Для отображения единицы измерения производительности холодильника добавим виджет на основе примитива "Текст". Делаем ту же процедуру, что и для виджета "Ti". Идентификатором вновь созданного виджета сделаем "dimension", изменим геометрию: координаты верхнего левого угла "x", "y" укажем в 125, 168 соответственно, а ширину и высоту - в 60 и 20 соответственно. Поменяем размер шрифта на "14 усиленный", а в поле "Текст" впишем "об./мин.", что и будет нашей единицей измерения (рис. 5.3.2.16).

Добавление виджета "dimension", основанного на примитиве "Текст" и изменение его параметров. (87 Kb)
Рис. 5.3.2.16. Добавление виджета "dimension", основанного на примитиве "Текст" и изменение его параметров.


Для добавления логики обработки виджета "Холодильник"(elCooler) откроем диалог редактирования свойств этого визуального элемента и перейдём на вкладку "Обработка". На этой вкладке мы увидим дерево атрибутов виджета и поле текста программы, для обработки атрибутов. Для решения нашей задачи нужно добавить три атрибута: Ti, To, Cw (рис. 5.3.2.17). Для добавления атрибута нужно развернуть корневой элемент ".", выбрать любой элемент внутри корневого и нажать кнопку "Добавить атрибут" снизу.

Добавление трех атрибутов для элемента "elCooler" библиотеки "KM 101". (42 Kb)
Рис. 5.3.2.17. Добавление трех атрибутов для элемента "elCooler" библиотеки "KM 101".


Далее включим в обработку атрибут "value" комбобокса "cw", как это показано на рис. 5.3.2.18. Аналогично включим в обработку атрибут "arg0val" для Ti и To, а также атрибут "speed" у элемента "cooler2".

Включение в обработку атрибута "value" комбобокса "cw". (37 Kb)
Рис. 5.3.2.18. Включение в обработку атрибута "value" комбобокса "cw".


В завершении установим язык пользовательского программирования для процедуры в "Java Like Calc.JavaScript" и напишем программу обработки этого виджета:

Ti_arg0val = Ti;
To_arg0val = To;

ev_wrk = ev_rez = "";
off = 0;
while(true)
{
  ev_wrk = Special.FLibSYS.strParse(event,0,"\n",off);
  if(ev_wrk == "") break;
  if(ev_wrk == "ws_CombChange:/cw") Cw = cw_value;
  else ev_rez += ev_wrk+"\n";
}
cw_value = Cw;
cooler2_speed = Cw/5;


Внимание! Помещение или редактирование программы виджета не приводит к непосредственной её компиляции, а значит не будет сообщений об ошибках в программе, если они имеют место быть. Это связано с тем, что непосредственное исполнение программы, а значит и её компиляция, осуществляется в окружении и в момент запуска на исполнение проекта визуализации. При этом все ошибки, возникшие при компиляции, выводятся в виде сообщений Open SCADA, а виджеты с ошибками не исполняются. Посмотреть архив сообщений Open SCADA можно в главной вкладке подсистемы "Архивы" или в терминале запуска Open SCADA, если запуск был из терминала или его эмулятора.

Результирующий вид вкладки обработка виджета "elCooler" библиотеки "KM 101" будет иметь вид, показанный на рис. 5.3.2.19.

Результирующий вид вкладки обработка виджета "elCooler" библиотеки "KM 101". (45 Kb)
Рис. 5.3.2.19. Результирующий вид вкладки обработка виджета "elCooler" библиотеки "KM 101".


Закроем диалог редактирования свойств визуального элемента, создадим иконку на основе нашего элемента, закроем внутреннее окно редактирования и сохраним это всё.

На этом разработку комплексного элемента можно считать законченной.

5.3.3. Добавление комплексного элемента на мнемосхему

Для проверки работоспособности и оценки результатов наших усилий добавим созданный виджет на мнемосхему, разработанную в разделе 5.2. Выполним эту операцию для двух холодильников "AT101_1" и "AT101_2".

Для этого откроем кадр мнемосхемы "AT 101" на редактирование. После чего хватаем "мышью" наш комплексный элемент и тащим на мнемосхему, где отпускаем в нужной нам позиции. В диалоге запроса имени вводим идентификаторы "AT101_1" и "AT101_2" соответственно. Поле имени опускаем. Добавленные элементы располагаем как нам удобно. После выполнения подобных манипуляций у нас должна получиться мнемосхема с видом, похожим представленной на рис.5.3.3.1.

Вид мнемосхемы с комплексными элементами. (83 Kb)
Рис. 5.3.3.1. Вид мнемосхемы с комплексными элементами.


Сохраним новую мнемосхему и закроем её окно. Далее перейдём в проект и откроем эту мнемосхему в дереве проекта "Группы сигнализаций (шаблон)"->"Корневая страница"->"Группа 1"->"Мнемосхемы"->"AT 101". Как можно заметить, наши новые элементы появились здесь автоматически. И нам осталось только подключить связи к новым элементам. Для этого откроем диалог редактирования свойств мнемосхемы на вкладке "Связи" (рис.5.3.3.2). На этой вкладке мы увидим дерево с элементами "AT101_1" и "AT101_2". Развернув любой из элементов, мы увидим ветку "Параметр" как раз с атрибутами "Ti", "To" и "Cw", Таким образом, мы можем просто указать адрес параметра "prm:/LogicLev/KM101/AT101_1" в поле "Параметр", а атрибуты будут расставлены автоматически.

Вкладка "Связи" диалога редактирования свойств мнемосхемы. (34 Kb)
Рис. 5.3.3.2. Вкладка "Связи" диалога редактирования свойств мнемосхемы.


Сохраним нашу мнемосхему и проверим, что получилось. Для этого закроем окно диалога свойств и запустим проект "Группы сигнализаций (шаблон)" на исполнение. Затем переключимся на вторую мнемосхему кнопками листания. При безошибочной конфигурации мы должны увидеть что-то подобное изображённому на рис.5.3.3.3.

 (45 Kb)
Рис. 5.3.3.3. Результирующая мнемосхема.


На этой мнемосхеме посредством наших комплексных элементов мы можем не только наблюдать но и управлять производительностью холодильников, просто меняя значение в комбобоксе. Меняя производительность, мы можем заметить и изменение температуры. Историю изменения мы можем увидеть на созданной нами в разделе 5.1 группе графиков.

6. Рецепты

Данный раздел предназначен для предоставления описания рецептов решения часто встречающихся проблем и задач пользователя. Рецепты решения задач и проблем для помещения в этот раздел могут предлагаться пользователями.

6.1. Перенос конфигураций Open SCADA из одного проекта в другой

Часто востребованной бывает задача переноса конфигурации из одного проекта Open SCADA в другой. Причём, чаще всего нужно осуществить частичный перенос, например, перенос отдельных наработок, которые могут пригодиться в новом проекте.

Вообще, нужно отметить, что любые наработки с малейшим намёком и перспективой вторичного использования нужно стараться унифицировать и сохранять в отдельные, собственные, библиотеки и БД. Крайне не рекомендуется непосредственно менять стандартные конфигурации и элементы стандартных библиотек, а также сохранять собственные, новые, библиотеки и элементы в базах данных стандартных библиотек. Это позволит Вам впоследствии безболезненно обновлять стандартные библиотеки, а также просто использовать наработки ваших предыдущих проектов.

Простой перенос БД с библиотеками и конфигурацией

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

Процедура копирование БД отличается для различных типов БД и с ней нужно будет ознакомиться из документации к БД. Для сопутствующего распространения с дистрибутивами Open SCADA обычно используется БД SQLite, в виде отдельных файлов *.db. Копирование БД SQLite соответственно заключается в простом копировании нужного файла БД из директории баз данных старого проекта в директорию баз данных нового.

Подключение осуществляется путём создания нового объекта БД в модуле нужного типа БД подсистемы БД и последующей его конфигурации (детальнее). После создания, конфигурации и включения БД можно сразу загрузить конфигурацию из неё, нажав кнопку "Загрузить систему из этой БД" на форме объекта БД.

Выделение нужной конфигурации

В случае, если нужная конфигурация содержится в общей БД или БД стандартных библиотек, то предварительно нужно осуществить выделение её в отдельную БД. Выделить конфигурацию можно или в отдельную БД с Вашими библиотеками или в экспортную БД. Экспортная БД, в отличие от библиотечной, служит только для переноса конфигурации и будет впоследствии удалена. В любом случае нужно создать новую БД для нужного типа БД, подобно процедуре подключения выше. Для переноса нужно использовать тип БД, который планируется использовать в новом проекте. Обычно для переноса лучше использовать тип БД SQLite, ввиду простой процедуры копирования. Однако, если использовать сетевую СУБД, эта процедура может превратиться в простое подключение библиотечной или экспортной БД в новом проекте.

Далее необходимо выделить конфигурацию в унифицирующие или экспортные библиотеки, если она не может быть прямо сохранена в БД. Например, отдельные шаблоны параметров или параметры контроллеров сбора данных, визуальные элементы библиотек виджетов и т.д. выделить можно путём создания библиотеки экспорта или унификации соответствующего элемента, например, библиотека шаблонов или контроллер параметров сбора данных, библиотека виджетов и т.д. Для вновь созданной библиотеки в качестве БД нужно указать ранее созданную унифицирующую или экспортную БД. Далее осуществляется копирование нужных элементов из исходной библиотеки в унифицирующую/экспортную посредством стандартной функции копирования. После копирования унифицирующую/экспортную библиотеку нужно сохранить.

В случае необходимости переноса элемента конфигурации с отдельным свойством БД или целых библиотек операцию создания промежуточной библиотеки и последующего копирования можно опустить. Достаточно в поле БД указать ранее созданную унифицирующую или экспортную БД и сохранить элемент.

Дальнейшие действия, а именно простой перенос БД, осуществляются в соответствии с предыдущим разделом.

При переносе конфигурации путём экспортирования необходимо осуществить обратный процесс копирования из экспортных библиотек в локальные библиотеки нового проекта и удаление экспортной БД.

Низкоуровневое копирование содержимого БД

Для переноса можно осуществить избирательное копирование таблиц БД с конфигурацией путём выбора объектов таблиц в объекте БД; команды копирования, выбора объекта новой БД и команды вставки (детальнее). Однако, для этого нужно знать структуру БД, про которую изложено по этой ссылке.

6.2. Особенности циклического программирования в Open SCADA

У начинающих пользователей часто возникает вопрос обеспечения выдержки временных интервалов при программировании вычислительных процедур в окружении Open SCADA. Этот вопрос обычно связан с наличием предыдущего опыта программирования линейных вычислений и отсутствием опыта программирования циклических систем реального времени.

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

Решение задачи выдержки нужного интервала времени в системах реального времени, в рамках ритма жизни, осуществляется в два способа. Первый способ заключается в декременте счётчика, установленного в значение временного интервала, в каждом цикле на значение периодичности такта до значения <=0, например, в Open SCADA это реализуется таким образом:

Второй способ основан на астрономическом времени, т.е. в цикле осуществляется сравнение с текущим временем, например, в Open SCADA это реализуется таким образом:

Второй способ является более надёжным поскольку в нём исключается проблема запаздывания срабатывания по причине возможного выполнения процедуры цикла более времени такта. Хотя в правильно настроенных системах и задачах данный эффект не должен иметь место.

6.3. Живой диск (Live CD/USB)

С целью максимального упрощения развёртывания Open SCADA можно использовать живые сборки загрузочных дисков CD и USB. Живой диск предусматривает возможность загрузки прямо с него и быстрого получения желаемого рабочего окружения. При загрузке и работе живой диск не использует штатных носителей, а значит Вы можете не беспокоиться за их целостность и сохранность данных на них. В целом живой диск является удобным средством с широким кругом нужных программных инструментов под рукой и независимого от стационарного программного окружения, способного осуществить диагностику программного и аппаратного окружения, а также их восстановление, в некоторых случаях.

Живой диск представляет из себя упакованный образ операционной системы и прикладных программ с размером около 700МБ, записанный на CD/DVD диск или USB-Flash носитель. При свей работе операционная система "налету" распаковывает нужные файлы для запуска программ и открытия документов, а значит не использует оперативной памяти больше чем при её обычной установке.

Живые диски с Open SCADA собираются в нескольких вариантах на основе дистрибутивов ОС Linux ALTLinux и доступны для загрузки к соответствующей версии Open SCADA здесь: http://oscada.org/ru/glavnaja/zagruzit. Текущие живые сборки с Open SCADA обладают значительно большими функциями чем предусматривалось изначально:

ISO-образ живого диска

Первый вариант сборки живого диска это ISO-образ (*Live C D_ USB.iso) для записи на CD/DVD диск, который однако является комбинированным и может быть записан прямо на USB-Flash диск.

Для записи ISO-образа на CD/DVD диск можно использовать стандартный инструментарий исходной операционной системы. Запись на USB-Falsh может быть осуществлена только из окружения ОС Linux, например, из окружения этого-же живого диска, записанного и загруженного ранее с CD/DVD диска.

Внимание! Пользователь не имеющий опыта работы с ОС Linux должен ограничиться записью на CD/DVD диск или начать знакомиться с Linux, если хочет получить живой USB-Flash диск.

Внимание! Запись образа на USB-Flash уничтожит все данные и сделает его непригодным для использования в качестве носителя данных, если не учитывать возможность записи на раздел сохранения изменений окружения ОС живого диска, который будет создан при первой загрузке с живого диска.

Адрес диска для записи ISO-образа имеет вид "/dev/sd{x}", а узнать его можно вызовом консольной команды "$ dmesg", сразу после подключения целевого диска USB-Flash. Для записи ISO-образа на USB-Flash из окружения Linux можно воспользоваться консольной командой:

FAT-образ живого диска

Второй вариант сборки живого диска это FAT-образ: группа файлов для прямой записи и загрузки с FAT-раздела (*flash.tar). Преимуществом этой сборки, как ранее упоминалось, является совмещение функции USB-Flash диска как носителя данных и как живого диска. Кроме того на основе данной сборки можно создавать компактные, надёжные и функциональные решения встраиваемых систем с Open SCADA в основе, например, Программируемые Логические Контроллеры (ПЛК), панельные контроллеры (с сенсорным дисплеем), а так-же просто SCADA-сервера и SCADA-станции оператора "быстрого приготовления"; путём записи живого диска на стационарный носитель (HDD, SSD или Flash). Надёжность данного решения достигается путём размещения основного ПО в немодифицируемом упакованном файле, а рабочих данных на журналируемой файловой системе.

Запись данного образа можно осуществить из любой ОС, но установить загрузчик только в Linux, для чего можно воспользоваться Live CD из прошлого раздела.

Процедура создания живого диска такова:

Внимание! Данный способ развёртывания живого диска требует знаний ОС Linux и интерфейса командной строки (консоли), а так-же основ разбиения дисковых носителей поскольку, при некорректном начальном разбиении носителя, загрузка может не пройти. Кроме того, для обеспечения функции прозрачного сохранения рабочих изменений необходимо создать раздел с меткой "alt-live-storage" и файловой системой ext3, что можно сделать программе менеджера разделов, например, "gparted".

Загрузка

Для загрузки с полученного живого диска нужно перегрузить компьютер и нажать клавишу входа в меню загрузки BIOS, в самом начале загрузки, до загрузчика стационарной ОС, и выбрать там наш носитель (рис.6.3.1). На разных компьютерах клавиша входа в меню загрузки может отличаться и быть одной из "F8", "F9", "F10", "F11" или "F12".

Меню выбора устройства загрузки в BIOS. (476 Kb)
Рис. 6.3.1. Меню выбора устройства загрузки в BIOS.


После выбора устройства должно появиться меню загрузки живого диска, где предварительно важно выбрать Ваш язык, по клавише F2 (рис.6.3.2), если язык по умолчанию не устраивает.

Меню выбора языка живого диска. (468 Kb)
Рис. 6.3.2. Меню выбора языка живого диска.


В результате загрузки живого диска Вы получите рабочий стол TDE 3.5.13 (рис.6.3.3).

Рабочий стол живого диска. (424 Kb)
Рис. 6.3.3. Рабочий стол живого диска.

6.4. Общие положения концепции работы с нарушениями, сигнализацией и уведомлениями

Нарушения и работа с ними в Open SCADA реализуется двояко, что связано со структурой Open SCADA, способами её использования, а так-же самой природой нарушений.

Первой стороной нарушений, с которыми Open SCADA работает изначально и которая наиболее востребована, является уведомление различными способами. Поскольку уведомление это часть интерфейса визуализации то и реализованы они в движке визуализации UI.VCAEngine и визуализаторах UI.Vision, UI.WebVision. На данный момент подсистема уведомлений нарушений в Open SCADA реализует функции:

При реализации уведомлений в среде визуализации нет установленного правила получения и формирования признака нарушения поскольку в разных ситуациях нет однозначности. На данный момент, на стороне типизированных шаблонов источника данных, практикуется способ формирования атрибута ошибки "err" с кодами и текстом нарушения, а обработка их и формирование уведомления осуществляется в визуальном образе объекта данных. Иногда-же обработка границ уставок осуществляется прямо в визуальном образе объекта данных.

Впоследствии возникла необходимость протоколирования, а также учёт актуальных, на текущий момент, нарушений. Если для протоколирования достаточно формирования системных сообщений с оговоренной категорией и форматом сообщения, то для контроля за текущими нарушениями необходим некий буфер. Впоследствии такой буфер был добавлен в виде надстройки над подсистемой сообщений, а адресация к нему осуществляется инверсией уровня сообщения. Так запись сообщения с уровнем "-2" и категорией "TEST" поместит сообщение в буфер нарушений и продублирует его в архиве сообщений, с уровнем "2". При запросе сообщений с отрицательным уровнем сообщения будут браться из буфера нарушений. Удаление/снятие нарушения осуществляется записью сообщения с той-же категорией "TEST" и неотрицательным уровнем.

Такая концепция учёта активных нарушений позволяет использовать стандартные механизмы работы с сообщениями для учёта нарушений:

Регистрацию сообщений лучше всего осуществлять на стороне типизированных шаблонов источника данных посредством специальной функции "SYS.DAQ["Modul"]["Controller"].alarmSet(string mess, int lev = -5, string prm = "")", которая унифицирует категорию. Для вызова этой функции из контекста шаблона нужно добавить IO "this" типа "Объект", после чего установка нарушения будет иметь вид "this.nodePrev().alarmSet("Параметр: нарушение", -5, "prm");". Указанная функция сейчас используется во многих модулях источников данных для учёта глобальных нарушений объектов контроллеров.

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

Заключение

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

Ссылки

Referring pages: Doc
HomePageUk/Doc