2024年3月31日发(作者:)

力控组态软件下的设备驱动程序开发

发布时间:2006-08-07 14:18 类型:应用案例 904人浏览

1 引言

组态软件设备驱动程序用于提供了连接计算机硬件的软件接口,在装入后成为操作系

统内核的—部分,也就是说它成为操作系统的信任部分。因此,任何设备驱动程序的细小

错误都可能引起操作系统的崩溃,要避免这样的事情发生,只有反复测试所写的代码,遵

循编写驱动程序的规则。

最简单的方法是购买现成的驱动程序来直接处理我们的设备,但这样的驱动程序存在

连接与嵌入错误的风险。另外,可以通过修改各种商业通用驱动程序与许多简单的设备打

交道。如果自己编写驱动程序的话,尽量使用某个标准的总线驱动程序或者类驱动程序,

因为它们通常实现了我们所需要的大量功能。如果设备只有一个专门的用途,则为它编写

一个单一驱动程序来处理所有设备的请求可能是最简单的解决方案。

三维力控组态软件提供了力控I/O驱动程序接口软件开发工具包FIOS SDK,FIOS

SDK提供了标准的开发接口,开发人员仅需要根据I/O设备的具体通信协议或驱动接口说

明,填写几个扫描函数的实现代码,进行必要的调试与测试,即可完成一种FIOS的开发。

2 课题背景

目前笔者接手的项目是X机场助航灯光计算机监控系统。当机场灯光实施II类运行时,

其能见度在800m至400m之间,要求灯光设备可靠性高、故障少,但往往灯具在运行过

程中产生故障是随机的,其故障率达到某一个值时,将不能满足II类运行要求[1][2]。为保

证监控系统运行的稳定性和可靠性,采用双机容错模式与力控工业控制组态软件相结合的

方法,通过硬件冗余、软件组态的可靠设计、Visual C++与力控组态软件的结合,并以

RS-485总线作为网络连接线,实现分布式的数据库配置,设计了基于力控组态环境的双

机容错系统。开发此系统的任务之一,就是自主开发驱动程序,将自定义的通信协议写入

驱动程序之中。而三维力控组态软件提供了I/O驱动程序接口开发工具包(FIOS SDK),因

此,开发驱动的主要工作就是利用组态软件提供的接口函数和输入输出类库编写Ioapi中

的代码,以达到I/O设备的控制要求[3]。由于此项目的开发在Visual C++ 6.0环境中进

行,学习Windows WDM驱动程序设计对于深入理解内核态驱动程序开发、编写相应的

接口程序也很有帮助。

3 开发工具——FIOS SDK简介[5][6]

FIOS SDK开发环境完全基于32位Windows平台。它使用动态链接库(DLL)技术将

开发人员开发的代码整合到力控组态

软件系统中。FIOS SDK提供给程序员的开发接口为API函数和C++类库。

FIOS SDK主要由4部分组成:设备组态接口(Iodevcfg)、数据连接组态接口(Ioitemui)、

I/O监控接口Ioapi和I/O服务器程序Ioserver。其中,Iodevcfg:负责管理设备组态过

程;Ioitemui:负责管理数据连接组态过程;Ioapi:负责完成与I/O设备间的数据交换,实现对

设备的监控过程,包括:对通信协议的解析、数据格式的转换等;Ioserver:由FIOS SDK提供,

用于完成对Ioapi 的动态装载,调用并执行Ioapi实现的导出函数。它封装了大部分开发

人员不必关心的技术细节,如完成与I/O设备的底层通信(串口通信、网络通信等)、设备

超时处理、设备故障诊断等。Ioserver还完成与实时数据库DB之间的通信,它把从I/O