发表于:2008-01-17 15:54:00
楼主
4.3力控与关系数据库的数据交互组件ODBCRouter3.0的使用
4.3.1 概述
ODBCRouter3.0是力控数据库与关系数据库的衔接组件,是力控数据库软件对外接口的一个拓展组件。此组件极大的拓展了力控数据库在现场应用中的使用。方便了现场实时数据与管理数据的交互。
4.3.2功能介绍
主要功能是将力控数据库中数据(实时数据、历史数据)转储到关系数据库,或者将关系数据库中的有关的实时、历史数据转储到力控数据库中。
1.从力控数据转储到关系数据库的方式
1)历史数据
(1)历史_单记录(单点触发)
所有涉及到的数据库中的某一点均对应数据表中的一个字段(用户可以人工指定数据表中的字段名),每插入一条记录,记录本时间点上所有点的历史数据。每条记录均有时间字段。
图4.3-1
(2)历史_多记录
每一个数据点每一个历史时刻均有一条记录,记录包含本数据点历史时间、本点的点名、历史数据值(以上数据在数据表中的字段用户可以人工指定),多记录的意思就是一个数据点在数据表中可能会产生多条历史记录数据。
图4.3-2
2)实时数据
(1)实时_单记录(单点触发)
图4.3-3
所有涉及到的数据库中的某一点均对应数据表中的一个字段(用户可以人工指定数据表中的字段名),每插入一条记录,记录本时间点上所有点的实时数据。每条记录均有时间字段。
(2)实时_单记录_唯一记录(单点触发)
图4.3-4
所有涉及到的数据点均对应数据表中的一个字段(用户可以人工指定数据表中的字段名),每更新数据时只对第一条记录进行修改,也就是更新方式更新数据,本数据表有且有一条数据记录,记录上的时间字段记录最后更新本数据的时间点。
(3)实时_多记录
图4.3-5
每一个数据点每一个更新时刻均有一条记录,记录包含本数据点更新时间、本点的点名、实时数据值(以上数据在数据表中的字段用户可以人工指定),多记录的意思就是一个数据点在数据表中可能会产生多条记录数据
(4)实时_多记录_唯一记录
图4.3-6
每一个数据点每一个更新时刻只更新本点有且仅有的一条记录,记录包含本数据点更新时间、本点的点名、实时数据值(以上数据在数据表中的字段用户可以人工指定),多记录_唯一记录的意思就是每个数据点在数据表中均有一条对应记录,每到更新时刻,只更新此条记录对应的数据,不在插入新的记录。
2.从关系数据库转存到力控数据库
1)历史数据
(1)历史_单记录(单点触发)
图4.3-7
每条历史记录均由时间、毫秒、数据字段组成,数据字段为每个要导入数据点对应一个数据字段(用户可以人工指定数据表中的字段对应的力控数据变量)。组件将按照指定的开始时间,时间内长度导入历史数据。单记录指的是每个时间点有只有一条记录,本记录包含说有要导入数据点的数据。
(2)历史_多记录
图4.3-8
每条历史记录均由时间、毫秒、导入数据点点名、数据字段组成,组件将按照指定的开始时间,时间内长度查找对应本数据点的记录,并导入历史数据。多记录指的是每个数据点每个时刻均由一条记录此刻数据的记录。
2)实时数据
(1)实时_单记录(单点触发)
图4.3-9
每条记录均由时间、数据字段组成,数据字段为每个要导入数据点对应一个数据字段(用户可以人工指定数据表中的字段对应的力控数据变量)。必须设置时间字段,组件将取出记录中时间最近的一条记录,并将数据插入到力控数据库对应点的实时数据上。
(2)实时_多记录
图4.3-10
每条记录均由时间、导入数据点点名、数据字段组成;必须设置了时间字段,组件将按照点名取出记录中时间最近的一条记录,并将数据插入到力控数据库对应点的实时数据上。
(3)实时_单记录_唯一记录
图4.3-11
每条记录均由时间、数据字段组成,数据字段为每个要导入数据点对应一个数据字段(用户可以人工指定数据表中的字段对应的力控数据变量)。不必设置了时间字段,组件直接取出第一条记录导入数据。
(4)实时_多记录_唯一记录
图4.3-12
每条记录均由时间、导入数据点点名、数据字段组成;不必设置了时间字段,组件将按照数据点名直接取出第一条记录导入数据。
注:力控对与关系数据库的交互中,所支持的表结构,如上图4.3.1到4.3.12,如果以上12种表结构与使用的关系数据库表不相符,请您在关系数据库中建立与以上12种表结构相同的视图。
4.3.3 配置方法
ODBCRouter3.0在力控6.0中的设置包括两部分,分别是在后台组件和扩展组件中进行设置,下面进行详细介绍。
1.后台组件的设置
1)启动力控开发环境, 在”工程项目”中找到”后台组件”并打开
2)新建数据后台组件,建立后在界面上就可以调用组件并使用了
3)组件相关函数
(1)Connect();
函数描述:连接Server
返回值 :int
参数 :
说明 :连接Server
返回值 0-连接Server失败,1-连接Server成功
示例 :#RouterMessageComm.ConnectLocal();//连接Server
(2)DisConnect();
函数描述:断开与Server的连接
返回值 :无
参数 :无
说明 :断开与Server的连接
示例 :#RouterMessageComm.DisConnect();//断开与Server的连接
(3)GetAllDBIName();
函数描述:获得所有数据库名称
返回值 :string
参数 :无
说明 :执行函数返回所有数据库名称
返回值为逗号隔开的数据库名称,如:"数据库1,数据库2,...数据库5"的格式
示例 :#RouterMessageComm.GetAllDBIName();//返回所有数据库名称
(4)GetAllowTrigger(string TaskName, string PointName);
函数描述:获取触点是否触发
返回值 :int
参数 :TaskName-任务名称
PointName-转储点名称
说明 :获取触点是否触发
返回值1-允许触发,0-不允许触发
示例 :#RouterMessageComm.GetAllowTrigger(aa, pp);//获取任务aa中的点pp是否允许触发
(5)GetAllTaskName();
函数描述:获得所有任务名称
返回值 :string
参数 :无
说明 :执行函数返回所有任务名称
返回值为逗号隔开的任务名称,如:"任务1,任务2,...任务5"的格式
示例 :#RouterMessageComm.GetAllTaskName();//返回所有任务名称
(6)GetDBIStatus(string strDBIName);
函数描述:查询dbi的状态
返回值 :int
参数 :strDBIName-DBI名称
说明 :查询dbi的状态
返回值 :-10:DBCom创建失败
-2:链接中断
-1:脱离工作状态
0:正常
1:没有链接
2:链接初始化
3:断开链接
4:重新链接
5:未链接
&nb