近段來(lái)本人的簡(jiǎn)易CNC控制器有小小突破,也基本上完工了,整理控制器資料時(shí)順手整理了"MACH3脈沖輸出",感覺(jué)還有兩篇沒(méi)有貼出就接著續(xù)篇(基本是按照自問(wèn)自答的方式出現(xiàn)).....
圖片資料可以說(shuō)是比效珍貴的,請(qǐng)珍惜(最少本人是這么認(rèn)為的,因?yàn)檫@是MACH3實(shí)際輸出的波形,并無(wú)半點(diǎn)人工干涉,真正想返原它成圖并非是一件易事)
上幾單元說(shuō)過(guò)了,MACH3控制步進(jìn)電機(jī)是按脈沖方向來(lái)完成的,但實(shí)際上是怎一回事呢???
最常見(jiàn)的是G0 G1,而G0到底是怎走的呢?? 查閱G指令表: G0是點(diǎn)到點(diǎn)運(yùn)動(dòng)的,這在機(jī)器是如何運(yùn)作的呢???
G0 測(cè)試
假如從A點(diǎn)到達(dá)B點(diǎn)情況是如何呢??
為此本人在通過(guò)自己寫(xiě)的軟件進(jìn)行分析MACH3波形實(shí)際輸出,從而清楚地解決了G0的實(shí)際運(yùn)行方式:
如圖所示(G0X1Y1)
從這個(gè)波形來(lái)看,可以清楚地知道從A到B有三個(gè)過(guò)程,一加速過(guò)程,二均速過(guò)程,三減速過(guò)程,這三個(gè)過(guò)程中對(duì)XY來(lái)說(shuō)是完全相同的,清認(rèn)真看清下圖的直線,實(shí)際上并非是真正的直線,而是曲線,XY是你一步我一步.你走,我走,你走,我再走,從而在失量合成時(shí)就成了一條與X坐標(biāo)系成45度角的類直線實(shí)際效果如圖
從圖中可能清楚地反應(yīng):速度從零開(kāi)始,最后以零結(jié)速,加減速度過(guò)程并沒(méi)有改變直線的形狀,!!!
這個(gè)就是插補(bǔ)的奧妙了!!
有人會(huì)說(shuō)這個(gè)簡(jiǎn)單了,其實(shí)本人認(rèn)為一點(diǎn)也不簡(jiǎn)單,此過(guò)程中所包函的知識(shí)太多太多了,各位看官要是想了解更多找渡娘.
G1 測(cè)試
接著就是在CNC中起了結(jié)定性關(guān)鍵的G1了,
G1到底是什么一個(gè)過(guò)程呢? 測(cè)試兩個(gè)不同的圖形
{
G0x0y0
g1x1y1f1200
g1x1y2
x0y0
}
{
G0x0y0
g1x0y2f1200
x2y2
x0y0
}
直接看圖
好奇怪的圖形啊,為什么會(huì)拐彎呢?? 是誰(shuí)偷了我的銳角呢??
其實(shí)一點(diǎn)也不奇怪,因?yàn)橛信nD的慣性定侓存在一切物體運(yùn)動(dòng)都不能突變,對(duì)此MACH3做了一個(gè)非常強(qiáng)的拐角過(guò)程,以前有網(wǎng)友問(wèn)過(guò),為什么我的MACH3會(huì)出現(xiàn)圓角呢?這個(gè)就是給予最好的解答了.
而這個(gè)過(guò)程是衡量一個(gè)CNC好壞的一個(gè)關(guān)健.為什么會(huì)拐得這么漂亮呢?這個(gè)拐角方程式又是什么呢? 對(duì)于多軸多微線段中,此拐角還可以這么順嗎??此精度又會(huì)是多少呢?? 對(duì)此本人花了整整二年時(shí)間去解讀它,也算是有的小成!!
在眾多的文獻(xiàn)中,很多地方提到插補(bǔ),而插補(bǔ)的本質(zhì)是什么? 插補(bǔ)簡(jiǎn)單來(lái)說(shuō): 根據(jù)給定的數(shù)學(xué)函數(shù),在理想的軌跡式輪廓上的已知點(diǎn)之間,確定一些中間點(diǎn)的一種方法。直線插補(bǔ)這是車床上常用的一種插補(bǔ)方式,在此方式中,兩點(diǎn)間的插補(bǔ)沿著直線的點(diǎn)群來(lái)逼近,沿此直線控制刀具的運(yùn)動(dòng)。
注意兩個(gè)字"逼近" 為因?yàn)橛?jì)算機(jī)并口輸出是脈沖方式,再者步進(jìn)電機(jī)按每步進(jìn)位一定的距離運(yùn)行的,所以最后所得到的是一個(gè)非標(biāo)準(zhǔn)直線.只能逼近它.
脫離MACH3,假如我們用單片機(jī)或自己做的并口輸控制,我們有沒(méi)有方法去實(shí)現(xiàn)這個(gè)過(guò)程呢? 找渡娘后,所知有一種方式比較直接也比較有效那就是"比較法" 如下
直線插補(bǔ)就是零件程序提供直線段的起點(diǎn)、終點(diǎn)坐標(biāo),數(shù)控裝置將這兩點(diǎn)之間的空間進(jìn)行數(shù)據(jù)密化,用一個(gè)個(gè)輸出脈沖把空間填補(bǔ)起來(lái),從而形成要求的直線軌跡。
(一).偏差計(jì)算公式
直線方程 : yi/xi = ye/xe ; 把標(biāo)準(zhǔn)方程變換一下 xeyi - xiye = 0 ,令 實(shí)際偏差值是FI 側(cè)實(shí)際偏差值 FI = xeyi-xiye
進(jìn)給方向的選取:使誤差減小的方向
當(dāng)P點(diǎn)在直線上方時(shí);
則:Xeyi - xiYe>0
當(dāng)P點(diǎn)在直線下方時(shí);
則:Xeyi - xiYe<0
因此:
由F可判別動(dòng)點(diǎn)P與理想軌跡的相對(duì)位置,從而決定下一步移動(dòng)方向。
F>0,點(diǎn)P在直線上方,應(yīng)向+X 移動(dòng)。
F<0,點(diǎn)P在直線下方,應(yīng)向+Y 移動(dòng)。
F=0,點(diǎn)P在直線上,為方便,將 F=0 歸F>0。
為便于計(jì)算機(jī)編程計(jì)算,將F的計(jì)算予以簡(jiǎn)化。
設(shè)第I象限中動(dòng)點(diǎn)P(xi, yi)的F值為Fi, Fi=Xeyi-xiYe
1.若沿+x向走一步,即
于是有 Fi+1 = Fi -Ye
2.若沿+y向走一步,即
于是有:Fi+1 = Fi +Xe
(二)終點(diǎn)判別的方法有兩種:
1.每走一步,判斷動(dòng)點(diǎn)P(xi, yi)的坐標(biāo)值是否與終點(diǎn)坐標(biāo)相同,即
Xi-Xe =0且 Yi-Ye=0
若兩式同時(shí)滿足,插補(bǔ)結(jié)束。
2.求程序段總步數(shù)n=Xe+Ye,每走一步,n-1->n,直到 n=0,插補(bǔ)結(jié)束。
知道方法,那程序如何編寫(xiě)呢?? 假如運(yùn)行至(4,3)坐標(biāo):
#include "XXOO.h" //頭文件(XXOO笑吧)
void main()
{ int xe,ye,f,j;
xe=4; ye=3; //把常數(shù)4寫(xiě)入變量xe;把常數(shù)3寫(xiě)入變量ye;
f=0; //把常數(shù)0寫(xiě)入f;
j=xe+ye; //讀出xe和ye的值,相加后結(jié)果寫(xiě)入j;
do {if (f>=0)
{if(ye>=xe) //判斷直線是否大于45度;
{cout<<"同時(shí)走+x,+y"< f=f+xe-ye; //讀出f、xe和ye的值,計(jì)算后結(jié)果寫(xiě)入f;
j=j-2;} //讀出j的值,減2后結(jié)果寫(xiě)入j;
else{cout<<"向+x走一步"< f=f-ye; j=j-1;}}
else {if (ye>xe)
{cout<<"向+y走一步"< f=f+xe; j=j-1;}
else {cout<<"同時(shí)走+x,+y"< f=f+xe-ye; j=j-2;}}}
while (j!=0);}
是不是很簡(jiǎn)呢?實(shí)際這個(gè)是理論上的.而真正的運(yùn)行是比這個(gè)復(fù)雜得多得多!!!!!!
此方法中只考慮到象限一,能不能用到四個(gè)象限之中呢??
對(duì)于第二象限,只要去| x |代替x即可,至于輸出驅(qū)動(dòng),應(yīng)使x軸步進(jìn)電機(jī)方向旋轉(zhuǎn),而y軸步進(jìn)電機(jī)仍為正向旋轉(zhuǎn)。
同理,第三、四象限的直線也可以變換到第一象限。插補(bǔ)運(yùn)算時(shí),取| x |和| y |代替x、y。輸出驅(qū)動(dòng)原則是:在第三象限,點(diǎn)在直線上方,向-y方向步進(jìn);點(diǎn)在直線下方,想-x方向步進(jìn)。在第四象限,點(diǎn)在直線上方,想-y方向步進(jìn);點(diǎn)在直線下方,想+x方向步進(jìn)。4個(gè)象限各軸插補(bǔ)運(yùn)動(dòng)方向如上圖所示。由圖中看出,F(xiàn)>=0時(shí),都是在x方向步進(jìn),不管+x向還是-x向,| x |增大。走+x或-x可由象限標(biāo)志控制,第一、第四象限走+x,第二、三象限走-x。同樣,F(xiàn)<0時(shí),總是走y方向,不論-y向還是+y向,| y |增大。走+y或-y由象限標(biāo)志控制,第一、二象限走+y,第三、四象限走-y。
假如再加兩軸Z+Z-,A+A-,那么問(wèn)題就大條了.所考慮到的就不是簡(jiǎn)簡(jiǎn)單單的比較了,更別說(shuō)加上速度限定了.
看來(lái)"比較法"只能算是初等的算法了,有沒(méi)有更加高明的手段或算法呢?
-
控制器
+關(guān)注
關(guān)注
112文章
16444瀏覽量
179075 -
步進(jìn)電機(jī)
+關(guān)注
關(guān)注
151文章
3120瀏覽量
147749 -
CNC系統(tǒng)
+關(guān)注
關(guān)注
0文章
16瀏覽量
6295 -
Mach3
+關(guān)注
關(guān)注
0文章
13瀏覽量
4334
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論