From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/BlockCalc and the translation is 100% complete.

Other languages:
English • ‎российский • ‎українська
Constr.png The translation checking and actualizing
Модуль Имя Версия Лицензия Источник Языки Платформы Тип Автор Описание
BlockCalc Блочный вычислитель 1.7 GPL2 daq_BlockCalc.so en,uk,ru,de x86,x86_64,ARM DAQ Роман Савоченко Предоставляет блочный вычислитель.

Модуль подсистемы "DAQ" BlockCalc предоставляет в систему OpenSCADA механизм создания пользовательских вычислений. Механизм вычислений основывается на формальном языке блочных схем(функциональных блоков).

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

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

С формальной точки зрения блок это элемент (функция), который имеет входы, выходы и алгоритм вычисления. Исходя из концепции среды программирования, блок — это кадр значений, ассоциированный с объектом функции.

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

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

Условно соединения блоков можно изобразить как связи между блоками в целом (рис. 1) или детализация связей (рис. 2). В процессе связывания параметров блоков допустимо соединение параметров любого типа. При этом, в процессе вычисления будет выполняться автоматическое приведение типов.

Рис. 1. Общие связи между блоками блочной схемы.
Рис. 2. Детализированные связи между блоками.

1 Контроллер модуля

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

Рис. 3. Вкладка конфигурации контроллера.

С помощью этой вкладки можно установить:

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

2 Блочная схема контроллера

Блочная схема формируется посредством вкладки блоков контроллера, конфигурации блока (Рис.4) и его связей (Рис.5).

Блоки блочной схемы могут связываться как между собой, так и подключаться к атрибутам параметров. Сами блоки при этом не содержат структуры входов/выходов(IO), а содержат значения, исходя из структуры IO связанной функции. Функции для связывания с блоком используются из объектной модели системы OpenSCADA.

Любой блок может в любой момент быть исключён из обработки и переконфигурирован после чего может быть опять включен в обработку. Связи между блоками могут конфигурироваться без исключения блоков из обработки и остановки контроллера. Значения всех IO, не охваченных связями могут быть изменены в процессе обработки.

С помощью вкладки блоков можно:

  • Добавить/удалить блок в блочную схему.
  • Проконтролировать общее количество, количество включенных и количество обрабатываемых блоков.
Рис. 4. Вкладка конфигурации блока блочной схемы.

С помощью формы конфигурации блока можно установить:

  • Состояние блока, а именно: "Включен" и "Обрабатывается".
  • Идентификатор, имя и описание блока.
  • Состояние, в которое переводить блок при загрузке: "Включен" и "Запущен".
  • Указать блок, который должен обязательно выполняться перед данным.
  • Назначить рабочую функцию из объектной модели. Перейти к функции для ознакомления.
Рис. 5. Вкладка конфигурации связей блока блочной схемы.

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

Поддерживаются следующие типы связей:

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

Для установки значений параметров блока предназначена соответствующая вкладка (Рис.6).

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

Рис. 6. Вкладка конфигурации значений параметров блока блочной схемы.

Модулем предусмотрена особая обработка ряда входов/выходов блока:

  • f_frq — Частота вычисления или время после последнего вычисления блока, отрицательное в секундах, для планирования по CRON, только чтение.
  • f_start — Флаг первого выполнения блока, запуск, только чтение.
  • f_stop — Флаг последнего выполнения блока, останов, только чтение.
  • this — Объект данного блока.

3 Параметры контроллера

Модуль предоставляет только один тип параметров “Стандартный”. Параметр служит для отражения вычисленных в блоках данных на атрибуты параметров контроллера. Пример вкладки конфигурации параметра приведен на Рис.7.

Рис. 7. Вкладка конфигурации значений параметров контроллера.

С помощью этой вкладки можно установить:

  • Состояние параметра, а именно: "Включен" и тип параметра.
  • Идентификатор, имя и описание параметра.
  • Состояние, в которое переводить параметр при загрузке: "Включен".
  • Перечень атрибутов, отражённых на параметры блоков. Формируется в виде списка элементов в формате: {BLK}.{BLK_IO}[:{AID}:{ANM}]. Где:
{BLK} — идентификатор блока, блочной схемы; для постоянной значение устанавливается:
'*s' — строковый тип;
'*i' — целочисленный тип;
'*r' — вещественный тип;
'*b' — логический тип.
{BLK_IO} — параметр блока, блочной схемы; для постоянной значений устанавливается в значение атрибута;
{AID} — идентификатор атрибута параметра;
{ANM} — имя атрибута параметра.

4 Копирование блочных схем

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

5 API пользовательского программирования

Некоторые объекты модуля предоставляют функции пользовательского программирования.

Объектная модель пользователя модуля BlockCalc.

Объект "Блок" (SYS.DAQ.BlockCalc["cntr"]["blk_block"])

  • ElTp cfg(string nm) — получение значения конфигурационного поля nm объекта.
  • bool cfgSet(string nm, ElTp val) [доступ к соответствующей подсистеме] — установка конфигурационного поля nm объекта в значение val.
  • TCntrNodeObj cntr() — возвращает объект контроллера этого параметра, независимо от вложенности.


6 Ссылки