《數控原理課程設計》由會員分享,可在線閱讀,更多相關《數控原理課程設計(6頁珍藏版)》請在裝配圖網上搜索。
1、1插補算法
1.1 插補方法
脈沖增量插補算法
脈沖增量查補(又稱行程標量插補)算法是通過向各個運動軸分配脈沖,控制機床坐標軸相互協(xié)調運動,從而加工出一定輪廓形狀的算法。這類插補算法的特點是每次插補的結果僅產生一個單位的行程增量,以單位脈沖的形式輸出給步進電機。因此,這類插補被稱為脈沖增量插補。
該插補運算比較簡單,僅僅通過幾次的加法和移位操作就可以完成插補運算。處理速度比較快。該插補一般常見的具體算法有:數字脈沖乘法器法、逐點比較法、最小偏差法、數字積分法、比較積分法、目標點比較法、但不追蹤法等。
本次的課程設計我主要分析這其中的一種算法——逐點比較法,用以概括和了解算法的基本
2、運算和對其的了解。而在進一步的重點分析中,本次的算法分析我則是分析其第一象限的直線插補運算。
數據采樣插補算法
數據采樣插補(又稱時間標量插補)算法是根據數控加工程序編寫的進給速度,先將零件輪廓曲線按插補周期分割為一系列首尾相連的微小直線段,然后輸入這些微小直線段對應的位置增量數據,用以控制伺服系統(tǒng)實現(xiàn)坐標軸進給。與上一插補算法相比,其結果不再是單個脈沖,而是位置增量的數字量。這類插補算法適用于以直流或交流伺服電動機作為執(zhí)行軟件的閉環(huán)或半閉環(huán)數控系統(tǒng)。
1.2 插補算法——逐點比較法
1.2.1 原理
逐點比較法的基本原理是,在刀具按要求軌跡運動加工
3、零件輪廓的過程中,不斷比較刀具與被加工零件之間的相對位置,并根據比較結果決定下一步的進給方向,是刀具沿著坐標軸向減小偏差的方向進給,且僅有一個方向的進給。
逐點比較法既可實現(xiàn)直線插補,也可實現(xiàn)圓弧插補。逐點比較法插補過程中每進給一步都要經過以下四個節(jié)拍:
偏差判別;坐標進給;偏差計算;終點判別。其過程如圖1所示。
(1) 偏差判別 根據偏差值確定刀具位置是在直線的上方
(或線上),還是在直線的下方。
(2) 坐標進給 根據判別的結果,決定控制哪個坐標(X或Y) 圖1
移動一步。
(3) 偏差運算 計算出刀具移動后的新偏差,提供給下一步作判別依據。根據上二式來計算新加工點的偏
4、差,使運算大大簡化。但是每一新加工點的偏差是由前一點偏差Fi推算出來的,并且一直遞推下去,這樣就要知道開始加工時那一點的偏差是多少。當開始加工時,我們是以人工方式將刀具移到加工起點,即所謂“對刀”,這一點當然沒有偏差,所以開始加工點的 F0=0。
(4) 終點判別 在計算偏差的同時,還要進行一次終點比較,以確定是否到達了終點。若已經到達,就不再進行運算,并發(fā)出停機或轉換新程序段的信號。
1.2.2 第一象限逐點比較法直線插補
圖 2
設在第一象限上有一直線,
5、起
點在原點O( 0, 0 )上,終點為E(Xe,
Ye),另有一動點N( Xi ,Yi ),如圖2
所示,且各個的坐標點都是整數單位。
當動點N剛好在直線上時,則:
即 XeYi-XiYe=0
當動點Nˊ在直線下方ON時,則:
直線的大于直線的斜率,從而有:
即 XeYi-XiYe0
當動點N在直線的上方N"處時,直線的大于直線的斜率,從而有:
即 XeYi-XiYe0
由上述關系可以看出,表達式(XeYi-XiYe)的符號
6、就能反映出動點N相對直線的偏離情況。為此,取偏差函數F為: F=XeYi-XiYe
根據上述過程,可以概括出如下關系:
當F=0時,動點N(Xi,Yi)正好處在直線上;
當F0時,動點N(Xi,Yi)落在直線上方區(qū)域;
當F0時,動點N(Xi,Yi)落在直線下方區(qū)域。
\
2 程序
開始
2.1 程序流程
初始化Xe,Ye,F(xiàn)0=0,∑=|Xe|+|Ye|
F≥0?
Y N
+X軸進給
+Y軸進給
F=F+XeX
F=F—Ye
∑-1=0?
N
Y
結束
7、
圖 4
2.2 程序代碼(基于c語言的編程)
#include "conio.h"
#include "graphics.h"
#include "process.h"
#define Ni_circle 0
#define Shun_circle 1
void init_graph();
void draw_Base_circle();
void draw_cabu_circle();
void close_graph();
8、void acrroods();
static float x0,y0;
void line_cabu(), draw_line(),draw_line_cabu();
void line_cabu()
{
int i;
init_graph();
sleep(1);
for(i=0;i<2;i++)
{
line(0,120,300,120); outtextxy(310,120,"Z");
l
9、ine(100,10,100,300); outtextxy(110,300,"X");
lineto(Xm,Ym);
gotoxy(55,8); printf("X%3.0f Y0 Z%3.0f",Xm-100,Ym-120);
delay(1100);
}
3 分析總結
通過此次課程設計,使我更加扎實的掌握了有關數控插補和c語言編程方面的知識,在c語言編程過程中雖然遇到了一些問題,但經過一次又一次的思考,一遍又一遍
10、的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經驗不足。實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。
回顧起此課程設計,至今我仍感慨頗多,從理論到實踐,從中學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。
參考文獻
[1]汪木蘭 數控原理與系統(tǒng) 機械工業(yè)出版社 2010.1
[2]伍胡平 周亞軍 《組合機床與自動化加工技術》 2008 第9期
[3]周虹 《組合機床與自動化加工技術》 2004 第3期
[4]譚浩強 C語言程序設計 第三版 清華大學出版社 2005.7