嵌入式數(shù)控系統(tǒng)軟件總體設(shè)計(jì)研究
點(diǎn)擊:1393
A+ A-
所屬頻道:新聞中心
一、嵌入式軟件開發(fā)方式
絕大多數(shù)的Linux或軟件開發(fā)都是以native方式進(jìn)行的,即本機(jī)開發(fā)、調(diào)試,本機(jī)的方式二這種方式通常不適合于嵌入式系統(tǒng)的軟件開發(fā),囚為對于嵌入式系統(tǒng)的開發(fā),沒有足資源在本機(jī)(即板子上系統(tǒng))運(yùn)行開發(fā)工具和調(diào)試工具。通常的嵌入式系統(tǒng)的軟件開發(fā)采用交又編譯調(diào)試的方式。簡單的說,交叉編譯就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼,如在x86的YC機(jī)上生成ARM平臺的可執(zhí)行代碼。
交又編譯調(diào)試環(huán)境建立在宿主機(jī)(即一臺PC機(jī))上,對應(yīng)的開發(fā)板叫做目標(biāo)板開發(fā)時使用宿主機(jī)上的交叉編譯,匯編及連接工具形成可執(zhí)行的二進(jìn)制代碼,(這種可執(zhí)行并不能在宿主機(jī)上執(zhí)行、而只能在目標(biāo)板上執(zhí)行、3然后把可執(zhí)行文件下載到目標(biāo)機(jī)上運(yùn)行交又開發(fā)技術(shù)己成為嵌入式軟件開發(fā)的主要方式。其開發(fā)步驟如下,在宿主機(jī)平臺上面編寫程序代碼;)使宿主機(jī)與目標(biāo)機(jī)連接,如使用交叉網(wǎng)線;使用交叉編譯器等工具編譯、連接應(yīng)用程序,生成可執(zhí)行代碼:目標(biāo)機(jī)掛載如(mount)宿主機(jī)的方式f或?qū)⒖蓤?zhí)行代碼下載到目標(biāo)機(jī),:開發(fā)人員使用交又調(diào)試器進(jìn)行調(diào)試:如果程序調(diào)試沒有發(fā)現(xiàn)異常,則轉(zhuǎn)至第(10)步:調(diào)試程序時發(fā)現(xiàn)錯誤,則利用交叉調(diào)試器定位錯誤:修改錯誤代碼:重復(fù)(3)-(9)步;將目標(biāo)機(jī)程序固化至目標(biāo)機(jī)上。
二、數(shù)控系統(tǒng)軟件任務(wù)研究
控軟件的功能大致可分為兩種甲一種是控制功能,另一種是管理功能。其中,管理功能包括信息的輸入功能、輸出輸入輸出的處理功能、顯示功能和診斷功能,控制功能包括譯碼功能、刀具補(bǔ)償功能、速度控制功能、和位置控制功能。
從任務(wù)的特征來奢,與通用實(shí)時系統(tǒng)相比甲數(shù)控系統(tǒng)有以下特點(diǎn):
數(shù)控系統(tǒng)是一個混合任務(wù)系統(tǒng),其任務(wù)按是否具有實(shí)時性要求和周期性要求可分為:實(shí)時周期性任務(wù)、實(shí)時突發(fā)性任務(wù)和非實(shí)時任務(wù)。實(shí)時周期性任務(wù)是指嚴(yán)格以定長時間間隔定時觸發(fā),井且在規(guī)定的時間內(nèi)必須完成處理的任務(wù)‘在數(shù)控系統(tǒng)中主要指加工過程中的插補(bǔ)控制、位置控制、數(shù)據(jù)采樣等需快速響應(yīng)的機(jī)床邏輯狀態(tài):實(shí)時突發(fā)性任務(wù)的發(fā)生是時間的隨機(jī)函數(shù),要求有很高的實(shí)時性,它包括機(jī)床緊急停止、系統(tǒng)故障中斷等:非實(shí)時性任務(wù)是指實(shí)時性要求很低的任務(wù)1如:人機(jī)界面監(jiān)控,這類任務(wù)對千機(jī)床運(yùn)行和加工質(zhì)量的影響較小,其主要作用是讓操作者了解機(jī)床運(yùn)行狀況,增強(qiáng)機(jī)床的易操作性。
任務(wù)之間具有相關(guān)性。數(shù)控系統(tǒng)的實(shí)時任務(wù)除了自身的時限要求以外,任務(wù)之間通常也不是完全獨(dú)立的,一般存在時序約束、資源約束等約束關(guān)系。
系統(tǒng)在某一確定時刻的并發(fā)任務(wù)數(shù)量不多,與通用實(shí)時操作系統(tǒng)不同,數(shù)控系統(tǒng)的功能單一、因此調(diào)度程序幾乎不需要處理較大數(shù)量的并發(fā)任務(wù)。
三、需求分析
數(shù)控控制系統(tǒng)通過良好的人機(jī)交互界面,完成顯示工作狀態(tài)、操作人員進(jìn)行參數(shù)設(shè)定等任務(wù),主要有以下幾個方面的綜合合要求。
系統(tǒng)界面要求:圖形用戶界面可以實(shí)時顯示加工狀態(tài)、當(dāng)前時間、開機(jī)時間、加工時間、各個軸的坐標(biāo)位置,正在運(yùn)行的關(guān)鍵G代碼程序段等信息;
系統(tǒng)功能要求:操作人員可以在符合國際標(biāo)準(zhǔn)的條件下無需了解嵌入式數(shù)拄系統(tǒng)的專用編程代碼,直接使用符合國際標(biāo)準(zhǔn)的G代碼和h4代碼,即可編制數(shù)控程序;
系統(tǒng)的運(yùn)行要求:操作人員可以根據(jù)需要點(diǎn)擊觸摸屏和鍵盤或機(jī)床面板按鈕.隨時監(jiān)控數(shù)控系統(tǒng)的工作狀態(tài):還可以通過參數(shù)設(shè)置實(shí)現(xiàn)對電機(jī)的控制,如電機(jī)的啟停,正反轉(zhuǎn)等等;
異常處理要求:在正常生產(chǎn)條件下,每天運(yùn)行16小時,數(shù)控系統(tǒng)的無故障率P(t)≥90%。這要求其MTBF值數(shù)控系統(tǒng)的平均無故障時間,是衡量可靠性的重要指標(biāo))大于3萬時;在硬件不受損壞的情況下,系統(tǒng)軟件要有較強(qiáng)的容錯能力。
未來可能提出的擴(kuò)展要求:如能實(shí)現(xiàn)遠(yuǎn)程的聯(lián)網(wǎng)控制、故障自診斷等、加工仿真、重要數(shù)據(jù)的備份、中英文界面切換等。
把上述提出的直觀需求轉(zhuǎn)化為具體的軟件功能需求,即為:
完成電機(jī)的啟動,制動和換向控制,實(shí)現(xiàn)加工過程中的主軸、近給速度實(shí)時1}整‘實(shí)規(guī)六軸的高精度聯(lián)動,并通過插補(bǔ)1完成工件的加工、磨削;在能夠滿足一定精度的前提下.實(shí)現(xiàn)自由曲線的粗插補(bǔ)取精插補(bǔ):
圖形用戶界面要求:實(shí)現(xiàn)參數(shù)的圖形菜單輸入,加工過程的仿真,并實(shí)時顯示加工圖形和各軸坐標(biāo)值,用戶可以通過觸摸屏和鍵盤進(jìn)行參數(shù)設(shè)置.實(shí)現(xiàn)對電機(jī)得的控制:實(shí)現(xiàn)1司服信號、開關(guān)量信號、和輔助信號的宏指令控制,且符合G代碼和M代碼功能定義。
實(shí)現(xiàn)各功能電路的PI,C控制.包括機(jī)床面板功能實(shí)現(xiàn)1主軸的起停、自動潤渭控制以及過載、超載、碰撞、掉電等緊急情況的處理。
為了方便用戶操作,還應(yīng)提供操作提示和幫助文檔‘同時,系統(tǒng)具有一定的拉千擾能力,即使受到干擾使系統(tǒng)控制失靈或程序運(yùn)行異常時.也能夠從錯誤或故障中恢復(fù),保證系統(tǒng)的正常工作。
從以上功能需求分析得知,一個功能滿足六軸數(shù)控磨削系統(tǒng)基本需要的系統(tǒng),必須包括以下幾個模塊:電機(jī)控制、圖形界面、譯碼、PLC、CAN通訊、硬件驅(qū)動等。
四、模塊劃分
模塊劃分的一條原則是盡量降低軟件模塊間的禍合度,高禍合度的系統(tǒng)是很難維護(hù)的一處的修改引起另一處甚至更多處的變動二藕合度低的軟件可以很容易被重用、維護(hù)和擴(kuò)充。另一條原則是提高軟件的內(nèi)聚性,如果一個軟件的模塊只實(shí)現(xiàn)一個功能,那么該模塊具有高內(nèi)聚性。高內(nèi)聚性的軟件更容易維護(hù)和改進(jìn)。判斷一個模塊是否有高的內(nèi)聚性,是看能否用一個簡單的句子描述它的功能。如果用了一段話或者需要使用類似“和”,“或”等連詞,則說明需要將該模塊細(xì)化。只有高內(nèi)聚性的模塊才可能被重用遵循上述原則,將系統(tǒng)軟件劃分為如圖1所示的子模塊。
嵌入式操作系統(tǒng)是嵌入式系統(tǒng)的靈魂,它的出現(xiàn)大大提高了嵌入式系統(tǒng)開發(fā)的效率,減少了系統(tǒng)開發(fā)的總工作量,而且提高了嵌入式應(yīng)用軟件的可移植性。
本系統(tǒng)采用了嵌入式操作系統(tǒng):Linux,系統(tǒng)各模塊在Linux的統(tǒng)一控制管理下有效的協(xié)調(diào)的工作。由圖1可知,本系統(tǒng)軟件主要由以下幾個功能。
設(shè)備驅(qū)動模塊、譯碼模塊、圖形界面模塊等。這些模塊在操作系統(tǒng)的管理調(diào)度下協(xié)調(diào)一致的運(yùn)行。
五、軟件初始化及總程序流程
本系統(tǒng)采用s3c2410 (ARM 9核)作為控制核心,在用戶的應(yīng)用程序之前,需要有一些專門的代碼完成對系統(tǒng)的初始化。由于這類代碼直接面對A RM。處理器內(nèi)核和硬件控制器,一般都使用匯編語言完成。系統(tǒng)上電或復(fù)位后程序從位于地址0*0的Reset Exception Vector處開始執(zhí)行這里放置Boutloader的第一條指令:bResetHandler).跳轉(zhuǎn)到標(biāo)號為Resetll and ler處進(jìn)行第一階段的硬件初始化,主要內(nèi)容為:關(guān)看門狗定時器,關(guān)中斷甲初始化PLL和時鐘初始化存儲器系統(tǒng);執(zhí)行完以上程序后,系統(tǒng)進(jìn)行堆棧和存儲器的初始化二系統(tǒng)堆棧初始化取決于用戶使用了哪些中斷,以及系統(tǒng)需要處理哪些錯誤類型。一般情況下,管理者堆棧必須設(shè)置,如果使用了IRQ中斷,則IRQ堆棧也必須設(shè)置如果系統(tǒng)使用了外設(shè)則需要設(shè)置相關(guān)的寄存器,以確定其刷新頻率、總線寬度等信息。然后是初始化有特殊要求的端口和設(shè)備,初始化應(yīng)用程序的運(yùn)行環(huán)境最后是調(diào)用主應(yīng)用程序: MPORTCT_Entry ...... B C_Entry
數(shù)控系統(tǒng)的應(yīng)用程序初始化流程如圖2所示。
系統(tǒng)初始化以后,程序的大體流程為:首先加載G/M代碼解釋器、初始化參數(shù)然后創(chuàng)建人機(jī)界面G/M代碼經(jīng)解釋后,再調(diào)用響應(yīng)的例程完成I/O控制、插補(bǔ)、位置控制等.最后調(diào)用底層硬件的控制例程,完成對電機(jī)的控制。
(審核編輯: 智匯張瑜)
分享