液压综合试验台数据管理系统设计
来源:测品娱乐
No.1 微处理机 Feb..2012 MICROPROCESSORS 第1期 2012年2月 ・微机软件・ 液压综合试验台数据管理系统设计 王纪森,黎雯,杨洪音 (西北工业大学自动化学院,西安710072) 摘要:在液压综合试验台测控系统中,由于试验种类多,试验持续时间长,导致试验记录数据 庞大。为避免由庞大数据在查询以及管理上带给组态软件WinCC的负担,提出了一种新的数据归 档方法。该方法将试验的信息与数据通过ODBC接口导出,分别存入Access及记事本中。利用 VB6.0编写一个查询程序作为WinCC的扩展功能模块,紧密嵌入WinCC运行环境。在WinCC的 内部对该模块进行调用,从而解决了WinCC对历史数据访问方式死板等问题。实现对过程数据的 归档、历史数据的检索、报表生成打印以及动态数据显示等功能。 关键词:数据归档;Win CC;Visual Basic DOI编码:10.3969/j.issn.1002—2279.2012.01 014 中图分类号:TP273.5;TP274.2文献标识码:A文章编号:1002—2279(2012)01—0044—05 Design of Hydraulic Synthesis Test Data Management System WANG Ji—sen,LI Wen,YANG Hong—yin (College ofAutomation,Northwestern Polytechnieal University,皿’an 710072,China) Abstract:In the integrated measurement and control hydraulic system,the diversity and long dura— tion of test result in a large test record data.In order to avoid large data query and management burden during WinCC configuration software in the using of monitoring,a new method for data archiving has been proposed.This method will send the test information and test data derived by WinCC,respectively,to notepad and Access database.Then a query using VB6.0 program as an extension function module tightly embedded in the WinCC runtime environment.The WinCC internal calls to the module enable the ar。chiv ing of process data,historical data retrieval,report generation,printing,and dynamic data display. Key words:Data Archiving;WinCC;Visual Basic l 引 言 随着自动化在过程控制系统中的逐步发展应用, 组态软件为多种本地信息机提供了非常多的开放性 接口。WinCC是目前世界上最常用的三大SCADA (数据采集与监视控制)系统之一。它是以计算机为 口,它为一致的数据访问接口提供了良好的扩展性 而不局限于单一的数据源。OLEDB是基于COM及 DCOM技术设计的,可对关联数据库及非关联数据 库进行操作。ADO可以完成数据存储及通过OLE DB操作数据库等功能。ADO的核心内容在使可用 简单的COM指令即可对ODBC数据源、微软表格等 进行快速的ActiveX操作。OLE DB同样还拥有快 速、内存少、硬盘痕迹少等优点。 Access是一种基于微软技术的关联数据库管理 系统。Access能够存取Access/Jet、Microsoft、SQL 基础的生产过程与调度自动化系统,可以对现场的运 行设备进行监视和控制,以实现数据采集、设备控 制、测量、参数调节以及各类信号报警等。为实现将 数据存储至外部数据库,本文主要讨论利用VB语 言及VB脚本语言完成数据的传输及管理工作。 Sever、Oracle,或者任何ODBC兼容数据库内的资 料。Access在使用性、兼容性、可操纵性及可编程性 上都有其他数据库无可比拟的优势。 2可行性分析 ADO是Microsoft为OLEDB设计的应用层接 作者简介:王纪森(1966一),男,陕西大荔人,教授,博士生导师,主研方向:非线性控制、电液控制工业过程控制方向的研究。 收稿日期:2010—12—20 王纪森等:液压综合试验台数据管理系统设计 ・45・ WinCC是由西门子公司开发的具有很强操作 结构图。PLC每秒传递给WinCC的数据传递给记 事本进行保存,而WinCC通过OLE DB将试验主要 信息及数据记事本路径写人外部数据库中。 性及开放性的组态软件。WinCC本身自带实时数 据库及历史数据库,为本地存储提供方便。同时也 提供外部数据库的存储途径。利用VB脚本语言可 对ActiveX空间或其他对象进行控制写入。因此, 它可以控制对象的动态行为并建立与其他对象如 Access的连接。 3设计与实现 3.1工程设计 根据需要设计可以检测多种液压元件的综合试 验台。整个液压试验系统由7个试验回路组成。整 个液压综合试验台的试验回路多,控制层由PLC组 成,主要负责试验过程控制及数据采集任务,如图1 所示。主要完成的试验科目有往复试验、保压试验 以及流量试验。图1为上位机所需完成的主要功 能,图形运行系统及数据归档系统。 图1上位机功能结构图 特别地,在往复试验中,往复周期小于lOs,试 件进口压力升率大、变化快,为了对进El压力进行完 整记录,要求数据的记录和归档周期达到100ms。 这样一来,在试验过程中需要对大量数据进行实时 记录和归档。而WinCC自带数据库的数据传输慢, 无法达到快速归档的要求。此外,还要求对数据进 行灵活的查询及报表设计。 为实现对大量数据进行查询等操作,笔者希望 借由VB6.0与WinCC的接口以及VB本身强大的 面向对象编程语言,将在WinCC中得到的试验数据 以记事本的方式存储;试验信息与试验数据文本存 储路径存人Access数据库;利用Excel完成试验的 报表制作及打印工作。图2表示整个数据管理系统 图2数据存储结构框图 3.2试验信息存储 ADO数据连接原理图,如图3所示。 日 口日 Connect Success 一 一 Execute SOJ Ouery Return the result Close database 一 图3 ADO数据连接原理图 1)Access部分:Access数据库为WinCC建立了 一个用户名及密码为“example”的数据连接允许方 位数据库。为建立彼此连接,须在Windows下通过 管理工具设置ODBC数据源。 2)WinCC部分:首先,需要建立传输用变量 R1,R2,R3分别代表单元、产品及批架次。其次, VBScript用来编写标准的数据存储模块。通过ADO 控件,将试验信息在试验开始时存人外部数据库 Access中。 ADO中最重要的参数是ConnectionString,用于 建立与数据库的连接。这个参数中包含了所用存储 数据时所需要的信息。基本设置代码语句如下: Function ConnectionStifng()//parameter for con— necting database ~ Dim Provider,DataSource,Catalog,userid,pass— word ・46- 微处理机 Provider=’’Provider=MSDASQL;’’//deftBe data nection”)//establish connection object provider On Error Resume Next Catalog=”SN=WinccT0Vb:”//define the database dstate=connection.state//return the state of open userid---2”uid itestl;’ ’ing database operation password=”pwd=testl:” If dstate=l then ConnectionString=Provider+Catlaog+userid+ objcommand.activeconneetion=objconnection password objcomlTlan.d.commandtext=strsql End Function objcommand.execute ADO连接主要包含Connection、Command、 MsgBox”Access database Success!” Recordset以及Parameter等,完成了传输模块中的主 Else MsgBox”Access database E ̄ror!!.f 要部分。Connection用来指向特定的数据库;Com— Set objcommand=Nothing — mand用以对数据源完成插入、删除、修改或查询等操 Set objconnection=Nothing 作;Recordset用以返回查询结果。程序代码如下: End Function Function winectovb//Main Function 通过改变WinCC中VBj’rigger的值,来完成触 Dim Ingvaluel,QueryString,dstate 发以上代码的启动。 Ingvaluel=HMIRuntime.Tags(”R1”).Read// 3.3试验数据存储 Read the vaffable Rl 将大量的试验数据存储在记事本中,记事本本 QueryString=”INSERT INTO WINCCTOVB() 身为纯文本文件,操作简单方便,无操作平台。 VAI UES(”&Ingvaluel&”);” 由于试验开始时间是不可重复且唯一的,记事本保 Set objCommand:CreateObject(”ADODB.Corn- 存在以试验开始时间命名的文件夹中。如图4所 mand”) 示,在以试验时间命名的文件夹中保存了试验数据 Set objConnection=CreateObject(”ADODB.Con— 文件及试验信息文件。 P# 喇 粤 帮 《》后退一《 圆≥i p擅素 衷 懿i围・ 蔼姑谨j j; 嚣言 ;二;茹 :;喜 :茹……一一一……~ …一 国警 国 ■■,■q ■ 孵薅弘■£ ● | ………一。。。一一一……一一 一一一 7c 称 图4数据文件存储 意图 试验数据的存储采用C语言编写,在试验开始 if(GetTagBit(SJCJZT)==1) 时,通过调用Windows API函数来得到系统时间完 { 成文件夹的命名。以下为程序代码。 FILE fp; #deifne sJCJzT”l#数据采集状态” char Time[20]; #define ExpType—D”1#试验类型” char Buffer[60]; #define DataPath—D”1#DataPath” char DataPath[50]; #define Date—D”Date” sprinff(DataPath,”%S”,GetTagChar(Data_Path一 #define Time—D”Time”D));//get data.txt path #define SYJKYL”1#试件进口压力” sprinff(Time,99%S%S”,GetTagChar(Data—D, Short int Exp Type=GetTagSword(Exp Type-D) GetTagChar(Time_D))//get current time 1期 王纪森等:液压综合试验台数据管理系统设计 if(ExpType==1)//保压试验sprinff(Buffer,”% 编程工作,使得VB成为使用人数最多的编程软件。 s\t%.2f\n”,Time,GetTagFloat(SYJKYL)); 在数据检索方面,利用VB6.0编写一个查询模块作 else prinff(”Error”); 为WinCC的扩展功能模块,紧密嵌人WinCC运行 } 环境。在WinCC内部对该模块进行调用。在此,借 return 0; 用VB6.0与Windows良好的接¨,完成数据检索功 4数据检索 能。 由VB6.0设计的查询界面如图5,查询方法主 将试验信息与试验数据分开存放的目的即为缩 要分为试验信息查询及试验日期查询。为使界面简 短查询时间。为实现导入功能,要在excel中利用 洁,采用控件SSTab完成两个查询界面的转换。数 VBA构建操作界面。在VB中引用Excel Applica— 据检索语句代码如下: tion 12.0控件,使VB6.0可以对Excel内部控件进 QueryStrl=”select from wincc where tagl like 行调用和编辑。Visual Basic是微软公司开发的面 ”’+Text1.Text+”%”’//keywords query 向对象型的可视化编程软件。由于易于使用、拥有 QueryStr2:”select :Ic from wincc where 良好的GUI系统及可在Windows下完成大部分的 path>=”’&DTPiker1.Value&”%”’//Date Query 图5查词程序界面 查询完成后,最终目的需要得到记事本中存储 功能,但在历史数据处理方面,只是提供了一些比较 的试验数据,以完成查看及生成报表的功能。完成 简单的查询、显示、打印函数供编程使用,如果要对 打开试验数据的程序代码如下: 历史数据进行复杂的处理就显得力不从心。如果能 Dim Strl,Str2,Str 将组态软件的历史数据导人Excel,利用Excel在数 Private Sub MSHFlexGridl—Click() 据处理方面的优势就可以弥补组态软件的不足。 Strl=MSItFlexGrid1.Cell(col,6)//get山e 使用VBA可以在Excel中导人历史数据。VBA data ifle path 是Visual Basic for Application的简称,是Office办公 Str2=”/data.txt” 软件的内置编程语言,它采用事件驱动机制。利用 Str:Strl+Str2//get the data.txt path VBA可以在Excel中自定义工具栏、菜单、界面,并 End Sub 能通过脚本语言对数据进行复杂分析和操作。 Private Sub Commandl—Click() 程序代码如下: Shell”notepad.exe str”vbNormalFocus//open Private Sub Commandl—Click() the notepad file Dim Vall,Strs,Cellij,lenth As String End Sub Dim I,J,r As Integer 5 报表打印 . //I,Jis rowandcol,ris variablesetxlApp.visible:True//setexcel visible 工控组态软件WinCC有着较强的检测与控制xlApp=CreateObject(”Exce1.Application”) ・48・ 微处理机 //create excel Loop Set xlBook=xlApp.Workbooks.Add()//Add Close#1 Worksheet xlApp.Visible=True Set xlsheet=xlBook.Worksheets(1)//open End Sub worksheet xlsheet.Activate//Activate sheet 6结束语 Open Str For Input As#1//open data.txt 本文讨论了将WinCC中的历史数据导人到外 I=1.J=1 部进行存储的方法与细节。结合VB与VC,按照实 Do Until EOF(1) 际工程需要通过关联试验信息与试验数据达到对试 Line Input#1.Vall 验数据的快速归档、查询及报表生成等功能。该方 Cellij=”” 法已在实际工程中应用,并获得较好的性能。 lenth=Len(Vail) 参考文献: F0r r=1 To lenth [1] Guangbo Zhou,Zhencm Zhu,Guangzhu Chen,Aijun Strs=Mid(Vail,r,1) Zhang.Technique of WinCC Long—distance Accessing Print Strs Exterior SQL Server Database[J].Education Technology If Strs<>vbTab And Strs<>Chr(10)Then and Computer Science,2009. Cellij=Cellij&Strs [2] Weng Yifang,Duan Zhengang,Lian Xiaoqin,et a1.Appli— c ̄ion of configuration software WinCC in logistics auto- Else matic Control system[C].Sixth International Symposium Cellij=”’’ on Instrumentation and Control Technology:Sensors, I=I+1 Automatics Measurement,Control,and Computer Simula- End If tion.2006. xlsheet.Ceils(J,I)=Cellij [3] 明日科技,高春艳,李艳,谷伟东.数据库开发关键技 Next r 术与实例应用[M].北京:人民邮电出版社,2004. I=1;J=J+1 (上接第43页) 析和管理、具有一定的通用性。 对于系统管理部分,为了测试系统的管理功能, 参考文献: 分别设置了50个过期页面的URL和100个关键字、 [1] 中国互联网络信息中心.第27次中国互联网络发展状况 在学校内部进行了测试、对于URL的访问、系统均能 统计报告[R].北京:CNNIC,2011.http://www.cnnic.cn/ researeh/bgxz/tjbg/201101/PO20110221534255749405.p 够成功阻断、阻断率为97%左右,而对于关键字的阻 [2]Mark Levene,George Loizou.Zipf ̄Law for Web Suffers 断由于系统工作于旁路模式、关键字在页面中出现的 [J].Knowledge and Information Systems,2001(3): 位置以及网络速度的影响,阻断成功率在95%左右, 120—129. 说明系统管理模块功能非常有效。阻断成功后,用户 [3] 葛玲,蒋宗礼.基于共现词查询的主题爬虫研究[J]. 计算机工程,2010(4):286—288. 通常在浏览器看到的结果有:空白的页面迟迟打不 [4] 王佰玲,方滨兴,云晓春.零拷贝报文捕获平台的研究 开、显示连接被重置、显示页面无法打开等。 与实现[J].计算机学报,2005(1):46—52. [5] 屠莉.流数据的频繁项挖掘及聚类的关键技术研究 5结束语 [D].南京:南京航空航天大学,2009:8—11. 针对传统采用爬虫的高校BBS舆情发现技术 [6] G S Manku,R Motwani.Approximate Frequency Counts 实时性和精准性差、开销大的缺点,提出了基于旁路 Over Data Streams.Proceedings of the 28th International Conferenee on VLDB[C].Hong Kong,China,2002(8): 模式分析还原BBS论坛帖子及URL数据作为论坛 346—357. 热点发现数据源,设计了一套舆情监测管理系统,有 [7]Zhang Hua—Ping,Liu Qun,Cheng Xue—Qi,et a1.Chi— 效分析出论坛的热点讨论内容。系统经过试运行, nese lexical analysis using hierarchical hidden Markov 系统能够准确发现论坛中的热点话题,并且有效控 model:Proceedings of the second SIGHAN workshop on 制主题的访问范围。如果系统稍作适当修改,可以 Chinese language processing—Volume 17[C].Sapporo, Japan,2003.Association for Computational Linguistics, 应用到别的类型的论坛、微博、博客等系统的舆情分 2003:63—70.