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

关键词: 组态软件 设备驱动程序 rs-485串行通信

  

  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设备采集到的数据经ioapi解析转换后提交给db,或者将db下置给i/o设备的数据经ioapi解析转换后写入i/o设备。

  因此,开发人员仅需要开发iodevcfg、ioitemui、ioapi三部分的代码。下面就以这三个部分的代码、界面开发为例,说明在力控组态软件中进行驱动开发的步骤。

  

  4 开发实例

  以c8051单片机实现数据采集为例,针对下层rs-485总线通信开发驱动程序。

  4.1 设备组态接口(iodevcfg)开发

  (1) i/o描述文件

  在使用力控进行组态时,一般都要涉及i/o设备的定义过程。i/o描述文件的文件名为iodesc.txt。文件内容规定的格式如下(其中,表示回车换行):

  类别;厂商或i/o程序描述;ioid

  子类型1;类型号;缺省通信方式;提供设备地址

  子类型2;类型号;缺省通信方式;提供设备地址

  ……

  因此,在本项目中的i/o描述文件定义为:

  “x计算机监控系统;华中科技大学控制系;ccmscontroller;0;1;0”表示类型号为0,rs-485通信,不设置设备地址。

  (2) 开发iodevcfg.dll

  开发人员在编写iodevcfg接口程序时主要完成两部分功能,一是为用户进行设备组态时提供一个界面;另外就是将用户组态的设备参数信息保存起来,以便在开发编程接口ioapi时使用。如果力控提供的标准设备组态接口能够完整地描述设备的有关信息,就不需要再编写iodevcfg接口程序。标准界面如图1所示,并对串口进行相关设置,如图2所示。

  

图1 标准设备组态界面

  • 力控组态软件下的设备驱动程序开发已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计