资源描述
关于组态王同VB间的DDE连接
以下通过一个用VB编写的简单的记时器程序来说明组态王同VB间的DDE连接。
一. VB作为服务器向组态王提供数据
VB程序
1. 运行Visual Basic,新建工程文件vbddesvr.vbp。将窗体Form1的LinkMode属性设置为1, LinkTopic属性设置为FormTopic(任意名称均可)。
2. 在窗体Form1中,放入两个文本框,其文本框Name属性分别命名为TxtRegister(用于向组态王提供计数器)和TxtInterval(用于设置计数器频率)。
3. 在窗体Form1中,放入一个Timer 控件Timer1。
4. 输入如下代码:
Private Sub Form_Load()
TxtRegister.Text = 0
Timer1.Interval = 200
TxtInterval.Text = 200
'初期设定
End Sub
Private Sub Timer1_Timer()
TxtRegister.Text = CStr(CInt(TxtRegister.Text) + 1)
If CInt(TxtRegister.Text) >= 1000 Then
TxtRegister.Text = 0
End If
'计数器记到1000时,重新从0开始
End Sub
Private Sub TxtInterval_Change()
Timer1.Enabled = False
TxtRegister.Text = 0
Timer1.Interval = CInt(TxtInterval.Text) '设定计数频率
Timer1.Enabled = True
End Sub
5. 生成vbddesvr.exe文件
组态王设定
1.在“组态王”中定义DDE设备
在工程浏览器中,从左边的工程目录显示区中选择“设备\DDE”,然后在右边的内容显示区中双击“新建”图标,则弹出“设备配置向导”,按向导逐步配置DDE设备的各项。配置结果如下:定义I/O变量时要使用定义的连接对象名“VBDDESVR”(也就是连接设备名),在数据交换方式一项,选择“标准 WINDOWS DDE 交换”。(关于高速块交换方式的VB编程较为复杂,需要组态王的服务程序开发包)。
2.在工程浏览器中定义新变量,设为vb_register,连接设备为VBDDESVR,项目名为服务器程序中提供数据的控件名,此处是文本框Txtregister, “变量属性”对话框如下:
同样定义新变量vb-interval, 项目名设为Txtinterval。
3.在开发画面上放入一个文本对象“####”,以“模拟值输出”和“模拟值输入”的方式同变量vb_register进行动画连接。同样方法放入另一个文本对象“####”,动画连接vb-interval。
先运行vbddesvr.exe,再运行组太王后,适当调节两个画面的大小和位置,显示如下:
组太王的计数器的数值随着右面VB程序的计数器的数值不断变化而变化。同样,在左面的计数器和记数频率中写入适当数值,可以对右面VB程序的计数器初值和频率进行设定。
二. 组态王作为服务器向VB提供数据
(1)提供从DDE设备采集来的数据
当在组态王中安装一个DDE设备时,这个DDE设备是作为服务器向组态王提供数据的,而当其他客户程序需要同样数据时,即可向这个DDE设备源程序索取,亦可向组态王索取。当向组态王索取时,组态王成为服务器。仍然以上面的例子来说明这一过程。
新建工程文件vbddeclnt.vbp , 在窗体Form1中,放入两个文本框,其Name属性分别命名为TxtRgFrmV(用于向组态王索取计数器数据)和TxtIntlFrmV(索取计数器频率)。
输入如下代码:
Private Sub Form_Load()
TxtRgFrmV.LinkTopic = "view|tagname"
'设定连接程序名和题目名
TxtRgFrmV.LinkItem = "TxtRegister"
'设定连接项目名
TxtRgFrmV.LinkMode = 1
'设定连接方式(1:自动)
TxtIntlFrmV.LinkTopic = "view|tagname"
TxtIntlFrmV.LinkItem = "TxtInterval"
TxtIntlFrmV.LinkMode = 1
End Sub
生成vbddeclnt.exe后,先运行vbddesvr.exe,再运行组态王运行画面,最后运行vbddeclnt.exe,适当调节三个画面的大小和位置,显示如下:
组态王的数据转送给了vbddeclnt。虽然在vbddesvr.vbp的代码中,文本框的LinkMode属性设为自动,但如果想从客户程序vbddeclnt来更改服务器组态王的数据源,仍需
另外执行linkpoke方法(关于linkpoke方法请参照VB手册)。
(2)“允许DDE连接”选项
当组态王连接的是DDE设备以外的其他设备(如:板卡,串口等)时,在变量定义时选择“允许DDE连接”选项,可以使组态王作为服务器通过DDE连接向其他客户程序提供数据。向VB提供数据时,除linkItem设定由DDE设备情况下的“项目名”改为“连接设备名.寄存器名”以外,VB的编程同DDE设备的情况下一样。
展开阅读全文