您的位置:网站首页 > 机械制图 > 机械技巧

VXD开发技术在运动控制卡中的应用

时间:2011-05-24 08:41:22 来源:未知
1. VXD开发技术简介

虚拟设备驱动程序(Virtual Device Driver)简称VXD,是用来扩展Windows操作系统功能的一类程序。VXD主要用来支持硬件设备的管理,它以特殊的DLL形式链接到Windows操作系统的核心层(ring 0),可以解决许多不能在一般应用层(ring 3)编程处理的一系列问题,如对硬件中断等的处理。

VXD广泛应用于Microsoft公司推出的Windows 9X操作系统各个版本,许多基于Windows平台的硬件设备驱动程序都采用了VXD编程。

VXD编程由于涉及到Windows的底层结构,因此开发工作难度比较大。以前的VXD全部用汇编语言编写,并且需要对Windows底层结构有相当的了解,开发工作量比较大。许多公司为此推出了不同的VXD开发工具,其中比较著名的是美国Vireo公司推出的VtoolsD开发工具包,提供了对VXD编程的丰富的C++类库的支持,大大提高了开发此类程序的效率。

2.运动控制卡驱动程序的特点

采用计算机进行运动控制具有极大的灵活性。通过编写不同的程序可以适应不同的控制系统的需要,同时借助于计算机高速运算能力和巨大的存储能力可以完成许多复杂的功能,如圆弧插补甚至空间曲面的加工等,并且能够以图形方式直观地模拟显示加工过程。

运动控制卡作为关键部分,其硬件及驱动程序对整个控制系统的性能起着极其重要的作用。它负责将运动指令转换成相应的脉冲送到执行机构产生运动。

从通用性角度考虑,运动控制卡驱动程序应该提供比较完整的运动控制函数库,该函数库应该能够执行从单轴直线运动到多轴联动,从直线段插补到圆弧插补甚至螺旋线插补等常用的运动指令。特别是在加工由多条线段和圆弧组成的复杂形状工件时,驱动程序应能保证加工连续性。由于计算机操作系统早已由DOS转向Windows,而Windows操作系统属于多任务操作系统,因此在开发Windows平台下运动控制卡驱动程序时还应注意在保证指令连续的前提下尽量减少对CPU等系统资源的占用,以保证其它任务能够正常执行。而过去采用运动状态查询方式判断上一条运动指令控制的轴是否已经进给完毕则很难满足这种要求。因此有必要采用其它方式解决这个问题。中断处理配合指令缓冲区可以很好地解决这个问题。

对于中断的处理,在DOS平台下比较容易实现。因为DOS操作系统中断编程是开放的,程序员可以任意修改中断向量来处理自己的中断服务程序。但在Windows平台下,为了系统的稳定,操作系统对一般的应用程序(ring 3层)并未完全开放中断编程。然而由于设备驱动程序运行在操作系统底层(ring 0层),因此,我们可以借助于VXD编程来实现中断方式下工作的运动控制卡驱动程序。

3.采用VXD技术开发运动控制卡驱动程序

VXD运行在Windows操作系统的底层,借助于VtoolsD等开发工具,我们可以比较容易地在中断方式下实现运动控制。

为了使用方便,运动函数库中各运动指令对应的接口函数以Windows标准的动态链接库(DLL)形式封装,标准的DLL工作在ring 3层,而VXD工作在ring 0层,因此需要在DLL中加载VXD,对运动指令也需要分层进行处理。

为了保证运动指令的连续性,有必要采用指令缓冲区来配合运动中断。

通过DLL接口函数接收的运动指令被压入DLL中的指令缓冲区,相应的指令处理线程被激活,对一级运动指令进行处理,处理结果通过DLL与VXD之间的接口压入位于VXD中的底层缓冲区。

通过运动控制卡的硬件设计,可以实现在运动指令执行完毕后产生中断,在中断服务程序中,所要完成的任务就是从底层指令缓冲区取出下一条指令包含的各寄存器值,按地址将其送到卡上相应的寄存器中。

对于需要对反馈信号进行采样处理的特殊功能,则可以利用卡上的外部定时中断,在其中断服务程序中进行相应的处理。

4.相对其它方式的优点

采用VXD技术开发运动控制卡驱动程序及函数库相对于传统的查询方式下工作的程序来说,具有如下一些优点:#p#分页标题#e#

(1)系统运行效率更高,对CPU等系统资源占用更少。可以很容易地开发出带图形实时显示的运动控制系统。

(2)多指令连续运动及微线段插补时运动连续性更好,在Windows多任务环境下不容易受其它任务影响而出现运动的间断。

(3)可以实现更精确的采样处理功能,进而在此基础上实现全闭环控制。