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

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

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

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

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

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

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

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

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

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

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

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

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

From this tab you can set:

  • State of the controller object, as follows: status, "Enabled", "Running" and the storage name containing the configuration.
  • Identifier, name and description of the controller.
  • The state "Enabled" and "Running", in which the controller object must be translated at start up.
  • Policy of scheduling, priority of the data acquisition task and number of iterations in one cycle of calculating task of the block scheme of the controller.

2 The block scheme of the controller

The block scheme is formed by means of the tab controller's blocks, configuration of the block (Figure 4) and its connections (Fig. 5). The blocks are stored in a table with the name "BlckCalcBlcks_{CntrId}".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3 Parameters of the controller

The module provides only one the "Standard (std)" type of the parameters with the parameters table name "BlckCalcPrm_{CntrId}". The parameter used to reflect the data, calculated in the blocks, on the attributes of the controller's parameters. Example of the configuration tab of the parameter is shown in Fig.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 Service commands-functions of the Control Interface

Service functions are an interface for accessing OpenSCADA from external systems through the Control Interface. This mechanism is the basis of all exchange within OpenSCADA, implemented through weak links and OpenSCADA's own exchange protocol.


Getting for values of all block attributes of the controller object
REQ: <get path="/DAQ/BlockCalc/{CNTR}/blk_{BLK}/%2fserv%2fattr" />

  • CNTR, BLK — controller object and block in the block scheme.

RESP: <get path="/DAQ/BlockCalc/{CNTR}/blk_{BLK}/%2fserv%2fattr" rez="0">{attributes}</get>

  • attributes — the block attributes in the tags "a": <a id="{ID}">{value}</a>
    • ID — identifier of the attribute;
    • value — value of the attribute.
<get path="/DAQ/BlockCalc/CM101/blk_AT101_1/%2fserv%2fattr" rez="0" user="roman">
  <a id="Fi">50.3839725707191</a>
  <a id="Pi">10.2588208891757</a>
  <a id="Ti">331.149550201738</a>
  <a id="Si">0.071</a>
  <a id="li">10</a>
</get>

Setting for values of list the block attributes of the controller object
REQ[root-DAQ]: <set path="/DAQ/BlockCalc/{CNTR}/blk_{BLK}/%2fserv%2fattr">{attributes}</set>

  • CNTR, BLK — controller object and block in the block scheme;
  • attributes — the block attributes in the tags "a": <a id="{ID}">{value}</a>
    • ID — identifier of the attribute;
    • value — value of the attribute.
<set path="/DAQ/BlockCalc/CM101/blk_AT101_1/%2fserv%2fattr">
  <a id="Fi">50.3839725707191</a>
  <a id="Pi">10.2588208891757</a>
</set>


7 Ссылки