时间:2024-07-28
王纪森,黎 雯,杨洪音
(西北工业大学自动化学院,西安710072)
随着自动化在过程控制系统中的逐步发展应用,组态软件为多种本地信息机提供了非常多的开放性接口。WinCC是目前世界上最常用的三大SCADA(数据采集与监视控制)系统之一。它是以计算机为基础的生产过程与调度自动化系统,可以对现场的运行设备进行监视和控制,以实现数据采集、设备控制、测量、参数调节以及各类信号报警等。为实现将数据存储至外部数据库,本文主要讨论利用VB语言及VB脚本语言完成数据的传输及管理工作。
ADO是Microsoft为OLEDB设计的应用层接口,它为一致的数据访问接口提供了良好的扩展性而不局限于单一的数据源。OLEDB是基于COM及DCOM技术设计的,可对关联数据库及非关联数据库进行操作。ADO可以完成数据存储及通过OLE DB操作数据库等功能。ADO的核心内容在使可用简单的COM指令即可对ODBC数据源、微软表格等进行快速的ActiveX操作。OLE DB同样还拥有快速、内存少、硬盘痕迹少等优点。
Access是一种基于微软技术的关联数据库管理系统。Access能够存取 Access/Jet、Microsoft、SQL Sever、Oracle,或者任何 ODBC兼容数据库内的资料。Access在使用性、兼容性、可操纵性及可编程性上都有其他数据库无可比拟的优势。
WinCC是由西门子公司开发的具有很强操作性及开放性的组态软件。WinCC本身自带实时数据库及历史数据库,为本地存储提供方便。同时也提供外部数据库的存储途径。利用VB脚本语言可对ActiveX空间或其他对象进行控制写入。因此,它可以控制对象的动态行为并建立与其他对象如Access的连接。
根据需要设计可以检测多种液压元件的综合试验台。整个液压试验系统由7个试验回路组成。整个液压综合试验台的试验回路多,控制层由PLC组成,主要负责试验过程控制及数据采集任务,如图1所示。主要完成的试验科目有往复试验、保压试验以及流量试验。图1为上位机所需完成的主要功能,图形运行系统及数据归档系统。
图1 上位机功能结构图
特别地,在往复试验中,往复周期小于10s,试件进口压力升率大、变化快,为了对进口压力进行完整记录,要求数据的记录和归档周期达到100ms。这样一来,在试验过程中需要对大量数据进行实时记录和归档。而WinCC自带数据库的数据传输慢,无法达到快速归档的要求。此外,还要求对数据进行灵活的查询及报表设计。
为实现对大量数据进行查询等操作,笔者希望借由VB6.0与WinCC的接口以及VB本身强大的面向对象编程语言,将在WinCC中得到的试验数据以记事本的方式存储;试验信息与试验数据文本存储路径存入Access数据库;利用Excel完成试验的报表制作及打印工作。图2表示整个数据管理系统结构图。PLC每秒传递给WinCC的数据传递给记事本进行保存,而WinCC通过OLE DB将试验主要信息及数据记事本路径写入外部数据库中。
图2 数据存储结构框图
ADO数据连接原理图,如图3所示。
图3 ADO数据连接原理图
1)Access部分:Access数据库为WinCC建立了一个用户名及密码为“example”的数据连接允许方位数据库。为建立彼此连接,须在Windows下通过管理工具设置ODBC数据源。
2)WinCC部分:首先,需要建立传输用变量R1,R2,R3分别代表单元、产品及批架次。其次,VBScript用来编写标准的数据存储模块。通过ADO控件,将试验信息在试验开始时存入外部数据库Access中。
ADO中最重要的参数是ConnectionString,用于建立与数据库的连接。这个参数中包含了所用存储数据时所需要的信息。基本设置代码语句如下:
ADO连 接 主 要 包 含 Connection、Command、Recordset以及Parameter等,完成了传输模块中的主要部分。Connection用来指向特定的数据库;Command用以对数据源完成插入、删除、修改或查询等操作;Recordset用以返回查询结果。程序代码如下:
通过改变WinCC中VB_Trigger的值,来完成触发以上代码的启动。
将大量的试验数据存储在记事本中,记事本本身为纯文本文件,操作简单方便,无操作平台限制。由于试验开始时间是不可重复且唯一的,记事本保存在以试验开始时间命名的文件夹中。如图4所示,在以试验时间命名的文件夹中保存了试验数据文件及试验信息文件。
图4 数据文件存储示意图
试验数据的存储采用C语言编写,在试验开始时,通过调用Windows API函数来得到系统时间完成文件夹的命名。以下为程序代码。
将试验信息与试验数据分开存放的目的即为缩短查询时间。为实现导入功能,要在excel中利用VBA构建操作界面。在VB中引用Excel Application 12.0控件,使VB6.0可以对Excel内部控件进行调用和编辑。Visual Basic是微软公司开发的面向对象型的可视化编程软件。由于易于使用、拥有良好的GUI系统及可在Windows下完成大部分的编程工作,使得VB成为使用人数最多的编程软件。在数据检索方面,利用VB6.0编写一个查询模块作为WinCC的扩展功能模块,紧密嵌入WinCC运行环境。在WinCC内部对该模块进行调用。在此,借用VB6.0与Windows良好的接口,完成数据检索功能。
由VB6.0设计的查询界面如图5,查询方法主要分为试验信息查询及试验日期查询。为使界面简洁,采用控件SSTab完成两个查询界面的转换。数据检索语句代码如下:
图5 查询程序界面
查询完成后,最终目的需要得到记事本中存储的试验数据,以完成查看及生成报表的功能。完成打开试验数据的程序代码如下:
工控组态软件WinCC有着较强的检测与控制功能,但在历史数据处理方面,只是提供了一些比较简单的查询、显示、打印函数供编程使用,如果要对历史数据进行复杂的处理就显得力不从心。如果能将组态软件的历史数据导入Excel,利用Excel在数据处理方面的优势就可以弥补组态软件的不足。
使用VBA可以在Excel中导入历史数据。VBA是Visual Basic for Application的简称,是Office办公软件的内置编程语言,它采用事件驱动机制。利用VBA可以在Excel中自定义工具栏、菜单、界面,并能通过脚本语言对数据进行复杂分析和操作。
程序代码如下:
本文讨论了将WinCC中的历史数据导入到外部进行存储的方法与细节。结合VB与VC,按照实际工程需要通过关联试验信息与试验数据达到对试验数据的快速归档、查询及报表生成等功能。该方法已在实际工程中应用,并获得较好的性能。
[1] Guangbo Zhou,Zhencai Zhu,Guangzhu Chen,Aijun Zhang.Technique of WinCC Long-distance Accessing Exterior SQL Server Database[J].Education Technology and Computer Science,2009.
[2] Weng Yifang,Duan Zhengang,Lian Xiaoqin,et al.Application of configuration software WinCC in logistics automatic control system[C].Sixth International Symposium on Instrumentation and Control Technology:Sensors,Automatics Measurement,Control,and Computer Simulation.2006.
[3] 明日科技,高春艳,李艳,谷伟东.数据库开发关键技术与实例应用[M].北京:人民邮电出版社,2004.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!