|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
本文将通用嵌入式运动控制器用于一台立式铣床X8126 的数控改造试验。改造中保留了原有的主轴系统和冷却系统,用步进电机驱动系统对铣床进行X、Y、Z 三轴数控改造。此次改造后步进距离是0.001mm/脉冲。
" T& _2 Z9 B- r! b1 f- L' j1 E& u- P
2 数控基本原理 8 Q z' o8 V/ n; \3 a( p6 i. f
7 W( ?/ q* ~ V. j2.1 数控系统的工作过程
3 w( _1 P- n+ A4 }# {) w6 f7 R% s8 N" h3 o
(1) 把零件加工程序、控制参数和补偿数据等输入给数控系统。 5 @ D5 _: A \: {
- H& Q1 E; g' g: C6 i2 N
(2) 加工程序译码与数据处理。 . C, h4 j( `+ x( J& `% k2 l" O. d# Z5 m" @
8 {" O6 v. {" Q: c' f$ V(3) 插补。运动轨迹是多轴协调运动的结果,为了实现期望的轨迹,必须控制相关轴的运动。直接的方法是把各轴的每一步运动情况事先确定好,存入计算机的存储器,再现轨迹时,根据存储的数据来控制各轴。但是这意味着要存储大量数据,在实际应用中不现实。实际上,轮廓或运动轨迹一般由直线、圆弧组成,对于一些非圆曲线轮廓则用直线或圆弧去逼近。可以根据一些少量的基本数据(起点和终点即可唯一确定一条直线,圆弧只需要给定起点、终点、半径及方向即可确定),通过计算,将工件的轮廓或运动轨迹描述出来,边计算边根据计算结果向各坐标发出进给指令。这就是插补(Interpolating)的基本思想,即插补计算就是数控系统根据给定的曲线类型(如直线、圆弧或高次曲线)、起点、终点以及速度,在起点和终点之间进行数据点的密化。当然,单轴运动就不存在插补问题。
% E" J3 {- _0 a. Z3 V6 k, I7 j. f% X% K! p
数控系统的插补功能主要由软件来实现,主要有两类插补算法。一种是脉冲增量插补,它的特点是每次插补运算结束产生一个进给脉冲;另一种是数字增量插补,它的特点是插补运算在每个插补周期进行一次,根据指令进给速度计算出一个微小的直线数据段。MCX314A 芯片内部含有高速高精度的直线和圆弧插补功能。
# L8 l6 C: b7 y8 g" W/ B1 A& U( J; r
. B5 `; w8 k1 d( ^) o3 b(4) 伺服控制。将计算机送出的位置进给脉冲或进给速度指令,经变换和放大后转化为伺服电机(步进电机或交、直流伺服电机)的转动,从而带动工作台移动。 4 q# c+ o( N: L9 t! h2 r8 `: {# g
" T0 d4 J6 f. ]( k ]
(5) 刀具补偿。在轮廓加工中,当采用不同尺寸的刀具加工同一轮廓工件,或同一名义的刀具因磨损而因此尺寸变化时,为了保证控制精度和编程方便,数控系统通常应有刀具补偿功能。 5 X* z0 S( ?. B9 f! T# b
8 l1 d7 `) X6 _1 T2.2 数控加工程序 2 s9 P4 U& t6 M& i0 x9 d0 \3 k/ s
2 x3 ]* b, ?# S$ y$ v8 V7 ?符合 ISO-840 国际标准的NC 指令代码编程是一种较通用的数控编程方法。常用的指令有准备功能G 代码、辅助功能M 代码、主轴速度S 代码、刀具T 代码等。数控程序就是由这些功能代码和数据构成。如N0666 G01X20 Y20 F 300 表示直线插补,XY 同时进给到目标点(20,20),速度300mm/min。 6 |$ _/ k- A! t; p
. c8 a7 L0 S* j% Q* h" m
Pro/Engineer、北航海尔CAXA 等CAD/CAM 软件能够依据零件CAD 轮廓生成相应的加工轨迹,生成数控代码程序。 ; Y7 d) |4 h, \8 d0 ^) P e* y5 Z
5 o% W! T! D; U! s5 A0 f3 硬件组成
. C; g, ]* R$ S, U' c- [) n+ m7 z' @
- v, U) m1 S/ o如图 1 所示,基于ARM 和MCX314A 的运动控制器是系统的控制核心。图2 是接口板和驱动器的接口图。MCX314A 输出的脉冲/方向信号经接口板(26AMLS31 变成差动信号)与驱动器对应的脉冲/方向端子相连。各轴限位开关信号和原点信号、急停信号经接口板光电隔离后连接MCX314A 的nLMTP、nLMTM、Xin0 和EMGN 引脚。 PC 机通过串口与LPC2214 相连,作为数控加工程序的编程人机界面;在数控加工时,LPC2214 将MCX314A 各轴的逻辑位置和状态反馈给PC。不过,PC 将数控加工程序下载给运动控制器后,可以脱开,运动控制器具备独立运行能力。 # h7 R0 y6 X; q3 }; I+ v+ @
8 i0 U5 P }. I: {7 G8 |, f4 软件设计 & @1 o" |2 {7 ]3 J3 T4 Q
7 s* y7 a: n! S# Z8 L
利用PC 的良好人机界面和数据处理能力,PC 用作数控编程的人机界面,对数控程序进行语法检查,对数控程序进行预处理。PC 预处理后,将数控程序下载给运动控制器,LPC2214 将数控加工程序存入Flash 中。数控加工时,LPC2214 从Flash 中读出加工代码,进行数控加工程序的译码,译码完成后调用API 函数,实现数控功能。
9 q- d2 k9 R/ x0 [5 g9 m+ O0 x7 f/ ]
! m. I: z1 R5 \上位 PC 作为数控系统的人机交互界面,完成数控代码编辑(或接收CAD/CAM 软件生成的加工程序)、语法检查、代码预处理功能,并能和运动控制器进行通信,将处理后的数控代码参数上载到控制器,并能接收到控制器的(逻辑)位置反馈和驱动状态信息,实现对整个系统的监控。上位PC 的程序用Visual Basic 开发完成。 7 S8 }0 y) K. t0 X: j/ _* k6 T
: L6 G L% ] ?3 q
在已经奠定了运动控制器的软、硬件基础平台后,实现数控应用的关键点在于把数控代码转换成对API 函数的调用,核心内容是进行数控加工程序的译码。 (1) 数控加工程序的译码。
3 g( r8 | W& H
9 \1 M* C6 N1 t& K# s( ^9 S定义一个数据结构体 CNCcodeBuf,将一个数控代码行的译码结果存入其中。将G 代码和M 代码分为GA~GF、MX~MY 组别,以节省存储空间,提高译码效率。译码流程见图3。 ! @& A/ z: z, ]9 s: ^+ z f+ a1 o
: z- Q9 x( ^1 t% L2 ~
struct CNCcodeBuf 8 I9 c' ?+ U5 h" J Q8 I, ^2 n U d4 z9 Q
{
# f* R& {8 Z/ O4 q$ V$ O1 c3 Qshort N;//存储数控代码N 后的编号
5 f8 ~+ {2 s; W% S0 P0 Eint X,Y,Z;//存储X、Y、Z 代码后的数值
9 k& V8 s3 Z. V5 Lint I,J,K;//存储I、J、K 代码后的数值
! O. R- ?8 b* W) T2 d+ Yint F;//存储F 代码后的数值 / f: v: i# A7 J3 E" T2 t2 h) d
int S;//存储S 代码后的数值
3 h c, B, D/ o2 c" eshort T;//存储T 代码后的数值 ) m" N! R! l6 v( _) m8 o
unsigned char GA,GB,GC,GD,GE,GF;//存储分组后G 代码的序号
: G4 Z5 y2 l; X J$ ^7 Dunsigned char MX,MY,MZ;//存储分组后M 代码的序号
, ]4 U2 Y: W$ ?& O. A6 C}CNCBuf;
5 C; F; J9 T7 u3 m. s n. q, F' k E* m* Z6 a
一行代码译码完成后,代码数据存储于变量CNCBuf 中,然后需要作的事是将其变换为对API 函数的调用。方法是从变量CNCBuf 的成员中读取G、M 代码功能号,根据功能号对应的API 函数要求逐一完成API 调用的入口参数设置。 # X4 O$ E/ c8 Q9 R+ t$ \: T5 G
9 ~* A' e9 }, E% F( i/ K* J. @5 b' Y(2) 通信。上位PC 将预处理后的数控代码程序加帧头“0xAA55AA”和帧尾“0x55AA55”后以RS232 方式下载到运动控制器中。通信格式设为:“38400,E,8,1”。 0 P5 Z) ~- E; k9 \9 c3 b. N
! _# v; [6 U+ R( P8 A, m7 B2 O$ \- B- Y! C8 t' ?1 Z
|
评分
-
查看全部评分
|