時(shí)間:2006-11-15 15:31:00來源:lvjing
圖1 主從機(jī)數(shù)據(jù)交換示意
GT400-SV運(yùn)動(dòng)控制卡在雙端口RAM的基礎(chǔ)上提供了緩沖區(qū)命令機(jī)制,用戶能夠先將部分運(yùn)動(dòng)控制指令存放在運(yùn)動(dòng)控制器內(nèi)部開辟的循環(huán)隊(duì)列命令緩沖區(qū)內(nèi),然后發(fā)出執(zhí)行命令。在運(yùn)動(dòng)控制器執(zhí)行緩沖區(qū)內(nèi)存放的運(yùn)動(dòng)指令的同時(shí),主機(jī)能夠繼續(xù)向緩沖區(qū)內(nèi)下載運(yùn)動(dòng)指令,這樣進(jìn)一步降低了對主機(jī)通訊的實(shí)時(shí)性要求,同時(shí)運(yùn)動(dòng)控制器通過預(yù)處理多段緩沖區(qū)內(nèi)的軌跡信息,能夠獲得良好的運(yùn)動(dòng)特性,使軌跡更連貫光滑。
2.2 試驗(yàn)平臺(tái)結(jié)構(gòu)(如圖2所示)
圖2 實(shí)驗(yàn)平臺(tái)結(jié)構(gòu)
3 軟件系統(tǒng)結(jié)構(gòu)規(guī)劃及實(shí)現(xiàn)
3.1 軟件總體層次[/B]
該數(shù)控系統(tǒng)能夠正常工作,其系統(tǒng)軟件包括上位機(jī)端的CNC用戶應(yīng)用程序、上下位機(jī)進(jìn)行通訊的通訊驅(qū)動(dòng)程序。其中通訊程序的開發(fā)工作量最大、最困難、也最具有技巧性,需要對下位機(jī)的通訊結(jié)構(gòu)及微軟的WDM有充分了解。GT400-SV隨卡提供了win98/2000下的設(shè)備驅(qū)動(dòng)程序PHDIO.SYS,同時(shí)提供了面向運(yùn)動(dòng)控制卡的高級函數(shù)庫GTSVDLL.DLL,用戶通過主機(jī)程序調(diào)用相應(yīng)的庫函數(shù),將運(yùn)動(dòng)控制器相關(guān)參數(shù)和運(yùn)動(dòng)軌跡描述傳遞給運(yùn)動(dòng)控制器,也就是發(fā)出運(yùn)動(dòng)控制命令,運(yùn)動(dòng)控制器將根據(jù)主機(jī)的要求,自動(dòng)完成軌跡規(guī)劃、安全檢測、伺服刷新等復(fù)雜運(yùn)算,計(jì)算結(jié)果轉(zhuǎn)換成模擬電壓或脈沖控制電機(jī)運(yùn)動(dòng),用戶無須編寫通訊程序,并從32位驅(qū)動(dòng)庫中解脫出來,將全部精力用于定義和開發(fā)自己的CNC系統(tǒng)應(yīng)用程序。本系統(tǒng)的軟件層次關(guān)系如圖3所示。
圖3 軟件總體層次
本系統(tǒng)的開放性主要體現(xiàn)在兩個(gè)方面:一方面,控制卡核心對外開放,系統(tǒng)開發(fā)商可改進(jìn)運(yùn)動(dòng)控制卡中的運(yùn)動(dòng)控制算法,通過編程器和下載器下載到控制卡的K2ROM中,以針對具體的控制對象優(yōu)化算法,提高系統(tǒng)性能。另一方面,上位機(jī)數(shù)控平臺(tái)對控制卡、CAD/CAM系統(tǒng)、數(shù)控機(jī)床開放。前者的開放性主要體現(xiàn)在對運(yùn)動(dòng)控制卡底層性能特性的控制能力,是以控制卡的物理結(jié)構(gòu)(E2ROM)為基礎(chǔ)的。而后者的開放性體現(xiàn)在數(shù)控平臺(tái)對硬件設(shè)備的兼容性、通用性、可定制性,對CAD/CAM軟件的銜接能力以及數(shù)控平臺(tái)各功能模塊的可復(fù)用性,這主要通過合理規(guī)劃軟件功能,選擇先進(jìn)的軟件體系結(jié)構(gòu)來實(shí)現(xiàn)。
微軟的COM及DCOM是目前比較成熟并已得到廣泛應(yīng)用的組件接口標(biāo)準(zhǔn),通過定義統(tǒng)一的操作規(guī)范,用戶不再直接和軟件模塊的功能函數(shù)接觸,COM規(guī)范作為中介,接口屏蔽了模塊內(nèi)部的特征,從而實(shí)現(xiàn)了模塊在二進(jìn)制級的交互。具體的講COM是通過定義的虛函數(shù)表(Vtable)以及雙重指針來實(shí)現(xiàn)的,這種方法具有優(yōu)異的二進(jìn)制級軟件可重用性,良好的語言無關(guān)性,可以實(shí)現(xiàn)組件跨進(jìn)程、跨平臺(tái)甚至網(wǎng)絡(luò)范圍內(nèi)的互操作。本文對使用COM規(guī)范定義開發(fā)基于運(yùn)動(dòng)控控制卡的數(shù)控系統(tǒng)軟件模塊做了一些有益的嘗試,將COM作為軟件的底層結(jié)構(gòu)支持。軟件結(jié)構(gòu)如圖4所示。
圖4 軟件結(jié)構(gòu)
3.2 主要模塊間數(shù)據(jù)結(jié)構(gòu)的定義
3.2.1 數(shù)控代碼信息
定義了完整的數(shù)控信息,從數(shù)控程序段中提取的數(shù)控位置信息、運(yùn)動(dòng)信息、I/O被填入該結(jié)構(gòu)。
typedef struct{
CString title;//程序名稱
int Num;//程序段號
int GG00;//00組G代碼
……
int GG15;//15組G代碼
int GM00;//00組M代碼
……
int GM10;//10組M代碼
int T;//刀具號
double S;//主軸轉(zhuǎn)速
double F;//進(jìn)給速率
double R;//圓弧插補(bǔ)半徑,固定循環(huán)參數(shù)
double Q;//固定循環(huán)參數(shù)
double P;//固定循環(huán)參數(shù)
double X;//基本尺寸
double Y;
double Z;
double I;//圓弧插補(bǔ)圓心坐標(biāo)(相對)
double J;
double K;
}CODEINFO;
3.2.2 運(yùn)動(dòng)控制卡信息
主要定義了運(yùn)動(dòng)控制卡可配置部分的參數(shù)。
tvoedef struct {
double RefPointX;//系統(tǒng)參考點(diǎn)
double RefPointY;
double RefPointZ;
double RefPointA;
double ServoCycle;//伺服周期
AxisMapX;//軸映射
AxisMapY;
AxisMapZ;
AxisMapA;
unsigned short LimitSense;//限位電平
unsigned short DSns;//編碼器方向
unsigned long iN;//中斷號
unsigned long PortBase;
structAxislnfo//軸參數(shù)
{
double AxisMap[5];
unsignedshort Kx[5];
unsigned short ILmt;
unsigned short MtrLmt;
short MtrBias;
unsigned short PosErr;
double AccLnt;
}Axis[4];
}CARDINFO。
3.2.3 數(shù)控系統(tǒng)信息主要定義了數(shù)控系統(tǒng)的結(jié)構(gòu)參數(shù),支持的數(shù)控代碼表,實(shí)際的驅(qū)動(dòng)能力。該結(jié)構(gòu)為譯碼模塊和控制卡函數(shù)調(diào)用模塊提供規(guī)則,譯碼模塊依據(jù)系統(tǒng)信息及譯碼規(guī)則填充數(shù)控代碼信息結(jié)構(gòu)并輸出錯(cuò)誤信息。
typedef struct {
bool G00,G01,G02,G03,……,G99;//支持的G代碼
bool M00,M01,M02,M03,……,M99;//支持的M代碼
double Xmin,Xmax,Ymin,Ymax,Zmin,Zmax;//平臺(tái)結(jié)構(gòu)參數(shù)(軟限位)
double Smin,Smax;//主軸轉(zhuǎn)速限制
double Fmin,F(xiàn)max;//進(jìn)給速率限制
double FF;//快速進(jìn)給限制
int plusEqual;//驅(qū)動(dòng)電機(jī)脈沖當(dāng)量
double synAcc;//合成運(yùn)動(dòng)速度限制
double ServoCycle;//伺服周期
int AxisNm;//軸數(shù)
struct Tool//刀具參數(shù)
{
double Lenth;
double Ratio;
int index;
} tool[20];
} CODEPERMIT;
3.2.4 錯(cuò)誤信息
typedef struct {
Cstring title;//程序名稱
UINT line;//出錯(cuò)程序段
UINT ErrorType;//錯(cuò)誤號
}ERROR;//傳遞數(shù)控代碼解釋過程中識
別的錯(cuò)誤
3.3 數(shù)控流程分析
限于篇幅各模塊的實(shí)現(xiàn)沒有一一列出,以下僅對主要數(shù)控程序流程及實(shí)現(xiàn)作大致說明。
3.3.1 系統(tǒng)配置模塊
系統(tǒng)配置模塊包括運(yùn)動(dòng)控制卡參數(shù)配置和機(jī)床參數(shù)配置,前者包括控制卡的伺服濾波、軸映射、編碼器、限位、誤差限等參數(shù)的設(shè)置,這些參數(shù)位于底層,直接決定了系統(tǒng)的性能。后者定義的是機(jī)床的結(jié)構(gòu)參數(shù)、刀具參數(shù)和支持的數(shù)控指令集,包含了機(jī)床的全部特征,這部分參數(shù)主要影響了后續(xù)數(shù)控譯碼過程。用戶通過界面對上述參數(shù)進(jìn)行設(shè)置,形成配置文件card.ini和sys.ini保存于硬盤,當(dāng)系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載。
圖5 系統(tǒng)參數(shù)配置 圖6 控制卡參數(shù)配置
3.3.2 譯碼模塊
譯碼模塊根據(jù)數(shù)控代碼一般規(guī)則和機(jī)床特征將指令文本翻譯成數(shù)控信息流,其中主要涉及到G代碼M代碼的分組處理、模態(tài)代碼的處理、如何定制數(shù)控代碼規(guī)則等問題,若考慮到后續(xù)刀補(bǔ)處理則還應(yīng)給出上兩段代碼的坐標(biāo)以解決進(jìn)行C刀補(bǔ)時(shí)插補(bǔ)段增加的情況。因?yàn)閿?shù)控程序不是定長的,所以要求用動(dòng)態(tài)數(shù)組來存儲(chǔ)CODEINFO結(jié)構(gòu),在這里使用了MFC的CArray類,它可以很方便地管理操作數(shù)組元素,定義如下:CArray
圖7 數(shù)控系統(tǒng)主界面
5 系統(tǒng)運(yùn)行主界面
6 結(jié)束語
本文以固高GT400-SV運(yùn)動(dòng)控制卡為例構(gòu)筑了一個(gè)上下位機(jī)形式的開放式數(shù)控平臺(tái),其對基于運(yùn)動(dòng)控制卡的開放式數(shù)控系統(tǒng)具有一定的通用性,系統(tǒng)采用功能強(qiáng)大的運(yùn)動(dòng)控制卡完成插補(bǔ)計(jì)算、位置控制、速度控制等實(shí)時(shí)任務(wù),以PC機(jī)實(shí)現(xiàn)友好的人機(jī)界面、靈活的系統(tǒng)配置、增強(qiáng)的外部軟件接口,采用基于COM的模塊式軟件結(jié)構(gòu),實(shí)踐證明這種形式的系統(tǒng)具有較強(qiáng)的控制性能,實(shí)現(xiàn)了軟硬件的開放性和模塊的二進(jìn)制復(fù)用,適合構(gòu)建各種通用及專用數(shù)控系統(tǒng),本系統(tǒng)的改型系統(tǒng)已應(yīng)用于一印制板鉆床。
標(biāo)簽:
傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動(dòng)網(wǎng)(surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
相關(guān)資訊
產(chǎn)品新聞
更多>2025-10-31
勇梅機(jī)械液壓閘門給煤機(jī)的優(yōu)點(diǎn)
2025-10-22
2025-10-17
2025-10-11
「一體機(jī)性價(jià)比王者」NK290M普及型數(shù)控...
2025-10-09
2025-09-23