4. Подсистема "Сбор данных" (TDAQS)
Подсистема "Сбор данных" представлена объектом TDAQS, который содержит модульные объекты типов источников данных TTypeDAQ и объекты библиотек шаблонов параметров подсистемы "Сбор данных" TPrmTmplLib. Объект типов источников данных содержит объекты контроллеров TController и объекты типов параметров TTypeParam. Объекты типов параметров предоставляются модулем контроллера и содержат структуру БД отдельных типов параметров (аналоговые, дискретные ...). Объекты контроллеров содержат объекты параметров TParamContr. Каждый параметр ассоциируется с одним из типов параметров. Для хранения атрибутов параметр наследуется от объекта значений TValue, который и содержит значения атрибутов TVal. Библиотека шаблонов параметров данной подсистемы содержит объекты шаблонов TPrmTmpl. Пример описанной иерархической структуры приведён на рис. 4.
Рис. 4. Иерархическая структура подсистемы сбора данных.
Подсистема содержит типы источников данных. Источником может выступать практически любая сущность предоставляющая какие либо данные. Тип источника может делиться на отдельные источники (контроллеры) в пределах конкретного типа. Например, если взять данные из операционной системы (ОС), то под отдельным источником можно понимать операционную систему отдельного ПК.
Источник данных (контроллер) далее делится, или содержит, параметры. Под параметром подразумевается какая-то часть источника данных. В случае с ОС это будет, например: расход оперативной памяти, частота процессора и много других составных частей.
Параметр, в свою очередь, содержит атрибуты, которые и предоставляют данные. Кроме основных данных атрибутами могут предоставляться и сопутствующие или детализирующие данные. В случае той-же ОС и расхода памяти, атрибутами может предоставляться не только занятая память, а также и сколько её всего, сколько в swap и т.д.
Некоторые реализации источников данных могут предоставлять возможность формирования структуры параметра по ранее разработанным шаблонам параметров. Для этой цели подсистема содержит библиотеки шаблонов, которые, в свою очередь, содержат шаблоны параметров. В примере изображена библиотека шаблонов "base" с шаблонами "digAlrm" и "smplBrd".
На уровне подсистемы предоставляются механизм резервирования источников данных. Резервирование подразумевает возможность согласованной работы нескольких станций OpenSCADA для выполнения общей задачи сбора данных в одноимённых источниках данных.
4.1. Объект подсистемы "Сбор данных" (TDAQS)
Публичные методы:
- int subVer( ); — Версия подсистемы.
- void subStart( ); — Запуск подсистемы.
- void subStop( ); — Останов подсистемы.
- AutoHD<TTypeDAQ> at( const string &name ) const; — Подключение к типу источника данных.
- AutoHD<TValue> prmAt( const string &path, char sep = 0, bool noex = false ) const; — Подключение к параметру по пути path или строке с разделителем sep. Не генерировать исключения если установлен noex.
- AutoHD<TVal> attrAt( const string &path, char sep = 0, bool noex = false ) const; — Подключение к атрибуту параметра по пути path или строке с разделителем sep. Не генерировать исключения если установлен noex.
- void ctrListPrmAttr( XMLNode *nd, const string &addrBase, bool toPrm = false, char sep = 0, const string &pref = "" ); — Список обзора элементов атрибутов параметров или toPrm параметров DAQ с префиксом pref от пути или строке с разделителем sep базового адреса addrBase.
- string tmplLibTable( ); — Имя таблицы для хранения шаблонов параметров подсистемы "Сбор данных".
- void tmplLibList( vector<string> &list ) const; — Список доступных шаблонов параметров.
- bool tmplLibPresent( const string &id ) const; — Проверка на наличие шаблона параметра id.
- void tmplLibReg( TPrmTmplLib *lib ); — Регистрация шаблона параметра lib.
- void tmplLibUnreg( const string &id, int flg = 0 ); — Удаление/снятие с регистрации шаблона параметра id.
- AutoHD<TPrmTmplLib> tmplLibAt( const string &id ) const; — Подключение к шаблону параметра id.
- float rdRestDtTm( ); — Максимальная глубина восстановления данных архивов при включении, в часах.
- void setRdRestDtTm( float vl ); — Установка максимальной глубины восстановления данных архивов при включении.
- void rdActCntrList( vector<string> &ls, bool isRun = false ); — Список активных контроллеров, работающих в схеме резервирования. При указании isRun в список попадут только исполняющиеся на данной станции контроллеры.
- string rdStRequest( const string &cntr, XMLNode &req, const string &prevSt = "", bool toRun = true ); — Запрос req к резервной станции от имени контроллера cntr. Станция для запроса выбирается после указанной в prevSt, для исполняемого удалённо контроллера, при указании toRun.
- TElem &elLib( ); — Структура таблицы библиотек шаблонов параметров.
- TElem &elTmpl( ); — Структура таблицы шаблонов параметров.
- TElem &elTmplIO( ); — Структура атрибутов шаблонов параметров.
- TElem &elErr( ); — Структура атрибута(ов) ошибок параметров.
4.2. Модульный объект типа контроллера (TTypeDAQ)
Наследует: | TModule, TElem. |
Наследуется: | Корневыми объектами модулей подсистемы "Сбор данных". |
Публичные методы:
- string DAQPath( ); — Получение DAQ адреса элемента.
- void modStart( ); — Запуск модуля.
- void modStop( ); — Останов модуля.
- void list( vector<string> &list ) const; — Список контроллеров.
- bool present( const string &name ) const; — Проверка на наличие указанного контроллера.
- void add( const string &name, const string &daq_db = "*.*" ); — Добавить контроллер.
- void del( const string &name ); — Удалить контроллер.
- AutoHD<TController> at( const string &name, const string &who = "" ) const; — Подключиться к контроллеру.
- bool tpPrmPresent( const string &name_t ); — Проверка на наличие указанного типа параметра.
- unsigned tpPrmToId( const string &name_t ); — Получение индекса типа параметров по имени.
- int tpParmAdd( const char *id, const char *n_db, const char *name ); — Добавление/регистрация типа параметров.
- unsigned tpPrmSize( ); — Количество типов параметров.
- TTypeParam &tpPrmAt( unsigned id ); — Получить объект типа параметров.
- virtual bool compileFuncLangs( vector<string> *ls = NULL ); — Запрос перечня языков для которых реализована возможность формирования пользовательских процедур, в данном модуле, а также проверка факта их поддержки.
- virtual void compileFuncSynthHighl( const string &lang, XMLNode &shgl ); — Запрос правил подсветки синтаксиса для указанного языка.
- virtual string compileFunc( const string &lang, TFunction &fnc_cfg, const string &prog_text, const string &usings = "", int maxCalcTm = 0 ); — Компиляция/настройка пользовательской функции на поддерживаемом модулем языке программирования lang и исходном тексте процедуры prog_text, исходя из параметров процедуры fnc_cfg. Результатом является адрес к подготовленному объекту функции.
- virtual bool redntAllow( ); — Признак поддержки механизмов резервирования модулем. Должен просто переопределяться и возвращать true.
Защищённые методы:
- virtual TController *ContrAttach( const string &name, const string &daq_db ); — Подключение контроллера. Обязательно переопределяется в потомке модуля.
4.3. Объект контроллера (TController)
Наследует: | TCntrNode, TConfig. |
Наследуется: | Объектами контроллеров модулей подсистемы "Сбор данных". |
Данные:
Режимы резервирования (enum TController::Redundant):
- Off (0) — выключено;
- Asymmetric (1) — асимметричный;
- OnlyAlarms (2) — только нарушения, подавление на резервном.
Командо-специфичное
Публичные методы:
- TController( const string &name_c, const string &daq_db, TElem *cfgelem ); — Инициализирующий конструктор контроллера.
- string DAQPath( ); — Получение DAQ адреса элемента.
- string id( ); — Идентификатор контроллера.
- string workId( ); — Рабочий идентификатор контроллера, включая идентификатор модуля.
- string name( ); — Имя контроллера.
- string descr( ); — Описание контроллера.
- virtual string getStatus( ); — Функция запроса статуса контроллера.
- string DB( ); — Имя БД экземпляра контроллера.
- string tbl( ); — Имя таблицы базы данных экземпляра контроллера.
- string fullDB( ); — Полное имя таблицы экземпляра контроллера.
- void setName( const string &nm ); — Установить имя контроллера.
- void setDescr( const string &dscr ); — Установить описание контроллера.
- void setDB( const string &idb ); — Установка имени БД экземпляра контроллера.
- bool toEnable( ); — Признак "Включать контроллер".
- bool toStart( ); — Признак "Запускать контроллер".
- bool enableStat( ) const; — Состояние "Включен".
- bool startStat( ) const; — Состояние "Запущен".
- int messLev( ); — Уровень сообщений диагностической информации.
- void start( ); — Запуск контроллера.
- void stop( ); — Останов контроллера.
- void enable( ); — Включение контроллера.
- void disable( ); — Отключение контроллера.
- void list( vector<string> &list ) const; — Список параметров в контроллере.
- bool present( const string &name ) const; — Проверка на наличие параметра name.
- void add( const string &name, unsigned type ); — Добавление параметра name типа type.
- void del( const string &name, bool full = false ); — Удаление параметра name. Если указано поле full то контроллер будет удалён полностью.
- AutoHD<TParamContr> at( const string &name, const string &who = "th_contr" ) const; — Подключение к параметру контроллера name.
- bool redntUse( Redundant md = Asymmetric ); — Состояния резервирования для режима md.
- void setRedntUse( bool vl ); — Смена режима получения данных у резервной станции.
- Redundant redntMode( ); — Режим резервирования ("<high>", "<low>", "<optimal>", {ForceStation}), включение.
- void setRedntMode( Redundant vl ); — Установка режима резервирования, включение.
- string redntRun( ); — Конфигурация предпочтительного исполнения.
- void setRedntRun( const string &vl ); — Установка конфигурации предпочтительного исполнения.
- virtual void redntDataUpdate( ); — Выполнение операции получения данных из резервной станции. Вызывается автоматически процедурой обслуживания схемы резервирования подсистемы.
- virtual string catsPat( ); — список правил регулярного выражения разделённые '|' для выбора сообщений генерированных источником данных этого объекта по категориям.
- void alarmSet( const string &mess, int lev = -TMess::Crit, const string &prm = "" ); — Формирование аварийной ситуации (нарушения) для объекта контроллера prm, или контроллера в целом если объект не указан, с сообщением mess и уровнем lev. Отрицательное значение уровня lev служит для установки, а положительное для снятия нарушения. Эта функция формирует нарушения и сообщения с категорией: al{ModId}:{CntrId}[.{PrmId}].
- TTypeDAQ &owner( ) const; — Тип источника данных (модуль) - владелец данным контроллером.
Защищённые атрибуты:
- bool en_st; — Признак "Включено".
- bool run_st; — Признак "Запущено".
Защищённые методы:
- virtual void enable_( ); — Включение контроллера. Перехватывается потомком.
- virtual void disable_( ); — Отключение контроллера. Перехватывается потомком.
- virtual void start_( ); — Запуск контроллера. Перехватывается потомком.
- virtual void stop_( ); — Останов контроллера. Перехватывается потомком.
- virtual TParamContr *ParamAttach( const string &name, int type ); — Модульный метод создания/открытия нового параметра.
4.4. Объект типа параметров (TTypeParam)
Публичные методы:
- TTypeParam( const char *iid, const char *iname, const char *idb = "", bool i_isPrmCntr = false ); — Инициализирующий конструктор.
- virtual void create( TParamContr *prm ); — Создать или установить тип параметра prm.
- virtual void destroy( TParamContr *prm ); — Удалить или снять тип параметра prm.
- virtual string DB( TController *cntr ); — Получить имя таблицы параметров контроллера cntr.
- void setDB( TController *cntr, const string &vl ); — Установить имя таблицы параметров контроллера cntr.
- virtual void enable( TParamContr *prm ); — Включить параметр prm.
- virtual void disable( TParamContr *prm ); — Отключить параметр prm.
- virtual bool cfgChange( TParamContr *prm, TCfg &cfg ); — Модификация конфигурационного поля cfg параметра prm.
- virtual void vlGet( TParamContr *prm, TVal &vo ); — Упреждающая функция получения значения, через параметр prm. Используется для прямого (синхронного) чтения.
- virtual void vlSet( TParamContr *prm, TVal &vo, const TVariant &vl, const TVariant &pvl ); — Упреждающая функция установки значения, через параметр prm. Используется для прямой (синхронной) записи vl с предыдущим значением в pvl.
- virtual void vlArchMake( TParamContr *prm, TVal &val ); — Уведомляющая функция о создании архива для атрибута val, через параметр prm. Используется для настройки созданного архива, в соответствии с особенностями источника данных.
- virtual void getVals( TParamContr *prm ); — Функция внутренней реализация асинхронного режима, вызывается в цикле объекта контроллера для параметра prm.
- virtual bool cntrCmdProc( TParamContr *prm, XMLNode *opt ); — Функция обслуживания запросов интерфейса управления, от параметра prm.
Публичные атрибуты:
- string name; — Имя типа параметра.
- string descr; — Описание типа параметра.
- string db; — БД типа параметра.
4.5. Объект параметра физического уровня (TParamContr)
Наследует: | TConfig, TValue. |
Наследуется: | Объектами параметров модулей подсистемы "Сбор данных". |
Публичные методы:
- TParamContr( const string &name, TTypeParam *tpprm ); — Инициализирующий конструктор.
- string DAQPath( ); — Получение DAQ адреса элемента.
- string ownerPath( bool inclSelf = false ); — Путь параметра-владельца, включая inclSelf данный параметр.
- bool operator==( TParamContr & PrmCntr ); — Сравнение параметров.
- string id( ); — Идентификатор параметра (шифр).
- string name( ); — Имя параметра.
- string descr( ); — Описание параметра.
- bool toEnable( ); — Признак "Включать параметр".
- bool enableStat( ) const; — Состояние "Включен".
- void setName( const string &inm ); — Установка имени параметра.
- void setDescr( const string &idsc ); — Установка описания параметра.
- void setToEnable( bool vl ); — Установка признака "Включать параметр".
- void list( vector<string> &list ) const; — Список параметров в данном параметре.
- bool present( const string &name ) const; — Проверка на наличие параметра name.
- void add( const string &name, unsigned type = 0 ); — Добавление параметра name типа type.
- void del( const string &name, bool full = false ); — Удаление параметра name. Если указано поле full то контроллер будет удалён полностью.
- AutoHD<TParamContr> at( const string &name, const string &who = "th_prm" ) const; — Подключение к параметру контроллера name.
- TTypeParam &type( ) const; — Тип параметра.
- virtual TElem *dynElCntr( ); — Контейнер динамических элементов атрибутов DAQ.
- virtual void enable( ); — Включить параметр.
- virtual void disable( ); — Отключить параметр.
- TController &owner( ) const; — Контроллер – владелец параметра.
Защищённые методы:
- virtual void setType( const string &tpId ); — вызывается для смены типа параметра tpId и может быть обработан в объекте модуля, для смены собственных данных.
4.6. Объект значения (TValue)
Наследует: | TCntrNode, TValElem. |
Наследуется: | TParamContr. |
Публичные методы:
- bool dataActive( ); — Флаг активности (обновляемости) данных.
- virtual string DAQPath( ); — Получение DAQ адреса элемента.
- void vlList( vector<string> &list ) const; — Получение списка атрибутов.
- bool vlPresent( const string &name ) const; — Проверка на наличия указанного атрибута.
- AutoHD<TVal> vlAt( const string &name ) const; — Подключение к атрибуту.
Защищённые методы:
- TConfig *vlCfg( ) — Получение связанного объекта конфигурации. Если возвращается NULL то отсутствует связанный объект конфигурации.
- void setVlCfg( TConfig *cfg ); — Установка связанного объекта конфигурации cfg.
- bool vlElemPresent( TElem *ValEl ); — Проверка на наличие элемента атрибутов ValEl.
- void vlElemAtt( TElem *ValEl ); — Подключение структуры данных ValEl.
- void vlElemDet( TElem *ValEl ); — Отключение структуры данных ValEl.
- TElem &vlElem( const string &name ); — Получить структуру данных по её имени name.
- virtual TVal* vlNew( ); — Создание экземпляра TVal. Может переопределяться в модулях для создания производных объектов атрибутов параметров подсистемы "Сбор данных".
- virtual void vlGet( TVal &vo ); — Упреждающая функция получения значения. Используется для прямого (синхронного) чтения.
- virtual void vlSet( TVal &vo, const TVariant &vl, const TVariant &pvl ); — Упреждающая функция установки значения. Используется для прямой (синхронной) записи vl с предыдущим значением в pvl.
- virtual void vlArchMake( TVal &val ); — Уведомляющая функция о создании архива для атрибута val. Используется для настройки созданного архива, в соответствии с особенностями источника данных.
4.7. Объект атрибута (TVal).
Данные:
Дополнительные флаги к объекту TFld (enum TVal::AttrFlag):
- TVal::DirRead(0x100) — флаг прямого чтения значения;
- TVal::DirWrite(0x200) — флаг прямой записи значения;
- TVal::Dynamic(0x400) — флаг динамического атрибута, обычно создаваемого из пользовательских процедур.
Публичные методы:
- TVal( ); — Конструктор по умолчанию.
- TVal( TFld &fld ); — Инициализация как хранилище динамических данных.
- TVal( TCfg &cfg ); — Инициализация как отражение статических данных (БД).
- string DAQPath( ); — Получение DAQ адреса элемента.
- void setFld( TFld &fld ); — Инициализация как хранилище динамических данных.
- void setCfg( TCfg &cfg ); — Инициализация как отражение статических данных (БД).
- string name( ); — Имя атрибута.
- int64_t time( ); — Метка времени последнего/текущего значения (10-6с).
- bool isCfg( ); — Признак объекта значения, созданного на основе элемента конфигурации.
- bool dataActive( ); — Флаг активности (обновляемости) данных.
- string getSEL( long long *tm = NULL, bool sys = false ); — Запрос значения выборочного типа на указанное время tm. Если NULL то возвратится последнее значение.
- TVariant get( long long *tm = NULL, bool sys = false ); — Запрос значения на указанное время tm. Если NULL то возвратится последнее значение.
- string getS( long long *tm = NULL, bool sys = false ); — Запрос значения строкового типа на указанное время tm. Если NULL то возвратится последнее значение.
- double getR( long long *tm = NULL, bool sys = false ); — Запрос значения вещественного типа на указанное время tm. Если NULL то возвратится последнее значение.
- int64_t getI( long long *tm = NULL, bool sys = false ); — Запрос значения целого типа на указанное время tm. Если NULL то возвратится последнее значение.
- char getB( long long *tm = NULL, bool sys = false ); — Запрос значения логического типа на указанное время tm. Если NULL то возвратится последнее значение.
- AutoHD<TVarObj> getO( int64_t *tm = NULL, bool sys = false ); — Запрос значения объектного типа.
- void setSEL( const string &value, long long tm = 0, bool sys = false ); — Установка значения выборочного типа value.
- void set( const TVariant &value, long long tm = 0, bool sys = false ); — Установка значения value.
- void setS( const string &value, long long tm = 0, bool sys = false ); — Установка значения строкового типа value.
- void setR( double value, long long tm = 0, bool sys = false ); — Установка значения вещественного типа value.
- void setI( int64_t value, long long tm = 0, bool sys = false ); — Установка значения целого типа value.
- void setB( char value, long long tm = 0, bool sys = false ); — Установка значения логического типа value.
- void setO( AutoHD<TVarObj> value, int64_t tm = 0, bool sys = false ); — Установка значения объектного типа value.
- AutoHD<TVArchive> arch( ); — Получение ассоциированного со значением архива.
- void setArch( const AutoHD<TVArchive> &vl ); — Установка ассоциированного со значением архива.
- string setArch( const string &nm = "" ); — Установка/создание нового архива с предложенным именем nm или автоматически, если имя пусто.
- bool reqFlg( ); bool resB1( ); bool resB2( ) — Получить некоторые специфичные для реализации флаги.
- void setReqFlg( bool vl ); void setResB1( bool vl ); void setResB2( bool vl ) — Установить некоторые специфичные для реализации флаги.
- TFld &fld( ); — Описатель структуры атрибута.
4.8. Объект библиотеки шаблонов параметров подсистемы "DAQ" (TPrmTmplLib)
Наследует: | TCntrNode, TConfig. |
Публичные методы:
- TPrmTmplLib( const char *id, const char *name, const string &lib_db ); — Инициализирующий конструктор.
- string id( ); — Идентификатор библиотеки.
- string name( ); — Имя библиотеки.
- string descr( ); — Описание библиотеки.
- string DB( ); — БД экземпляра библиотеки.
- string tbl( ); — Таблица БД экземпляра библиотеки.
- string fullDB( ); — Полный адрес таблицы БД экземпляра библиотеки.
- bool startStat( ) const; — Признак "Библиотека запущена".
- void start( bool val ); — Запуск/останов библиотеки.
- void setName( const string &vl ); — Установка имени библиотеки.
- void setDescr( const string &vl ); — Установка описания библиотеки.
- void setFullDB( const string &vl ); — Установка полного адреса таблицы БД экземпляра библиотеки.
- void list( vector<string> &ls ) const; — Список шаблонов в библиотеке.
- bool present( const string &id ) const; — Проверка на присутствие шаблона id в библиотеке.
- AutoHD<TPrmTempl> at( const string &id ) const; — Подключение к шаблону id.
- void add( const char *id, const char *name = "" ); — Добавление шаблона id.name в библиотеку.
- void del( const char *id, bool full_del = false ); — Удаление шаблона id из библиотеки.
- TDAQS &owner( ) const; — Объект - подсистема "DAQ", владелец библиотеки.
4.9. Объект шаблона параметров подсистемы "DAQ" (TPrmTempl)
Наследует: | TFunction, TConfig. |
Данные:
Дополнительные флаги к объекту атрибута функции IO (enum TPrmTempl::IOTmplFlgs):
- TPrmTempl::AttrRead(0x10) — атрибут только на чтение;
- TPrmTempl::AttrFull(0x20) — атрибут с полным доступом;
- TPrmTempl::CfgPublConst(0x40) — публичная постоянная;
- TPrmTempl::CfgLink(0x80) — внешняя связь;
- TPrmTempl::LockAttr(0x100) — заблокированный атрибут.
Публичные методы:
- TPrmTempl( const char *id, const char *name = "" ); — Инициализирующий конструктор шаблона.
- string id( ); — Идентификатор шаблона параметра.
- string name( ); — Имя шаблона параметра.
- string descr( ); — Описание шаблона параметра.
- int maxCalcTm( ); — Лимит на максимальное время вычисления процедуры шаблона.
- string progLang( ); — Язык программирования шаблона параметра.
- bool progTr( ); — Перевод программы шаблона параметра.
- string prog( ); — Программа шаблона параметра.
- int64_t timeStamp( ); — Метка времени изменения объекта в БД.
- void setName( const string &inm ); — Установка имени шаблона параметра.
- void setDescr( const string &idsc ); — Установка описания шаблона параметра.
- void setMaxCalcTm( int vl ); — Установка лимита на максимальное время вычисления процедуры шаблона.
- void setProgLang( const string &ilng ); — Установка языка программирования шаблона параметра.
- void setProgTr( bool vl ); — Установка перевода программы шаблона параметра.
- void setProg( const string &iprg ); — Установка программы шаблона параметра.
- void setStart( bool val ); — Пуск/останов шаблона параметра.
- AutoHD<TFunction> func( ); — Подключение к функции, сформированной шаблоном.
- TPrmTmplLib &owner( ) const; — Объект библиотеки шаблонов - владелец шаблона.