12. Компоненты объектной модели системы OpenSCADA
Объектная модель системы OpenSCADA строится на основе объекта функции TFunction, параметрах функции IO и кадре значений функции TValFunc. В последствии объекты функции включаются в объектное дерево, формируя объектную модель системы. Использование функций объектной модели производится путём связывания кадра значений TValFunc с функцией.
Идея в целом доступно представленна на рис. 7.
Рис. 7. Основа среды программирования системы OpenSCADA.
Объект функции (TFunction) предоставляет интерфейс для формирования параметров функции и алгоритма вычисления в объекте, наследующем его.
Объект параметра функции (IO) содержит конфигурацию отдельно взятого параметра.
Объект кадра значений (TValFunc) содержит значения в соответствии со структурой связанной функции. При исполнении алгоритма ассоциированой функции используются значения этого объекта.
12.1. Объект функции (TFunction)
Наследует: | TCntrNode |
Наследуется: | Модулями и узлами систем, содержащими функции для публикации в объектную модель системы. |
Публичные методы:
- TFunction( const string &id, const char *grp = "root", const string &stor = "" ); — Инициализирующий конструктор функции с идентификатором id, группой пользователей grp и хранилищем stor.
- TFunction( const TFunction &src ); — Копирующий конструктор.
- TFunction &operator=( const TFunction &func ); — Копирование функций.
- string id( ) const; — Идентификатор функции.
- virtual string name( ); — Локализованное имя функции.
- virtual string descr( ); — Описание функции.
- virtual string prog( ); — Текст программы этой функции, для тех которые не статичны.
- virtual string stor( ) const; — БД хранилища, для таблицы "Trs" в основном.
- bool startStat( ) const; — Состояние - "Функция запущена".
- int use( ); — Счётчик использования функции.
- ResRW &fRes( ); — Ссылка на ресурс функции.
- void setId( const string &vl ); — Установка идентификатора функции.
- virtual void setProg( const string &prg ); — Установка текста программы этой функции, для тех которые не статичны.
- void setStor( const string &istor ); — Установить БД хранилища в stor.
- virtual void setStart( bool val ); — Запуск/останов val функции.
- void ioList( vector<string> &list ); — Список параметров функции list.
- int ioId( const string &id ) const; — Получение идентификатора параметра функции id.
- int ioSize( ) const; — Количество параметров функции.
- IO *io( int id ) const; — Получение параметра функции по индексу id.
- void ioAdd( IO *io ); — Добавление параметра функции io.
- int ioIns( IO *io, int pos ); — Вставка параметра функции io в позицию pos. Возвращает реальное положение нового параметра.
- void ioDel( int pos ); — Удаление параметра функции в позиции pos.
- void ioMove( int pos, int to ); — Перемещение параметра функции из позиции pos в позицию to.
- virtual void calc( TValFunc *val ); — Вычисление алгоритма функции над указанными значениями val.
- virtual void valAtt( TValFunc *vfnc ); — Вызывается объектом кадра значений vfnc в случае связывания с функцией.
- virtual void valDet( TValFunc *vfnc ); — Вызывается объектом кадра значений vfnc в случае отвязывания от функции.
- virtual void preIOCfgChange( ); — Вызывается перед изменением конфигурации функции.
- virtual void postIOCfgChange( ); — Вызывается после изменения конфигурации функции.
Защищённые атрибуты:
- string mId; — Идентификатор функции.
- bool runSt; — Признак - "Запущен".
- bool beStart; — Признак - "Запускать".
- TValFunc *mTVal; — Ссылка на объект значений, используемый для тестирования функции. Может отсутствовать.
12.2. Объект параметра функции (IO)
Данные:
Типы параметра (enum — IO::Type):
- IO::String — строка/текст;
- IO::Integer — целое;
- IO::Real — вещественное;
- IO::Boolean — логический;
- IO::Object — объект.
Флаги параметра (enum — IO::IOFlgs):
- IO::Default — режим по умолчанию (вход);
- IO::Output — выход;
- IO::Return — возврат.
Публичные методы:
- IO( const char *id, const char *name, IO::Type type, unsigned flgs, const char *def = "", bool hide = false, const char *rez = "" ); — Инициализирующий конструктор.
- IO( const IO &src ); — Копирующий конструктор.
- IO &operator=( const IO &iio ); — Копирование параметров функции.
- const string &id( ) const; — Идентификатор параметра функции.
- const string &name( ) const; — Локализованное имя параметра функции.
- const Type &type( ) const; — Тип параметра функции.
- unsigned flg( ) const; — Флаги параметра функции.
- const string &def( ) const; — Значение по умолчанию.
- bool hide( ) const; — Признак - "Скрыто".
- const string &rez( ) const; — Резервное свойство параметра функции.
- void setId( const string &val ); — Установить идентификатор в val.
- void setName( const string &val ); — Установить имя в val.
- void setType( Type val ); — Установить тип в val.
- void setFlg( unsigned val ); — Установить флаги в val.
- void setDef( const string &val ); — Установить значение по умолчанию в val.
- void setHide( bool val ); — Установить/снять признак - "Скрыто".
- void setRez( const string &val ); — Установить резервное свойство в val.
12.3. Объект значения функции (TValFunc).
Публичные методы:
- TValFunc( const string &iname = "", TFunction *ifunc = NULL, bool iblk = true ); — Инициализирующий конструктор.
- string user( ); — Пользователь, от имени которого исполняется функция.
- string lang( ); — Язык, от которого исполняется функция.
- const string &vfName( ); — Имя объекта значений.
- bool blk( ); — Признак - "Блокирование изменений параметров функции".
- bool dimens( ); — Признак - "Измерять время вычисления".
- bool mdfChk( ); — Признак - "Проверка атрибутов на модификацию".
- void setUser( const string &iuser ); — Установить пользователя, от имени которого будет исполняться функция.
- void setLang( const string &iuser ); — Установить язык, от которого будет исполняться функция.
- void setVfName( const string &nm ); — Установить имя объекта значений в nm.
- void setDimens( bool set ) — Установка/сброс set признака - "Измерять время вычисления".
- void setMdfChk( bool set ); — становка/сброс set признака - "Проверка атрибутов на модификацию".
- void ioList( vector<string> &list ); — Список параметров функции list.
- int ioId( const string &id ); — Получение индекса параметра id.
- int ioSize( ); — Общее количество параметров.
- IO::Type ioType( unsigned id ); — Тип параметра id.
- unsigned ioFlg( unsigned id ); — Флаги параметра id.
- bool ioHide( unsigned id ); — Признак параметра id - "Скрыт".
- bool ioMdf( unsigned id ); — Признак параметра id - "Модифицирован".
- TVariant get( unsigned id ); — Получить значение параметра id.
- string getS( unsigned id ); — Получить значение (строка) параметра id.
- int64_t getI( unsigned id ); — Получить значение (целое) параметра id.
- double getR( unsigned id ); — Получить значение (вещественное) параметра id.
- bool getB( unsigned id ); — Получить значение (логическое) параметра id.
- AutoHD<TVarObj> getO( unsigned id ); — Получить значение объекта параметра id.
- void set( unsigned id, const TVariant &val ); — Установить значение val параметра id.
- void setS( unsigned id, const string &val ); — Установить значение val (строка) параметра id.
- void setI( unsigned id, int64_t val ); — Установить значение val (целое) параметра id.
- void setR( unsigned id, double val ); — Установить значение val (вещественное) параметра id.
- void setB( unsigned id, bool val ); — Установить значение val (логическое) параметра id.
- void setO( unsigned id, AutoHD<TVarObj> val ); — Установить значение val объекта параметра id.
- virtual void calc( const string &user = "" ); — Вычислить от имени пользователя user или пользователя, установленного ранее.
- double calcTm( ); — Время вычисления.
- void setCalcTm( double vl ); — Инициализация времени вычисления значением vl.
- TFunction *func( ); — Связанная функция.
- void setFunc( TFunction *func, bool att_det = true ); — Связать с указанной функцией func.
- virtual void preIOCfgChange( ); — Вызывается перед изменением конфигурации.
- virtual void postIOCfgChange( ); — Вызывается после изменения конфигурации.
- TValFunc *ctxGet( int key ); — Получение контекста для ключа key.
- void ctxSet( int key, TValFunc *val ); — Установка контекста для ключа key.
- void ctxClear( ); — Очистка контекста вызовов внешних функций.
Публичные атрибуты:
- void *exCtx; — Контекст исполнения функции.