基于COM的组态软件I/O 设备驱动程序设计
详细介绍了一种基于COM 组件技术的组态软件I/O 设备驱动程序的设计方法。在
分析了设计原理的基础上,给出了一种以太网数据服务器驱动程序的具体实现。 COM 组件驱动程序的进程内运行方式和被所有驱动程序组件支持的统一的协议接口,在组态软件和设备驱动程序之间建立了一条高效、无缝的通信连接,同时使整个驱动程序框架拥有非常好的可扩展性。
I/O 设备驱动程序是组态软件与PLC、智能仪表等I/O 设备相互通信、交换数据的桥梁。
设备驱动程序直接负责从设备采集实时数据并将操作命令下达给设备,驱动程序的执行效率与稳定性将直接影响到组态软件的实时性能与可靠性;在大多数情况下,I/O 设备驱动程序是与设备相关的,即针对某种设备的驱动程序不能驱动其他种类的设备。因此,要求设备驱动程序能与组态软件进行无缝连接,两者之间应采用进程内通信、直接内存映射、OLE或其他更为有效的内部通信方式[1]; 另外,为了方便新设备的接入,驱动程序框架必须保证新的设备驱动程序能平滑地加入到组态软件中,而无须修改组态软件本身。为了满足组态软件对设备驱动程序的性能、稳定性和可扩展性的要求,本文详细介绍了一种基于微软标准COM 组件技术的设备驱动程序的设计方法。该方法把各种设备的驱动程序实现为相应的COM 组件,组态软件为这些组件定义了统一的协议接口,当组态软件要访问某一I/O 设备时,就根据设备配置时指定的COM 组件的CLSID(Class ID 的缩写,唯一标识一个组件类)[2]生成该组件的实例,然后从组件中获取统一的协议接口,接着按既定的流程调用接口中定义的各个函数,实现组态软件与设备的通信。这些组件都以进程内服务的方式创建,与组态软件运行在同一个进程中,从而在组态软件和设备驱动程序之间建立起一条高效、无缝的通信连接。驱动程序对请求数据项(组态软件与I/O 设备间的基本通信单元)运用的分包处理技术,大大提高了组态软件与I/O 设备间的通信效率。此外,新设备只需要提供相应的符合统一接口要求的COM 组件驱动程序就可以平滑地接入到组态软件中。