基于DDE的组态王与VB的数据通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于DDE的组态王与VB的数据通信
摘要:针对煤矿井下的实际应用,基于组态王软件的动态数据交换(DDE)技术和VB应用程序,本文介绍了瓦斯监测监控系统中上位机和下位机通过CAN总线接口CAN-RS232进行通信的方法。
关键词组态王CAN-RS232 DDE VB
1.前言
随着计算机技术和监控技术的发展,监控组态软件在工业过程控制等领域得到了广泛的应用。
它作为面向监控与数据采集的软件平台,具有丰富的项目设置,使用方法灵活,并且功能强大。
煤矿井下监测监控系统主要包括两个部分:一是数据采集系统,即智能结点(下位机),它将CPU与各类传感器相结合,对生产过程中的设备、仪表进行实时监测,将各种被测物理量的参数及状态转换成数字信号,并通过CAN总线传递到上位机,CAN总线是一种日益受到重视的数据通讯方式,在传输率为5kb/s时,该总线无需中继可实现10km的可靠传输。
在监控系统的第二个部分即上位机上,通常无法直接将CAN总线与之连接起来,本监控系统是采用CAN-RS232智能转换接口进行上、上位机间的数据通信的,实际使用中CAN-RS232接口使用了VB来编写驱动程序。
通过智能转换接口,上位机在接收到CAN总线上传的数据后,利用组态软件可以对之进行实时记录和分析,并以适当的形式如声音,图形,报表等方式显示给用户,使用户更直观、全面的了解现场工况。
本监控系统的数据通信中,基于VB的CAN-RS232接口驱动以及与组态王的数据交换是重要问题。
本系统采用DDE(动态数据交换)方式和VB应用软件来完成上位机与CAN总线的数据通信,用组态王软件来实现上位机的画面显示、数据管理以及对监控系统进行控制。
监控系统中CAN总线的数据是以帧的格式来传送的,每一帧包含30个字节,其含义分别为帧的序号,帧的格式(扩展帧/标准帧),帧的类型(远程帧/数据帧)以及帧数据的长度,一帧的后八个字节为传送的测控数据,又称为帧数据。
2.DDE工作原理
DDE是微软公司开发的一个基于Windows平台的通信协议,它允许多个应用程序以客
户或服务器的形式相互传送数据。
发出数据请求的应用程序叫客户,服务器应用程序提供数据并接受其他程序的请求。
DDE的通信是双向的,一个应用程序既可以作为客户又可以作为服务器,但在某一确定的时刻它只能作客户或服务器。
DDE通信是通过规定三个标识名来完成的,三个标识名分别为:一是应用程序名(Application),为DDE进行对话的双方的名称;二是主题(Topic),表示被讨论的数据域,对于组态王,主题规定为“tagname”,对于VB主题由窗体(Form)的Linktopic属性值来指定;三是项目(Item),规定为被讨论的特定数据对象。
在组态王数据词典中,工程人员在定义I/O变量的同时,也就定义了项目名,而在VB中项目是通过Linkitem来设置的。
在VB中,DDE连接是通过控件的属性来实现的,对于作为客户端的文本框、标签等,要设置其相应的Linktopic,Linkitem,Linkmode 三个属性。
因井下监控系统中参数变量较多,根据CAN总线的数据传送帧格式,每帧可以传送8个数据。
所以以该系统为例具体介绍组态王与VB之间的多变量传输。
根据参数的特点,组态王与VB分别在DDE客户与DDE服务器两种角色之间进行相应变换。
有些参数需要用VB开发的应用程序(假定称为vbdde)把CAN总线中从现场采集的实时数据传到组态王,实现显示或制作趋势曲线,如实测温度、瓦斯含量等。
有些参数则需从组态王传到vbdde,由vbdde以命令的形式传给CAN总线并通过CAN总线下达给现场智能结点,实现智能结点的组态和控制功能。
监控系统中信息流向图如下所示:
3.组态王软件的DDE和VB应用程序的数据交换具体步骤
为实现基于组态王软件的DDE和VB应用程序的数据交换,要完成以下具体的设置。
(1) 在组态王中定义设备打开组态王工程浏览器,在工程目录中选择“设备”,通过设备配置向导,定义设备逻辑名为plc,设备地址为1,通信方式为串行。
然后从目录显示区中
选择“设备\DDE”,通过设备配置向导定义DDE设备的连接对象名为cksb,服务程序名取为vbdde,话题名为Formtopic,数据交换方式为标准Windows DDE 交换。
(2)在组态王中定义I/O变量在工程目录显示区,选择“数据库\数据词典”,通过“变量属性”对话框建立I/O实型变量。
先定义组态王作为服务器时向客户端VB应用程序传输的变量,取变量名为viewtovb,连接设备为plc,选择寄存器为plc.STA TIC100,数据类型为INT,规定读写属性为读写方式,允许运行DDE访问。
可以依此类推,分别定义变量viewtovb1,viewtovb2,viewtovb3,寄存器名为plc.STA TIC101,plc.STA TIC102,plc.STATIC103。
再定义VB作服务器向组态王客户端返送的变量,取新变量名为vbtoview。
项目名为服务程序中提供数据的控件名,vbdde。
连接设备为cksb。
依此类推,定义变量vbtoview1,vbtoview2,vbtoview3。
项目名和设备名都相同,这样便可以实现用一个服务程序来传输多个变量参数。
(3)创建画面在组态王开发环境中建立如下画面:
### <1> ### <2> ### <3>
驱动$$$ 组态王$$$ VB返送$$$
程序%%% 验收%%% 给组态王%%%
*** *** ***
建立好画面后,对文本对象###,$$$,%%%,***分别进行动画连接。
在<1>和<2>处,文本对象对应的变量即步骤(2)中定义的viewtovb,viewtovb1,viewtovb2,viewtovb3。
而在<3>处,文本对象对应的变量是(2)中定义的vbtoview,vbtoview1,vbtoview2,vbtoview3。
所以<1>处设置为“模拟值输入”,四个文本对象各自对应的表达式分别为“\\本站点\viewtovb”,“\\本站点\viewtovb1”,“\\本站点\viewtovb2”,“\\本站点\viewtovb3”。
<2>处设置为“模拟值输出”,表达式与前面设置相同。
<3>处设置为“模拟值输出”,文本对象对应的表达式分别为“\\本站点\vbtoview”,“\\本站点\vbtoview1”,“\\本站点\vbtoview2”,“\\本站点\vbtoview3”。
(4)运行可视化编程工具VB 打开New Project 窗口Form1,双击Form1,在“Form1.frm”窗口中键入如下Form_load程序:
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 3
Text1(i).LinkTopic = "view|tagname"
Next
Text1(0).LinkItem = "plc.STATIC100"
Text1(1).LinkItem = "plc.STATIC101"
Text1(2).LinkItem = "plc.STATIC102"
Text1(3).LinkItem = "plc.STATIC103"
Text1(0).LinkMode = 1
Text1(1).LinkMode = 1
Text1(2).LinkMode = 1
Text1(3).LinkMode = 1
End Sub
Private Sub Text1_Change(Index As Integer)
vbtoview.Text = Text1(0).Text
vbtoview1.Text = Text1(1).Text
vbtoview2.Text = Text1(2).Text
vbtoview3.Text = Text1(3).Text
End Sub
在VB“File\Save Project”中将工程命名为vbdde.vbp,并在“File\Make Exe File”中将以上程序生成可执行文件vbdde.exe。
(5)启动组态王和VB间的数据交换进程先运行组态王Touchview.exe,再启动VB 程序vbdde.exe,二者均启动后就可以在组态王运行画面上实现数据的自发自收传送,同时在VB 窗体的文本框中会显示出组态王中变量的值。
4.结论
VB作为一种面向对象程序设计语言,在本系统的设计中体现出了其优越性和实用性。
实际运行证明,基于DDE技术,通过VB应用程序来实现组态王与CAN-RS232接口的动态数据交换操作简洁,使用方便,在CAN总线测控系统中,是一种有效且可靠的数据传输方式。