前兩篇我們知道了,MACH3的加速度參數(shù)之間的關(guān)系,那如何用數(shù)學(xué)公式做出分散的與加速度有關(guān)的時間間隔點呢???
我們知道一個物體的加速度有下面幾個公式
V=V0+AT;
S=V0 T+1/2(A (T^2));
當(dāng)V0為0時,則:
V=A*T;
S=1/2*(A*(T^2));
這幾個公式都是在連續(xù)的時間段時的公式,但CNC只能按步來控制,也就是說這控制時間上時間是分散的,隔離的.
步進加速度分散點如下所示:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
---------加速----------勻速---------減速-------------
從開始速度最小加速到速度最大(加速),后按最大速度運行(勻速),又從速度最大是降速到速度最小時(減速),每次的時隔不一,
這個怎才能算出來的呢??
推論:
常量:
Steps.per 每mm單位的步值
F 速度
A 加速度
加速到最高速時所用到的參數(shù):
Nm 所用的脈沖數(shù)量
fmax 最大時速時的頻率(HZ)
Tmax 最大時間
加速到最高速時的頻率: fmax= (F/60)*(Steps.per)
加速到最高速時所用到的脈個數(shù): Nm=(fmax*Tm)/2
加速到最高速時所用時間: Tmax =(F/60)/A
加速到最高速時所用脈沖個數(shù): Nmax = (fmax*Tmax)/2
由前幾個公式推出分散點n所要時間與參數(shù)之間的關(guān)系:
Tn^2= (2Tmaxn)/fmax;
Tn= sqrt((2Tmaxn)/fmax);
理論有了,現(xiàn)在就按這個思路寫出程序:
<<預(yù)處理梯型加速時間表>> ******
因為運算中有開根號與雙精度運算,每次所調(diào)用的時間很大,為了提供更大的空間給插補運算,
所以提前在程序頭中算好所需的時間,填入時間表中
但請注意,這里所需的內(nèi)存很大,不過為了運行時間,這個還是值的.
#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; //因為算出來為秒,但在程序中用秒為時間單位會太大,所以就換成微秒
Tn_z= sqrt((2*Tm*i)/Fm)*1000000;
}
本來是想做到運算器程序里,因本人圖個快捷,就電子表格生成一個:
把時間間隔倒數(shù)后導(dǎo)入到電子表格中生成如下加速曲線表
這樣更直觀地反應(yīng)參數(shù)之間的關(guān)系
-
運算器
+關(guān)注
關(guān)注
1文章
164瀏覽量
16706 -
加速度計
+關(guān)注
關(guān)注
6文章
709瀏覽量
46466 -
CNC系統(tǒng)
+關(guān)注
關(guān)注
0文章
16瀏覽量
6376 -
Mach3
+關(guān)注
關(guān)注
0文章
13瀏覽量
4465
發(fā)布評論請先 登錄
相關(guān)推薦
怎樣用市面上賣的20元左右的接口卡 連接臺達伺服驅(qū)動器
mach3雕銑創(chuàng)建
如何將電機驅(qū)動器與光隔離輸入連接
深入Mach3內(nèi)核(中文)

MACH3軟件輸入設(shè)置

mach3安裝和設(shè)置

如何為mach3 bsmce04u連接傳感器LJ12A3 4Z/BX

評論