实时数据库类的设计,用 VC++声明的头文件如下:
class RealDB : public CObject
{
private :
AnalogType *TemAnalog;
SwitchType *TemSwitch;
POSTTTION temPOSTTTION;
int DataNum;
private:
//创建 Access 历史数据库和表
BOOL CreateNewTable();
BOOL CreateHistoryAlarmDB();
BOOL CreateHistoryObjectTable();
public:
CDaoTableDef *m_newtable;
CDatabase m_dataobject;
CObList m_listdata; //数据对象的链表
CString IndexTag[200]; //定义最大数据对象个数 200
int AnalogSwitchSign; //定义模拟和开关型的分割位置
//操作
public:
RealDB();
virtual ~RealDB();
BOOL CreateDataObject(); //创建数据对象
//数据对象的基本操作
BOOL GetProFromName(CString Name, int Type , float InitV ,CString Unit ,
float MaxV , float MinV , int PointN );
BOOL GetProFromID(int id,CString Name, int Type , float InitV ,CString Unit ,
float MaxV , float MinV , int PointN );
int GetIDFromDataName(CString dataname); //通过标记名取得 ID 号
CString GetDataNameFromID(int id); //通过 ID 取得数据对象的名称
int GetDataType(CString Name);
int GetAlmDataName(CString name[200]); //报警数据对象集合
int GetSaveDataName(CString alarmname[200]); //保存数据对象的集合
//数据对象的现场值读写操作
BOOL GetvalueFromName(CString name,float value); //通过标记名取得现场值
BOOL SetvalueFromName(CString name,float value); //通过标记名将现场值写入数据对象中
BOOL GetvalueFromID(int id,float value); //通过 ID 号取得现场值
BOOL SetvalueFromID(int id,float value); //通过 ID 号写入现场值
BOOL GetvalueArrayFromID(int Num,int id[],float value[]);//成组读取数据对象的现场值
BOOL SetvalueArrayFromID(int Num, int id[], float value[]);//成组写入数据对象的现场值
……
};
4 结束语
实时数据库设计是先进控制软件设计的重要组成部分,是难点部分,本文通过对实时数据库的概述和分析,论述了实时数据库模块的实现方法,以面向对象的编程方式给出了定义类的部分代码。实时数据库系统复杂,由于篇幅有限,本文没有一一详细说明。笔者所开发的实时数据库可以与已经开发的先进控制软件连接起来,已经在实验室调试通过,还有一些工作(如实时数据库管理系统、实时数据库接口等)也正在进行。