作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。
标题 | WinCC 在进出厂管理系统中的应用 |
技术领域 | 仪器仪表 |
行业 | |
简介 | |
内容 |
摘 要:本文以实现水泥进出场管理为目的。运用了西门子上位机监控软件WinCC 及其自身集成的VBS 脚本,以及西门子S7400 系列PLC。实现了从销售数据管理,槽车档案数据管理,水泥定量灌装,出场数据记录,到日、月、年报表查询即打印系统,这五大部分整个进出厂管理过程的融合。 关键词: WinCC;VBS;SQL;ACCESS;ActiveX 第一 引言 本项目是有梅特勒-托利多(常州)称重系统有限公司配料事业部为中材建设集团在沙特水泥公司完成的水泥进出场管理系统。这个系统用一套西门子S7400 为执行部分硬件基础,三台工控计算机作为管理部分硬件基础。将执行部分与数据管理有机的结合起来。 系统构成 本系统作为这个工厂的原料进厂,产品出场的管理系统,有五大部分组成: 1、 原料进厂数据采集及管理 2、 产品销售及客户数据管理 3、 产品自动定量罐装,出厂数据采集及管理 4、 全部数据查询 5、 数据打印 这五部分及互想独立又有机的结合在一起,本系统执行部分有一套西门子S7 400 带ET200 完成。本系统现场称重终端采用十二台了METTER-TOLEDO 的数字式静态汽车衡,二次仪表为JagXtreme,通过Profibus 与S7 400 PLC 通讯,称重终端的高精度稳定运行为整个系统的稳定运行提供了良好的基础。数据处理及存储则有西门子400PLC 和两套WinCC 完成。总体配置图如下: 网络配置和硬件配置比较简单,但本系统却实现了工厂发运系统的全部功能。下面我们来详细讨论。 第一 原料进厂数据采集及管理上位机的功能主要是采集原料车的各种信息和总重,然后将这些数据存储在缓冲数据库中,当卡车在卸完车后,再次回到汽车衡上时,系统记录空车重量同时读出总重,将数据整和后存入进料数据库中。数据的存储都有WinCC 自带的VBS 编辑器中完成,数据库同样也用了WinCC 自带的SQL Server 2000 数据库,如果需要共享的则采用了ACCESS 数据库。下面是部分操作界面(其中一台汽车衡) 存储数据用VBS 脚本如下: Sub OnClick(Byval Item) Dim database,server,uid,pwd Dim strcn ,cn,rst,is_sql Dim a,b Dim NO Set NO = HMIRuntime.Tags("NO")‘读变量值 NO.Read Dim Company WinCC 在进出厂管理系统中的应用 胡绍明 4 Set Company = HMIRuntime.Tags("Company")‘读变量值 Company.Read Dim Product Set Product = HMIRuntime.Tags("Product")‘读变量值 Product.Read Dim SheetNO Set SheetNO = HMIRuntime.Tags("SheetNO")‘读变量值 SheetNO.Read Dim TrackNO Set TrackNO = HMIRuntime.Tags("TrackNO")‘读变量值 TrackNO.Read Dim SetPoint Set SetPoint = HMIRuntime.Tags("SetPoint")‘读变量值 SetPoint.Read Dim CurrentUser Set CurrentUser = HMIRuntime.Tags("@CurrentUser")‘读变用户名 CurrentUser.Read Dim Ltime Set Ltime = HMIRuntime.Tags("time")‘读变系统时间 Ltime.Read Dim Ldate Set Ldate = HMIRuntime.Tags("date")‘读变系统日期 Ldate.Read database = "hu" server = "BABY\WINCC" uid = "sa" pwd = "" strcn = "Provider = SQLOLEDB.1;DRIVER = SQL SERVER;SERVER =" &_ server & "; DATABASE=" & database & "; UID=" & uid & "; PWD=" & pwd ‘定义连接字符 Set cn = CreateObject("ADODB.Connection") cn.ConnectionString = strcn cn.open is_SQL = "insert into Sheet1(nomber,trackno,compay,sheetno,product,setpoint,operator,ttime,ddate)" & _ "Values("& NO.Value &",'"& TrackNO.Value &"','"& Company.Value &"','"& SheetNO.Value &"','"& Product.Value &"',"& SetPoint.Value &",'"& CurrentUser.Value &"','"& Ltime.Value &"','"& Ldate.Value &"')" ‘存数据 cn.Execute(is_SQL) cn.close End Sub 第二 产品销售及客户管理 在此部分产品销售和客户管理的数据存储部分和上一部分类似,在这里不再详细介绍,主要讲述客户管理部分。 客户管理主要任务是管理客户资料,其中包括:客户代码,客户名称,槽车号码,许可证号码,最大装车量等等。有WinCC 程序来存储,更新,管理,检查这些数据,以保证出货的安全性和快捷性。 下面是部分操作界面: 当用户用到此车出厂时,系统自动比对,以上数据,无误后方可操作。 第三 产品自动定量罐装 在此部分,主要是有PLC 执行系统,按销售数量定量灌装销售的产品,然后出厂。首先 ,槽车按要求开上汽车衡后,当操作员输入车号后,系统开始读出曹车档案,自动读入销售量,同时比对各项参数,合法后系统自动控制称重仪表去皮,然后开始灌装,当达到销售量时,为了保证灌装精度系统自动分步停止灌装,整个灌装过程完成后,系统自动记录各项数据,将其存入服务器中,槽车便可以出厂,灌装结束。在此部分,主要将WinCC 的管理功能和PLC 的执行功能有机的结合。有西门子一家产品便很好的完成了比较复杂的数据存取,比对,现场灌装执行等功能。 操作界面如下: WinCC 在数据方面用VBS 来完成还是很方便地, 特别是SQL 语言的应用,使得在SQL Server 2000,ACCESS 等数据库中按用户给出的条件进行查询都能够方便的实现。WinCC 在数据显示方面还是有欠缺的,但是开放的ActiveX 控件可以弥补这部分的不足之处。在这里我注册了Microsoft Visual Basic 6.0 的数据显示控件Microsoft Hierarchical FlexGrid Control 6.0 。将其植入到WinCC 中用来显示数据,效果不错,如下: 其原理是将各个查询条件组合为一个查询字符串,然后用SQL 语言去数据库里查询,最后将符合查询要求的查询结果付给FlexGrid 控件去显示。其部分语句如下: Sub OnClick(ByVal Item) Dim database,server,uid,pwd Dim strcn ,cn,rs,SQL Dim a,b,c,d,e,f,g Dim Text1,buff Dim BeginDate Set BeginDate = HMIRuntime.Tags("BRiQi") Dim EndDate Set EndDate = HMIRuntime.Tags("ERiQi") BeginDate.Read EndDate.Read Dim strSQL Set strSQL = HMIRuntime.Tags("strSQL") Set d = ScreenItems("CheckBox1") If d.Process = 1 Then Dim Trans Set Trans = HMIRuntime.Tags("Trans") Trans.Read Set e = ScreenItems("OptionGroup1") If e.Process = 1 Then SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"' and '"& EndDate.Value &"' and ICNO = '"& Trans.Value &"'" End If If e.Process = 2 Then SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"' and '"& EndDate.Value &"' and CharterNO = '"& Trans.Value &"'" End If If e.Process = 4 Then SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"' and '"& EndDate.Value &"' and TrackNO = '"& Trans.Value &"'" End If If e.Process = 8 Then SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"' and '"& EndDate.Value &"' and CustemerName = '"& Trans.Value &"'" End If If e.Process = 16 Then SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"' and '"& EndDate.Value &"' and ProductNO = '"& Trans.Value &"'" End If Else SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"' and '"& EndDate.Value &"'" End If strSQL.Value = SQL strSQL.Write Set a = ScreenItems("Grid1") database = "hu" server = "BABY\WINCC" uid = "sa" pwd = "" strcn = "Provider = SQLOLEDB.1;DRIVER = SQL SERVER;SERVER =" &_ server & "; DATABASE=" & database & "; UID=" & uid & "; PWD=" & pwd ‘定义连接字符 Set cn = CreateObject("ADODB.Connection") cn.ConnectionString = strcn cn.open End Sub 第五 数据打印 在西门子基本软件包中有报表编辑器,提供了报表的创建和输出功能,在编辑好页面后,使用ODBC“数据库表”对象,将数据库中的内容以文本的形式打印出来,为了只打印我们需要的数据,我们便可以利用上文说到的“查询字符串”,将其合成为SQL 语句,赋予变量查询,即可打印出所需的数据。 结论 本文中不仅仅实现了WinCC 的监控和数据采集功能,报警纪录,变量记录等常规的功能,在这里WinCC 更深一层的功能得到了很好的应用,以VBS 对数据库的操作和微软控件的引入更是显示出了WinCC 强大的功能。它独立完成了从原材料进厂数据采集,产品销售数据存储与管理,产品出厂自动灌装的监控,出厂数据记录,以及整个的数据查询,数据打印等,一系列的进出厂管理系统的全部任务。 作者信息: 胡绍明,男(1996 年- 2000 年就读于昌黎县第一中学;2000-2004 就读燕山大学电气工程学院;2005 年- 2006 年 梅特勒-托利多称重系统有限公司, 电气工程师;2004 年- 2005 年 益海集团金海粮油工业有限公司, 电气工程师)秦皇岛开发区和平开发大厦5 楼 梅特勒托利多公司 |