在WinCC中实现串行通讯的两种方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在WinCC中实现串行通讯的两种方法
概要:为了在WinCC组态软件中实现与串口的通讯,文中介绍了两种方法:一是在WinCC中调用VB编写好的串口通讯程序,进行数据交换,实现对串口的访问;二是在WinCC 图形编辑器中调用ActiveX控件MSComm,编写全局脚本VBS实现对串口的访问。
这两种方法很好地解决了组态工程师被WinCC所束缚的串行通讯操作限制问题,拓宽了工程师使用WinCC的灵活性,提高了组态效率。
In order to realize serial communication with ActiveX based on WinCC,two methods are described in this paper.The first method is divided into two steps.First,realize serial communication by programming in Visual Basic,and then call this executive program in WinCC to exchange data.The second method is calling the ActiveX control MSComm directly in the Graphics Designer of WinCC and programming in WinCC Global Scripts to realize serial communication.These two methods are good solutions to the limitations of serial communication operation in WinCC.By these ways,engineers can use WinCC more flexibly,thus improve their configuration efficiency.
正文:
引言
WinCC即Windows Ccontrol Center(视窗控制中心),是一个功能强大的全面开放的上位机监控系统,既可以用于小规模简单的过程监控,也可以用于复杂的工控领域[1]。
WinCC提供了较大的用户编程空间。
WinCC提供内置的语言脚本,可以方便地控制每个程序对象。
通过OLE ,其他应用程序可集成到过程画面上,并与WinCC 交换相关数据。
采用面向工业的ActiveX 控件,用户可以使用已完成的控件来实现复杂的管理与控制功能。
基于系统稳定性的考虑,WinCC 提供的这些功能多数还是受限的。
WinCC 提供硬件驱动的形式和硬件打交道,但是在实际的工程应用中,往往会用到许多WinCC 没有提供驱动的硬件,用户必须自己写程序来控制这些硬件,还需要编写程序控制实时数据的归档与处理。
在WinCC 中并没有集成其他公司的智能仪表的串行通讯程序,因此需要开发新的串行通讯程序。
本文介绍在WinCC 中实现串行通讯的两种方法。
1 间接通讯
自动控制系统中,上位机监控部分主要是用于动态流程画面监视、报警报表输出、趋势图分析等。
在这个系统中,利用WinCC对整个上位机系统进行组态设计,系统在正常工作时,上位机始终处于WinCC的运行环境中。
WinCC提供了OLE ,DDE ,ActiveX ,OPC 服务器和客户机等接口或控件,可以很方便地与其他应用程序交换数据。
由于计算机从串行接口接收的数据要与上位机中的WinCC建立连接,因而采用二进制文件形式作为中间桥梁,即将接收的数据按其数据格式存入二进制文件,然后在WinCC中从二进制文件中提取数据[5 ]。
该方案可分为两个阶段:
首先,使用VB 语言编写从串口中取数据的可执行程序,采用通讯控件MSComm 实现。
通讯实现程序如图 1 所示。
然后,在WinCC中,调用从串口中取数据的可执行程序,将采集的数据写入二进制文件;将数据从二进制文件中一一取出,赋给WinCC中相应的内部变量标签。
由于可执行程序采集到的数据在WinCC中需要使用,数据不方便直接传递,因而二进制文件是可执行程序与WinCC之间数据传输的一种较为有效的方式。
WinCC中读取数据的程序流程如图2 所示。
图1 通讯程序实现流程图
图2WinCC 中读取数据的程序流程图
2 直接通讯
在WinCC中的图形编辑器中直接加入ActiveX 控件MSComm 实现串行通讯。
WinCC中带有一个Global Script( 全局脚本编辑器) ,它为开发人员提供一个功能强大的工具,用于生成用户的 C 脚本或VB 脚本,生成的脚本可应用于任何地方。
这里,就依据Global Script ,通过对ActiveX 控件MSComm 进行控制,编制一个从串口采集数据的通讯程序。
上位机工作时,运行这个程序即可实现上位监控系统与串口采集数据的通讯任务。
MSComm (即Microsoft Communications Control )是Microsoft 公司提供的简化Windows 下串行通讯编程的ActiveX 控件,它为应用程序提供了通过串行接口收发数据的简便方法。
MSComm 控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API 函数。
它在VC 、VB 、Delphi 等语言中均可使用[2 ]。
MSComm 控件的主要属性:
a)CommPort 设置并返回通讯端口号。
b)Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
c)PortOpen 设置并返回通讯端口的状态。
也可以打开和关闭端口。
d)Input 从接收缓冲区返回和删除字符。
e)Output 向传输缓冲区写一个字符串。
在WinCC中,VBScript 是基于Visual Basic 的运行脚本语言。
脚本本身能访问所有WinCC图形对象的属性和方法,也能访问ActiveX 控件和其他制造商的应用程序对象模型。
因而能控制对象的动态性能,方便地建立与其他制造商应用程序的连接[ 1 ]。
由于使用标准的ActiveX 技术和Visual Basic ,因而能够进行快速开发串行通讯。
具体实现步骤如下:
1) 首先需要将Mscomm32.ocx 在WinCC中注册。
2) 运行WinCC控制中心,建立两个内部变量,一个串口输出变量COM_OUT ;另一个为串口输入变量:COM1_IN 。
两个变量均为16 位文本变量。
3) 在图形编辑器中建立相应的操作界面,在界面中加入ActiveX 控件,然后选择Microsoft Communication Control 6.0 选项。
出现电话式的图标,这就是我们需要的串口通讯的控件。
4) 可以在画面中添加一个按钮,在click 事件中编辑VBS 动作,对MSComm 进行初始化。
可在VBS 全局脚本编辑器中输入如下程序:
Sub OnLButtonDown(ByVal Item,ByVal Flags,ByVal x,ByVal y)
Dim mscomm
Set mscomm=ScreenItems(“mscomm”)
mPort =2
mscomm.Settings=“9600,N,8,1”
mscomm.InputMode=1
mscomm.portopen=True
End Sub
在ActiveX控件MSComm属性中也有OnComm事件。
在该事件下输入VBS动作,对发送或者接收到的字符进行处理。
Sub OnComm(ByVal Item )
……//对发送或者接收到的字符进行处理
End Sub
在将数据赋给Internal tag(内部标签)之后,上位监控系统就可在监控界面需要时,随时用于显示或计算,也可以把这些数据作历史数据归档,以用于报表输出或查看数据的变化趋势图等。
3 结论
串行通讯控件MSComm全面提供用于RS232串行通讯上层开发的所有细则,使得WinCC 与智能仪表间的串行通讯能以较为简捷的方式实现。
上述方法曾在自动化控制项目中使用,事实证明,这两种方法不仅是可行的,而且是切实有效的。
此外,还能很好地弥补了WinCC 没有提供串口通讯通道驱动这一缺陷,增加了使用WinCC的灵活性,大大提高了组态效率。
参考文献:
[1]深入浅出西门子WinCC V6[M].北京:北京航空航天大学出版社,2004:5,122 135,213.
[2]仵浩等.Visual Basic 串口通讯工程开发实例导航[M].北京:人民邮电出版社,2003:258 324.
[3]马恩铭.利用内嵌ActiveX控件操纵WinCC数据库[J].计算机应用与软件,2005(1). [4]路增立,宋玉林,刘振兵.Visual Basic中串口通讯的应用[J].江苏电器,2003,5. [5]汪美霞,汤晓兵,陈号.MSComm与C在监控系统和智能仪表的串行通讯中的应用[J].山东建筑工程学院学报,2004,2.。