您的位置: 嵌入式在线 > 解决方案 > 工业控制 > 基于研华动态库的工控卡扩展调试器设计

基于研华动态库的工控卡扩展调试器设计

2007-08-29      嵌入式在线      收藏 | 打印

      1 引 言

      看一看研华的手册并查一下网站资料,满目的产品种类几乎让人目不暇接,其实可以按类型将其分为如下几类:A/D类、数字I/O类、中断类、继电器类、调理模块类。而调理模块仅仅使用硬件连接即可使用,其他均需要编程。

       经实验,这些所有板卡都是以设备句柄标识的,当驱动程序安装完成后,在他的管理器界面上可以看到某一具体卡对应的设备号,从0号开始。初始化打开函数打开这个号后,返回的就是设备句柄。研华产品丰富而全面,所以他的编程例子在打开设备时经过了一系列查表才寻得设备号,再进行后面的初始化。使用研华板卡自带的调试器,可以看到已安装的设备板卡号,所以完全可以删除掉前面的查表函数。本文依次改写了初始化部分,并且按类
型重编制了相关函数。

       2改写函数部分

       我们知道,任一硬件设备的访问无非是这么几条语句:

       (1)打开;(2)读;(3)写;(4)关闭;(5)刷新。

       只需编制该类型对应的这几条函数即可访问所有这一类板卡。例如A/D类,编写统一的这5句函数,就可以访问818HD,818HL等所有A/D卡了。同理,D/A卡、数字I/O卡亦然。

       某些I/O卡支持中断,例如PCIl751卡,提供2路中断支持,实际使用时,从研华提供的例子无法辨识出到底是哪个中断,从服务电话中,也没有得到满意答复。经过反复实验后发现,在中断处理时需要开发者自己想办法辨识。作者使用再读I/O口的方法成功辨识了中断。再一方面,研华给出的中断例子缺省中断等待时间为1 003 s,对于等待一个不知道何时到来的中断远远不够,他的帮助在这方面也不够完善。要使用研华的DLL,请在工程文件中包含如下文件Driver.pas,Global.pas。

       3调试器设计部分

       该调试器的设计目标为:按类型访问设备,对一类设备而言,所有通道信息都可以读/写。并带记忆功能,将中断与数字I/O结合起来一起使用。这样可以观察到中断发生时端口上电平怎样变化,I/O部分可以定义确定时间间隔,十六进制I/O支持等。下面以数字I/O为例说明编程要点,其他类型板卡访问同理。调试器使用delphi 7.0编写。

       I/O卡初始化(带中断支持,这里可以带条件编译相关,如果允许则开中断支持,不允许则关中断支持) 以下是作者改写后的数字I/O卡初始化函数,这一函数适用于任一研华的数字I/O卡,而不仅仅是PCI 1751卡,因为他是依据文件句柄辩识设备的。




       本文在例子中判断出了一个中断,另一个使用同样方法。研华给出的中断例子看不出怎样判断到底是哪个中断,作者通过多次实验使用中断到来后再读中断口的办法成功解决了中断辨识问题。


       文中仅以PCI_1751卡为例写了一部分内容,其他同理。在试验中,作者使用外接时钟源曾做到2 ms一次中断,在Windows 2000环境中仍然可以正常工作。

       关闭函数注意要先关中断,再关设备。记忆等功能本文全略之。

       4 结 语

       以上内容为该调试器设计的部分关键内容。为了使该调试器做到通用性,当然要编写很多异常处理代码在其中,文中全略之。在调试软件时,我们查了研华的所有产品目录及网站上的几乎所有资料,为了使该调试器适用于所有的研华产品,我们对每一类设备的读写都是依据他的卡中的最大容量为标准而编制的,比如A/D转换可以直接给&出全32通道的数据并带有记忆功能(可以Copy输出内容)。目前,该调试器可以调试所有A/D,D/A,数字及中断卡,在项目开发中该调试器对我们帮助很大。调试器对于多个I/O端口带记忆的十六进制显示及位级的输入可以大大加快控制软件开发,希望文中内容对读者诸友有所启发。

本文来源:现代电子技术    作者:中国电子科技集团公司第39研究所 蔡文斋 耿涛

隐藏原文↑


查看原文↓

关于 工控卡 的相关解决方案
工控卡 相关产品动态
工控卡 相关方案厂商

验证码:  看不清?换一张

 

快乐大本营
工程师之星
高福东
擅长嵌入式开发及单片机应用开发
  • 王波涛  熟悉单片机及其接口技术
  • 朱伟平  熟悉51单片机系统LCD驱动程序编写及调试。
热门招聘
论坛热贴