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

Other languages:
English • ‎mRussian • ‎Українська
Модуль Имя Версия Лицензия Источник Языки Платформы Тип Автор Описание
LogicLev Логический уровень 2.9 GPL2 daq_LogicLev.so en,uk,ru,de x86,x86_64,ARM DAQ Роман Савоченко Предоставляет чистый логический уровень параметров сбора данных.

Модуль является чистой реализацией механизма логического уровня, основанного на шаблонах параметров подсистемы "Сбор данных (DAQ)". Реализация модуля основана на проекте "Логический уровень параметров OpenSCADA". Практически, данный модуль является реализацией подсистемы "Параметры" указанного проекта, без шаблонов и вынесенная в модуль.

Модуль предоставляет механизм формирования параметров подсистемы "DAQ" уровня пользователя на основе других источников этой подсистемы. Фактически, модулем используются шаблоны подсистемы "DAQ" и специфический формат описания ссылок на атрибуты параметров подсистемы "DAQ".

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

1 Объект контроллера

Для добавления источника данных параметров логического уровня создаётся и конфигурируется объект контроллера OpenSCADA. Пример вкладки конфигурации объекта контроллера данного типа изображен на рисунке 1.

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

With 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 and priority of the data acquisition task.

2 Parameters

The module provides two types of parameters: "Logical (Prm)" and "Reflection parameter (PrmRefl)". The additional configuration fields of the parameters of this module (Fig. 2) are:

  • Logical (Prm), with the parameters table name "LogLev{TypeId}_{CntrId}":
    • Parameter template — address of the DAQ parameter template.
  • Reflection parameter (PrmRefl), with the parameters table name "LogLev{TypeId}_{CntrId}":
    • Source parameter — address of the source of the reflecting parameter.
Рис.2. Вкладка конфигурации параметра.

2.1 Логический (Prm)

При формировании шаблона логического типа параметра этого модуля нужно учитывать особенность формата ссылки шаблона. Ссылка должна записываться в виде: {Параметр}|{Идентификатор}, где:

  • {Параметр} — строка, характеризующая параметр;
  • {Идентификатор} — идентификатор атрибута параметра.

Подобная запись позволяет группировать несколько атрибутов одного исходного параметра и назначать их выбором только самого параметра. Т.е., в диалоге конфигурации шаблона (рис.3) будет указываться только параметр. Это однако не исключает возможности назначать атрибуты параметров отдельно каждый, кроме того, если опустить в конфигурации шаблона описание ссылки в указанном формате, то назначаться будет атрибут параметра (рис.4).

Модулем предусмотрена особая обработка ряда атрибутов шаблона:

  • f_frq — частота вычисления процедуры шаблона или время после последнего вычисления (отрицательное в секундах) для планирования по CRON, только чтение.
  • f_start — флаг первого выполнения процедуры шаблона — запуск, только чтение.
  • f_stop — флаг последнего выполнения процедуры шаблона — останов, только чтение.
  • f_err — ошибка параметра, полный доступ. Значение этого атрибута шаблона попадает в атрибут ошибки параметра "err". Записать сюда EVAL для возможности установки извне атрибута "err" и всех других в режиме Только для Чтения.
  • SHIFR — значение шифра параметра, только чтение.
  • NAME — значение имени параметра, только чтение.
  • DESCR — значение описания параметра, только чтение.
  • this — объект данного параметра, позволяет получить доступ к атрибутам параметра, например, для доступа к архивам-истории.

Знак "(+)", в конце адреса, сигнализирует об успешном связывании и присутствии целевого объекта. Для атрибутов объектного типа допустим иерархический доступ к конкретному свойству объекта путём указания его пути через символ '#', например: "LogicLev.experiment.Pi.var#pr1.pr2".

Рис.3. Вкладка конфигурации шаблона параметра.
Рис.4. Вкладка конфигурации шаблона параметра. Показывать только атрибуты.

В соответствии с шаблоном, лежащим в основе параметра, мы получаем набор атрибутов параметра как на рисунке 5.

Рис.5. Вкладка атрибутов параметра.

2.2 Отражение параметра (PrmRefl)

Все атрибуты указанного для отражения параметра просто становятся доступными у данного параметра, тем самым осуществляя функцию проксирования, например, для сведения параметров других источников в один — экспортный объект контроллера (для ПЛК).

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

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

Объект "Параметр" [this]

  • bool attrAdd( string id, string name, string tp = "real", string selValsNms = "" ) [для включенного параметра логического типа] — добавление атрибута id с именем name и типом tp. Если атрибут уже присутствует то будут применены свойства, которые возможно изменить "на ходу": имя, режим выбора и параметры выбора.
    • id, name — идентификатор и имя нового атрибута;
    • tp — тип атрибута [boolean | integer | real | string | text | object] + режим выбора [sel | seled] + только для чтения [ro];
    • selValsNms — две строки со значениями в первой и их именами во второй, разделённые ";".
  • bool attrDel( string id ) [для включенного параметра логического типа] — удаление атрибута id.


4 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 the template IO of the Logical Level parameter of the controller object
REQ: <get path="/DAQ/LogicLev/{CNTR}/prm_{PRM}[/prm_{PRM}]/%2fserv%2ftmplAttr" />

  • CNTR, PRM — controller object and parameters.

RESP: <get path="/DAQ/LogicLev/{CNTR}/prm_{PRM}[/prm_{PRM}]/%2fserv%2ftmplAttr" rez="0">{IOs}</get>

  • IOs — IOs of the template execution context of the Logical Level parameters in the tags "ta": <ta id="{ID}">{value}</ta>
    • ID — identifier of the IO;
    • value — value of the IO.
<get path="/DAQ/LogicLev/gen/prm_F3/%2fserv%2ftmplAttr" rez="0" user="roman">
  <ta id="in">44.9998202036118</ta>
  <ta id="inProc" />
  <ta id="var">44.9999585116556</ta>
  <ta id="ed">ton/h</ta>
  <ta id="min">0</ta>
  <ta id="max">100</ta>
  <ta id="scSqr">0</ta>
</get>

Setting for values of the template IO of the Logical Level parameter of the controller object
REQ[root-DAQ]: <set path="/DAQ/LogicLev/{CNTR}/prm_{PRM}[/prm_{PRM}]/%2fserv%2ftmplAttr">{IOs}</set>

  • CNTR, PRM — controller object and parameters;
  • IOs — IOs of the template execution context of the Logical Level parameters in the tags "ta": <ta id="{ID}">{value}</ta>
    • ID — identifier of the IO;
    • value — value of the IO.
<set path="/DAQ/LogicLev/gen/prm_F3/%2fserv%2ftmplAttr">
  <ta id="in">44.9998202036118</ta>
  <ta id="var">44.9999585116556</ta>
</set>