云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于高级编程语言的WINCC复杂报表管理实现

基于高级编程语言的WINCC复杂报表管理实现

  • 62 次阅读
  • 3 次下载
  • 2025/6/5 12:23:11

基于高级编程语言的WINCC复杂报表管理实现

徐志杰

(国电南自新能源科技有限公司,南京市浦口高新区 210032)

摘 要:为解决西门子视窗管理中心(WINCC)报表功能的不足,本文介绍了某电厂烟尘减排控制系统上位机监控系统中采用高级编程语言VB和脚本编程语言VBSCRIPT与WINCC下的SQL2005数据库进行接口的方法,完成过程历史数据的存储、读取。通过调用Spread Active控件进而实现复杂报表的查询、打印,和对数据的二次梳理分析,并可以方便的输出为EXCEL和HTML文件。同时也为以B/S模式访问过程运行数据提供了接口。 关键词:VB;WINCC;SQL2005;数据库;报表

0 引言

WINCC(Windows Control Center)作为西门子公司开发的上位机组态软件,功能强大、应用灵活,为现场控制提供了一个高可靠性的监控平台,因此广泛应用于工控领域,尤其在电力系统的辅机控制方面,有许多采用WINCC+S7300(或400)的方案来实现稳定可靠控制的成功案例。随着WINCC多年应用经验的积累,版本进行了多次升级,WINCC V6.2 SP3由于具有智能新选件、可扩展菜单(工具栏)、报警可隐藏,自定义数据库等诸多新特征,使其应用越来越广泛。WINCC V6.2的归档方式与以前的版本所有不同,它的运行数据存放在数据片段当中。当控制系统数据采集比较多,需要对数据关系进行二次梳理,而WINCC自带的报表编辑器有其局限性,用户要实现复杂报表存在很大难度。本文针对上述情况,结合数据片段无法直接用VB读取的困难,采用自定义数据库来存放过程运行数据,然后采用VB通过字符串访问方式读取数据进行分析处理及复杂报表的查询打印等功能。

设置数据和历史数据通过字符串连接方式访问自定义数据库来实现。

2 WINCC访问自定义数据库

2.1 建立自定义数据库

打开SQL Server Management Studio,以Sa用户登录SQL Server数据库如图1,在SQL Server数据库中建立名为“userdata”数据库和“process_value”数据表如图2。

图1 自定义数据库连接

图2 自定义数据库表

1 WINCC访问数据库的方式

WINCC几乎集成了微软所有开放性技术,大量采用了标准化技术,如:OPC、DDE、ODBC、OLE-DB、Active X等,可以很方便的与其他应用程序交换数据。

WINCC6.2还提供C脚本和VBSCRIPT脚本语言支持,可以通过连接字符串的方式实现数据库的连接和操作。以某电厂减排控制系统的上位机监控系统为例,实时数据直接采用WINCC归档数据通过WINCC控件进行调阅查询。而过程运行特殊

2.2 与自定义数据库进行连接并读写

在WINCC全局脚本建立一动作周期触发执行实现与自定义数据库连接后把过程值写入到自定义数据库中,详细可参阅文献[1]。具体实现代码如下: Option Explicit Function action

Dim sPro,sDsn,sSer,sCon,sSql Dim oRs,conn,oCom,oItem Dim database,server,uid,pwd,tagtime Dim HMItag,pro_value,i

Set HMItag=HMIRuntime.Tags(\’读取运行过程值 HMItag.Read

pro_value=HMItag.Value

sCon=\

server;server=cckz\\wincc;database=userdata;uid=sa;pwd=11260523\tagtime=Now() sSql=

\

into

pro_value(id,date,value)

values('\Set conn = CreateObject(\conn.ConnectionString = sCon

conn.Open

Set oRs = CreateObject(\Set oRs = conn.Execute(sSql) oRs.movenext oRs.Close

Set oRs = Nothing conn.Close

Set conn = Nothing End Function

通过以上代码每隔1分钟执行一次写入操作,将过程值写入到自定义数据库,便于下一步用VB编写的程序进行读取。

3 基于高级编程语言的数据库访问

3.1 VB连接数据库的方法

由于WINCC提供的开放的标准数据访问接口,VB可以通过多种方式进行数据库连接,方法1:建立ODBC数据源,通过ODBC数据源进行连接,该方法简单易用,但需要在上位机上手动建立ODBC数据源;方法2:采用连接字符串方式进行连接,直接调用OLE-DB驱动,以字符串方式进行

连接,该方法不需要手动建立连接数据源,便于在不同工程间进行程序的移植。本文考虑到程序的通用性和可移植性采用了字符串连接方式实现VB与数据库之间的连接,具体实现代码如下: Set conn=New ADODB.Connection Set rs=New ADODB.Recordset

Conn.ConnectionString=”Driver={sql server};server= cckz\\wincc;database=userdata;uid=sa;pwd=11260523\conn.Connection Timeout=30 conn.open

rs.open “select * from pro_value where……..” if rs.EOF=True and rs.BOF then

m=MsgBox(“重新选择查询条件”,VbExclamation) else

spreadHistory.Redraw = False

Set spreadHistory.DataSource = RS

If RS.RecordCount > 0 Then

spreadHistory.MaxRows = RS.RecordCount Else

spreadHistory.MaxRows = 0 End If

With spreadHistory ………. end if

rs.close

Set RS = Nothing Set Conn = Nothing

上面介绍了用VB和VBScript 脚本分别操作SQL数据库的方法,通过执行SQL语言的insert into 或者update等命令(更多命令参见文献[2])即可实现对数据库的插入、更新等操作。

3.2 通过Active控件实现灵活报表管理

通过上面介绍的VB连接SQL数据库的方法,从数据库获取数据后,利用广泛使用的第三方Active控件来实现灵活的报表查询、打印、输出。查询数据源与控件的绑定方法如下:

pri_title = Left(Now(), 10) & \月份运行记录\sbStatusBar.Panels.Item(1).text = \当前显示的数据是: \On Error GoTo last Dim data_table As Integer Dim sql As String Dim test As String

data_table = Int(Left(Node.Key, 2))

sql = \* from pro_value \& \ where YEAR(日期)\ month(日期)\MousePointer = 11 Set user_rs = Nothing

Set user_rs = New ADODB.Recordset user_rs.Open

sql,

g_Cn,

adOpenDynamic,

adLockOptimistic

'/////////////////////////绑定SPREAD With lvListView .Redraw = False

Set .DataSource = user_rs If .DataColCnt < 37 Then .MaxRows = 34 Else

.MaxRows = .DataRowCnt '设置最大行 End If .Redraw = True End With user_rs.Close End If

last:

Set user_rs = Nothing MousePointer = 0 End Sub

通过以上代码就可实现控件与数据源的绑定,下图3为应用于某电厂的烟尘减排控制系统数据管理界面。

图3 应用实例

3.3 WINCC中调用外挂EXE文件

将VB编写的数据管理程序编译成完整的EXE文件,然后在WINCC下通过以下C脚本来调用。

#include \

void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{

#pragma option(mbcs) HWND hwnd; char szCmd[255];

hwnd=FindWindow(NULL,\运行系统 \sprintf(szCmd,\hwnd=%d,hwnd); printf(\

ProgramExecute(szCmd);

通过以上介绍的方法和步骤即可实现WINCC下复杂报表管理功能。

4 结论

本文针对应用WINCC作为上位机监控软件开发平台的工程中,由于WINCC系统自带的报表功能所限,而过程数据又需要二次分析且要求实现复杂报表管理时,通过本文描述的方法即可简单方便地实现对WINCC过程数据和需要特殊处理的数据的存取操作和数据管理。该方法充分利用了WINCC的优点,大大降低了操作人员使用监控软件的复杂性和难度。此外,在WINCC中将过程数据存入自定义数据库,为以B/S方式获取数据预留了方便的接口,该方法具有较好的扩展性和可移植性。

参考文献:

[1] 苏昆哲.深入浅出西门子WINCC V6 北京航空航天大学

出版社, 2008.

[2] “653”工程编委会. SQL Server2005实例教程. 中国电

力出版社, 2008-7-1. 作者简介:

徐志杰(1977-),男,工程师,从事的环保自动化相关工作和智能控制方面的研究。

注:作者联系方式:电子信箱xzj_nj@163.com。

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

基于高级编程语言的WINCC复杂报表管理实现 徐志杰 (国电南自新能源科技有限公司,南京市浦口高新区 210032) 摘 要:为解决西门子视窗管理中心(WINCC)报表功能的不足,本文介绍了某电厂烟尘减排控制系统上位机监控系统中采用高级编程语言VB和脚本编程语言VBSCRIPT与WINCC下的SQL2005数据库进行接口的方法,完成过程历史数据的存储、读取。通过调用Spread Active控件进而实现复杂报表的查询、打印,和对数据的二次梳理分析,并可以方便的输出为EXCEL和HTML文件。同时也为以B/S模式访问过程运行数据提供了接口。 关键词:VB;WINCC;SQL2005;数据库;报表 0 引言 WINCC(Windows Control Center)作为西门子公司开发

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com