组态王是一种通用的工业监控上位机软件,它界面友好、易学易用、即便是不懂编程的工程人员也能在短时时间内开发出界面精美,符合行业标准且高效的上位机监控程序,因此深受工程师们的喜爱,然而组态王软件的上下位机通信协议是固定
的切不可改变,这就给一些使用“自拟定协议”和“非标”产品的用户带来了极大的不便,有的时候迫使用户改变上下位机通信协议或者更换下位机产品。本文提出了一种基于VisualBasic6.0和动态数据交换技术(DDE)的通信协议转换方法,利用组态王和VB都支持WINDOWS平台的DDE技术这个特点,将组态王和下位机产品之间的数据通信用VB进行协议转换,从而达到了变更组态王通信协议的目的。1问题阐述某医疗设备厂利用组态王开发上位机监控软件,用PIC单片机做下位机控制开发,下位机工程人员拟定通信协议的数据格式见表1。对于表2这种自拟定的通信协议,组态王是无法完成的,因为组态王的单片机协议是固定的,且更改困难。其协议如表2所示。对比表1和表2可以看出组态王的通信协议明显不同于该医疗产品项目的通信协议,且下位机协议已经完成不可更改,在这种情况下如想继续使用组态王开发,则必须更改其通信协议,其方法有三种:a.向组态王厂商求助,与其合作,组态王厂商会改写驱动以适应项目要求,其费用很高。b.购买组态王驱动开发包,利用驱动开发包开发,其费用相对便宜,单开发包的使用需要工程师有较好的VC编程基础,核对组态王内部程序结构有一定的认识。c.利用DDE技术使组态王与VB进行数据交换,再用VB重写通信协议。本文主要介绍介绍方法c。2组态王通信协议转换实现方法为实现通信协议转换,顺利完成该课题,可考虑采用WINDOWS平台下的DDE技术使组态王与VB进行数据交换,再利用VB重写通信协议,其结构框图如图1。2.1组态王通过DDE与VB进行数据交换。DDE是由微软提供的WINDOWS平台上一个完整的应用程序间通信协议,它能够使组态王和VB之间进行数据交换。其数据交换方式是由其中一方向另一方发送请求数据并等待应答。发送数据请求的一方暂时作为客户端,响应回答的一方暂时作为服务器端。为了能够顺利实现组态王与VB之间的数据交换,需要对组态王和VB进行设置,而组态王读VB数据和VB度组态王数据的设置稍有不同。对于组态王读VB数据过程,其设置分别如下:a.在组态王中定义一个DDE设备,名称任取,服务程序名用与之交互的VB可执行程序名,话题名与VB控件中的LinkTopic属性一致,再新建I/O变量并连接到该设备下,项目为VB控件名字,这样通过DDE,组态王把VB程序看做是一个外部设备与之通信,而建立DDE设备的方法与建立其他外部设备方法一致。b.在VB中DDE连接是通过控件的属性和方法来实现的。任何需要与组太王通信的控件(通常是文本框、标签、图片框)都要设的LinkTopic、LinkItem、LinkMode三个属性。其中LinkTopic、LinkItem属性是要在组态王中引用的,而LinkMode属性是设置连接方式,通常设为1。对于VB读组态王数据过程,其设置分别如下:c.这里组态王设置比较简单,只需注意被访问的数据必须由IO变量提供,并勾选允许DDE访问即可。d.VB中要访问组态放数据的控件需要设置应用程序名、主题、项目和连接方式四项。组态王的应用程序名默认view、主题默认tagname、项目是VB控件所访问的IO变量,下面以Text空间为例,设置程序如下:Text2.LinkTopic="view|tagname"Text2.LinkItem="mcudde.x2"Text