12. Компоненты объектной модели системы OpenSCADA
Объектная модель системы OpenSCADA строится на основе объекта функции TFunction, параметрах функции IO и кадре значений функции TValFunc. В последствии объекты функции включаются в объектное дерево, формируя объектную модель системы. Использование функций объектной модели производится путём связывания кадра значений TValFunc с функцией.
Идея в целом доступно представленна на рис. 7.
Рис. 7. Основа среды программирования системы OpenSCADA.
Объект функции (TFunction) предоставляет интерфейс для формирования параметров функции и алгоритма вычисления в объекте, наследующем его.
Объект параметра функции (IO) содержит конфигурацию отдельно взятого параметра.
Объект кадра значений (TValFunc) содержит значения в соответствии со структурой связанной функции. При исполнении алгоритма ассоциированой функции используются значения этого объекта.
12.1. Объект функции (TFunction)
Наследует: | TCntrNode |
Наследуется: | Модулями и узлами систем, содержащими функции для публикации в объектную модель системы. |
Публичные методы:
- TFunction( const string &iid ); — Инициализирующий конструктор функции с идентификатором <id>.
- TFunction &operator=( TFunction &func ); — Копирование функций.
- string id( ); — Идентификатор функции.
- virtual string name( ); — Локализованное имя функции.
- virtual string descr( ); — Описание функции.
- bool startStat( ); — Состояние - «Функция запущена».
- int use( ); — Счётчик использования функции.
- virtual void setStart( bool val ); — Запуск/останов <val> функции.
- void ioList( vector<string> &list ); — Список параметров функции <list>.
- int ioId( const string &id ); — Получение идентификатора параметра функции <id>.
- int ioSize( ); — Количество параметров функции.
- IO *io( int id ); — Получение параметра функции по индексу <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>.
- void valAtt( TValFunc *vfnc ); — Вызывается объектом кадра значений <vfnc> в случае связывания с функцией.
- void valDet( TValFunc *vfnc ); — Вызывается объектом кадра значений <vfnc> в случае отвязывания от функции.
- virtual void preIOCfgChange( ); — Вызывается перед изменением конфигурации функции.
- virtual void postIOCfgChange( ); — Вызывается после изменения конфигурации функции.
Защищённые атрибуты:
- string mId; — Идентификатор функции.
- bool run_st; — Признак - «Запущен».
- 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 &operator=( IO &iio ); — Копирование параметров функции.
- const string &id( ); — Идентификатор параметра функции.
- const string &name( ); — Локализованное имя параметра функции.
- const Type &type( ); — Тип параметра функции.
- unsigned flg( ); — Флаги параметра функции.
- const string &def( ); — Значение по умолчанию.
- bool hide( ); — Признак - «Скрыто».
- const string &rez( ); — Резервное свойство параметра функции.
- 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( ); — Пользователь, от имени которого исполняется функция.
- const string &vfName( ); — Имя объекта значений.
- bool blk( ); — Признак - "Блокирование изменений параметров функции".
- bool dimens( ); — Признак - "Измерять время вычисления".
- bool mdfChk( ); — Признак - "Проверка атрибутов на модификацию".
- void setUser( 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>.
- int 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, int 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( ); — Очистка контекста вызовов внешних функций.