VXD 开发技术在运动控制卡中的应用
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 技术开发运动控制卡驱动程序及函数库相对于传统的查询方式下工作的程序来说,具有如下一些优点:
(1)系统运行效率更高,对 CPU 等系统资源占用更少。可以很容易地开发出带图形实时显示的运动控制系统。
(2)多指令连续运动及微线段插补 时运动 连续性更好,在 Windows 多任务环境下不容易受其它任务影响而出现运动的间断。
(3)可以实现更精确的采样处理功能,进而在此基础上实现全闭环控制。
虚拟设备驱动程序( 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 技术开发运动控制卡驱动程序及函数库相对于传统的查询方式下工作的程序来说,具有如下一些优点:
(1)系统运行效率更高,对 CPU 等系统资源占用更少。可以很容易地开发出带图形实时显示的运动控制系统。
(2)多指令连续运动及微线段插补 时运动 连续性更好,在 Windows 多任务环境下不容易受其它任务影响而出现运动的间断。
(3)可以实现更精确的采样处理功能,进而在此基础上实现全闭环控制。
文章版权归西部工控xbgk所有,未经许可不得转载。