1、组态王驱动开发详解一、为什么需要编写组态王驱动程序?组态王是监控和操作底层控制器(PLC,单片机等)的软件,在组态王和底层控制器间有数据的交换,对于一些常用设备,组态王已经内置了设备连接的驱动,比如西门子、ABB 等,这些设备可以直接通过在串口处添加即可,但是对于那些在列表中无法找到的设备,就需要通过自己编写驱动程序,以实现组态王和底层硬件的通信。二、驱动程序(接口)主要完成哪些事情?(1)定义设备的变量(2)定义驱动类型:串口 or 网络,什么通讯方式(3)通讯包的属性等三、怎么进行驱动程序的开发?亚控提供了 3.0 的驱动程序开发包,这是一个使用 VC 开发 DLL 驱动的工具此为开发包用
2、户手册,可参考;开发包可注册亚控论坛后让群组发过来http:/ touchexplore.exe 和 touchview.exe 调用的底层函数,在开发前首先需要确定安装了组态王驱动开发包 3.0 和 visual 2003;安装时可能碰到的问题与解决可参见http:/ 6 个步骤:1、分析通讯协议需要确定数据包的格式,即驱动程序是接受怎么样的数据,怎么检验数据,并把它传给组态王,组态王又怎么根据得到的数据去解析各变量。如可以确定协议如下的类型2、制定驱动规格主要包括三部分:定义设备选择(在组态王设备列表里面怎么找到这个设别)、设备地址(设备地址的范围,在接口程序中有检测)、寄存器列表说明(是
3、接口函数主要传递的数据,由下位机采集传输给组态王,也可由组态王发送到下位机)如下为西门子 S700 的寄存器列表说明3、编写代码3.0 提供了驱动的框架,包括数据、类和函数的定义,主要需要修改接口函数部分,以使得驱动和下位机、通信协议匹配。主要的接口函数有以下几个:1、StrToDevAddr :将字符串转换为设备地址,传递给组态王2、GetRegisters:确定寄存器的名字和个数;编程时需要在这里定义好设备的寄存器3、ConvertUserConfigToVar:将用户配置的字符串转化为组态王的结构4、AddVarToPacket:确定变量类型,打包(首先接受变量,其次打包传给组态王)5、
4、ProcessPacket2:根据包的状态信息进行处理,主要有数据的读入,物理传送和传递给组态王,是编程时需要重点编写的地方4、添加设备列表驱动程序编译通过之后形成的是.dll 的文件,需要通过 deaedit 程序生成 des 文件,再通过驱动安装程序安装到组态王中,这样驱动才会显示到设备列表中;在此也可直接用设备列表维护工具“Devman.exe”来维护设备列表文件 Devlst.dat,这个工具可在kingviewdriver 目录中找到。5、开发态测试即在串口没有实际的工作之下,看到在添加设备和设置数据类型时实际调用的接口程序6、运行态测试可以采用虚拟串口或者实际串口调试,设备真实安装到了计算机上,通过设置断点可以检测到组态王运行时检测到的数据,可以看到主要通过 ProcessPacket2 的函数来传递数据。