前兩篇我們知道了,MACH3的加速度參數(shù)之間的關(guān)系,那如何用數(shù)學(xué)公式做出分散的與加速度有關(guān)的時(shí)間間隔點(diǎn)呢???
我們知道一個(gè)物體的加速度有下面幾個(gè)公式
V=V0+AT;
S=V0 T+1/2(A (T^2));
當(dāng)V0為0時(shí),則:
V=A*T;
S=1/2*(A*(T^2));
這幾個(gè)公式都是在連續(xù)的時(shí)間段時(shí)的公式,但CNC只能按步來(lái)控制,也就是說(shuō)這控制時(shí)間上時(shí)間是分散的,隔離的.
步進(jìn)加速度分散點(diǎn)如下所示:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
---------加速----------勻速---------減速-------------
從開(kāi)始速度最小加速到速度最大(加速),后按最大速度運(yùn)行(勻速),又從速度最大是降速到速度最小時(shí)(減速),每次的時(shí)隔不一,
這個(gè)怎才能算出來(lái)的呢??
推論:
常量:
Steps.per 每mm單位的步值
F 速度
A 加速度
加速到最高速時(shí)所用到的參數(shù):
Nm 所用的脈沖數(shù)量
fmax 最大時(shí)速時(shí)的頻率(HZ)
Tmax 最大時(shí)間
加速到最高速時(shí)的頻率: fmax= (F/60)*(Steps.per)
加速到最高速時(shí)所用到的脈個(gè)數(shù): Nm=(fmax*Tm)/2
加速到最高速時(shí)所用時(shí)間: Tmax =(F/60)/A
加速到最高速時(shí)所用脈沖個(gè)數(shù): Nmax = (fmax*Tmax)/2
由前幾個(gè)公式推出分散點(diǎn)n所要時(shí)間與參數(shù)之間的關(guān)系:
Tn^2= (2Tmaxn)/fmax;
Tn= sqrt((2Tmaxn)/fmax);
理論有了,現(xiàn)在就按這個(gè)思路寫出程序:
<<預(yù)處理梯型加速時(shí)間表>> ******
因?yàn)檫\(yùn)算中有開(kāi)根號(hào)與雙精度運(yùn)算,每次所調(diào)用的時(shí)間很大,為了提供更大的空間給插補(bǔ)運(yùn)算,
所以提前在程序頭中算好所需的時(shí)間,填入時(shí)間表中
但請(qǐng)注意,這里所需的內(nèi)存很大,不過(guò)為了運(yùn)行時(shí)間,這個(gè)還是值的.
#define Steps_per 320
#define Steps_mms 1200 //速度 MM/分鐘
#define Steps_A 120
u16 Fmax(u16 Steps_mms_s,u16 Steps_per_s)
{
return (Steps_mms_s/60)*Steps_per_s;
}
double Tmax(u16 Steps_mms_s, u16 Steps_A_s)
{
return (double)(Steps_mms_s/60)/Steps_A_s;
}
u16 Nmax(u16 Fmax,double Tmax)
{
return Fmax * Tmax/2;
}
Fm = Fmax(Steps_mms,Steps_per);
Tm = Tmax(Steps_mms,Steps_A);
Nm= Nmax(Fmax(Steps_mms,Steps_per),Tmax(Steps_mms,Steps_A));
for(i=0;i {
Tn=(sqrt((2*Tm*i)/Fm)*1000000)-Tn_z; //因?yàn)樗愠鰜?lái)為秒,但在程序中用秒為時(shí)間單位會(huì)太大,所以就換成微秒
Tn_z= sqrt((2*Tm*i)/Fm)*1000000;
}
本來(lái)是想做到運(yùn)算器程序里,因本人圖個(gè)快捷,就電子表格生成一個(gè):
把時(shí)間間隔倒數(shù)后導(dǎo)入到電子表格中生成如下加速曲線表
這樣更直觀地反應(yīng)參數(shù)之間的關(guān)系
-
運(yùn)算器
+關(guān)注
關(guān)注
1文章
163瀏覽量
16584 -
加速度計(jì)
+關(guān)注
關(guān)注
6文章
704瀏覽量
45929 -
CNC系統(tǒng)
+關(guān)注
關(guān)注
0文章
16瀏覽量
6290 -
Mach3
+關(guān)注
關(guān)注
0文章
13瀏覽量
4328
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論