Как можно видеть в разделе выше, OpenSCADA предоставляет возможность конфигурации для исполнения в различных ролях. Поддержка этой возможности обеспечивается развитыми механизмами конфигурации и хранения конфигурационных данных. Данный раздел содержит описание этих механизмов, призванное дать представление о гибкости и разнообразии, позволив тем самым использовать OpenSCADA на 100%.
При описании механизмов конфигурации и способов её хранения в этом разделе будет делаться упор на описание общесистемных механизмов. Особенности конфигурации и использования модулей подсистем OpenSCADA предоставляются в собственной документации модулей.
В OpenSCADA используется формализованный подход к описанию конфигурационных интерфейсов, основанный на языке XML. Фактически особенности конфигурации компонента системы предоставляется самим компонентом, пронизывая тем самым всю систему, как нервная система организма. В терминах OpenSCADA это называется интерфейсом контроля OpenSCADA (Control interface). На основе интерфейса контроля формируются графические интерфейсы конфигурации пользователя посредством модулей OpenSCADA. Такой подход имеет следующие важные преимущества:
В OpenSCADA уже предоставляется три модуля конфигурации на разной основе визуализации. Отметим их и их возможности конфигурации:
Значения конфигурации, изменённые в конфигураторах, а также большинство данных сохраняются в базах данных (БД). Учитывая модульность подсистемы "БД", ими могут быть различные БД. Причём предоставляется возможность хранения разных частей OpenSCADA как в разных БД одного типа, так и в БД разных типов.
Кроме БД данные о конфигурации могут содержаться в конфигурационном файле OpenSCADA, а также передаваться посредством параметров командной строки при вызове OpenSCADA. Сохранение конфигурации в конфигурационном файле осуществляется на равне с БД. Типовым именем конфигурационного файла OpenSCADA является /etc/oscada.xml. Формат конфигурационного файла и параметры командной строки рассмотрим в отдельном разделе.
Многие настройки и конфигурация объектов OpenSCADA, которые исполняются или уже включены, не применяются сразу-же по внесению изменений, поскольку конфигурация читается/применяется обычно только при включении или запуске. Следовательно для применения изменений, в таких случаях, достаточно включить/выключить включенный объект или перезапустить исполняющийся — остановить/запустить.
Дальнейшее рассмотрение конфигурации OpenSCADA будет производиться на основе интерфейса конфигуратора UI.QTCfg, однако принципы работы будут полностью соответствовать и остальным конфигураторам благодаря общности в используемом интерфейсе контроля OpenSCADA.
Рассмотрение начнём с конфигурации системных параметров OpenSCADA, которая размещается в трёх вкладках корневой страницы станции:
Для модификации полей этой страницы могут потребоваться права привилегированного пользователя. Получить такие права можно, включив вашего пользователя в группу суперпользователя "root", или, войдя на станцию от имени суперпользователя "root".
Нужно отметить ещё один важный момент: поля идентификаторов всех объектов OpenSCADA недопустимы для прямого редактирования, поскольку являются ключом для хранения данных объектов в БД. Однако поменять идентификатор объекта можно с помощью команды переноса и последующей вставки объекта (Cut->Paste) в конфигураторе.




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


Каждый модуль подсистемы "БД" предоставляет конфигурационную страницу с вкладкам "БД" и "Помощь". Вкладка "БД" (рис.4.1c) содержит список БД, зарегистрированных в модуле и флажок признака полного удаления БД при выполнении команды удаления. В контекстном меню списка БД предоставляется пользователю возможность добавления, удаления и перехода к нужной БД. Во вкладке "Помощь" содержится информация о модуле подсистемы "БД" (рис.4.1d):


Каждая БД содержит собственную страницу конфигурации с вкладками "База данных", "Таблицы" и "SQL", в случае поддержки SQL-запросов. Кроме основных операций можно выполнять копирование содержимого БД стандартной функцией копирования объектов в конфигураторе. Операция копирования содержимого БД подразумевает копирование исходной БД в БД назначения, при этом содержимое БД назначения не очищается перед операцией копирования. Копирование содержимого БД производится при условии включения обоих БД, иначе будет выполняться простое копирование объекта БД.
Вкладка "База данных" (рис.4.1e) содержит основные настройки БД в составе:
Вкладка "Таблицы" (рис.4.1f) содержит список открытых таблиц. При нормальной работе программы эта вкладка пуста, поскольку после завершения работы с таблицами программа их закрывает. Наличие открытых таблиц говорит о том, что программа сейчас с таблицами работает или таблицы открыты пользователем для изучения их содержимого. В контекстном меню перечня открытых таблиц можно открыть таблицу для изучения (команда "Добавить"), закрыть открытую страницу (команда "Удалить") и перейти к изучению содержимого таблицы.
Вкладка "SQL" (рис.4.1g) доступна только для баз данных, поддерживающих SQL-запросы, и содержит поле ввода запроса, кнопку отправки запроса и таблицу с результатом запроса. Для управления контекстом транзакции запроса предусмотрено отдельное конфигурационное поле.



Страница изучения содержимого таблицы содержит только одну вкладку "Таблица". Вкладка "Таблица" (рис.4.1h) содержит поле имени таблицы и таблицу с содержимым. Таблицей содержимого предоставляются функции:

Подсистема не является модульной. Для конфигурации подсистемы предусмотрена корневая страница подсистемы "Безопасность", содержащая вкладки "Пользователи и группы пользователей" и "Помощь". Вкладка "Пользователи и группы пользователей" (рис.4.2a) содержит списки пользователей и групп пользователей. Пользователь в группе "Security" и с правами привилегированного пользователя может добавить, удалить пользователя или группу пользователей. Все остальные пользователи могут перейти к странице пользователя или группы пользователя. Вкладка "Помощь" содержит краткую помощь для данной страницы.

Для конфигурации пользователя предоставляется страница, содержащая только вкладку "Пользователь" (рис.4.2b). Вкладка содержит конфигурационные данные профиля пользователя, которые может изменять сам пользователь, пользователь в группе "Security" или привилегированный пользователь:

Для конфигурации группы пользователей предоставляется страница, содержащая только вкладку "Группа" (рис.4.2c). Вкладка содержит конфигурационные данные профиля группы пользователей, которые может изменять только привилегированный пользователь:

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

Вкладка "Подсистема" (рис.4.3b) содержит таблицу конфигурации внешних для данной OpenSCADA станций. Внешние станции могут быть системными и пользовательскими, что выбирается соответствующим параметром. Системные внешние станции доступны только привилегированному пользователю и используются компонентами системного назначения, например, механизмом горизонтального резервирования и модулем DAQ.DAQGate. Пользовательские внешние станции привязаны к пользователю, который их создавал, а значит список пользовательских внешних станций индивидуален для каждого пользователя. Пользовательские внешние станции используются компонентами графического интерфейса, например, UI.QTCfg, UI.WebCfgD и UI.Vision. В таблице внешних станций возможно добавление и удаление записей про станцию, а также их модификация. Каждая запись содержит поля:
Вкладка "Модули" (рис.4.1b) содержит список модулей подсистемы "Транспорты" и идентична для всех модульных подсистем. Вкладка "Помощь" содержит краткую помощь для данной страницы.

Каждый модуль подсистемы "Транспорты" предоставляет конфигурационную страницу с вкладками "Транспорты" и "Помощь". Вкладка "Транспорты" (рис.4.3c) содержит список входящих и исходящих транспортов, зарегистрированных в модуле. В контекстном меню списков транспортов пользователю предоставляется возможность добавления, удаления и перехода к нужному транспорту. Во вкладке "Помощь" содержится информация о модуле подсистемы "Транспорты" (рис.4.1d), состав которой идентичен для всех модулей.

Каждый транспорт содержит собственную страницу конфигурации с одной вкладкой "Транспорт". Эта вкладка содержит основные настройки транспорта. Входящий транспорт (рис.4.3d) содержит:

Исходящий транспорт (рис.4.3e) содержит:

Исходящий транспорт, в дополнение, предоставляет вкладку формирования пользовательского запроса через данный транспорт (рис.4.3f). Вкладка предназначена для наладки связи, а также для отладки протоколов и содержит:

Подсистема является модульной. Для конфигурации подсистемы предусмотрена корневая страница подсистемы "Транспортные протоколы", содержащая вкладки "Модули" и "Помощь". Вкладка "Модули" (рис.4.1b) содержит список модулей подсистемы "Транспортные протоколы" и идентична для всех модульных подсистем. Вкладка "Помощь" содержит краткую помощь для данной страницы.
Каждый модуль подсистемы "Транспортные протоколы" предоставляет конфигурационную страницу с одной вкладкой "Помощь". Во вкладке "Помощь" содержится информация о модуле подсистемы "Транспортные протоколы" (рис.4.1d), состав которой идентичен для всех модулей.
Подсистема является модульной и содержит иерархию объектов, изображённую на рис.4.5a. Для конфигурации подсистемы предусмотрена корневая страница подсистемы "Сбор данных", содержащая вкладки "Библиотеки шаблонов", "Модули" и "Помощь".
Для получения доступа на модификацию объектов этой подсистемы необходимы права пользователя в группе "DAQ" или права привилегированного пользователя.

Вкладка "Резервирование" (рис.4.5b) содержит конфигурацию резервирования источников данных подсистемы "Сбор данных" станции в составе настроек:

Вкладка "Библиотеки шаблонов" (рис.4.5c) содержит список библиотек шаблонов для параметров этой подсистемы. В контекстном меню списка библиотек шаблонов пользователю предоставляется возможность добавления, удаления и перехода к нужной библиотеке. Вкладка "Модули" (рис.4.1b) содержит список модулей подсистемы "Транспорты" и идентична для всех модульных подсистем. Вкладка "Помощь" содержит краткую помощь для данной страницы.

Каждая библиотека шаблонов подсистемы "Сбор данных" предоставляет конфигурационную страницу с вкладками "Библиотека" и "Шаблоны параметров". Вкладка "Библиотека" (рис.4.5d) содержит основные настройки библиотеки в составе:
Вкладка "Шаблоны параметров" (рис.4.5e) содержит список шаблонов в библиотеке. В контекстном меню списка пользователю предоставляется возможность добавления, удаления и перехода к нужному шаблону.


Каждый шаблон библиотеки шаблонов предоставляет конфигурационную страницу с вкладками "Шаблон" и "IO". Вкладка "Шаблон" (рис.4.5f) содержит основные настройки шаблона в составе:

Вкладка "IO" (рис.4.5g) содержит конфигурацию атрибутов (IO) шаблонов и программу шаблона на одном из языков пользовательского программирования OpenSCADA, например, DAQ.JavaLikeCalc.JavaScript. В таблицу атрибутов шаблона пользователь может, посредством контекстного меню, добавить, вставить, удалить, передвинуть вверх или вниз запись атрибута, а также отредактировать поля атрибута:
С синтаксисом языка программы шаблона можно ознакомиться в документации модуля, предоставляющего интерпретатор выбранного языка. Например, типичным языком пользовательского программирования OpenSCADA является DAQ.JavaLikeCalc.JavaScript

Каждый модуль подсистемы "Сбор данных" предоставляет конфигурационную страницу с вкладками "Контроллеры" и "Помощь". Вкладка "Контроллеры" (рис.4.5h) содержит список контроллеров, зарегистрированных в модуле. В контекстном меню списка пользователю предоставляется возможность добавления, удаления и перехода к нужному контроллеру. Во вкладке "Помощь" содержится информация о модуле подсистемы "Сбор данных" (рис.4.1d), состав которой идентичен для всех модулей.

Каждый контроллер содержит собственную страницу конфигурации с вкладками "Контроллер" и "Параметры".
Вкладка "Контроллер" (рис.4.5i) содержит основные настройки. Состав этих настроек может несколько отличаться от одного модуля этой подсистемы к другому, о чём можно узнать в собственной документации модулей. В качестве примера рассмотрим настройки контроллера у модуля контроллера логического DAQ.LogicLev:

Вкладка "Параметры" (рис.4.5j) содержит список параметров в контроллере, выбор типа параметров, создаваемых по умолчанию, а также информацию об общем количестве и количестве включенных параметров. В контекстном меню, списка параметров, пользователю предоставляется возможность добавления, удаления и перехода к нужному параметру.

Параметры контроллеров подсистемы "Сбор данных" предоставляют конфигурационную страницу с вкладками "Параметр", "Атрибуты", "Архивация" и "Конфигурация шаблона". Вкладка "Конфигурация шаблона" не является стандартной, а присутствует только в параметрах модулей подсистемы "Сбор данных", которые реализуют механизмы работы по шаблону в контексте источника данных, ими обслуживаемого, для логического типа. В данный обзор эта вкладка включена для обеспечения логической завершённости обзора конфигурации шаблонов параметров подсистемы "Сбор данных" как финальный этап — использования.
Вкладка "Параметр" (рис.4.5k) содержит основные настройки в составе:
Вкладка "Атрибуты" (рис.4.5l) содержит атрибуты параметра и их значения в соответствии с конфигурацией используемого шаблона и вычисления его программы.
Вкладка "Архивация" (рис.4.5m) содержит таблицу с атрибутами параметра в колонках, и архиваторами в строках. Пользователь имеет возможность установить архивацию нужного атрибута требуемым архиватором просто изменив ячейку на пересечении.
Вкладка "Конфигурация шаблона" (рис.4.5n) содержит конфигурационные поля в соответствии с шаблоном. В примере это групповая связь на внешний параметр. Эту связь можно установить, просто указав путь к параметру, если флаг "Показывать только атрибуты" не установлен, или же установить адреса атрибутов по отдельности, если флаг установлен. Знак "(+)", в конце адреса, сигнализирует об успешной линковке и присутствии целевого объекта.




Подсистема является модульной и содержит иерархию объектов, изображённую на рис.4.6a. Для конфигурации подсистемы предусмотрена корневая страница подсистемы "Архивы", содержащая вкладки "Архив сообщений", "Архивы значений", "Модули" и "Помощь".
Для получения доступа на модификацию объектов этой подсистемы необходимы права пользователя в группе "Archive" или права привилегированного пользователя.

Вкладка "Архив сообщений" (рис.4.6b) содержит конфигурацию архива сообщений и форму запроса сообщений из архива.
Конфигурация архива сообщений представлена полями:
Форма запроса сообщений содержит конфигурационные поля запроса и таблицу результата. Конфигурационные поля запроса:
Таблица результата содержит строки сообщений с колонками:

Вкладка "Архивы значений" (рис.4.6c) содержит общую конфигурацию архивирования значений и список архивов значений. В контекстном меню списка значений пользователю предоставляется возможность добавления, удаления и перехода к нужному архиву. Общая конфигурация архивирования представлена полями:
Вкладка "Модули" (рис.4.1b) содержит список модулей подсистемы "Архивы" и идентична для всех модульных подсистем. Вкладка "Помощь" содержит краткую помощь для данной страницы.

Архив значений подсистемы "Архивы" предоставляет конфигурационную страницу с вкладками "Архив", "Архиваторы" и "Значения".
Вкладка "Архив" (рис.4.6d) содержит основные настройки архива в составе:

Вкладка "Архиваторы" (рис.4.6e) содержит таблицу с конфигурацией процесса обработки данного архива доступными архиваторами. В строках расположены доступные архиваторы, а в колонках параметры:

Вкладка "Значения" (рис.4.6f) содержит запрос значений в архиве и результат в виде таблицы значений или изображения тренда. Запрос значений содержит поля:

Каждый модуль подсистемы "Архивы" предоставляет конфигурационную страницу с вкладками "Архиваторы" и "Помощь". Вкладка "Архиваторы" (рис.4.6g) содержит списки архиваторов сообщений и значений, зарегистрированных в модуле. В контекстном меню списков пользователю предоставляется возможность добавления, удаления и перехода к нужному контроллеру. Во вкладке "Помощь" содержится информация о модуле подсистемы "Архивы" (рис.4.1d), состав которой идентичен для всех модулей.

Архиваторы сообщений содержат собственную страницу конфигурации с вкладками "Архиватор" и "Сообщения".
Вкладка "Архиватор" (рис.4.6h) содержит основные настройки. Состав этих настроек может несколько отличаться от одного модуля этой подсистемы к другому о чём можно узнать в собственной документации модулей. В качестве примера рассмотрим настройки архиватора сообщений у модуля архива на файловую систему Arch.FSArch Настройки:

Вкладка "Сообщения" (рис.4.6i) содержит форму запроса сообщений из архива данного архиватора:
Таблица результата содержит строки сообщений с колонками:

Архиваторы значений содержат собственную страницу конфигурации с вкладками "Архиватор" и "Архивы".
Вкладка "Архиватор" (рис.4.6j) содержит основные настройки. Состав этих настроек может несколько отличаться от одного модуля этой подсистемы к другому, о чём можно узнать в собственной документации модулей. В качестве примера рассмотрим настройки архиватора значений у модуля архива на файловую систему Arch.FSArch Настройки:

Вкладка "Архивы" (рис.4.6k) содержит таблицу с информацией об архивах, обрабатываемых архиватором. В строках таблица содержит архивы, а в колонках информацию:
В случае с модулем Arch.FSArch в этой вкладке ещё содержится форма экспорта данных архиватора.

Подсистема является модульной. Для конфигурации подсистемы предусмотрена корневая страница подсистемы "Пользовательские интерфейсы", содержащая вкладки "Модули" и "Помощь". Вкладка "Модули" (рис.4.1b) содержит список модулей подсистемы и идентична для всех модульных подсистем. Вкладка "Помощь" содержит краткую помощь для данной страницы.
Каждый модуль подсистемы "Пользовательские интерфейсы" предоставляет конфигурационную страницу с вкладками "Пользовательский интерфейс" и "Помощь". Вкладка "Пользовательский интерфейс" (рис.4.7a) предоставляет параметр для контроля за состоянием "Выполняется" модуля, а также разделы конфигурации специализированные для модулей этой подсистемы. Во вкладке "Помощь" содержится информация о модуле подсистемы "Пользовательские интерфейсы" (рис.4.1d), состав которой идентичен для всех модулей.

Подсистема является модульной. Для конфигурации подсистемы предусмотрена корневая страница подсистемы "Специальные", содержащая вкладки "Модули" и "Помощь". Вкладка "Модули" (рис.4.1b) содержит список модулей подсистемы и идентична для всех модульных подсистем. Вкладка "Помощь" содержит краткую помощь для данной страницы.
Каждый модуль подсистемы "Специальные" предоставляет конфигурационную страницу с вкладками "Специальный модуль" и "Помощь". Вкладка "Специальный модуль" (рис.4.8a) предоставляет параметр для контроля за состоянием "Выполняется" модуля, а также разделы конфигурации специализированные для модулей этой подсистемы. Во вкладке "Помощь" содержится информация о модуле подсистемы "Специальные" (рис.4.1d), состав которой идентичен для всех модулей.

Подсистема не является модульной. Для конфигурации подсистемы предусмотрена страница подсистемы "Управление модулями", содержащая вкладки "Подсистема" и "Помощь". Вкладка "Подсистема" (рис.4.9a) содержит основные настройки подсистемы. Вкладка "Помощь" содержит краткую помощь для данной страницы. Состав вкладки "Подсистема":

Конфигурационный файл системы OpenSCADA предназначен для хранения системной и общей конфигурации OpenSCADA-станции. Только в конфигурационном файле и через параметры командной строки можно указать часть ключевых системных параметров станции, поэтому знакомство со структурой конфигурационного файла необходимо для специалистов развёртывающих решения на основе OpenSCADA.
Называться конфигурационный файл системы OpenSCADA может по разному, однако принято название oscada.xml и производные от него. Конфигурационный файл обычно указывается, при запуске станции, параметром командной строки --Config=/home/roman/roman/work/OScadaD/etc/oscada_demo.xml. Для удобства вызова создаются скрипты запуска станции с нужным конфигурационным файлом, например скрипт (openscada_demo) вызова демонстрационной станции:
#!/bin/sh
openscada --Config=/etc/oscada_demo.xml $@
Если конфигурационный файл не указан то используется стандартный конфигурационный файл: /etc/oscada.xml .
Структурно конфигурационный файл организован на расширяемом языке разметки текста XML. Следовательно требуется жёсткое соблюдение правил синтаксиса XML. Пример образца типового конфигурационного файла OpenSCADA, с узлами конфигурации большинства компонентов OpenASCADA, приведен ниже:
<?xml version="1.0" encoding="UTF-8" ?> <OpenSCADA> <!-- This is the OpenSCADA configuration file. --> <station id="DemoStation"> <!-- Discribe internal parameter for station. Station this only OpenSCADA programm. --> <prm id="StName">Demo station</prm> <prm id="StName_ru">Демо станция</prm> <prm id="StName_uk">Демо станція</prm> <prm id="WorkDB">SQLite.GenDB</prm> <prm id="Workdir">~/.openscada</prm> <prm id="IcoDir">./icons</prm> <prm id="ModDir">/usr/lib/openscada</prm> <prm id="LogTarget">10</prm> <prm id="MessLev">0</prm> <prm id="Lang2CodeBase">en</prm> <prm id="SaveAtExit">0</prm> <prm id="SavePeriod">0</prm> <node id="sub_BD"> <prm id="SYSStPref">0</prm> <tbl id="DB"> <fld ID="GenDB" TYPE="SQLite" NAME="Generic DB" NAME_ru="Основная БД" NAME_uk="Основна БД" ADDR="./DEMO/DemoSt.db" CODEPAGE="UTF-8"/> </tbl> </node> <node id="sub_Security"> <!-- <tbl id="Security_user"> <fld NAME="root" DESCR="Super user" DESCR_ru="Супер пользователь" DESCR_uk="Супер користувач" PASS="openscada"/> <fld NAME="user" DESCR="System user" DESCR_ru="Системный пользователь" DESCR_uk="Системний користувач" PASS=""/> </tbl> <tbl id="Security_grp"> <fld NAME="root" DESCR="Super users groups" DESCR_ru="Группа суперпользователей" DESCR_uk="Група суперкористувачів" USERS="root;user"/> </tbl>--> </node> <node id="sub_ModSched"> <prm id="ModAllow">*</prm> <prm id="ModDeny"></prm> <prm id="ChkPer">0</prm> </node> <node id="sub_Transport"> <!-- <tbl id="Transport_in"> <fld ID="WEB_1" MODULE="Sockets" NAME="Generic WEB interface" NAME_ru="Основной WEB интерфейс" NAME_uk="Основний WEB інтерфейс" DESCRIPT="Generic transport for WEB interface." DESCRIPT_ru="Основной транспорт для WEB интерфейса." DESCRIPT_uk="Основний транспорт для WEB інтерфейсу." ADDR="TCP::10002:0" PROT="HTTP" START="1"/> <fld ID="WEB_2" MODULE="Sockets" NAME="Reserve WEB interface" NAME_ru="Резервный WEB интерфейс" NAME_uk="Резервний WEB інтерфейс" DESCRIPT="Reserve transport for WEB interface." DESCRIPT_ru="Резервный транспорт для WEB интерфейса." DESCRIPT_uk="Резервний транспорт для WEB інтерфейсу." ADDR="TCP::10004:0" PROT="HTTP" START="1"/> </tbl> <tbl id="Transport_out"> <fld ID="testModBus" MODULE="Sockets" NAME="Test ModBus" NAME_ru="Тест ModBus" NAME_uk="Тест ModBus" DESCRIPT="Data exchange by protocol ModBus test." DESCRIPT_ru="Тест обмена по протоколу ModBus." DESCRIPT_uk="Тест обміну за протоколом ModBus." ADDR="TCP:localhost:10502" START="1"/> </tbl>--> </node> <node id="sub_DAQ"> <!-- <tbl id="tmplib"> <fld ID="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" DB="tmplib_test2"/> </tbl> <tbl id="tmplib_test2"> <fld ID="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" DB="test2" PROGRAM="JavaLikeCalc.JavaScript
cnt=5*i"/> </tbl> <tbl id="tmplib_test2_io"> <fld TMPL_ID="test2" ID="i" NAME="I" NAME_ru="I" NAME_uk="I" TYPE="4" FLAGS="160" VALUE="" POS="0"/> <fld TMPL_ID="test2" ID="cnt" NAME="Cnt" NAME_ru="Cnt" NAME_uk="Cnt" TYPE="4" FLAGS="32" VALUE="" POS="0"/> </tbl>--> <node id="mod_LogicLev"> <!-- <tbl id="DAQ"> <fld ID="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" ENABLE="1" START="1" PRM_BD="test2prm" PERIOD="1000" PRIOR="0"/> </tbl> <tbl id="test2prm"> <fld SHIFR="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" MODE="2" PRM="test2.test2"/> </tbl>--> </node> <node id="mod_System"> <!-- <tbl id="DAQ"> <fld ID="DataOS" NAME="Data OS" NAME_ru="Даные ОС" NAME_uk="Дані ОС" DESCR="Data of services and subsystems OS." DESCR_ru="Данные сервисов и подсистем ОС." DESCR_uk="Дані сервісів та підсистем ОС." ENABLE="1" START="1" AUTO_FILL="0" PRM_BD="DataOSprm" PERIOD="1000" PRIOR="0"/> </tbl> <tbl id="DataOSprm"> <fld SHIFR="CPU" NAME="CPU load" NAME_ru="Нагрузка CPU" NAME_uk="Навантаження CPU" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" TYPE="CPU" SUBT="gen"/> <fld SHIFR="MEM" NAME="Memory" NAME_ru="Память" NAME_uk="Пам\'ять" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" TYPE="MEM"/> </tbl> --> </node> <node id="mod_DiamondBoards"> <!-- <tbl id="DAQ"> <fld ID="Athena" NAME="Athena board" NAME_ru="Плата Athena" NAME_uk="Плата Athena" DESCR="" DESCR_ru="" DESCR_uk="" ENABLE="1" START="0" BOARD="25" PRM_BD_A="AthenaAnPrm" PRM_BD_D="AthenaDigPrm" ADDR="640" INT="5" DIO_CFG="0" ADMODE="0" ADRANGE="0" ADPOLAR="0" ADGAIN="0" ADCONVRATE="1000"/> </tbl> <tbl id="AthenaAnPrm"> <fld SHIFR="ai0" NAME="AI 0" NAME_ru="AI 0" NAME_uk="AI 0" DESCR="" DESCR_ru="" DESCR_uk="" EN="0" TYPE="0" CNL="0" GAIN="0"/> </tbl> <tbl id="AthenaDigPrm"> <fld SHIFR="di0" NAME="DI 0" NAME_ru="DI 0" NAME_uk="DI 0" DESCR="" DESCR_ru="" DESCR_uk="" EN="0" TYPE="0" PORT="0" CNL="0"/> </tbl> --> </node> <node id="mod_BlockCalc"> <!-- <tbl id="DAQ"> <fld ID="Model" NAME="Model" NAME_ru="Модель" NAME_uk="Модель" DESCR="" DESCR_ru="" DESCR_uk="" ENABLE="1" START="1" PRM_BD="Model_prm" BLOCK_SH="Model_blcks" PERIOD="1000" PRIOR="0" PER_DB="0" ITER="1"/> </tbl> <tbl id="Model_blcks"> <fld ID="Klap" NAME="Klapan" NAME_ru="Клапан" NAME_uk="Клапан" DESCR="" DESCR_ru="" DESCR_uk="" FUNC="DAQ.JavaLikeCalc.lib_techApp.klap" EN="1" PROC="1"/> </tbl> <tbl id="Model_blcks_io"> <fld BLK_ID="Klap" ID="l_kl1" TLNK="0" LNK="" VAL="50"/> <fld BLK_ID="Klap" ID="l_kl2" TLNK="0" LNK="" VAL="20"/> </tbl> <tbl id="Model_prm"> <fld SHIFR="l_kl" NAME="Klap lev" NAME_ru="Полож. клапана" NAME_uk="Полож. клапана" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" BLK="Klap" IO="l_kl1"/> </tbl> --> </node> <node id="mod_JavaLikeCalc"> <!-- <tbl id="DAQ"> <fld ID="CalcTest" NAME="Calc Test" NAME_ru="Тест вычисл." NAME_uk="Тест обчисл." DESCR="" DESCR_ru="" DESCR_uk="" ENABLE="1" START="1" PRM_BD="CalcTest_prm" FUNC="TemplFunc.d_alarm" PERIOD="1000" PRIOR="0" PER_DB="0" ITER="1"/> </tbl> <tbl id="CalcTest_val"> <fld ID="in" VAL="0"/> <fld ID="alrm" VAL=""/> <fld ID="alrm_md" VAL="1"/> <fld ID="alrm_mess" VAL="Error present."/> </tbl> <tbl id="CalcTest_prm"> <fld SHIFR="alrm" NAME="Alarm" NAME_ru="Авария" NAME_uk="Аварія" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" FLD="alrm"/> </tbl> <tbl id="lib"> <fld ID="TemplFunc" NAME="" NAME_ru="" NAME_uk="" DESCR="" ESCR_ru="" DESCR_uk="" DB="lib_TemplFunc"/> </tbl> <tbl id="lib_TemplFunc"> <fld ID="d_alarm" NAME="Digit alarm" NAME_ru="Авария по дискр." NAME_uk="Аварія за дискр" DESCR="" FORMULA="alrm=(in==alrm_md)?"1:"+alrm_mess:"0";"/> </tbl> <tbl id="lib_TemplFunc_io"> <fld F_ID="d_alarm" ID="in" NAME="Input" NAME_ru="Вход" NAME_uk="Вхід" TYPE="3" MODE="0" DEF="" HIDE="0" POS="0"/> <fld F_ID="d_alarm" ID="alrm" NAME="Alarm" NAME_ru="Авария" NAME_uk="Аварія" TYPE="0" MODE="1" DEF="" HIDE="0" POS="1"/> <fld F_ID="d_alarm" ID="alrm_md" NAME="Alarm mode" NAME_ru="Режим аварии" NAME_uk="Режим аварії" TYPE="3" MODE="0" DEF="" HIDE="0" POS="2"/> <fld F_ID="d_alarm" ID="alrm_mess" NAME="Alarm message" NAME_ru="Сообщ. аварии" NAME_uk="Повід. аварії" TYPE="0" MODE="0" DEF="" HIDE="0" POS="3"/> </tbl>--> </node> <node id="mod_Siemens"> <!-- <tbl id="DAQ"> <fld ID="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" ENABLE="1" START="1" PRM_BD="test2prm" PERIOD="1000" PRIOR="0" CIF_DEV="0" ADDR="5" ASINC_WR="0"/> </tbl> <tbl id="test2prm"> <fld SHIFR="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" TMPL="S7.ai_man"/> </tbl>--> </node> <node id="mod_SNMP"> <!-- <tbl id="DAQ"> <fld ID="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" ENABLE="1" START="1" PRM_BD="test2prm" PERIOD="1000" PRIOR="0" ADDR="localhost" COMM="public" PATTR_LIM="20"/> </tbl> <tbl id="test2prm"> <fld SHIFR="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" OID_LS="system"/> </tbl>--> </node> <node id="mod_ModBus"> <!-- <tbl id="DAQ"> <fld ID="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" ENABLE="1" START="1" PRM_BD="test2prm" PERIOD="1000" PRIOR="0" TRANSP="Sockets" ADDR="exlar.diya.org" NODE="1"/> </tbl> <tbl id="test2prm"> <fld SHIFR="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" ATTR_LS="321:0:tst:Test"/> </tbl>--> </node> <node id="mod_Transporter"> <!-- <tbl id="DAQ"> <fld ID="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" ENABLE="1" START="1" PRM_BD="test2prm" PERIOD="1000" PRIOR="0" SYNCPER="60" STATIONS="loop" CNTRPRM="System.AutoDA"/> </tbl>--> </node> </node> <node id="sub_Archive"> <prm id="MessBufSize">1000</prm> <prm id="MessPeriod">5</prm> <prm id="ValPeriod">1000</prm> <prm id="ValPriority">10</prm> <!-- <tbl id="Archive_mess_proc"> <fld ID="StatErrors" MODUL="FSArch" NAME="Errors" NAME_ru="Ошибки" NAME_uk="Помилки" DESCR="Local errors\' archive" DESCR_ru="Архив локальных ощибок" DESCR_uk="Архів локальних помилок" START="1" CATEG="/DemoStation*" LEVEL="4" ADDR="ARCHIVES/MESS/stError/" FSArchMSize="300" FSArchNFiles="10" FSArchTmSize="30" FSArchXML="1" FSArchPackTm="10" FSArchTm="60"/> <fld ID="NetRequsts" MODUL="FSArch" NAME="Net requests" NAME_ru="Сетевые запросы" NAME_uk="Мережеві запити" DESCR="Requests to server through transport Sockets." DESCR_ru="Запросы к серверу через транспорт Sockets." DESCR_uk="Запити до сервера через транспорт Sockets." START="1" CATEG="/DemoStation/Transport/Sockets*" LEVEL="1" ADDR="ARCHIVES/MESS/Net/" FSArchMSize="300" FSArchNFiles="10" FSArchTmSize="30" FSArchXML="1" FSArchPackTm="10" FSArchTm="60"/> </tbl> <tbl id="Archive_val_proc"> <fld ID="1h" MODUL="FSArch" NAME="1hour" NAME_ru="1час" NAME_uk="1год" DESCR="Averaging for hour" DESCR_ru="Усреднение за час" DESCR_uk="Усереднення за годину" START="1" ADDR="ARCHIVES/VAL/1h/" V_PER="360" A_PER="60" FSArchTmSize="8640" FSArchNFiles="10" FSArchRound="0.1" FSArchPackTm="10" FSArchTm="60"/> </tbl> <tbl id="Archive_val"> <fld ID="test1" NAME="Test 1" NAME_ru="Тест 1" NAME_uk="Тест 1" DESCR="Test 1" DESCR_ru="Тест 1" DESCR_uk="Тест 1" START="1" VTYPE="1" BPER="1" BSIZE="200" BHGRD="1" BHRES="0" SrcMode="0" Source="" ArchS=""/> </tbl>--> </node> <node id="sub_Protocol"> </node> <node id="sub_UI"> <node id="mod_QTStarter"> <prm id="StartMod">QTCfg</prm> </node> <node id="mod_WebCfg"> <prm id="SessTimeLife">20</prm> </node> <node id="mod_VCAEngine"> <!-- <tbl id="LIB"> <fld ID="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" DB_TBL="wlib_test2" ICO="" USER="root" GRP="UI" PERMIT="436"/> </tbl> <tbl id="wlib_test2"> <fld ID="test2" ICO="" PARENT="/wlb_originals/wdg_Box" PROC="" PROC_ru="" PROC_uk="" PROC_PER="-1" USER="root" GRP="UI" PERMIT="436"/> </tbl> <tbl id="wlib_test2_io"> <fld IDW="test2" ID="name" IO_VAL="Test 2" IO_VAL_ru="Тест 2" IO_VAL_uk="Тест 2" SELF_FLG="" CFG_TMPL="" CFG_TMPL_ru="" CFG_TMPL_uk="" CFG_VAL=""/> <fld IDW="test2" ID="dscr" IO_VAL="Test module 2" IO_VAL_ru="Тест модуля 2" IO_VAL_uk="Тест модуля 2" SELF_FLG="" CFG_TMPL="" CFG_TMPL_ru="" CFG_TMPL_uk="" CFG_VAL=""/> </tbl> <tbl id="PRJ"> <fld ID="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" DB_TBL="prj_test2" ICO="" USER="root" GRP="UI" PERMIT="436"/> </tbl> <tbl id="prj_test2"> <fld OWNER="/test2" ID="pg1" ICO="" PARENT="/wlb_originals/wdg_Box" PROC="" PROC_ru="" PROC_uk="" PROC_PER="-1" USER="root" GRP="UI" PERMIT="436" FLGS="1"/> <fld OWNER="/test2/pg1" ID="pg2" ICO="" PARENT="/wlb_originals/wdg_Box" PROC="" PROC_ru="" PROC_uk="" PROC_PER="-1" USER="root" GRP="UI" PERMIT="436" FLGS="0"/> </tbl> <tbl id="prj_test2_incl"> <fld IDW="/prj_test2/pg_pg1" ID="wdg1" PARENT="/wlb_originals/wdg_Box"/> </tbl>--> </node> </node> <node id="sub_Special"> <node id="mod_SystemTests"> <prm id="PARAM" on="0" per="5" name="LogicLev.experiment.F3"/> <prm id="XML" on="0" per="10" file="/etc/oscada.xml"/> <prm id="MESS" on="0" per="10" categ="" arhtor="DBArch.test3"/> <prm id="SOAttDet" on="0" per="20" name="../../lib/openscada/daq_LogicLev.so" full="1"/> <prm id="Val" on="0" per="1" name="LogicLev.experiment.F3.var" arch_len="5" arch_per="1000000"/> <prm id="Val" on="0" per="1" name="System.AutoDA.CPULoad.load" arch_len="10" arch_per="1000000"/> <prm id="BD" on="0" per="10" type="MySQL" bd="server.diya.org;roman;123456;oscadaTest" table="test" size="1000"/> <prm id="BD" on="0" per="10" type="DBF" bd="./DATA/DBF" table="test.dbf" size="1000"/> <prm id="BD" on="0" per="10" type="SQLite" bd="./DATA/test.db" table="test" size="1000"/> <prm id="BD" on="0" per="10" type="FireBird" bd="server.diya.org:/var/tmp/test.fdb;roman;123456" table="test" size="1000"/> <prm id="TrOut" on="0" per="1" addr="TCP:127.0.0.1:10001" type="Sockets" req="time"/> <prm id="TrOut" on="0" per="1" addr="UDP:127.0.0.1:10001" type="Sockets" req="time"/> <prm id="TrOut" on="0" per="1" addr="UNIX:./oscada" type="Sockets" req="time"/> <prm id="TrOut" on="0" per="1" addr="UDP:127.0.0.1:daytime" type="Sockets" req="time"/> <prm id="Func" on="0" per="10"/> <prm id="SysContrLang" on="0" per="10" path="/Archive/FSArch/mess_StatErrors/%2fprm%2fst"/> <prm id="ValBuf" on="0" per="5"/> <prm id="Archive" on="0" per="30" arch="test1" period="1000000"/> <prm id="Base64Code" on="0" per="10"/> </node> </node> </station> </OpenSCADA>
Рассмотрим детальнее структуру конфигурационного файла. Один конфигурационный файл может содержать конфигурацию нескольких станций в секциях <station id="DemoStation"/>. Атрибутом указывается идентификатор станции. Использование той или иной секции станции, при вызове, указывается параметром командной строки --Station=DemoStation. Секция станции непосредственно содержит параметры станции и секции подсистем. Параметры конфигурации секции записываются в виде <prm id="StName">Demo station</prm>. Где в атрибуте <id> указывается идентификатор атрибута, а в теле тега указывается значение параметра "Demo station". Перечень доступных параметров и их описание для станции и всех остальных секций можно получить в консоли, посредством вызова OpenSCADA с параметром --help или во вкладках "Помощь" страниц компонентов конфигурационных файлов OpenSCADA (рис.4.10a).

Результат вызова команды: # ./openscada_demo --help
***************************************************************************
********** OpenSCADA 0.6.4.1 (Linux-2.6.30-std-def-alt15). *********
***************************************************************************
===========================================================================
======================= Основные опции системы ============================
===========================================================================
-h, --help Информация по опциям системы.
--Config=<путь> Конфигурационный файл.
--Station=<имя> Имя станции.
--demon Запуск в режиме демона.
--MessLev=<уров> Обрабатываемый <уровень> сообщений (0-7).
--log=<направл.> Направление сообщений в:
<направл.> & 1 - системный логер (syslogd);
<направл.> & 2 - стандартный выход (stdout);
<направл.> & 4 - стандартный выход ошибок (stderr);
<направл.> & 8 - архив сообщений.
-------------- Параметры станции </EmptySt/> в конфигурационном файле ------------
StName <имя> Имя станции.
WorkDB <Тип.Имя> Рабочая БД (тип и имя).
Workdir <path> Рабочая директория.
IcoDir <path> Директория с иконками.
ModDir <path> Директория модулей.
MessLev <уровень> Обрабатываемый <уровень> сообщений (0-7).
LogTarget <направл.> Направление сообщений в:
<направл.> & 1 - системный логер (syslogd);
<направл.> & 2 - стандартный выход (stdout);
<направл.> & 4 - стандартный выход ошибок (stderr);
<направл.> & 8 - архив сообщений.
Lang2CodeBase <язык> Базовый язык для перевода текстовых переменных, два символа.
SaveAtExit <true> Сохранять систему при выходе.
SavePeriod <сек> Период сохранения системы.
=================== Подсистема "Управление модулями" ====================
--ModPath=<путь> Путь к модулям (/var/os/modules/).
--------- Параметры секции </DemoStation/sub_ModSched/> в конфигурационном файле ---------
ModPath <путь> Путь к разделяемым библиотекам (модулям).
ModAllow <список> Список разделяемых библиотек допустимых для автоматической загрузки, подключения и запуска (bd_DBF.so;daq_JavaLikeCalc.so).
Использовать значение '*' для разрешения всех модулей.
ModDeny <список> Список разделяемых библиотек запрещённых для автоматической загрузки, подключения и запуска (bd_DBF.so;daq_JavaLikeCalc.so).
ChkPer <сек> Период поиска новых разделяемых библиотек (модулей).
========================= Опции подсистемы "БД" =========================
-------------- Параметры станции </DemoStation/sub_BD/> в конфигурационном файле ------------
SYSStPref <1> Использовать идентификатор станции в общей (SYS) таблице.
==================== Опции подсистемы "Безопасности" ====================
====================== Опции подсистемы "Транспорты" ====================
============== Опции подсистемы "Транспортные протоколы" ================
======================= Опции модуля <Protocol:HTTP> =============================
------- Параметры модульной секции </DemoStation/sub_Protocol/mod_HTTP/> в конфигурационном файле ---------
AuthTime <мин> Время жизни аутентификации, минут (по умолчанию 10).
=================== Опции подсистемы "Сбор данных" ======================
--------------- Параметры секции </DemoStation/sub_DAQ/> в конфигурационном файле --------------
RdStLevel <уров> Уровень текущей станции в схеме резервирования.
RdTaskPer <с> Периодичность вызова задачи обслуживания резервирования.
RdRestConnTm <с> Интервал времени восстановления соединения с "мёртвой" резервной станцией.
RdRestDtTm <час> Глубина восстановления данных архива из резервной станции, при включении.
RdStList <список> Список резервных станций, разделённых символом ';' (st1;st2).
==================== Опции подсистемы "Архивы" ======================
---------- Параметры секции </DemoStation/sub_Archive/> в конфигурационном файле --------
MessBufSize <ед.> Размер буфера сообщений.
MessPeriod <сек> Период архивирования сообщений.
ValPeriod <мсек> Период архивирования значений.
ValPriority <уровень> Уровень приоритета задачи значений.
MaxReqMess <ед.> Максимальное количество запрашиваемых сообщений.
MaxReqVals <ед.> Максимальное количество запрашиваемых значений.
===================== Опции подсистемы "Специальные" ====================
========================== Опции модуля <Special:SystemTests> ==========================
-------- Параметры модульной секции </DemoStation/sub_Special/mod_SystemTests/> в конфигурационном файле --------
Общие опции всех тестов:
id идентификатор теста;
on флаг включения теста;
per период повторения (сек).
*** Опции тестов ***
1) Param Тест DAQ параметров. Вычитывает атрибуты и конфигурационные поля параметра.
1:name Адрес DAQ параметра
2) XML Тест разбора файла XML. Парсит и отображает структуру указанного файла.
1:file XML файл
3) Mess Тест архива сообщений. Периодически вычитывает новые сообщения из архива, для указанного архиватора.
1:arhtor Архиватор
2:categ Шаблон категории сообщения
3:depth Глубина сообщения (с)
4) SOAttach Тест подключения/отключения модулей.
1:name Путь к модулю
2:mode Режим (1-подключ.;-1-отключ.;0-изменение)
3:full Полное подключение(при старте)
5) Val Тест значений атрибута параметра.
Выполняет периодический опрос последнего значения указанного атрибута, а также опрос архива на указанную глубину.
1:name Путь к атрибуту параметра
2:arch_len Глубина запроса к архиву значений (с)
3:arch_per Период запроса к архиву значений (мкс)
6) DB Полный тест БД. Выполняет:
- создание/открытие БД;
- создание/открытие таблицы;
- создание множества записей (строк) предопределённой структуры;
- модификация множества записей;
- получение и проверка значений множества записей;
- модификация структуры записи и таблицы;
- удаление записей;
- закрытие/удаление таблицы;
- закрытие/удаление БД.
1:type Тип БД
2:addr Адрес БД
3:table Таблица БД
4:size Количество записей
7) TrOut Тест выходных и/или входных транспортов.
Выполняет тестирование исходящего транспорта путём отправления запроса к указанному входящему транспорту.
1:addr Адрес
2:type Модуль транспорта
3:req Текст запроса
8) SysContrLang Тест языка управления системой.
Производит запрос элементов языка посредством полного пути.
Полный путь к элементу языка имеет вид </Archive/%2fbd%2fm_per>.
Полный путь состоит из двух вложенных путей.
Первый </d_Archive/> это путь к узлу дерева контроля.
Второй </bd/m_per> это путь к конкретному элементу узла.
1:path Путь к элементу языка
9) ValBuf Тесты буфера значений. Содержит 13 тестов всех аспектов буфера значений (подсистема "Архивы").
10) Archive Тесты размещения в архиве значений.
Содержит 7(8) тестов архиватора значений на проверку корректности функционирования последовательного механизма упаковки.
1:arch Архив значений
2:period Период значений (мкс)
11) Base64Code Тесты кодирования Mime Base64 алгоритмом.
============= Опции подсистемы "Пользовательские интерфейсы" ============
======================== Опции модуля <UI:Vision> ============================
------- Параметры модульной секции </DemoStation/sub_UI/mod_Vision/> в конфигурационном файле ---------
StartUser <польз> Стартовый, безпарольный, пользователь.
RunPrjs <список> Перечень запускаемых при старте проектов.
RunTimeUpdt <mode> Режим обновления динамики в RunTime (0 - адаптивное периодическое обновление всех виджетов,
1 - обновление только изменённых виджетов).
VCAstation <id> Станция с движком СВУ ('.' - локальная).
======================== Опции модуля <UI:VCAEngine> ============================
--VCADBClearForce Принудительная очистка БД СВУ от данных API 1.
======================= Опции модуля <UI:QTCfg> =============================
------- Параметры модульной секции </DemoStation/sub_UI/mod_QTCfg/> в конфигурационном файле ---------
StartPath <path> Стартовый путь конфигуратора.
StartUser <user> Стартовый, безпарольный, пользователь.
======================== Опции модуля <UI:QTStarter> ============================
------- Параметры модульной секции </DemoStation/sub_UI/mod_QTStarter/> в конфигурационном файле ---------
StartMod <модули> Список запускаемых модулей (разделитель - ';');
======================== Опции модуля <UI:WebVision> ============================
------- Параметры модульной секции </DemoStation/sub_UI/mod_WebVision/> в конфигурационном файле ---------
SessTimeLife <время> Время жизни сессии, минуты (по умолчанию 10).
Секции подсистем (<node id="sub_DAQ" />) содержат параметры подсистемы, секции модулей и секции таблиц отражения данных баз данных в конфигурационном файле. Секции модулей (<node id="mod_DiamondBoards" />) содержат индивидуальные параметры модулей и секции таблиц отражения данных баз данных в конфигурационном файле.
Секции таблиц отражения данных баз данных предназначены для размещения в конфигурационном файле записей таблиц БД для компонентов OpenSCADA. Рассмотрим таблицу входящих транспортов "Transport_in" подсистемы транспорты (<node id="sub_Transport">) из примера конфигурационного файла выше. Таблица содержит две записи с полями: ID, MODULE, NAME, DESCRIPT, ADDR, PROT, START. После загрузки с такой секцией и вообще без БД в подсистеме "Транспорты" модуля "Sockets" появятся два входных транспорта. Форматы структур таблиц основных компонентов включены в демонстрационные конфигурационные файлы. За деталями структуры БД нужно обращаться к документации соответствующих модулей.