摘要:本文阐述了组态王软件在工业控制领域中的应用,组态王软件和单片机进行通讯的两种解决方案及其优劣性比较,并着重阐述了基于DDE方案的数据通讯原理和代码实现。电子园51单片机学习网KDw4@:|%Nd?!oYo
关键词:组态王软件、数据通讯、DDE
#U3R'bh(U4~ G8{~7h446061. 引言
Ho6BBz}*G%[44606组态王软件作为一种工业控制组态软件在国内已得到了非常广泛的应用。其具有强大的硬件支持能力,对国内外绝大多数PLC、变频器、板卡、模块、仪器仪表都编写了相应的驱动程序,使用起来相当方便快捷。在“农水实验田环境监测”项目中,我们使用的硬件设备包括日本三菱PLC、台湾研华亚当模块及自行开发的基于单片机的分析仪器,我们选择的软件开发平台是组态王软件。因此,实现单片机与组态王的数据通讯是一个必须解决的问题。电子园51单片机学习网3l` l+ef
2. 单片机与组态王软件通讯的解决方案电子园51单片机学习网%X)\aZ%~kEDa
2.1两种通讯解决方案电子园51单片机学习网B-?^ Ti(I8\7Nk;l
单片机与组态王软件通讯的解决方案有两种,其一是直接编写支持单片机的驱动程序,就象组态王支持PLC一样;其二是利用组态王软件和Visual Basic都支持DDE的特点,以VB为开发平台,写一个数据通讯应用程序,一方面实现与单片机的连接,另一方面实现与组态王的动态数据交换。
MVD|8k@V446062.2两种方案的比较电子园51单片机学习网{'ht,@ Q'Z7R qH9F7[
第一种方案的优点是程序结构比较紧凑,数据通讯效率较高;缺点是必须由对组态王软件内核比较清楚的程序员开发,开发周期较长。第二种方案可由一般的程序员开发,缺点是数据通讯效率较低。在本项目中,我们采用了第二种方案。电子园51单片机学习网'}6_-~ IZ7~
3. 基于DDE方案的实现电子园51单片机学习网A5U$?*s6Q%o q7K"?-|
3.1 DDE的概念电子园51单片机学习网5~t"b2zgs8@
DDE是WINDOWS平台上的一个完整通信协议,它使应用程序能彼此交换数据和发送指令。DDE过程可以比喻为两人对话,一方向另一方提出问题,然后等待回答。提问的一方称为“客户”,回答的一方称为“服务器”。一个应用程序可以同时是“客户”和“服务器”,当它向其他程序中请求数据是,它充当的是“客户”,若有其他程序向它提供数据,它又成了“服务器”。电子园51单片机学习网rN4~7_ z1I&e
3.2通讯程序的数据流向电子园51单片机学习网:[pM ooL3U w9F
用VB编写的数据通讯程序作为中间者传递组态王与单片机之间的数据。当组态王需要向单片机发送控制命令时,组态王充当服务器向VB通讯程序提供数据,VB通讯程序再通过串口实现对单片机的远程控制;当组态王需要向单片机采集数据时,组态王充当客户向VB通讯程序请求数据。组态王与单片机通讯的数据流向如图1。电子园51单片机学习网(ti/c$DVav `#Q/u
图1 组态王与单片机通讯的数据流向电子园51单片机学习网6oG:y6_$~*h]?"v[
电子园51单片机学习网lq:D`6D'Ca g
3.3 代码实现
w([5R!FQd)u]446061. 组态王的DDE设置电子园51单片机学习网*P-rj[ fj5]
组态王的DDE对话的内容是通过三个标识名来约定的。电子园51单片机学习网\ {o%t;Oe\9^
应用程序名(application):进行DDE对话的双方名称
D*Xjg1A44606主题(topic) :被讨论的数据域电子园51单片机学习网*^h'dB7{/H[?a.`
项目 (item) :被讨论的特定数据对象电子园51单片机学习网"M` R8y5p:Q)OxY
为了建立DDE连接,需要在组态王的数据词典里建立一个DDE变量,并登记三个标识名。组态王运行系统的程序名是“VIEW”,主题规定为“TAGNAME”,项目是在定义DDE变量时定义的项目名称。电子园51单片机学习网xI;B&\^'e }'ww
2. VB通讯程序中的DDE设置
ur4^]j+OQS44606在VB中DDE的连接是通过控件的属性和方法来实现的。当VB充当服务器时,需要设置LinkTopic 和LinkMode属性;当VB充当客户时,需要设置LinkTopic ,LinkItem和LinkMode属性。例如,VB通讯程序作为服务器时的设置如下:
j `?F |Yxf44606Sub Form_Load()
%oy NW4_ ]0^44606LinkTopic=”form1”
$M.u0X"Ec)Y.E+`Q44606LinkMode=1电子园51单片机学习网b`/S,ngz/i9f
End Sub电子园51单片机学习网)Yu4Z9j:o {T5m/W/We
3. VB与单片机的通讯电子园51单片机学习网*wS\fu
在VB中可用Microsoft公司的32位串口通信控件Mscomm32.ocx实现与单片机的通讯。在程序初始化时,设置Rthreshoid属性为1,接收缓冲区接收到数据时触发OnComm事件,从而进行数据的接收和处理。电子园51单片机学习网 U6Vw2\0S_H d
Sub MSComm1_OnComm()
+L{)LTc;Q(B44606Select Case MSComm1.CommEvent电子园51单片机学习网/l7c'w_C#g&z
Case Mscomm EV RECEIVE
l-k4kUk)]7?44606Inbuffe= MSComm1.Input电子园51单片机学习网'P$ZX*h4id-Jd
Receivedata=Inbuffe电子园51单片机学习网q l%V$q+e+D
MSComm1 Receive="False"
0dSre3|,N44606End Select电子园51单片机学习网D c:xK7}mPP'x
。。。。。。。电子园51单片机学习网1D7J1\EA{(S
End Sub
\/}|m|'Xg!N ?#o44606电子园51单片机学习网7K;n,P1F L^"Q ]e/|
4. 结论电子园51单片机学习网y)f}c/Vj
采用上述方案,我们在“农水实验田环境监测系统”项目中,很好地解决了组态王软件与单片机的数据通讯。一年来,系统运行稳定可靠,产生了良好的经济效益。
(U:g*lk$W og44606
文章评论(0条评论)
登录后参与讨论