软件部分NT驱动程序的基本知识驱动程序与应用程序差别很大,其中包括它们的运行模式的差别和控制结构的差别。驱动程序运行在内核模式,应用程序运行在用户模式。在内核模式下,可以执行特权指令,对任何I/O设备有全部访问权,能访问任何虚拟地址和控制虚拟内存硬件。在用户模式下,硬件防止特权指令的执行,并进行内存和I/O空间引用的检查。驱动程序没有main或WinMain函数,是由I/O管理器根据需要调用的子例程组成的集合。应用程序从头到尾都在main和WinMain函数的控制下运行,确定各个子例程被调用的顺序。软件的设计说明软件根据功能可分为两个部分:应用程序和硬件驱动程序。应用程序只在用户模式运行,无法直接操作硬件,为了采集数据,故采用驱动程序编写与硬件有关的部分,应用程序中利用WindowsAPI函数采集数据。为提高主机资源利用率,动态进行数据处理,以及及时处理用户输入,应用程序采用多线程处理机制。应用程序创建了3个线程,其中一个为数据读取线程,一个为数据处理线程,一个为用户输入响应线程。并通过调高数据处理线程优先级,以实时处理数据。应用程序调用ReadFile()函数后,由驱动程序发出命令,启动数据采集卡,此后数据采集卡独立于主机工作。当采集卡上一个缓冲区采满数据时,采集卡向主机发出硬件中断,触发驱动程序的中断服务例程读取数据,之后数据处理线程得以执行。由于电机运转时不可避免地会产生振动,以及其他因素的影响,采集到的数据不可避免地带有干扰成分,因此应进行滤波处理。除了前面提到的硬件滤波器外,在应用程序中采用了软件滤波措施:先根据3D法则剔除坏点,再利用平均值滤波法去除随机干扰,提高原始数据的准确度。为及时了解电机运行状态,实时显示电机运行时的特性曲线,包括电压曲线、电流曲线、转速曲线、转矩曲线、机械特性曲线等,曲线种类可由用户输入决定。采用曲线拟合的方法生成特性曲线,提高了曲线的光滑度。应用程序采用VisualC++来编制。
结束语本系统适用于电机的中速实时数据采集应用场合。若进行高速数据采集应用,可进行以下改进:(1)将编程I/O方式改为DMA方式,提高数据传输速率。(2)提高数据处理线程优先级,至实时优先级,提高数据处理速度。