基于ARM的橡塑機(jī)械雙層網(wǎng)絡(luò)監(jiān)控器設(shè)計(jì)
2.2 以太網(wǎng)擴(kuò)展
以太網(wǎng)和CAN現(xiàn)場(chǎng)總線的集合,大大加速了工業(yè)控制集成化、信息化的進(jìn)度。采用了CS8900A芯片以完成以太網(wǎng)擴(kuò)展。其主要包括802.3介質(zhì)訪問(wèn)控制塊,支持全雙工操作,完全依照IEEE 802.3以太網(wǎng)標(biāo)準(zhǔn)(ISO/IEC8802-3,1993),負(fù)責(zé)處理有關(guān)以太網(wǎng)數(shù)據(jù)幀的發(fā)送和接收。
在硬件連接上,通過(guò)外部中斷EINT9來(lái)響應(yīng)通信,通過(guò)ADDR24以及其他片選讀寫(xiě)信號(hào)來(lái)控制網(wǎng)卡芯片的工作以及地址空間位置。
在收到由CPU發(fā)來(lái)的數(shù)據(jù)報(bào)后,CS8900A將開(kāi)始偵聽(tīng)網(wǎng)絡(luò)線路。如果線路忙,就等待線路空閑,否則立即發(fā)送數(shù)據(jù)。發(fā)送過(guò)程中,需要添加以太網(wǎng)幀頭,產(chǎn)生CRC校驗(yàn)碼,最后將此數(shù)據(jù)幀發(fā)送出去。接收數(shù)據(jù)時(shí),接收到數(shù)據(jù)幀后,還需要經(jīng)過(guò)解碼、剝除幀頭和地址檢驗(yàn)等步驟后存于CS8900A片內(nèi)的緩存區(qū)。并還需要通過(guò)CRC校驗(yàn),便會(huì)產(chǎn)生外部中斷,通知主機(jī)收到了數(shù)據(jù)幀,最后,再根據(jù)CPU的指令,將數(shù)據(jù)傳輸給CPU。
網(wǎng)絡(luò)的擴(kuò)展對(duì)于橡塑機(jī)械的整體化集成化管理起著極為關(guān)鍵的作用,作為一個(gè)高速、開(kāi)放的通信接口,網(wǎng)絡(luò)給系統(tǒng)帶來(lái)了很大的靈活性和可擴(kuò)展性。同時(shí),在監(jiān)控系統(tǒng)的調(diào)試過(guò)程中網(wǎng)絡(luò)也發(fā)揮著不可替代的作用。本文引用地址:http://m.butianyuan.cn/article/151741.htm
3 軟件系統(tǒng)設(shè)計(jì)
整個(gè)監(jiān)控器的軟件設(shè)計(jì)建立于嵌入式Linux操作系統(tǒng)的基礎(chǔ)之上,因此軟件設(shè)計(jì)分為系統(tǒng)軟件設(shè)計(jì)和應(yīng)用軟件設(shè)計(jì)兩大部分。系統(tǒng)軟件主要為對(duì)應(yīng)設(shè)備的驅(qū)動(dòng)程序設(shè)備,CS8900A為常用的典型網(wǎng)絡(luò)擴(kuò)展設(shè)備,已經(jīng)有既成的驅(qū)動(dòng)程序;而CAN總線擴(kuò)展則需要根據(jù)應(yīng)用中所需要的網(wǎng)絡(luò)協(xié)議來(lái)自定義實(shí)現(xiàn)。應(yīng)用軟件設(shè)計(jì)部分主要包括CAN服務(wù)器端的開(kāi)發(fā)和WEB Server的移植。
3.1 系統(tǒng)軟件設(shè)計(jì)
本設(shè)計(jì)采用外部中斷EINT3連接MCP2510的總中斷,配置控制器始終處于喚醒模式,發(fā)送器處于正常模式,并使能接收、發(fā)送、錯(cuò)誤中斷,以中斷方式處理CAN總線數(shù)據(jù)收發(fā)。具體流程如圖3所示。
對(duì)中斷的處理主要包括以下三種模式:
(1)發(fā)送處理。在滿(mǎn)足下述兩種條件時(shí)會(huì)啟動(dòng)發(fā)送處理:其一發(fā)送中斷響應(yīng)中,如果當(dāng)前有發(fā)送任務(wù),通過(guò)發(fā)送緩沖區(qū)記錄標(biāo)志確定空的發(fā)生緩沖區(qū)并向其中填發(fā)送幀,然后啟動(dòng)發(fā)送;其二在接收中斷響應(yīng)中,在接收處理完后如果有發(fā)送任務(wù)且有發(fā)送緩沖區(qū)空閑,同樣會(huì)處理發(fā)送任務(wù)。采用兩種發(fā)送處理方式可充分利用MCP2510的多個(gè)發(fā)送、接收緩沖區(qū),以提高通信效率。
(2)接收處理。首先需根據(jù)ICOD的值來(lái)確定當(dāng)前準(zhǔn)備好數(shù)據(jù)的接收緩沖區(qū)。接收幀處理過(guò)程中首先讀取幀的ID值,確定當(dāng)前幀的數(shù)據(jù)是哪個(gè)節(jié)點(diǎn)發(fā)送來(lái)的,并據(jù)此把幀中數(shù)據(jù)字段的數(shù)據(jù)存放在相應(yīng)的位置。
(3)錯(cuò)誤處理。由于引起錯(cuò)誤處理的原因很多,在產(chǎn)生錯(cuò)誤中斷之后,需訪問(wèn)錯(cuò)誤標(biāo)志寄存器確定具體錯(cuò)誤類(lèi)型,并據(jù)此做相應(yīng)的處理。
最后在所有的處理中都需更新發(fā)送緩沖區(qū)使用記錄,以便于發(fā)送和接收中斷響應(yīng)中據(jù)此判斷發(fā)送緩沖區(qū)的使用情況,從而確定當(dāng)前是否可以做發(fā)送處理。
3.2 應(yīng)用軟件設(shè)計(jì)
3.2.1 CAN服務(wù)器端設(shè)計(jì)
CAN服務(wù)器端需要完成兩大部分的工作。一是和底層控制器交互,二是處理并存儲(chǔ)好相應(yīng)的數(shù)據(jù),以提供給人機(jī)界面和WEB服務(wù)器使用。
CAN總線默認(rèn)的調(diào)度方式為CAMA/CD協(xié)議,該協(xié)議原理比較簡(jiǎn)單,技術(shù)上易實(shí)現(xiàn),網(wǎng)絡(luò)中各節(jié)點(diǎn)處于平等地位,不需集中控制,不提供優(yōu)先級(jí)控制。但在網(wǎng)絡(luò)負(fù)載增大時(shí),發(fā)送時(shí)間增長(zhǎng),發(fā)送效率急劇下降,即會(huì)永遠(yuǎn)優(yōu)先發(fā)送優(yōu)先級(jí)高的節(jié)點(diǎn)而阻塞優(yōu)先級(jí)低的節(jié)點(diǎn),因此考慮到對(duì)該協(xié)議進(jìn)行改進(jìn)。為了自定義協(xié)議,因此我們的CAN數(shù)據(jù)采用了擴(kuò)展幀。
針對(duì)橡塑機(jī)械需要的通信數(shù)據(jù)類(lèi)型設(shè)計(jì)了如下的通信協(xié)議。主要具備以下幾點(diǎn)特點(diǎn):
(1)下位機(jī)根據(jù)仲裁段優(yōu)先級(jí)來(lái)確定該段數(shù)據(jù)的優(yōu)先級(jí);
(2)優(yōu)先級(jí)的分配由服務(wù)器端進(jìn)行,讀取初始化配置文件(包括節(jié)點(diǎn)編號(hào)和優(yōu)先級(jí)碼兩個(gè)部分)+頁(yè)面設(shè)定;
(3)優(yōu)先級(jí)根據(jù)傳輸數(shù)據(jù)的截止時(shí)間決定(DM)。要求的時(shí)間越短,其優(yōu)先級(jí)越高。
(4)通信數(shù)據(jù)的命令格式如圖4所示,其中所有字節(jié)均為ASCII字符。
開(kāi)始位必須放@,以示命令的開(kāi)始。標(biāo)題碼為命令的代碼;用”*”和回車(chē)(ASCII碼為13)作為命令結(jié)束。
評(píng)論