Как можно видеть в разделе выше, 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) в конфигураторе.
Задача обслуживания механизма резервирования запускается всегда и исполняется с периодичностью, установленной в соответствующем конфигурационном поле. Реальная работа по осуществлению резервирования осуществляется при наличии хотя бы одной резервной станции в списке станций и предполагает:
Рекомендуется резервирование настраивать таким образом чтобы БД резервных станций сохранялись одинаковыми, что в дальнейшем позволит безболезненно копировать их при восстановлении на любую станцию и соответственно в резервной копии можно хранить только один набор БД. При этом настройки, специфичные для отдельной станции, будут сохраняться в конфигурационном файле и можно будет легко конфигурировать и менять нужную станцию выбором соответствующего конфигурационного файла.
Настройка резервирования начинается с добавления резервных станций в список системных станций OpenSCADA на вкладке "Подсистема" подсистемы "Транспорты" (рис.4.3b). Причём добавлять тут нужно не только резервные станции к текущей, но и саму эту текущую станцию с её внешним адресом, т.е. своеобразная петля. В дальнейшем эти настройки будут сохранены в общую БД резервированной системы, а сама БД с этого момента будет использоваться при создании всех резервных станций. Соответственно важно на этом этапе внести все нужные изменения в общую БД вокруг проекта в целом!
Далее на конкретной станции, с копией общей БД, настраиваем её специфические параметры во вкладке "Резервирование" главной страницы (рис.4c), которые будут сохранены в конфигурационном файле.
После этого вся конфигурация резервирования осуществляется во вкладке "Резервирование" соответствующей подсистемы, "Сбор данных" (рис.4.5b) или "Архивы" (рис.4.6b). Если установить параметр "Передача локальных первичных команд" (рис.4c) то эта конфигурация, как и любая другая конфигурация общего характера, может осуществляться на одной из станций, а внесённые изменения попадут и на все резервные, конечно если они будут доступны.
Для отладки различных особенностей работы OpenSCADA может потребоваться включение генерации дополнительных-отладочных сообщений, что осуществляется установкой минимального уровня сообщений, на вкладке "Станция", в "Отладка (0)". В результате этого появится вкладке "Отладка" (рис.4e) где доступны счётчики объектов для контроля за утечками, а также таблица с перечнем категорий поступающий отладочных сообщений. В таблице категорий можно выбрать только те источники отладочных сообщений, которые нужны, тем самым не перегружая подсистему вывода и архивирования сообщений, а так-же не понижая производительность системы в целом. Можно выбирать категории и высших уровней, вплоть до корневой категории системы, что выключит детальный выбор и включит генерацию всех сообщений по уровню или системе. Для изучения отладочных сообщений нужно перейти в подсистему "Архивы" (рис. 4.6c), для чего предусмотрена кнопка "Просмотр сообщений". Выбранный режим отладки и перечень категорий отладки может быть сохранён в конфигурационном файле стандартным образом и при следующем старте режим отладки активируется сразу, что важно в первую очередь для счётчиков объектов.
При рассмотрении страниц конфигурации модульных подсистем будут описаны общие для всех модулей свойства. Однако нужно отметить, что каждый модуль может предоставлять как дополнительные вкладки, так и отдельные поля для конфигурации собственных особенностей функционирования для страниц, объекты которых наследуются модулями. С особенностями и дополнениями модулей можно ознакомиться в отдельной документации на них.
Подсистема является модульной и содержит иерархию объектов изображённую на рис.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) содержит форму диагностических сообщений источника данных. Поскольку многие источники данных представляют собой внешние устройства с доступом к данным посредством сетевого обмена или системной шины то возможны различные нештатные ситуации при доступе к данным. Вывод всех их в поле "Статус", объекта контроллера, невозможен поскольку он отображает только текущее состояние доступа к данным. С помощью диагностики можно проследить все нештатные ситуации в виде сообщений, сформированных данным объектом контроллера за указанный промежуток времени и с выбранным уровнем сообщения. Кроме непосредственно рабочей диагностической информации ряд модулей источников данных могут предоставлять здесь различные отладочные дампы обмена, на уровне сообщений "Отладка (0)".
Параметры контроллеров подсистемы "Сбор данных" предоставляют конфигурационную страницу с вкладками "Параметр", "Атрибуты", "Архивация" и "Конфигурация шаблона". Вкладка "Конфигурация шаблона" не является стандартной, а присутствует только в параметрах модулей подсистемы "Сбор данных", которые реализуют механизмы работы по шаблону в контексте источника данных, ими обслуживаемого, для логического типа. В данный обзор эта вкладка включена для обеспечения логической завершённости обзора конфигурации шаблонов параметров подсистемы "Сбор данных" как финальный этап — использования.
Вкладка "Параметр" (рис.4.5l) содержит основные настройки в составе:
Вкладка "Атрибуты" (рис.4.5m) содержит атрибуты параметра и их значения в соответствии с конфигурацией используемого шаблона и вычисления его программы.
Вкладка "Архивация" (рис.4.5n) содержит таблицу с атрибутами параметра в колонках, и архиваторами в строках. Пользователь имеет возможность установить архивацию нужного атрибута требуемым архиватором просто изменив ячейку на пересечении.
Вкладка "Конфигурация шаблона" (рис.4.5o) содержит конфигурационные поля в соответствии с шаблоном. В примере это групповая связь на внешний параметр. Эту связь можно установить, просто указав путь к параметру, если флаг "Показывать только атрибуты" не установлен, или же установить адреса атрибутов по отдельности, если флаг установлен. Знак "(+)", в конце адреса, сигнализирует об успешной линковке и присутствии целевого объекта.
Подсистема является модульной и содержит иерархию объектов, изображённую на рис.4.6a. Для конфигурации подсистемы предусмотрена корневая страница подсистемы "Архивы", содержащая вкладки "Резервирование", "Архив сообщений", "Архивы значений" и "Модули".
Для получения доступа на модификацию объектов этой подсистемы необходимы права пользователя в группе "Archive" или права привилегированного пользователя.
Объектом резервирования подсистемы "Архивы" выступает объект архиватора сообщений в рамках которого резервирование данных выполняет функции:
Резервирование архиваторов значений не предоставляется прямо ввиду осуществления этого процесса через источники данных и подсистему сбора данных.
Вкладка "Резервирование" (рис.4.6b) доступна только если в резерве указана хотя-бы одна станция и содержит конфигурацию резервирования архиваторов сообщений подсистемы "Архивы", в составе настроек:
Вкладка "Архив сообщений" (рис.4.6c) содержит конфигурацию архива сообщений и форму запроса сообщений из архива.
Конфигурация архива сообщений представлена полями:
Форма запроса сообщений содержит конфигурационные поля запроса и таблицу результата. Конфигурационные поля запроса:
Таблица результата содержит строки сообщений с колонками:
Вкладка "Архивы значений" (рис.4.6d) содержит общую конфигурацию архивирования значений и список архивов значений. В контекстном меню списка значений пользователю предоставляется возможность добавления, удаления и перехода к нужному архиву. Общая конфигурация архивирования представлена полями:
Вкладка "Модули" (рис.4.1b) содержит список модулей подсистемы "Архивы" и идентична для всех модульных подсистем.
Архив значений подсистемы "Архивы" предоставляет конфигурационную страницу с вкладками "Архив", "Архиваторы" и "Значения".
Вкладка "Архив" (рис.4.6e) содержит основные настройки архива в составе:
Вкладка "Архиваторы" (рис.4.6f) содержит таблицу с конфигурацией процесса обработки данного архива доступными архиваторами. В строках расположены доступные архиваторы, а в колонках параметры:
Вкладка "Значения" (рис.4.6g) содержит запрос значений в архиве и результат в виде таблицы значений или изображения тренда. Запрос значений содержит поля:
Каждый модуль подсистемы "Архивы" предоставляет конфигурационную страницу с вкладками "Архиваторы" и "Модуль". Вкладка "Архиваторы" (рис.4.6h) содержит списки архиваторов сообщений и значений, зарегистрированных в модуле. В контекстном меню списков пользователю предоставляется возможность добавления, удаления и перехода к нужному контроллеру. Во вкладке "Модуль" содержится информация о модуле подсистемы "Архивы" (рис.4.1d), состав которой идентичен для всех модулей.
Архиваторы сообщений содержат собственную страницу конфигурации с вкладками "Архиватор" и "Сообщения".
Вкладка "Архиватор" (рис.4.6i) содержит основные настройки. Состав этих настроек может несколько отличаться от одного модуля этой подсистемы к другому о чём можно узнать в собственной документации модулей. В качестве примера рассмотрим настройки архиватора сообщений у модуля архива на файловую систему Arch.FSArch:
Вкладка "Сообщения" (рис.4.6j) содержит форму запроса сообщений из архива данного архиватора:
Таблица результата содержит строки сообщений с колонками:
Архиваторы значений содержат собственную страницу конфигурации с вкладками "Архиватор" и "Архивы".
Вкладка "Архиватор" (рис.4.6k) содержит основные настройки. Состав этих настроек может несколько отличаться от одного модуля этой подсистемы к другому, о чём можно узнать в собственной документации модулей. В качестве примера рассмотрим настройки архиватора значений у модуля архива на файловую систему Arch.FSArch:
Вкладка "Архивы" (рис.4.6l) содержит таблицу с информацией об архивах, обрабатываемых архиватором. В строках таблица содержит архивы, а в колонках информацию:
В случае с модулем 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_start. Например скрипт (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="AGLKS"> <!-- Describe internal parameters for station. The station is OpenSCADA program. --> <prm id="StName">AGLKS</prm> <prm id="StName_ru">АГЛКС</prm> <prm id="StName_uk">АГЛКС</prm> <prm id="WorkDB">SQLite.GenDB</prm> <prm id="LogTarget">10</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="St.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="" 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" IO="Klap.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" SCHEDULE="1" PRIOR="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_DAQGate"> <!-- <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 id="mod_DCON"> <!--<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="1" PRIOR="0" ADDR="" REQ_TRY="1"/> </tbl> <tbl id="test2prm"> <fld SHIFR="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" MOD_TP="0" MOD_ADDR="1" CRC_CTRL="1"/> </tbl>--> </node> <node id="mod_ICP_DAS"> <!--<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="1" PRIOR="0" BUS="1" BAUD="115200" LP_PRMS="" REQ_TRY="3"/> </tbl> <tbl id="test2prm"> <fld SHIFR="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" MOD_TP="552985" MOD_ADDR="0" MOD_SLOT="1" MOD_PRMS="0"/> </tbl>--> </node> <node id="mod_OPC_UA"> <!--<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" SCHEDULE="1" PRIOR="0" SYNCPER="60" ADDR="" EndPoint="opc.tcp://localhost:4841" SecPolicy="None" SecMessMode="1" Cert="" PvKey="" AttrsLimit="100"/> </tbl> <tbl id="test2prm"> <fld SHIFR="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" ND_LS=""/> </tbl>--> </node> <node id="mod_SoundCard"> <!--<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" CARD="" SMPL_RATE="8000" SMPL_TYPE="1"/> </tbl> <tbl id="test2prm"> <fld SHIFR="test2" NAME="Test 2" NAME_ru="Тест 2" NAME_uk="Тест 2" DESCR="" DESCR_ru="" DESCR_uk="" EN="1" CHANNEL="0"/> </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/"/> <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/"/> </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"/> </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" depth="10"/> <prm id="SOAttach" on="0" per="20" name="../../lib/openscada/daq_LogicLev.so" mode="0" 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="DB" on="0" per="10" type="MySQL" addr="server.diya.org;roman;123456;oscadaTest" table="test" size="1000"/> <prm id="DB" on="0" per="10" type="DBF" addr="./DATA/DBF" table="test.dbf" size="1000"/> <prm id="DB" on="0" per="10" type="SQLite" addr="./DATA/test.db" table="test" size="1000"/> <prm id="DB" on="0" per="10" type="FireBird" addr="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="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="AGLKS"/>. Атрибутом указывается идентификатор станции. Использование той или иной секции станции, при вызове, указывается параметром командной строки --station=AGLKS. Секция станции непосредственно содержит параметры станции и секции подсистем. Параметры конфигурации секции записываются в виде <prm id="StName">AGLKS</prm>. Где в атрибуте <id> указывается идентификатор атрибута, а в теле тега указывается значение параметра "AGLKS". Перечень доступных параметров и их описание для станции и всех остальных секций можно получить в консоли, посредством вызова OpenSCADA с параметром --help.
Секции подсистем (<node id="sub_DAQ" />) содержат параметры подсистемы, секции модулей и секции таблиц отражения данных баз данных в конфигурационном файле. Секции модулей (<node id="mod_DiamondBoards" />) содержат индивидуальные параметры модулей и секции таблиц отражения данных баз данных в конфигурационном файле.
Секции таблиц отражения данных баз данных предназначены для размещения в конфигурационном файле записей таблиц БД для компонентов OpenSCADA. Рассмотрим таблицу входящих транспортов "Transport_in" подсистемы транспорты (<node id="sub_Transport">) из примера конфигурационного файла выше. Таблица содержит две записи с полями: ID, MODULE, NAME, DESCRIPT, ADDR, PROT, START. После загрузки с такой секцией и вообще без БД в подсистеме "Транспорты" модуля "Sockets" появятся два входных транспорта. Форматы структур таблиц основных компонентов включены в демонстрационные конфигурационные файлы. За деталями структуры БД нужно обращаться к документации соответствующих модулей или просто сохранить объект в конфигурационом файле.
Результат вызова команды: # ./openscada_AGLKS --help
2016-09-29 12:54:23 | (139 Kb) | subsys_arch_mess.png | Вкладка "Архив сообщений" подсистемы "Архивы". | |
2014-07-13 11:31:17 | (72 Kb) | subsys_arch_mod_arcs.png | Вкладка "Архиваторы" модуля подсистемы "Архивы". | |
2014-07-13 11:33:12 | (99 Kb) | subsys_arch_mod_ma_main.png | Главная вкладка конфигурации архиватора сообщений подсистемы "Архивы". | |
2016-09-29 12:58:07 | (156 Kb) | subsys_arch_mod_ma_mess.png | Вкладка запроса сообщений "Сообщения" архиватора сообщений подсистемы "Архивы". | |
2016-09-29 12:59:11 | (156 Kb) | subsys_arch_mod_ma_mess.png | Вкладка запроса сообщений "Сообщения" архиватора сообщений подсистемы "Архивы". | |
2013-01-27 21:04:19 | (89 Kb) | subsys_arch_mod_va_archs.png | Вкладка "Архивы" архиватора значений подсистемы "Архивы". | |
2014-07-13 11:40:43 | (100 Kb) | subsys_arch_mod_va_main.png | Главная вкладка конфигурации архиватора значений подсистемы "Архивы". | |
2016-06-17 12:32:44 | (83 Kb) | subsys_arch_red.png | Вкладка "Резервирование" подсистемы "Архивы". | |
2009-02-06 11:51:28 | (15 Kb) | subsys_arch_str.png | Иерархическая структура подсистемы \'Архивы\'. | |
2016-05-23 15:56:46 | (112 Kb) | subsys_arch_val.png | Вкладка "Архивы значений" подсистемы "Архивы". | |
2016-05-23 15:58:52 | (147 Kb) | subsys_arch_va_arch.png | Основная вкладка конфигурации архива значений подсистемы "Архивы". | |
2013-01-27 20:29:12 | (77 Kb) | subsys_arch_va_arcs.png | Вкладка "Архиваторы" архива значений подсистемы "Архивы". | |
2013-01-27 20:30:55 | (108 Kb) | subsys_arch_va_vals.png | Вкладка "Значения" архива значений подсистемы "Архивы". | |
2014-07-13 11:18:12 | (71 Kb) | subsys_daq_mod_cntr.png | Вкладка "Контроллеры" модуля подсистемы "Сбор данных". | |
2013-01-26 19:18:22 | (131 Kb) | subsys_daq_mod_cntr_diagn.png | Вкладка "Диагностика" страницы конфигурации контроллера подсистемы "Сбор данных". | |
2013-01-27 20:05:46 | (89 Kb) | subsys_daq_mod_cntr_main.png | Главная вкладка конфигурации контроллера подсистемы "Сбор данных". | |
2013-01-27 20:08:38 | (67 Kb) | subsys_daq_mod_cntr_prm.png | Вкладка "Параметры" страницы конфигурации контроллера подсистемы "Сбор данных". | |
2013-01-27 20:15:42 | (69 Kb) | subsys_daq_mod_cntr_prm_arch.png | Вкладка "Архивация" параметра контроллера подсистемы "Сбор данных". | |
2013-01-27 20:13:50 | (64 Kb) | subsys_daq_mod_cntr_prm_attr.png | Вкладка "Атрибуты" параметра контроллера подсистемы "Сбор данных". | |
2013-01-27 20:11:19 | (66 Kb) | subsys_daq_mod_cntr_prm_main.png | Главная вкладка конфигурации параметра контроллера подсистемы "Сбор данных". | |
2013-01-27 20:17:30 | (74 Kb) | subsys_daq_mod_cntr_prm_tmpl.png | Вкладка "Конфигурация шаблона" параметра контроллера подсистемы "Сбор данных". | |
2016-07-26 10:56:55 | (115 Kb) | subsys_daq_red.png | Вкладка "Резервирование" подсистемы "Сбор данных". | |
2009-02-05 16:25:11 | (25 Kb) | subsys_daq_str.png | Иерархическая структура подсистемы \'Сбор данных\'. | |
2014-07-13 11:16:34 | (57 Kb) | subsys_daq_tmpl.png | Вкладка "Библиотеки шаблонов" подсистемы "Сбор данных". | |
2013-09-06 11:39:02 | (73 Kb) | subsys_daq_tmpl_lib.png | Основная вкладка конфигурации библиотеки шаблонов подсистемы "Сбор данных". | |
2013-09-06 11:40:03 | (68 Kb) | subsys_daq_tmpl_ls.png | Вкладка списка шаблонов в библиотеке шаблонов подсистемы "Сбор данных". | |
2016-10-17 12:12:04 | (156 Kb) | subsys_daq_tmpl_tmpl_io.png | Вкладка конфигурации атрибутов и программы шаблона подсистемы "Сбор данных". | |
2013-09-06 11:42:29 | (82 Kb) | subsys_daq_tmpl_tmpl_main.png | Главная вкладка конфигурации шаблона параметров подсистемы "Сбор данных". | |
2014-07-13 10:47:48 | (55 Kb) | subsys_db_mod.png | Вкладка "Модули" корневой страницы подсистемы "БД". | |
2014-07-13 10:48:59 | (61 Kb) | subsys_db_mod_db.png | Вкладка "БД" модуля подсистемы "БД". | |
2013-01-27 19:00:53 | (92 Kb) | subsys_db_mod_db_db.png | Вкладка "База данных" БД модуля подсистемы "БД". | |
2013-01-27 19:09:50 | (100 Kb) | subsys_db_mod_db_sql.png | Вкладка "SQL" БД модуля подсистемы "БД". | |
2013-01-27 19:04:06 | (61 Kb) | subsys_db_mod_db_tbl.png | Вкладка "Таблицы" БД модуля подсистемы "БД". | |
2013-01-27 19:12:38 | (105 Kb) | subsys_db_mod_db_tbl_tbl.png | Вкладка "Таблица" таблицы БД модуля подсистемы "БД". | |
2014-07-13 10:50:51 | (79 Kb) | subsys_db_mod_module.png | Вкладка "Модуль" модуля подсистемы "БД". | |
2009-02-05 15:35:59 | (28 Kb) | subsys_db_str.png | Иерархическая структура подсистемы БД. | |
2014-07-13 11:50:44 | (147 Kb) | subsys_modshed.png | Главная вкладка конфигурации подсистемы "Управление модулями". | |
2014-07-13 11:05:15 | (63 Kb) | subsys_sec.png | Вкладка "Пользователи и группы пользователей" корневой страницы подсистемы "Безопасность". | |
2016-10-05 11:14:11 | (66 Kb) | subsys_sec_grp.png | Вкладка "Группа" страницы группы пользователей подсистемы "Безопасность". | |
2016-10-05 11:11:58 | (83 Kb) | subsys_sec_user.png | Вкладка "Пользователь" страницы пользователя подсистемы "Безопасность". | |
2014-07-13 11:48:58 | (71 Kb) | subsys_spec_mod.png | Вкладка "Специальный модуль" модуля подсистемы "Специальные". | |
2014-07-13 11:08:44 | (73 Kb) | subsys_tr_mod_tr.png | Вкладка "Транспорты" модуля подсистемы "Транспорты". | |
2014-07-13 11:10:08 | (96 Kb) | subsys_tr_mod_tr_itr.png | Вкладка "Транспорт" страницы входящего транспорта модуля подсистемы "Транспорты". | |
2014-07-13 11:11:22 | (87 Kb) | subsys_tr_mod_tr_otr.png | Вкладка "Транспорт" страницы исходящего транспорта модуля подсистемы "Транспорты". | |
2016-07-20 16:08:30 | (105 Kb) | subsys_tr_mod_tr_otr_req.png | Вкладка "Запрос" страницы исходящего транспорта модуля подсистемы "Транспорты". | |
2009-02-05 15:45:02 | (14 Kb) | subsys_tr_str.png | Иерархическая структура подсистемы «Транспорты». | |
2016-05-29 21:33:01 | (76 Kb) | subsys_tr_sub.png | Вкладка "Подсистема" корневой страницы подсистемы "Транспорты". | |
2014-07-13 11:47:34 | (85 Kb) | subsys_ui_mod.png | Вкладка "Пользовательский интерфейс" модуля подсистемы "Пользовательские интерфейсы". | |
2017-05-08 16:44:28 | (98 Kb) | sys_debug.png | Вкладка "Отладка" корневой страницы конфигурации системы. | |
2016-04-29 11:33:06 | (99 Kb) | sys_redundancy.png | Вкладка "Резервирование" корневой страницы конфигурации системы. | |
2016-07-25 17:08:04 | (166 Kb) | sys_st.png | Вкладка "Станция" корневой страницы конфигурации системы. | |
2015-06-01 16:19:31 | (71 Kb) | sys_sub.png | Вкладка "Подсистемы" корневой страницы конфигурации системы. | |
2015-06-01 16:22:46 | (195 Kb) | sys_tasks.png | Вкладка "Задачи" корневой страницы конфигурации системы. | |
2015-06-01 16:26:24 | (154 Kb) | sys_transl.png | Вкладка "Переводы" корневой страницы конфигурации системы. |