|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
本文将通用嵌入式运动控制器用于一台立式铣床X8126 的数控改造试验。改造中保留了原有的主轴系统和冷却系统,用步进电机驱动系统对铣床进行X、Y、Z 三轴数控改造。此次改造后步进距离是0.001mm/脉冲。
, I' \$ C) `, K1 l) _0 }% W2 X" R8 X3 E2 q. |
2 数控基本原理
; n, K& T4 H, `& o) ?7 j% ~. L# u; r* L& _% e n* o$ O3 O5 W: L
2.1 数控系统的工作过程 # Q3 r) e# z4 a. r" n
) h6 ^( U: _& r
(1) 把零件加工程序、控制参数和补偿数据等输入给数控系统。
2 J% {9 e3 n& j9 s! {0 N2 s
) U8 ]: P3 p! Q: z7 z- a7 Y(2) 加工程序译码与数据处理。
. u" ~8 ]0 H2 s$ S1 L! J* p2 @: H- x7 v6 V$ n9 I) D h; p, e% S
(3) 插补。运动轨迹是多轴协调运动的结果,为了实现期望的轨迹,必须控制相关轴的运动。直接的方法是把各轴的每一步运动情况事先确定好,存入计算机的存储器,再现轨迹时,根据存储的数据来控制各轴。但是这意味着要存储大量数据,在实际应用中不现实。实际上,轮廓或运动轨迹一般由直线、圆弧组成,对于一些非圆曲线轮廓则用直线或圆弧去逼近。可以根据一些少量的基本数据(起点和终点即可唯一确定一条直线,圆弧只需要给定起点、终点、半径及方向即可确定),通过计算,将工件的轮廓或运动轨迹描述出来,边计算边根据计算结果向各坐标发出进给指令。这就是插补(Interpolating)的基本思想,即插补计算就是数控系统根据给定的曲线类型(如直线、圆弧或高次曲线)、起点、终点以及速度,在起点和终点之间进行数据点的密化。当然,单轴运动就不存在插补问题。
# X4 B+ {$ g2 f7 K8 ^( A2 i3 a# _8 U4 s* n, S/ j9 a& V; l' q! ?; q4 Z ^
数控系统的插补功能主要由软件来实现,主要有两类插补算法。一种是脉冲增量插补,它的特点是每次插补运算结束产生一个进给脉冲;另一种是数字增量插补,它的特点是插补运算在每个插补周期进行一次,根据指令进给速度计算出一个微小的直线数据段。MCX314A 芯片内部含有高速高精度的直线和圆弧插补功能。 4 ?0 i# Y% t* P0 N# n6 U2 ?
! J! D' E. O, U* N& k) e. n) c4 X
(4) 伺服控制。将计算机送出的位置进给脉冲或进给速度指令,经变换和放大后转化为伺服电机(步进电机或交、直流伺服电机)的转动,从而带动工作台移动。
1 s0 t, q5 r8 r# l5 F# v' `; A# C
(5) 刀具补偿。在轮廓加工中,当采用不同尺寸的刀具加工同一轮廓工件,或同一名义的刀具因磨损而因此尺寸变化时,为了保证控制精度和编程方便,数控系统通常应有刀具补偿功能。
1 c9 ~0 T+ t) Y$ q* I9 | A3 w; c( G
2.2 数控加工程序 , B" y0 C* h; z' v( t8 g
" l) \$ C$ s# w2 K$ e5 V符合 ISO-840 国际标准的NC 指令代码编程是一种较通用的数控编程方法。常用的指令有准备功能G 代码、辅助功能M 代码、主轴速度S 代码、刀具T 代码等。数控程序就是由这些功能代码和数据构成。如N0666 G01X20 Y20 F 300 表示直线插补,XY 同时进给到目标点(20,20),速度300mm/min。 0 d2 \ O, [1 [$ D( w
# b. i% `! H/ P" {( K
Pro/Engineer、北航海尔CAXA 等CAD/CAM 软件能够依据零件CAD 轮廓生成相应的加工轨迹,生成数控代码程序。 & f8 m8 q0 |1 _2 e3 i7 F
! O, G' X9 ~8 `8 I- X3 硬件组成
+ B9 N3 q* A* s# @+ x6 }0 w5 N1 f5 ?
4 s! u# z( G4 e$ k9 s9 _% d# Z如图 1 所示,基于ARM 和MCX314A 的运动控制器是系统的控制核心。图2 是接口板和驱动器的接口图。MCX314A 输出的脉冲/方向信号经接口板(26AMLS31 变成差动信号)与驱动器对应的脉冲/方向端子相连。各轴限位开关信号和原点信号、急停信号经接口板光电隔离后连接MCX314A 的nLMTP、nLMTM、Xin0 和EMGN 引脚。 PC 机通过串口与LPC2214 相连,作为数控加工程序的编程人机界面;在数控加工时,LPC2214 将MCX314A 各轴的逻辑位置和状态反馈给PC。不过,PC 将数控加工程序下载给运动控制器后,可以脱开,运动控制器具备独立运行能力。 ; x0 R" [* k1 `/ B
2 A9 i, ]( ]! y6 ^8 O2 _ K4 软件设计
" s! c7 a1 N: O1 g+ W, W4 k- F( s2 o! X/ _1 W
利用PC 的良好人机界面和数据处理能力,PC 用作数控编程的人机界面,对数控程序进行语法检查,对数控程序进行预处理。PC 预处理后,将数控程序下载给运动控制器,LPC2214 将数控加工程序存入Flash 中。数控加工时,LPC2214 从Flash 中读出加工代码,进行数控加工程序的译码,译码完成后调用API 函数,实现数控功能。
/ ~4 w$ T1 n$ u1 Z# Y& S0 H3 {1 Y3 O' U
上位 PC 作为数控系统的人机交互界面,完成数控代码编辑(或接收CAD/CAM 软件生成的加工程序)、语法检查、代码预处理功能,并能和运动控制器进行通信,将处理后的数控代码参数上载到控制器,并能接收到控制器的(逻辑)位置反馈和驱动状态信息,实现对整个系统的监控。上位PC 的程序用Visual Basic 开发完成。 4 Y2 z9 F9 N4 U' W
, p: J2 E0 w% o/ H* A) R8 z. T! q
在已经奠定了运动控制器的软、硬件基础平台后,实现数控应用的关键点在于把数控代码转换成对API 函数的调用,核心内容是进行数控加工程序的译码。 (1) 数控加工程序的译码。 8 z5 |- F3 \- |. U, q
' j5 j! T1 q+ k0 C: m5 U2 \
定义一个数据结构体 CNCcodeBuf,将一个数控代码行的译码结果存入其中。将G 代码和M 代码分为GA~GF、MX~MY 组别,以节省存储空间,提高译码效率。译码流程见图3。
/ `; E* r& k1 t- B
" [* k( {4 @ I r0 X' z4 A) ^: Pstruct CNCcodeBuf * I8 v$ }; x# C/ r0 _' w
{
- B8 W, x. \4 }# ishort N;//存储数控代码N 后的编号
: z+ j) @* T" Wint X,Y,Z;//存储X、Y、Z 代码后的数值
- k* K! q- {1 N6 y- K. `( r. kint I,J,K;//存储I、J、K 代码后的数值 + G9 l' {8 ~+ L
int F;//存储F 代码后的数值 : W6 c/ R6 L; g, }' {, W3 T' U# x
int S;//存储S 代码后的数值 8 k! I' i. h( A- N; g
short T;//存储T 代码后的数值 9 k; {1 S) e0 T
unsigned char GA,GB,GC,GD,GE,GF;//存储分组后G 代码的序号 * Y( D2 x6 R& K' f4 ?, C
unsigned char MX,MY,MZ;//存储分组后M 代码的序号 $ ]# e+ u$ W( {" ~
}CNCBuf; ; Y4 m) s0 I$ Z/ i' ?7 Q+ Z
0 j9 N7 A9 j5 y
一行代码译码完成后,代码数据存储于变量CNCBuf 中,然后需要作的事是将其变换为对API 函数的调用。方法是从变量CNCBuf 的成员中读取G、M 代码功能号,根据功能号对应的API 函数要求逐一完成API 调用的入口参数设置。 % V! w; ^, F) f* R9 G5 W. w3 o( n- `7 h
# X: r; F% n: o# f(2) 通信。上位PC 将预处理后的数控代码程序加帧头“0xAA55AA”和帧尾“0x55AA55”后以RS232 方式下载到运动控制器中。通信格式设为:“38400,E,8,1”。
6 W0 }4 ~2 C* P! z' M k
2 x! Q# O9 Y/ U3 e
3 S0 m2 \' b' ]- I/ O7 }* Y |
评分
-
查看全部评分
|