Модуль является чистой реализацией механизма логического уровня, основанного на шаблонах параметров подсистемы "Сбор данных — DAQ". Реализация модуля основана на проекте "Логический уровень параметров системы OpenSCADA". Практически, данный модуль является реализацией подсистемы "Параметры" указанного проекта без шаблонов и вынесенная в модуль.
Модуль предоставляет механизм формирования параметров подсистемы "DAQ" на основе других источников этой подсистемы на уровне пользователя. Фактически, модулем используются шаблоны подсистемы "DAQ" и специфический формат описания ссылок на атрибуты параметров подсистемы "DAQ".
Также модулем реализуются функции горизонтального резервирования, а именно совместной работы с удалённой станцией этого-же уровня. Кроме синхронизации значений и архивов атрибутов параметров модулем осуществляется синхронизация значений вычислительных шаблонов, с целью безударного подхвата алгоритмов.
1. Контроллер данных
Для добавления источника данных параметров логического уровня создаётся и конфигурируется контроллер в системе OpenSCADA. Пример вкладки конфигурации контроллера данного типа изображен на рис.1.
Рис.1. Вкладка конфигурации контроллера.
С помощью этой вкладки можно установить:
Состояние контроллера, а именно: Статус, «Включен», Запущен» и имя БД содержащей конфигурацию.
Идентификатор, имя и описание контроллера.
Состояние, в которое переводить контроллер при загрузке: "Включен" и "Запущен".
Имя таблиц для хранения конфигурации параметров контроллера на основе шаблонов и прямого отражения внешних параметров DAQ.
Планирование вычислений и приоритет задачи опроса источников данных.
2. Параметры
Модуль LogicLev предоставляет два типа параметра: "Логический"(std) и "Отражение параметра"(pRefl). Дополнительными конфигурационными полями параметров данного модуля (рис.2) являются:
"Логический"(std):
Шаблон параметра — адрес шаблона параметра DAQ.
"Отражение параметра"(pRefl):
Исходный параметр — адрес исходного параметра отражения.
Рис.2. Вкладка конфигурации параметра.
Логический тип параметра (std)
При формировании шаблона, для логического типа параметра данного контроллера, нужно учитывать особенность формата ссылки шаблона. Ссылка должна записываться в виде: <Параметр>|<Идентификатор>, где:
Подобная запись позволяет группировать несколько атрибутов одного исходного параметра и назначать их выбором только параметра. Т.е. в диалоге конфигурации шаблона (рис.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. Вкладка атрибутов параметра.
Отражение параметра (pRef)
Все атрибуты указанного для отражения параметра просто становятся доступными у данного параметра тем самым осуществляя функцию проксирования, например, для сведения параметров других источников в один, экспортный, объект контроллера (для ПЛК).
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 — две строки со значениями в первой и их именами во второй (разделённые ";").