一种基于VB 和InTouch 的通信软件实现( 转贴)
DDE动态数据交换方式来实现上位机、下位机之间的数据通信。
关键词:VB、InTouch、DDE、NETDDE
Abstract Using the theory of DDE,How to rea
lized the comm-unication in the distribute
d computer system through Vb and InTouch is
discussed in this article .
Key words VB、InTouch、DDE、NETDDE
1、前言
本文是以笔者参与的某啤酒厂的监控系统实现的项目为背景。由于现场的PLC或单片机控
制系统的资源、功能有限,不能长期保存数据,人机界面差,因此一般采用工控机作为上位
机,把现场数据通过数据采集站送入上位机,这样组成一个测控系统。上位机丰富的资源可
以对采集到的数据进行分析,存盘,运算、打印、报警并进行各种相应显示。上位机形象的
人机界面可使操作员更直观,全面的了解现场的情况。采用Intouch、VB来实现上、
下两层的通信,简单、明了。
2、系统结构
笔者参与的监控系统呈两层分布式体系结构:数据采集层和监控层。数据采集层主要采用数
据通信标准接口;监控层属于局域网,遵循局域网的协议标准。数采层进行数据的采集、处
理将数据传递到上一层;监控层共享数采层传来的数据。
该系统的数采层由多台测控装置组成。这些测控装置采用RS-485标准总线与数采管理
站通信。在软件方面采用VB来实现测控装置数采程序,它主要完成上位机与测控装置之间
的数据通信和所采集数据的DDE(动态数据交换)转换功能。
在工控机上的人机界面则采用监控平台软件来实现。目前较为流行的监控平台软件有Heu
ristics公司的ONSPEC、Intellution公司的FIX和Wonde
rare公司的InTouch等。InTouch监控软件作为一个实时的人机界面实用
程序生成器,可以产生在管理级别上的监控和数据采集程序。它具有开发周期短、可以生成
复杂的、友好的交互式图形界面,组态灵活的优点,是目前工业控制领域中简便易用的“快
速应用程序生成器”。但它必须采用DDE的数据交换方式与DDE服务器连接来获得数据。
此时用户编制的运行于数采站上的VB应用程序充当DDE服务器,如图一所示。将VB和
Intouch结合起来,协同工作,可以发挥各自优点。
3、系统DDE实现
该啤酒长系统在Windows环境下以动态数据交换机制实现系统的实时数据共享。如图
2所示:
首先,数采层采集处理后的数据送到数采管理站,转换成DDE型数据;然后,借助于NE
TDDE机制,数采管理站把实时数据送至工程师站。工程师站作为NT域控制器,再借助
于NETDDE机制实现与其他各监视站之间的动态数据交换。由于各站之间建立了“热连
接”链路,作为服务器一方总是在数据变化时主动发送数据给客户方。即当数采管理站采集
的数据发生变化时自动反应到工程师站。在现场实时数据的传送上,工程师站既作为数采管
理站的客户,又作为其它各监视站的服务器。
图1 VB与InTouch协同工作
图2 系统数据交换示意图
系统的动态数据交换实现分为三个方面:
① 采管理站的DDE数据类型的数据产生。
② 监控层应用程序的DDE组态。
③ 构造NETDDE应用程序。
3、1 用VB 编制DDE程序VB 是开发Windows应用程序的一种面向对象程序设
计语言,他支持Windows环境下的DDE通信机制。VB提供了动态数据交换的Li
nk Topic 连接主题 ,Link Item 连接项 ,Link Timeout
连接等待时间 和Linkmode(连接模式)四项属性。在应用程序编制时,根据D
DE原理,把应用程序的可执行文件名去掉EXE后缀,则成为DDE中的Topic。L
inkmode有Manual 手工 ,Notify 通知 ,和Automatic
自动 三种方式。在这个系统中我们采用Automatic 自动 方式。数采管理站
的巡测数采程序的流程图如下:
测控装置采用RS-485接口标准,因此某一时刻只能有一个站发送数据,其余站只能接
口。在该测控装置的通信协议中,由主机以召唤方式向测控装置发送送数命令和相应机号,
只有与主机发送的机号一致的测控装置才允许发送数据。
此VB程序作为DDE服务器,在VB中只有窗体可以作为服务器,在程序的初始化部分应
进行DDE设置,程序段如下:
form1.linkmode=1
form1.linktopic=form1
在窗体上放置了mscomm控件 用于控制串行端口传输和接受数据,为应用程序提供串
行通信功能。
Mscomm1.comport=2
Mscomm1.settings='9600 n 8 1'’设定该通信口的波特率、
奇偶校验、数据位、停止位
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,而InTouc
h正是借助DDE与其它软件联合工作。
InTouch是用于建立人机接口的一种软件包。它包括WonderViewer和W
onderMaker两大部分。使用InTouch软件只需建立一个标记名字典,再利
用WonderMaker的图形功能把被控对象形象的画出来,在PC机上就可以把整个
对象描绘出来。InTouch只需在标记名字典中指明标记名为DDE特性,同时指定应
用程序的服务名和话题名,WonderViewer可自动执行获取数据点的全部操作。
InTouch既可以作为客户又可以作为服务器。通过NETBIOS DDE的网络接
口,可使机制建立起3个层次,因此监控层应用程序的DDE组态分为两大部分:
① 工程师站的DDE组态
DDE用项名、主题名、应用程序名三个层次来标识客户与服务器之间传递的数据单位,通
常表示为:应用程序名|主题名!项名;对于客户,应按三个层次去连接相应的数据。工程
师站作为数采站的DDE客户。在InTouch的标签库中,提供了DDE设置框,使得
DDE组态简便、易行。
工程师站中的层次标识为:\\shucai\dde1|form1 text2.te
xt 数采站的节点,dde1为数采站上的VB应用程序名 。
② 其它各监视站的DDE组态
这主要是建立各监视站与工程师站的DDE 连接。此时工程师站作为DDE服务器,其它各
监视站作为客户从工程师站上取数据。建立DDE连接的过程与上述类似。
4、结论
VB是一种优秀的面向对象程序设计语言,采用它编制Windows环境下的上位机串行
通信软件,程序实现简单,减轻了软件开发的工作。用InTouch监控程序软件完成复
杂的图形截面,方便快捷。VB应用程序一方面作为DDE服务器同InTouch进行数
据交换,另一方面通过Windows提供的串行通信设备驱动程序与低层的测控装置进行
串行通信。对于用户只与InTouch友好人机界面打交道。实际运行证明该通信软件可
靠,操作方便。