1、 前言
本文是以笔者参与的某啤酒厂的监控系统实现的项目为背景。由于现场的PLC或单片机控制系统的资源、功能有限,不能长期保存数据
,人机界面差,因此一般采用工控机作为上位机,把现场数据通过数据采集站送入上位机,这样组成一个测控系统。上位机丰富的资源可以对
采集到的数据进行分析,存盘,运算、打印、报警并进行各种相应显示。上位机形象的人机界面可使操作员更直观,全面的了解现场的情况。
采用Intouch、VB来实现上、下两层的通信,简单、明了。
2、 系统结构
笔者参与的监控系统呈两层分布式体系结构:数据采集层和监控层。数据采集层主要采用数据通信标准接口;监控层属于局域网,遵循局
域网的协议标准。数采层进行数据的采集、处理将数据传递到上一层;监控层共享数采层传来的数据。
该系统的数采层由多台测控装置组成。这些测控装置采用RS-485标准总线与数采管理站通信。在软件方面采用VB来实现测控装置
数采程序,它主要完成上位机与测控装置之间的数据通信和所采集数据的DDE(动态数据交换)转换功能。
在工控机上的人机界面则采用监控平台软件来实现。目前较为流行的监控平台软件有Heuristics公司的ONSPEC、Int
ellution公司的FIX和Wonderare公司的InTouch等。InTouch监控软件作为一个实时的人机界面实用程序
生成器,可以产生在管理级别上的监控和数据采集程序。它具有开发周期短、可以生成复杂的、友好的交互式图形界面,组态灵活的优点,是
目前工业控制领域中简便易用的“快速应用程序生成器”。但它必须采用DDE的数据交换方式与DDE服务器连接来获得数据。此时用户编
制的运行于数采站上的VB应用程序充当DDE服务器,如图一所示。将VB和Intouch结合起来,协同工作,可以发挥各自优点。
3、 系统DDE实现
该啤酒长系统在Windows环境下以动态数据交换机制实现系统的实时数据共享。如图2所示:
首先,数采层采集处理后的数据送到数采管理站,转换成DDE型数据;然后,借助于NETDDE机制,数采管理站把实时数据送至工
程师站。工程师站作为NT域控制器,再借助于NETDDE机制实现与其他各监视站之间的动态数据交换。由于各站之间建立了“热连接”
链路,作为服务器一方总是在数据变化时主动发送数据给客户方。即当数采管理站采集的数据发生变化时自动反应到工程师站。在现场实时数
据的传送上,工程师站既作为数采管理站的客户,又作为其它各监视站的服务器。
系统的动态数据交换实现分为三个方面:
① 采管理站的DDE数据类型的数据产生。
② 监控层应用程序的DDE组态。
③ 构造NETDDE应用程序。
3、1 用VB 编制DDE程序VB 是开发Windows应用程序的一种面向对象程序设计语言,他支持Windows环境下的DDE通信机制。VB提供了动态数据交换的Link Topic连接主题 ,Link Item连接项 ,Link Timeout连接等待时间 和Linkmode(连接模式)四项属性。在应用程序编制时,根据DDE原理,把应用程序的可执行文件名去掉EXE后缀,则成为DDE中的Topic。Linkmode有Manual手工 ,Notify通知 ,和Automatic自动 三种方式。在这个系统中我们采用Automatic自动 方式。数采管理站的巡测数采程序的流程图如下:
测控装置采用RS-485接口标准,因此某一时刻只能有一个站发送数据,其余站只能接口。在该测控装置的通信协议中,由主机以召唤方式向测控装置发送送数命令和相应机号,只有与主机发送的机号一致的测控装置才允许发送数据。
此VB程序作为DDE服务器,在VB中只有窗体可以作为服务器,在程序的初始化部分应进行DDE设置,程序段如下:
form1.linkmode=1
form1.linktopic=form1
在窗体上放置了mscomm控件用于控制串行端口传输和接受数据,为应用程序提供串行通信功能。
Mscomm1.comport=2
Mscomm1.settings='9600n81''设定该通信口的波特率、奇偶校验、数据位、停止位
Mscomm1.inputlen=0 '使用Input将使Mscomm控件读取接收缓'冲区中全部的内容
Mscomm1.Portopen
窗体上的定时器控件timer1,用于定时两秒,当定时到时,发送FE命令,要求测控装置发送数据。其程序实现如下:
mscomm1.output=″fe″+chr$13 '输出FE命令
mscomm1.output=″tank″ 'tank为机号
当数据由测控装置送到数采站时将触发mscomm控件的oncomm事件,在此事件处理句柄中完成读入数据的功能。
Bufferstring=mscomm1.input '读入缓冲区内容
If Bufferstring<>'ff' then
Text2.text= Bufferstring+text2.text
这样读入的数据就显示在Text2文本框中。
3.2监控层应用程序的DDE组态
监控层应用程序主要执行InTouch中的WonderViewer,而InTouch正是借助DDE与其它软件联合工作。
InTouch是用于建立人机接口的一种软件包。它包括WonderViewer和WonderMaker两大部分。使用InTouch软件只需建立一个标记名字典,再利用WonderMaker的图形功能把被控对象形象的画出来,在PC机上就可以把整个对象描绘出来。InTouch只需在标记名字典中指明标记名为DDE特性,同时指定应用程序的服务名和话题名,WonderViewer可自动执行获取数据点的全部操作。
InTouch既可以作为客户又可以作为服务器。通过NETBIOS DDE的网络接口,可使机制建立起3个层次,因此监控层应用程序的DDE组态分为两大部分:
① 工程师站的DDE组态
DDE用项名、主题名、应用程序名三个层次来标识客户与服务器之间传递的数据单位,通常表示为:应用程序名|主题名!项名;对于客户,应按三个层次去连接相应的数据。工程师站作为数采站的DDE客户。在InTouch的标签库中,提供了DDE设置框,使得DDE组态简便、易行。
工程师站中的层次标识为:\\shucai\dde1|form1text2.text 数采站的节点,dde1为数采站上的VB应用程序名 。
② 其它各监视站的DDE组态
这主要是建立各监视站与工程师站的DDE 连接。此时工程师站作为DDE服务器,其它各监视站作为客户从工程师站上取数据。建立DDE连接的过程与上述类似。
4、 结论
VB是一种优秀的面向对象程序设计语言,采用它编制Windows环境下的上位机串行通信软件,程序实现简单,减轻了软件开发的工作。用InTouch监控程序软件完成复杂的图形截面,方便快捷。VB应用程序一方面作为DDE服务器同InTouch进行数据交换,另一方面通过Windows提供的串行通信设备驱动程序与低层的测控装置进行串行通信。对于用户只与InTouch友好人机界面打交道。实际运行证明该通信软件可靠,操作方便。
参考文献
1、 瞿坦,数据通信及网络通信, 华中理工大学
2、 张鑫,计算机散控制系统,水利电力出版社