西门子代理6ES7194-4GC70-0AA0
我公司主营西门子各系列PLC (S7-200 SMART S7-300 S7-400) 触摸屏 变频器 (MM系列 G120 G120C G110) 伺服 (V80 V60) 数控备件 (PCU50 NCU CCU 轴卡) 等 价格优势 产品为西门子原装正版产品 我公司售出的产品 按西门子标准质保 产品本身有质量问题 质保一年 公司秉承:以信待人 以诚待人 质量如生命 客户至上的经营理念 竭诚为您服务 您的肯定是我们大的动力 我们将期待与您长期持久的合作
在实际应用中,客户对于wincc变量记录的显示需求各式各样,比如在excel或者word中显示变量记录,以特定的表格显示历史数据等等。当wincc集成的在线表格控件不能满足客户需要时,就需要通过自定义的方式来显示变量归档。主要分为两部分:
(1)从wincc中读取归档数据
(2)将归档数据以特定的格式显示出来
本文档介绍从wincc读取归档数据的通用方法,并以listview为例,介绍如何显示归档数据。对于其它控件,客户也可以参考本文档的脚本和编程思路。
表 01
关于wincc连通性软件包的使用,请参考下面的帮助文档:37436159
2.实现方式总体思路介绍
本文档通过调用wincc oledb数据库接口驱动(需要wincc连通性软件包的授权)来访问wincc的变量归档,并在微软的listview控件中显示归档数据。程序结构如下所示:
图1
具体代码见附件。
3.具体实现方法和代码
3.1 创建到归档数据库的连接
由于wincc的变量归档为压缩数据,必须通过wincc oledb来读取归档数据。对于已经安装wincc的计算机,不需要安装wincc连通性软件包。对于未安装wincc的客户端,必须安装wincc连通性软件包。该软件包含在winccv7.0的安装光盘中。
数据库连接的脚本如下所示:
'定义数据库连接变量
dim conn
set conn = createobject("")
'定义数据库查询脚本(可以根据需要自定义修改)
dim ssql
ssql="tag:r,'processvaluearchive\tag1','0000-00-0000:01:00.000','0000-00-00 00:00:00.000'"
'通过调用自定义的数据库连接函数,建立与数据库的连接
dim ors
set ors= winccdatasourceaccess(conn,ssql)
其中,自定义的数据库连接函数winccdatasourceaccess(connobj,psql),参数connobj为连接对象(),参数psql为要执行的sql查询语句,具体代码如下所示:
function winccdatasourceaccess(connobj,psql)
'建立到数据库的连接
on error resume next
'读取本地的wincc运行数据库名称
dim datasourcenamert,dataconnectionname
set datasourcenamert = hmiruntime.tags("@datasourcenamert")
datasourcenamert.read
'定义数据库连接字符串
dim spro, sdsn,sser
spro = "provider=winccoledbprovider.1;"
sdsn = "catalog=" & datasourcenamert.value & ";"
sser = "data source=.\wincc"
dataconnectionname = spro + sdsn + sser
' 定义查询语句字符串
ssql=psql
'建立连接
dim ors,ocom,conn
set conn=connobj
= dataconnectionname
conn.cursorlocation = 3
conn.open
' 创建查询的命令文本
set ors = createobject("adodb.recordset")
set ocom = createobject("")
= 1
set ocom.activeconnection = conn
'执行查询
set ors = ocom.execute
'返回结果
set winccdatasourceaccess=ors
if err.number <> 0 then
msgbox "error code" & err.number & "source:" & & "error deion" &err.deion
err.clear
end if
on error go to 0
end function
自定义函数的创建过程为:在wincc项目管理器中右键点击全局脚本?打开vbs全局脚本编辑器?项目函数?新建函数。具体如下图所示: