一种基于VB和InTouch 的通信软件实现

[复制链接]
查看2654 | 回复2 | 2006-5-22 18:36:00 | 显示全部楼层 |阅读模式

Abstract?Using the theory of DDE,How to realized the comm-unication in the distributed 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(动态数据交换)转换功能。
  在工控机上的人机界面则采用监控平台软件来实现。目前较为流行的监控平台软件有Heuristics公司的ONSPEC、Intellution公司的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='9600?n?8?1'’设定该通信口的波特率、奇偶校验、数据位、停止位
  Mscomm1.inputlen=0 '使用Input将使Mscomm控件读取接收缓‘冲区中全部的内容
  Mscomm1.Portopen
  窗体上的定时器控件timer1,用于定时两秒,当定时到时,发送FE命令,要求测控装置发送数据。其程序实现如下:
  mscomm1.output=″fe″+c h r$?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|form1?text2.text ?数采站的节点,dde1为数采站上的VB应用程序名?。
  ② 其它各监视站的DDE组态
  这主要是建立各监视站与工程师站的DDE 连接。此时工程师站作为DDE服务器,其它各监视站作为客户从工程师站上取数据。建立DDE连接的过程与上述类似。
  4、 结论
  VB是一种优秀的面向对象程序设计语言,采用它编制Windows环境下的上位机串行通信软件,程序实现简单,减轻了软件开发的工作。用InTouch监控程序软件完成复杂的图形截面,方便快捷。VB应用程序一方面作为DDE服务器同InTouch进行数据交换,另一方面通过Windows提供的串行通信设备驱动程序与低层的测控装置进行串行通信。对于用户只与InTouch友好人机界面打交道。实际运行证明该通信软件可靠,操作方便。


[此贴子已经被loveplc于2007-1-14 23:14:11编辑过]
xuliang987 | 2007-5-16 20:29:00 | 显示全部楼层
学习中
wskksf | 2007-6-19 15:46:00 | 显示全部楼层
学习中
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则