Модуль подсистемы «DAQ» BlockCalc предоставляет в систему OpenSCADA механизм создания пользовательских вычислений. Механизм вычислений основывается на формальном языке блочных схем(функциональных блоков).
Также модулем реализуются функции горизонтального резервирования, а именно совместной работы с удалённой станцией этого-же уровня. Кроме синхронизации значений и архивов атрибутов параметров модулем осуществляется синхронизация значений блоков блочной схемы, с целью безударного подхвата алгоритмов.
Языки блочного программирования основываются на понятии блочных схем (функциональных блоков). При чем в зависимости от сущности блока блочные схемы могут быть: логическими схемами, схемами релейной логики, моделью технологического процесса и другое. Суть блочной схемы состоит в том, что она содержит список блоков и связи между ними.
С формальной точки зрения блок это элемент (функция), который имеет входы, выходы и алгоритм вычисления. Исходя из концепции среды программирования, блок — это кадр значений, ассоциированный с объектом функции.
Разумеется, входы и выходы блоков нужно соединять для получения цельной блочной схемы. Предусмотрены следующие типы связей:
межблочные, подключение входа одного блока к выходу другого, входа одного блока к входу другого и выход одного блока ко входу другого;
дальние межблочные, соединение блоков контроллеров разных блочных схем данного модуля;
коэффициенты, преобразование входа в постоянную, все входы/выходы по умолчанию инициируются как постоянные;
внешний атрибут параметра.
Условно соединения блоков можно изобразить как связи между блоками в целом (рис. 1) или детализация связей (рис. 2). В процессе связывания параметров блоков допустимо соединение параметров любого типа. При этом, в процессе вычисления будет выполняться автоматическое приведение типов.
Рис. 1. Общие связи между блоками блочной схемы
Рис. 2. Детализированные связи между блоками
1. Контроллер модуля
Каждый контроллер этого модуля содержит блочную схему, которую он обсчитывает с указанным периодом. Для предоставления вычисленных данных в систему OpenSCADA в контроллере могут создаваться параметры. Пример вкладки конфигурации контроллера данного типа изображен на рис.3.
Рис. 3. Вкладка конфигурации контроллера.
С помощью этой вкладки можно установить:
Состояние контроллера, а именно: Статус, "Включен", "Запущен" и имя БД, содержащей конфигурацию.
Идентификатор, имя и описание контроллера.
Состояние, в которое переводить контроллер при загрузке: "Включен" и "Запущен".
Имена таблиц для хранения параметров и блоков контроллера.
Политика планирования вычисления, приоритет и число итераций в одном цикле задачи вычисления блочной схемы контроллера.
2. Блочная схема контроллера
Блочная схема формируется посредством вкладки блоков контроллера, конфигурации блока (Рис.4) и его связей (Рис.5).
Блоки блочной схемы могут связываться как между собой, так и подключаться к атрибутам параметров. Сами блоки при этом не содержат структуры входов/выходов(IO), а содержат значения, исходя из структуры IO связанной функции. Функции для связывания с блоком используются из объектной модели системы OpenSCADA.
Любой блок может в любой момент быть исключён из обработки и переконфигурирован после чего может быть опять включен в обработку. Связи между блоками могут конфигурироваться без исключения блоков из обработки и остановки контроллера. Значения всех IO, не охваченных связями могут быть изменены в процессе обработки.
С помощью вкладки блоков можно:
Добавить/удалить блок в блочную схему.
Проконтролировать общее количество, количество включенных и количество обрабатываемых блоков.
Рис. 4. Вкладка конфигурации блока блочной схемы.
С помощью формы конфигурации блока можно установить:
Состояние блока, а именно: "Включен" и "Обрабатывается".
Идентификатор, имя и описание блока.
Состояние, в которое переводить блок при загрузке: "Включен" и "Запущен".
Указать блок, который должен обязательно выполяться перед данным.
Назначить рабочую функцию из объектной модели. Перейти к функции для ознакомления.
Рис. 5. Вкладка конфигурации связей блока блочной схемы.
С помощью вкладки конфигурации связей блока блочной схемы можно установить связи для каждого параметра блока отдельно.
Поддерживаются следующие типы связей:
Межблочные. Подключение входа блока к выходу другого блока, входа одного блока к входу другого и выхода одного блока ко входу другого.
Дальние межблочные. Соединение блоков из различных контроллеров данного модуля.
Коэффициент. Превращение входа в константу. Все входы/выходы по умолчанию инициированы как константы.
Внешний атрибут параметра.
Для установки значений параметров блока предназначена соответствующая вкладка (Рис.6).
В соответствии с реализацией пользовательских функций в системе OpenSCADA поддерживаются четыре основных типа IO: целое, вещественное, логическое и строка.
Модулем предусмотрена особая обработка ряда входов/выходов блока:
f_frq — Частота вычисления или время после последнего вычисления блока, отрицательное в секундах, для планирования по CRON, только чтение.
f_start — Флаг первого выполнения блока, запуск, только чтение.
f_stop — Флаг последнего выполнения блока, останов, только чтение.
this — Объект данного блока.
3. Параметры контроллера
Модуль предоставляет только один тип параметров “Стандартный”. Параметр служит для отражения вычисленных в блоках данных на атрибуты параметров контроллера. Пример вкладки конфигурации параметра приведен на Рис.7.
<BLK_IO> — параметр блока, блочной схемы; для постоянной значений устанавливается в значение атрибута; <AID> — идентификатор атрибута параметра; <ANM> — имя атрибута параметра.
4. Копирование блочных схем
Для упрощения и ускорения процедуры разработки сложных и повторяющихся блочных схем предусмотрен механизм копирования элементов блочной схемы как по отдельности, так и блочных схем целиком. Механизм копирования интегрирован в ядро OpenSCADA и работает прозрачно.
5. API пользовательского программирования
Некоторые объекты модуля предоставляют функции пользовательского программирования.
Объект "Блок" (SYS.DAQ.BlockCalc["cntr"]["blk_block"])
ElTp cfg(string nm) — получение значения конфигурационного поля nm объекта.
bool cfgSet(string nm, ElTp val) — установка конфигурационного поля nm объекта в значение val.
TCntrNodeObj cntr() — возвращает объект контроллера этого параметра, независимо от вложенности.