基于SQL和Wincc的玻璃镀膜项目的EXCLE数据报表的开发

2017-12-20 00:58郝向东谢仕武曾小棉刘霄枫
科学与财富 2017年29期
关键词:脚本

郝向东+谢仕武+曾小棉+刘霄枫

摘要:针对河源某玻璃厂项目,我们运用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

猜你喜欢
脚本
酒驾
此去人海茫茫,各自风雨灿烂
安奇奇与小cool 龙(第二回)
假如人过羊的生活
数据库系统shell脚本应用
自动推送与网站匹配的脚本
快乐假期
神奇的数学
愚人节大作战
小编的新年愿望