基于ARM的橡塑機械雙層網(wǎng)絡(luò)設(shè)計
3.1 系統(tǒng)軟件設(shè)計
本設(shè)計采用外部中斷EINT3連接MCP2510的總中斷,配置控制器始終處于喚醒模式,發(fā)送器處于正常模式,并使能接收、發(fā)送、錯誤中斷,以中斷方式處理CAN總線數(shù)據(jù)收發(fā)。具體流程如圖3所示。
對中斷的處理主要包括以下三種模式:
(1)發(fā)送處理。在滿足下述兩種條件時會啟動發(fā)送處理:其一發(fā)送中斷響應(yīng)中,如果當前有發(fā)送任務(wù),通過發(fā)送緩沖區(qū)記錄標志確定空的發(fā)生緩沖區(qū)并向其中填發(fā)送幀,然后啟動發(fā)送;其二在接收中斷響應(yīng)中,在接收處理完后如果有發(fā)送任務(wù)且有發(fā)送緩沖區(qū)空閑,同樣會處理發(fā)送任務(wù)。采用兩種發(fā)送處理方式可充分利用MCP2510的多個發(fā)送、接收緩沖區(qū),以提高通信效率。
(2)接收處理。首先需根據(jù)ICOD的值來確定當前準備好數(shù)據(jù)的接收緩沖區(qū)。接收幀處理過程中首先讀取幀的ID值,確定當前幀的數(shù)據(jù)是哪個節(jié)點發(fā)送來的,并據(jù)此把幀中數(shù)據(jù)字段的數(shù)據(jù)存放在相應(yīng)的位置。
(3)錯誤處理。由于引起錯誤處理的原因很多,在產(chǎn)生錯誤中斷之后,需訪問錯誤標志寄存器確定具體錯誤類型,并據(jù)此做相應(yīng)的處理。
最后在所有的處理中都需更新發(fā)送緩沖區(qū)使用記錄,以便于發(fā)送和接收中斷響應(yīng)中據(jù)此判斷發(fā)送緩沖區(qū)的使用情況,從而確定當前是否可以做發(fā)送處理。
3.2 應(yīng)用軟件設(shè)計
3.2.1 CAN服務(wù)器端設(shè)計
CAN服務(wù)器端需要完成兩大部分的工作。一是和底層控制器交互,二是處理并存儲好相應(yīng)的數(shù)據(jù),以提供給人機界面和WEB服務(wù)器使用。
CAN總線默認的調(diào)度方式為CAMA/CD協(xié)議,該協(xié)議原理比較簡單,技術(shù)上易實現(xiàn),網(wǎng)絡(luò)中各節(jié)點處于平等地位,不需集中控制,不提供優(yōu)先級控制。但在網(wǎng)絡(luò)負載增大時,發(fā)送時間增長,發(fā)送效率急劇下降,即會永遠優(yōu)先發(fā)送優(yōu)先級高的節(jié)點而阻塞優(yōu)先級低的節(jié)點,因此考慮到對該協(xié)議進行改進。為了自定義協(xié)議,因此我們的CAN數(shù)據(jù)采用了擴展幀。
針對橡塑機械需要的通信數(shù)據(jù)類型設(shè)計了如下的通信協(xié)議。主要具備以下幾點特點:
(1)下位機根據(jù)仲裁段優(yōu)先級來確定該段數(shù)據(jù)的優(yōu)先級;
(2)優(yōu)先級的分配由服務(wù)器端進行,讀取初始化配置文件(包括節(jié)點編號和優(yōu)先級碼兩個部分)+頁面設(shè)定;
(3)優(yōu)先級根據(jù)傳輸數(shù)據(jù)的截止時間決定(DM)。要求的時間越短,其優(yōu)先級越高。
(4)通信數(shù)據(jù)的命令格式如圖4所示,其中所有字節(jié)均為ASCII字符。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論