工业库通过opc采集kingscada数据以和scada展示工业库数据Word文件下载.docx
《工业库通过opc采集kingscada数据以和scada展示工业库数据Word文件下载.docx》由会员分享,可在线阅读,更多相关《工业库通过opc采集kingscada数据以和scada展示工业库数据Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
点击“确定”,提示创建成功,完成OPC采集器配置
选中opc采集器,点击右边菜单栏“启动”
图6启动OPC采集器
2.从采集器检索导出变量
选择“开始—程序—KingHistorian3.0—客户端管理工具”,进入到系统管理平台
图7系统管理平台
点击左边“系统管理—变量管理器”,在变量管理器中通过采集器检索
图8变量管理器中检索scada变量
图9变量管理器中检索OPC采集器KS变量
备注:
SCADA需要运行,SCADA变量基本属性中“允许其他使用访问”前需要打钩。
选中要导出的变量,保存
图10检索到的变量导出到excel文件1
图10检索到的变量导出到excel文件2
导出表格如下
图11工业库变量导出表
表中可以看出,数据源地址的格式为Local.变量名
3.把变量导入到工业库中
在“变量管理器—变量组根组”下,右键,导入变量—从文件,将刚才导出的变量导入到变量根组下面
图12从文件导入变量
点击“确定”,添加变量成功。
图13添加变量
打开实时查看器,将自动刷新频率改为1s
图14实时查看器1
图15实时查看器2
这样工业库就可以通过opc读取KingSCADA数据。
SCADA展示工业库数据
打开scada开发界面,建立一个画面,在画面上建立一个报表,报表命名默认为Report1,
图16scada画面报表显示
另外在画面上建立一个按钮,上面文本改为“查询”如图
图17建立查询按钮
双击按钮,如图
图18命令语言写在鼠标左键按下时
在按钮左键按下时写,如图
KDBDisConnect("
Handle1"
);
KDBGetConnectID("
"
DSN=wang;
ServerAddress=127.0.0.1;
ServerPort=5678;
UID=sa;
pwd=sa;
NetworkTimeout=0"
KDBGetDataset1("
MyDataset"
"
selectTagName,DataTime,DataValuefromrealtime"
Report1.SetDataset1("
图19scada命令语言
boolKDBGetConnectID(stringstrConnectIDName,stringConnectStr)
功能:
连接数据库,获得一个连接句柄,并保持和数据库的连接和打开状态。
数据库作为服务器,提供数据服务时,需要和客户端建立服务连接,因为数据库一般都是要为多用户、多程序服务的,服务连接是一种关键的、有限的资源,如果不需要服务了,就要把服务连接给断掉,释放资源,如KDBGetDataset()函数,每执行1次,就创建1次连接,执行完SQL命令后,就关闭连接,下一次执行,再重新连接。
但是,如果客户端对数据库的访问是连续而密集的,那么频繁的建立、关闭连接,会极大地降低数据库性能,甚至造成数据库服务器堵塞,为了避免频繁建立、关闭数据库连接带来的的开销,我们提供获取句柄方式,实现对数据库的连接复用。
用户可通过KDBGetConnectID()方法建立一个数据库连接,利用这个连接,用KDBGetDataset1方法向数据库发送SQL命令,数据库执行完SQL命令,返回操作结果,并不关闭连接,该连接句柄可以一直使用,直到调用KDBDisConnect()函数将其断开。
通过获取句柄方法,使得一个数据库连接方法可以得到高效、安全的复用。
长期占用数据库连接而不释放,可能会影响到数据库对其它用户的服务,建议只在需要这种方式的情况下使用,不要滥用。
因为网络、数据库本身的稳定性原因,即使没有执行释放连接句柄的脚本,时间长了,连接句柄也可能会自动失效,在网络好、数据库访问量不太大的情况下,1个连接句柄大概能坚持几天的时间,建议在执行SQL命令的脚本里,增加获取返回值的语句,来判断是否需要重新获取连接句柄。
例句:
booltmpbool;
tmpbool=KDBGetDataset1("
select*fromTable_LotCols"
if(tmpbool==0)
{
KDBGetConnectID("
DATABASE=pubs;
PWD="
KDBGetDataset1("
}
参数:
strConnectIDName:
和数据库连接的句柄名称,字符串类型
ConnectStr:
数据库连接字符串,字符串类型
返回值:
true:
连接成功
false:
通讯失败
例如:
KingSCADA以sa身份登录(无密码)和名为wang的SQLServer中的pubs数据库连接,并获得名为Handle1的句柄。
KDBGetConnectID("
DATABASE=pubs;
UID=sa;
boolKDBGetDataset1(stringDatasetName,stringstrConnectIDName,stringSqlStr)
通过连接句柄,从数据库中获取数据集,获取完毕后不断开和数据库的连接。
DatasetName:
数据集名称,字符串类型
和数据连接的句柄名称,字符串类型
SqlStr:
SQL查询语句,字符串类型
获得数据集成功
获得数据集失败
执行此函数得到一个名为"
的数据集,该数据集中的记录符合查询条件
在使用此函数之前需使用KDBGetConnectID函数得到名为Hand1的句柄.
intSetDataset1(stringstrDatasetName)
strDatasetName:
数据集名称。
返回值说明:
0---成功;
1---执行错误;
2---忙(上次命令执行中);
6---输入参数格式错误;
7---未找到该数据集。
举例:
KDBGetDataset(“MyDataset”,“DSN=KingSCADADB”,“select*fromTable_LotCols”);
//执行函数得到一个名为“MyDataset”的数据集。
Report1.SetDataset1(“MyDataset”)
//清除报表中原有的数据,将符合条件的数据集显示在Report1报表中,默认显示的起始单元格是报表中第一行第一列对应的单元格。
画面保存之后,点击运行图标,运行之后点击查询按钮,如图所示
图19查询结果
工业库中变量在KingGraphic引用
因KingGraphic变量名不能包含空格字符和如下28个无效字符:
:
;
+-*/%&
!
~|^<
>
={}[]().`’”\?
那么在工业库中可以引用的变量OPC_Local.liquid_level,在KingGraphic引用就会有问题,需要把变量中间的“.”去掉。
具体操作步骤如下
1.打开工业库导出的变量,我们需要添加的就只有三项,变量名、变量描述、数据源地址,其他的变量域都相同,因此,要添加几个float类型的变量,就复制出几个,然后替换变量名、变量描述、数据源地址这三项就可以了,如图17。
图20工业库导出变量1
图21工业库导出变量2
2.将作为opc服务器的KingSCADA工程变量导出,如图
图22SCADA变量导出
打开KS变量表,在上面的工业库变量表中我们知道数据源地址的格式为Local.变量名,那么在KS的变量表中,变量名我们知道,只要把变量名前面增加“Local.”就变成工业库中变量的数据源地址了,因此我们可以按照下面的方式实现。
找到没有数据的一列,写上“Local.”,再找一列空的,写公式合并两个单元格内容,例如:
“=BM2&
C2”,即把“Local.”和变量名合成一个字符串,变成工业库的变量的数据源地址。
图23合成数据源地址1
拷贝合并后的内容,将这列内容覆盖到工业库的变量表中tags1.xls中的数据源地址那列中,如图21
图24合成数据源地址2
图25数据源地址复制到工业库
拷贝KS变量表中的变量名、变量描述的内容,分别将内容覆盖到工业库的变量表中tags1.xls中的变量名、变量描述那列中。
图26编辑好的新的工业库变量表
在工业库中导入修改后的tags1.xls文件,就可以把KS的变量加载到工业库中,采集和存储。
图27导入变量表
图28导入变量步骤1
图29导入变量步骤1
导入变量时为变量添加前缀“KH_”
图30导入变量步骤2
点击确定按钮,完成变量导入,如图
图31变量管理器变量浏览
重启OPC采集器,实时查看器查看数据
图32变量管理器变量实时查看