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>.
- void 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 -- логический.
Флаги параметра (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( ); -- Имя объекта значений.
- void setUser( const string &iuser ); -- Установить пользователя от имени которого будет исполнятся функция.
- void setVfName( const string &nm ); -- Установить имя объекта значений в <nm>.
- 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> - «Скрыт».
- string getS( unsigned id ); -- Получить значение (строка) параметра <id>.
- int getI( unsigned id ); -- Получить значение (целое) параметра <id>.
- double getR( unsigned id ); -- Получить значение (вещественное) параметра <id>.
- bool getB( unsigned id ); -- Получить значение (логическое) параметра <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>.
- bool blk( ); -- Признак - "Блокирование изменений параметров функции".
- bool dimens( ); -- Признак - «Измерять время вычисления».
- void setDimens( bool set ) -- Установка/сброс <set> признака - «Измерять время вычисления».
- 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( ); -- Вызывается после изменения конфигурации.