在WinCC中实现串行通讯的两种方法
0 引言
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”) mscomm.CommPort =2
mscomm.Settings=“9600,N,8,1” mscomm.InputMode=1 mscomm.portopen=True End Sub
5)在ActiveX控件MSComm属性中也有OnComm事件。在该事件下输入VBS动作,对发送或者接收到的字符进行处理。 Sub OnComm(ByVal Item ) ??
?? //对发送或者接收到的字符进行处理 End Sub
在将数据赋给Internal tag(内部标签)之后,上位监控系统就可在监控界面需要时,随时用于显示或计算,也可以把这些数据作历史数据归 档,以用于报表输出或查看数据的变化趋势图等。 3 结论
串行通讯控件MSComm全面提供用于RS232串行通讯上层开发的所有细则,使得WinCC与智能仪表间的串行通讯能以较为简捷的方式实现。上述
方法曾在自动化控制项目中使用,事实证明,这两种方法不仅是可行的,而且是切实有效的。此外,还能很好地弥补了WinCC没有提供串口通
讯通道驱动这一缺陷,增加了使用WinCC的灵活性,大大提高了组态效率。
打开高考作文思路的六把金钥匙不少同学拿到作文题,常常大脑中一片空白,什么也想不起来.这是没有打开作文思路 所致. 其实, 只
要我们讲究方法, 审题立意关也就自然容易攻克, 写作材料也就会纷至沓来, 如此,又怎么会写不好作文呢? 这里,我送给大家迅速打开作文思路的六把金钥匙.为说明这些方法的适用性,我结合 过去的高考题作一解说. 一,置换法 1.如果所给的作文题目, 话题或材料是借喻性质的, 那么这时就可使用本体去置换喻体. 如山东高考作文题: 请以\春来草自青\为话题,写一篇不少于 800 字的文章. 要求:①自拟题目.②自定立意.③除诗歌外,文体不限.④文体特征鲜明. 命题人给了我们比喻的喻体,本体呢,思考可知道\春\的本体可以是信心,可以是毅 力,可以是机遇,也可以是改革,是友谊,是爱心,是互助,是合作,是诚信,等等. \草 自青\的本体可以是欣欣向荣的局面,可以是辉煌的成功,也可以是双赢的结果,等等.我 们展开联想,用一个又一个的本体去置换喻体,写什么的问题也就立马解决了. 2.如果所给的作文题目或话题中的相关词语具有多义性,那么这时可用具有单一语义的 词语置换具有多义的词语.例如重庆高考作文题: 《现代汉语词典》对\自然\的释义有:①自然界.②自由发展;不经人力干预.③不 勉强;不局促;不呆板.…… 请以\在自然中生活\为题目,写一篇文章. 要求:①立意自定;②除诗歌外,文体不限;③不少于 800 字;④不要套作,不得抄袭. 以\在自然中生活\为题目, \自然\怎么理解?这是立意的关键.命题人想我们之所 想,给了我们三个义项进行诠释.我们只要用其中的一个义项去置换\自然\,那么也就容 易迅速立意,打开思路.如果\自然\是指自然界,那么\在自然中生活\,也就是在自然 界中生活,这样我们可以谈环保等.如果\自然\是指自由发展,不经人力干预,那么\在 自然中生活
\,也就是在自由发展中生活,这样我们可以谈教育中的张扬,发展个性等.如 果\自然\是指不勉强,不局促,不呆板,那么该如何理解呢?我们可以通过造句的方式来 看一看:态度很自然;他是初次演出,但演得挺自然.这么说来, \在自然中生活\,也就是 大大方方, 也就是凡事能够深入进去融入其中. 明白了这些, 我们谈什么, 也就一目了然了. 3.如果所给的作文题中含有代词,那么这时可用代词所代的事物去置换作文题中的代 词.例如上海高考作文题: 平常大家关注更多的也许是\我们\,如果把视线转向\他们\,你会看到什么,又会想 到什么?请以\他们\为题,写一篇文章. 要求:(1)不少于 800 字.(2)不要写成诗歌.(3)不得透露个人相关信息. 世界就是由\我们\与\他们\组成的,心中如果只有\我们\,自然世界是不完整的. 遗憾的是, 现在只关注自己的人太多了, 无论何时何地, 都是以自我为中心, 哪里还有他人? 这样的世界,又怎么会是一个和谐的世界.我们把视线转向\他们\,会看到什么?会看到 贫穷,会看到富贵,会看到不公,会看到进步,会看到文明,等等.会想到什么?会想到共 同富裕,会想到平等,会想到感恩,会想到正义等. \他们\是谁?可以是农民工,可以是 干部子弟,可以是下岗工人,可以是一掷千金的大款,可以是沿街乞讨的老人,等等.这么 一置换,自然也就打开了思路. 二,补充法 所谓补充法, 是指通过给标题或话题补出相关的句子成分来打开思路的方法. 例如安徽 高考作文题: 请以\带着感动出发\为题,写一篇不少于 800 字的文章. 要求:①立意自定.②文体自选.③不得抄袭,不得套作.④不得透露个人相关信息. ⑤书写规范,正确使用标点符号. 打开思路,写好\带着感动出发\需要思考三