引言
目前国内使用的数控系统通常是在通用计算机或工控机的基础上加装运动控制卡,使用Windows操作系统,并安装昂贵的数控软件构成的。这样的系统软件成本高、硬件资源浪费、功耗大。而嵌入式产品具有系统结构精简、功耗低等特点,能弥补传统数控系统的不足。免费软件Linux 操作系统进军嵌入式领域,更使得嵌入式产品能够充分发挥廉价、高性价比的优势。
本文所述的正是以Linux操作系统为软件平台,以ARM9微处理器为硬件平台,以数控铣床为背景,自主研发数控硬件及软件的嵌入式数控铣床控制系统。
1 系统硬件组成
系统的硬件由ARM系统主板和扩展板卡组成。
硬件结构如图1。
1.1 ARM系统主板
根据系统需要,主板上主要包括中央处理器S3C2410X、SDRAM 内存、NAND FLASH ( 64M )、串口、CS8900A以太网芯片( 10M 网口)、LCD显示器接口、USB接口、扩展总线接口等。
中央处理器S3C2410X内部资源十分丰富,包括1个LCD控制器、SDRAM 控制器、3个通道的UART、4个具有PWM 功能的计时器和1个内部时钟、2个USB主机接口和1个USB设备接口等。S3C2410X 处理器主频最高为202MH z, 内置16 KB 指令高速缓存和16KB数据高速缓存,5级指令流水线,带有乘累加运单元,可以运行起嵌入式Linux 操作系统并能进行较为复杂的信息处理,基本满足用户对快速性的要求。并且采用NAND FLASH 与SDRAM 组合来存储数据和程序,可以获得非常高的性价比。
系统采用10M 的以太网接口芯片CS8900A, 这是用于嵌入式设备的低成本以太局域网控制器。通过标准网络接口数控系统可以连接到Internet或局域网上。
1.2 扩展板卡
扩展板卡即把步进电机驱动器控制接口、伺服电机驱动器控制接口、编码器接口集成在一个板子上,作为控制数控铣床的控制卡,来控制步进电机和伺服电机的运转。
机床目前设计为3轴联动,为未来能扩展为5轴,设计留有5组接线端子。每组需要两个接线端子与驱动器相连(采用单脉冲方式),其中一个端子通过导线连接步进电机驱动器的CP, 提供给步进电机脉冲信号,控制它转动,另一个接驱动器的CW, 控制电机的转动方向,使电机可以完成正转、反转和停止动作。对电机的速度控制是通过软件控制脉冲的输出频率实现的。经比较决定选择三相混合式步进电机驱动器BD3SFB。因BD3SFB驱动器可兼容两相、四相和五相的工作方式,且有更高的定位精度,可控制电机在任意细分步数情况下,如6000步/转时精确定位。 电机和驱动器间仅用3根线连接,与交流异步电机一样,减少连线出错的可能性。
伺服电机的控制与反馈由驱动器完成,数控系统只需将指令信号发送至驱动器中。由处理器的通用I/O口产生伺服电机的脉冲信号和方向信号。伺服驱动器一般需要差分信号作为输入,故采用26LS31芯片作为其输出驱动电路,经过光耦的隔离直接连接到伺服电机驱动器上。
对步进电机采用开环控制,但为了将铣刀具体位置呈现给用户,同时修正控制及运动部分不可预见的误差,可以在步进电机上安装编码器。通过联轴器将二者相连。编码器脉冲信号经8253计数后可得到被测量的数字信号,然后经地址锁存器连接到扩展总线,由处理器进行处理。8253复用8 位数据总线表示计数值,处理器先读低8位后读高8位,计数范围是0 ~65 535。同时,鉴向器占用数据总线3 位表示各电机旋转方向。在单脉冲模式下,编码器脉冲由D触发器CD4013鉴相,处理器通过判断高低电平得知电机旋转方向。为了抗干扰和实现电气隔离,在与步进电机驱动器的脉冲信号和方向信号的端口连接时采用了光电隔离器件。D触发器鉴相如图2。
2 系统软件设计
传统数控系统的使用流程是先由用户编辑G代码或其它格式的加工文件,数控系统根据该文件中代码的意义,控制刀具做出相应的动作。所以在软件方面,系统需要提供文本编辑功能、对加工文件的编译功能、电机驱动功能等。为了使用户验证加工程序的正误,系统还要提供仿真功能,将走刀过程展现给用户。
为了实现网络功能,本系统还移植了嵌入式浏览器Konqueror/Embedded, 这是一款自由软件。由于浏览器可以访问HTTP、FTP、SMTP、NNTP等多种不同协议的服务,故安装浏览器可谓一举多得,移植过程参考文献。软件结构如图3所示。
2.1 操作系统平台的搭建
2.2 伺服电机和步进电机驱动程序
伺服电机需要的信号是PWM 波形控制信号,因此伺服电机驱动程序主要是实现脉宽调制。这个脉宽调制是利用一个定时器,并根据由SPWM 算法得到的延迟时间,控制一个通用I /O 端口高低电平持续时间得到的。系统产生的PWM 波形如下图4所示。
而在三个步进电机的设备驱动程序中,向步进电机发送连续信号定义为写操作; 从8253中读数据定义为读操作; 由键盘控制各电机动作作为自定义操作。
2.3 G代码编译
G代码是国际通用的机床加工代码,其编译的思想是: 首先将G代码文件读入流中,逐行分析其意义,并且带有查错功能。当遇到子程序跳转时记录文件指示出其位置和循环次数时,子程序返回后从记录位置继续执行;遇到主轴旋转时,在编译文件中写入旋转标志和PWM 的脉宽; 遇到插补命令时写入脉冲标志和每步的三坐标脉冲信号诸如此类。最后生成记录整套加工步骤的二进制文件。编译流程如图5所示。
2.4 插补算法与刀补算法
数控铣床控制系统使用逐点比较法实现直线和圆弧插补算法。以刀的当前位置为起点,以G代码给定位置为终点,在其间的直线或圆弧上插入拟合点,根据这些点产生一系列三坐标脉冲信号。逐点比较法的缺陷是圆弧插补只能走x 或y 方向的正交线,而缺失了最应该在圆弧插补中出现的由x、y 方向合成的±45/135°斜线,系统根据圆弧相对于x 或y 轴的倾向性,使插补过程中在圆弧的±45 /135°附近尽量使用斜线,使得插补精度更高、步数更少。图6 是由M atlab仿真得到的改进算法和传统算法的比较,如果定义理想曲线和拟和曲线的误差为两曲线相夹的面积(图中灰色部分) , 可看出改进算法的误差较小。
编写加工程序时,一般只考虑刀具中心沿零件轮廓切削,而忽略刀具半径对加工的影响,在实际加工时需要在刀具中心与刀具切削点之间进行位置偏置,补偿上述影响。这种变换过程即为刀具补偿。系统采用的是带有过度连接的C刀具补偿算法,该算法比较复杂,与许多因素有关,为此定义了一个结构作为刀补函数的参数,该函数更改插补始末位置、增加过渡曲线实现刀补功能。参数结构如下,
3 结论
以ARM9微处理器为硬件平台,免费的Linux操作系统为软件平台,开发了嵌入式数控铣床,实现了对步进电机和伺服电机的控制。 在对制作的电路板和编程的系统程序实验的基础上表明,与传统数控系统相比,嵌入式数控系统发挥了其耗能少、成本低、体积小等优势。