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>.
- AutoHD<TVarObj> getO( unsigned id ); - Получить значение объекта параметра <id>.
- bool getB( 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( ); - Очистка контекста вызовов внешних функций.