郝向东+谢仕武+曾小棉+刘霄枫
摘要:针对河源某玻璃厂项目,我们运用EXCLE,通过VBScript脚本编程,自行研究和开发EXCLE脚本,将excle中变量导入到wincc中,方便快捷。
Abstract: On the project of ChengDu Glass Coat project, we write programme to send the tags form excel to wincc ,by using VBScript , conveniently and efficiently.
关键词:Wincc,脚本,VBScript
1前言
Wincc是西門子公司开发的监控及数据采集软件,wincc7.0是目前全球最领先的HMI/SCADA自动化监控组态软件。Wincc处理能力虽然很强大,但是它与excle的连接功能有限。通过wincc自己集成的附加控件功能,虽能将wincc变量导入导出,但是其转化操作繁琐,批量修改或批量增加变量的操作不直观且耗时长,难自检,易出错,难以满足大项目上大数据变量的修改和新建需求。本文介绍了在某玻璃镀膜项目上,自行开发EXCLE宏程序,通过VBScript编程,将在EXCLE批量处理好的变量导入到wincc项目中。通过EXCLE灵活编辑,修改和查询功能结合起来,完成了对wincc变量的修改记录和新建,特别在批处理中,方便快键,修改新建等操作简单,一键完成,优势明显,并且可以方便运用到所有wincc项目上。
2工程简介
河源某玻璃镀膜项目,完成对玻璃镀膜的整个控制过程。整个控制系统按功能可分为上位计算机监控、PLC控制、系统传动控制、工艺气体配气控制、磁控溅射控制、真空抽气系统控制、系统的安全联锁控制、与冷却水循环系统及前清洗机、装卸片台的控制联络部份、配电系统、远程监控系统等。现场I/O变量5000多点,程序设计中使用的DB及M存储区的数据变量和wincc数据结构新建变量工4000多点,因此在整个项目实施过程中设计到wincc变量处理数量将近10000点。Wincc变量不仅多,而且根据现场设备分区和程序设计的需要,变量需进行归类处理,数据处理量大。针对本项目特点我们自行开发了wincc宏程序,通过EXCLE强大的数据处理能力,将在EXCLE批量处理好的变量导入到wincc项目中。大大简化了工程师开发工作和时间,并提高了工作效率。通过修改宏程序的EXCLE源路径,可以方便的运用到任何其他WINCC开发的项目上,具有可拷贝可移植性。
3 wincc宏程序
Wincc是一款功能强大的工业控制软件,它集成了监控和数据采集、组态、脚本(Script)语言和OPC等技术。这为在Wincc中引进满足实际需要的各种算法提供了基础的编辑平台。通过Wincc的宏开发环境中运用VBScript脚本功能,进行深层次的二次开发,实现和EXCLE的连接。
Wincc提供了嵌入式C-Script和VBScript,用户可以通过脚本编程实现特殊的功能。此宏程序中我们开放了excle源路径,方便根据不同项目的实际情况选择相应编辑好的EXCLE文件,将此excle中的变量信息导入到wincc项目中。宏脚本程序如下所示。
Sub CreateAddNewTag()
Dim sFile As String
Dim xlApp, xlBook, xlSheet
Dim i As Integer
Dim j As Integer
Dim sngBTime As Single: Dim sngETime As Single
Dim vName As String: Dim vType As Integer: Dim vConName As String: Dim vAddress As String: Dim vGroupName As String
Dim objHMIGO As HMIGO
On Error GoTo errHandler
Set objHMIGO = New HMIGO
sFile = "E:\desktop\SCADA_Create_TAG.xls" '对应excle源文件
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlBook = xlApp.Workbooks.Open(sFile) '打开已经存在的EXCEL工件簿文件
xlApp.Visible = False '设置EXCEL对象可见(或不可见False)
sngBTime = Timer
For j = 1 To 2 '要导入的excle的sheet2中变量
Set xlSheet = xlBook.Worksheets(j) '设置活动工作表1
For i = 2 To 1000'此次要导入的变量从第2行到1000行的999个变量
vName = Trim(xlSheet.Cells(i, 2))
vType = GetTagType(Trim(xlSheet.Cells(i, 3)))
vConName = Trim(xlSheet.Cells(i, 4))
vAddress = IIf(Trim(xlSheet.Cells(i, 6)) = "", "", Trim(xlSheet.Cells(i, 6)))
vGroupName = Trim(xlSheet.Cells(i, 5))
If vName = "" Then GoTo Outj
If i > 170 Then Debug.Assert False
objHMIGO.CreateTag vName, vType, vConName, vAddress, vGroupName
Outi:
Next i
Outj:
Next j
xlBook.Close (True) '关闭工作簿
xlApp.Quit '结束EXCEL对象
Set xlApp = Nothing '释放xlApp对象
sngETime = Timer
MsgBox "Excel数据导入到 WinCC 完毕 共花时间:" & sngETime - sngBTime & "秒!"Exit Sub
errHandler:
xlBook.Close (True) '关闭工作簿
xlApp.Quit '结束EXCEL对象
Set xlApp = Nothing '释放xlApp对象
Debug.Assert False
MsgBox "Error " & Err.Number & ": " & Err.Description, vbDefaultButton2, Err.Number
End Sub
Function GetTagType(strT As String) As Integer
Dim Val As Integer
Select Case strT
Case "TAG_BINARY_TAG"
Val = 1
Case "TAG_SIGNED_8BIT_VALUE"
Val = 2
Case "TAG_UNSIGNED_8BIT_VALUE"
Val = 3
Case "TAG_SIGNED_16BIT_VALUE"
Val = 4
Case "TAG_UNSIGNED_16BIT_VALUE"
Val = 5
Case "TAG_SIGNED_32BIT_VALUE"
Val = 6
End Select
GetTagType = Val
End Function
4 EXCLE建立
在西门子组态软件中进行Wincc的变量的建立修改和批量处理是相当繁琐的,工作量大且很容易出错。运用EXCLE的强大功能,可以方便快捷的进行数据处理。特别是数据量大,批量处理时,优势更明显。通过自行研究开发,将wincc和excle连接起来,快速处理数据,减轻程序员的工作强度,减少出错率,大大提高工作效率。
在EXCLE中要建立起与wincc对应的变量的wincc中位置路径,数据格式,变量名称和地址。如图1所示,为本项目中的部分变量在excle中编辑,有对应wincc中变量名“TagName”,数据类型“Data type”,链接路径”Connection”,”Group”,地址“Address”。
5 EXCLE向Wincc的导入
在Wincc宏Visual Basic的环境中编辑运行开发的源程序,在程序中开放出来的路径中选择项目EXCLE文档的路径和格式,如本项目的文档名为CADA_Create_TAG,放置在E下,则属于相应信息:sFile = "E:\SCADA_Create_TAG.xls"。并且根据本次要导入变量所在excle的sheet位置,填入相应值。如本项目此次需要导入Wincc的变量为sheet1和sheet2中变量,则在程序段的第17行中输入2,如:For j =1To 2。再执行运行按钮,程序执行,相应excle编辑好的变量快速导入Wincc中,如图2所示:
6 总结
Wincc自带的变量导入导出格式单一,有很大的局限性,不能很好满足客户特殊需求。本项目运用VB编程,结合wincc强大的脚本功能,开发出的变量处理有以下优点:1.变量数据在excle中建立和修改,利用excle强大数据处理功能方便批处理,并归来放置和保存,方便后期調试的整改和完善处理。2.数据从excle导入wincc项目中,速度快,更直接,可靠,稳定性好。3.依据项目需求制作多种类表格,加以归类,查询更方便,界面更友好。本项目二次开发的报表最大程度地减轻了程序员的工作,极大提高了工作效率。
参考文献:
1)一种基于关系数据库的FIX工控系统报表生成方法.王志琪,方康玲.计算机工程与科学 2002年第24卷第6期
2)脚本在Wincc中的应用 刘剑,奚邦庆,杨杰传.中国高新技术企业 2010年第27期
3)用wincc脚本实现对SQL_SERVER数据库管理及产品报表 丛雪松 工程科技 NO.3 2012