基于ARM設(shè)計(jì)的嵌入式數(shù)控系統(tǒng)方案
3 軟件設(shè)計(jì)
31人機(jī)交互與G代碼解釋
人機(jī)交互界面如圖3所示。陔界面是用QT/Embedded嵌人式罔形庫(kù)設(shè)計(jì)的。QTEmbedded 是由-rroll—tech公司的嵌入式GUI開發(fā)T具,控件豐富,并且支持虛擬幀緩沖。通過(guò)該界面可以實(shí)現(xiàn)編輯G代碼,語(yǔ)法檢查、預(yù)覽加1 軌跡、與下位機(jī)通信等功能。
G代碼解釋的原理如同4所示。程序中定義了兩個(gè)數(shù)據(jù)結(jié)構(gòu)PreGCode和GCode分別用來(lái)保存語(yǔ)法檢查后的中間結(jié)果和數(shù)據(jù)分析后生成的G代碼類型、節(jié)點(diǎn)坐標(biāo)、圓弧半徑等數(shù)據(jù),供仿真和加工使用。
3.2CAN通信
本系統(tǒng)使用CAN控制器MCP2510完成CAN總線幀的發(fā)送和接收任務(wù)。通信數(shù)據(jù)分為命令幀和數(shù)據(jù)幀兩種。通信協(xié)議利用了CAN總線的29位擴(kuò)展標(biāo)識(shí)符保存了一些協(xié)議中必要的信息,如表1所示。由于CAN支持多主機(jī)和多從機(jī)模式,所以為源設(shè)備和目的設(shè)備地址分配了ID,以區(qū)分?jǐn)?shù)據(jù)的來(lái)源和目的地。數(shù)據(jù)幀的數(shù)據(jù)量較大,必須分批傳送,所以標(biāo)識(shí)符里還包含了數(shù)據(jù)包分組號(hào),用來(lái)排序。
系統(tǒng)使用中斷模式傳輸數(shù)據(jù),共開啟4項(xiàng)中斷,分別為錯(cuò)誤消極中斷、錯(cuò)誤報(bào)警中斷以及發(fā)送中斷和接收中斷。如果為前兩種中斷,程序?qū)?fù)位MCP2510芯片。如果為發(fā)送中斷,則表示發(fā)送完畢,程序?qū)⒅梦话l(fā)送中斷標(biāo)志位以通知主程序。如果為接收中斷,程序?qū)z查標(biāo)識(shí)符的ID28一ID21,判斷該幀的類型,然后根據(jù)幀的類型分別進(jìn)行處理。
3.3插補(bǔ)算法
SM5004芯片是斯邁迪公司的一款高性能運(yùn)動(dòng)控制FPGA芯片,能夠?qū)崿F(xiàn)4軸聯(lián)動(dòng),驅(qū)動(dòng)脈沖頻率高達(dá)5MPPS,插補(bǔ)精度高達(dá)0.5I SB,單次輸出脈沖數(shù)高達(dá)2G,支持4種插補(bǔ)模式:直線插補(bǔ)、圓弧插補(bǔ)、連續(xù)插補(bǔ)和位模式插補(bǔ)。
對(duì)于直線和圓弧,SM5004有自己的插補(bǔ)算法,只要提供終點(diǎn)坐標(biāo)、速度等插補(bǔ)所需的參數(shù),SM5004就能自動(dòng)完成插補(bǔ)。
位模式插補(bǔ)是把高位CPU計(jì)算的插補(bǔ)數(shù)據(jù)以數(shù)據(jù)包的方式接收后,以指定的驅(qū)動(dòng)速度連續(xù)輸出插補(bǔ)脈沖。位模式插補(bǔ)的原理是在每個(gè)寄存器上2軸或3軸的+/一方向驅(qū)動(dòng)脈沖設(shè)定為1位1脈沖,輸出驅(qū)動(dòng)脈沖時(shí)設(shè)定為1,不輸出脈沖時(shí)設(shè)定為0。位模式插補(bǔ)提供了一種靈活的插補(bǔ)機(jī)制,用戶可以自己編寫直線、圓弧、樣條曲線、函數(shù)曲線等各種曲線的插補(bǔ)算法。程序使用數(shù)字積分的方法實(shí)現(xiàn)了直線和二次曲線的插補(bǔ)。數(shù)字積分插補(bǔ)(又稱DDA插補(bǔ))的原理如圖5所示。通過(guò)將積分區(qū)間[a,b]分割成足夠小的區(qū)間△f,將函數(shù)y=f(t)的積分運(yùn)算變?yōu)樽兞康那蠛瓦\(yùn)算,即
數(shù)字運(yùn)算時(shí),At一般取最小單位“1”,即一個(gè)脈沖當(dāng)量,則:
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論