编辑: qksr | 2019-07-18 |
VB作为服务器向组态王提供数据 VB程序 运行Visual Basic,新建工程文件vbddesvr.vbp.将窗体Form1的LinkMode属性设置为1, LinkTopic属性设置为FormTopic(任意名称均可). 在窗体Form1中,放入两个文本框,其文本框Name属性分别命名为TxtRegister(用于向组态王提供计数器)和TxtInterval(用于设置计数器频率). 在窗体Form1中,放入一个Timer 控件Timer1. 输入如下代码: 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 生成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设备的情况下一样.