随着pc技术的迅速发展其在工业控制领域得到广泛应用。用pc技术开发的数控系统可以得到强有力的硬件和软件支持,避开专有技术的制约在较短时间内达到较高水平。USB自问世以来,就以其速度快、成本低廉等诸多优点逐步占领了PC及其外围设备市场。随着大量支持USB的个人电脑的普及,USB逐步成为PC机的标准接口己经是大势所趋本文介绍了一种基于USB接口进行数据传输和控制的数控雕刻机的软硬件设计方案。
1系统硬件结构整个系统的硬件结构如所示。
行机构系统硬件主要由以下几个部分组成PC主机一CAD/CAM建模生成文本形式的GCode读入GCode对其进行解释调用直线或者圆弧插补,进行插补运算将各种插补转换为一系列相应的电机脉冲信息,并往USB通讯模块传输。
USB通讯模块一接收主机传输来的包含电机运动的使能,方向速度脉冲信息的各种字节将这些逻辑控制电平和控制脉冲在相应的控制线上实现。
运动控制卡一接收通讯模块发出的控制电平和脉冲,将其放大并转换为步进电机的控制脉冲。
XYZ向步进电机一接收运动控制卡的输出脉冲,朝某个方向运转并带动相应的执行机构运动。
整个机构的运行方式是雕刻头在直流电机的带动下做高速旋转,并在Z方向做上下运动X工作台带动工件做XY方向的进给运动刀具和工件的运动的合成就可以得到文字和图案的轮廓。
2系统软件结构此雕刻系统中的软件结构如所示运动控制程序负责实现步进电机的基本动作所需要的输入信号。USB固件程序实现设备的枚举和端点与主机的通信。USB设备驱动程序为应用程序和底层驱动程序之间提供接口。PC机底层驱动负责处理总线枚举、电源管理以及USB事务的其它方面,Wndows操作系统提供这类驱动程序。Windows操作系统还提供API函数,来启动应用程序与设备驱动程序之间的通信。
3插补控制的实现1步进电机的基本动作对于各种复杂的运动轨迹可以通过各种基本的插补来拟合的而各种基本插补又是由步进电机的最基本的一些动作来完成的,这些基本的动作包括(以三(0nn)、(n0n)、(nn)、(nnn)其中n表示某路电机往某个方向步进的步数,是一个整数在PC主机客户软件中,将各种插补运动分解为了一系列的电机的基本动作往往需要实现的基本动作中n=1 2电机基本动作的实现用运动控制卡来控制步进电机,其输入控制信息有三类:使能,方向一定频率的脉冲。据此将PC主机发往USB设备的数据进行一定的格式定义,以进行分类,然后在单片机中将接收到的数据按照此类格式进行分析,并实现其功能。
是单片机程序内处在主循环程序中的处理接收到的数据的流程。
据此流程图可以看出要使电机沿某方向运转一定的步数只需依次发送电机的使能方向信息速度信息和一系列的步数信息,所接收的步数信息往往是n=±1的电机的基本动作。为了避免电机的基本动作间因为接收数据的时间而变得不连续单片机采用了定时器中断编程来控制脉冲输出,而单片机前台则负责接收主机发送过来的数据并等待上一个脉冲输出的完成。AT89S52单片机片内有3路定时器中断,刚好可以满足雕刻机3个电机的控制需求每路定时器中断负责控制1个电机的控制脉冲输出。
3插补运算直线插补和圆弧插补是两种最重要的插补,许多复杂的曲线可以通过这两种插补来拟合根据数字积分器(DDA)的原理可以写出这两种插补运算的实现函数。是在主机中客户软件层实现它们的流程图。
对于其它类型的插补实现的思路与上述的两种类似都需要根据插补的原理和算法来得到插补过程的每小段的增量,此增量就是步进电机的某个基本动作,将此基本动作序列依次发送到单片机底层即可实(完成,退出)完AM步数,完成该段圆弧插补现刀具的插补运动。
玉4与单片机的USB通讯对于在客户软件层的插补运算必须将电机的运动使能、方向、速度和运动步数信息发往底层单片机实现发送的通讯方式是通过USB传输USB传输速度快,可以满足插补运算过程中的大量插补数据传输的需求(2)USB固件程序开发USB支持4种传输类型:中断,控制块和同步。
雕刻机系统可靠性是关键,在满足数据传输速度要求的前提下,系统采用了控制传输和中断传输两种传输方式PDUSBD12的固件设计成完全的中断驱动采用KeiC51进行编写。USB的传输可在后台进行,它的基本思想是:后台ISR(中断服务程序)和前台主程序循环之间的数据交换通过事件标志和数据缓冲区来实现。整个单片机程序中,对电机的控制脉冲的输出的实时性要求最高,所以设定了定时器中断的级别为高级别,对于单片机内部的循环缓冲区,定时器中断程序检查循环缓冲区的填充情况并在允许的时候重新打开低级的中断服务。
开发USB接口设备驱动程序必须遵守WIM(Windews驱动程序模型)规范。WDM驱动程序有两个主要的初始化入口点一DriveiEntiy和AddDevice例程。DivierEntry主要工作是把各种函数指针填入驱动程序对象以注册其它回调例程15.PnP管理器将为每个硬件实例调用一次AddDevice例程AddDevice函数的主要工作是创建一个设备对象并把它连接到设备堆栈中。驱动程序与应用程序和硬件之间通信都是RP(IO请求包)完成的。在运行过程中,内核会调用不同的回调例程来完成不同的IRPDveUnbad则是在设备卸载时的清除例程。
完成了USB固件程序开发和USB设备驱动程序开发后,就可以编写上层的USB主机客户程序,真正发挥USB设备的作用。应用程序通过访问API通信函数,使位于上层的应用程序与位于下层的设备驱动程序进行数据交换。
采用了GUID接口方式来打开设备,GUID是在编写设备驱动程序时获得的也可以通过API函数调用来获得。
获得设备接口元素的接口详细信息中包含的设备路径名,选择相应的USB端点和管道,调用API函数Cie ateFile可以打开这个设备,获取设备的句柄。至此与USB设备的通讯就建立起来了,调用API函数ReadFileWteFile即可读写USB设备,而要关闭设备则是调用CbseFile函数。
开发环境并且运用了多线程的编程思想和DLL(动态链接库)模块化设计方法。
2个线程,一个是主线程负责用户界面保持中枢地位它的生存周期也就是整个程序的生存期,而另一个线程则是读入以文本文件形式提供的G代码翻译G代码调用直线或者圆弧插补子程序,将脉冲信息写入USB设备,并将刀路进行实时3D 4结束语整个系统的设计思路是利用pc主机的强大的运算功能,迅速运算出刀具所运动的轨迹的脉冲信息序歹列并将这些脉冲信息序列通过USB总线发往USB设备,由于上层客户程序的运算速度是远远大于底层单片机实现这些脉冲序列的速度的,基本上客户软件都是在等待USB设备芯片数据缓冲区的数据被单片机读出了一部分才发出了数据,所以不会存在因为底层单片机等待脉冲信息传输到来而破坏系统控制的连续性的情况。
此系统采用USB传输无需外加存储器来存储G代码只要改变单片机内的循环缓冲区的大小就能适应不同的加工速度要求的数控系统由于各种插补运算在上层客户软件实现可以应用于较复杂的数控系统中。