基于CAN總線控制器SJA1000的自動(dòng)絡(luò)筒機(jī)通信系統(tǒng)方
2.3、系統(tǒng)軟件設(shè)計(jì)
本項(xiàng)目通信系統(tǒng)中軟件設(shè)計(jì)包括兩部分:上位機(jī)和下位機(jī)。上位機(jī)主要通過(guò)人機(jī)交互向CAN總線發(fā)送信號(hào)給各單錠,下位機(jī)軟件主要是Mega64L接收CAN總線信息后,完成控制單錠相應(yīng)動(dòng)作的任務(wù),比如張力盤增加或是減少?gòu)埩Φ鹊仁录_@里主要介紹單錠中各CAN的軟件實(shí)現(xiàn)。
系統(tǒng)上電初始化:系統(tǒng)軟件設(shè)計(jì)的指導(dǎo)思想是系統(tǒng)上電后首先對(duì)Mega64L和SJA1000進(jìn)行初始化,以確定工作主頻、波特率、輸出特性等,然后通過(guò)查詢方式獲取模數(shù)轉(zhuǎn)換采樣值,并把該值通過(guò)SJA1000傳送到CAN總線上由上位機(jī)進(jìn)行顯示控制,CAN發(fā)送通過(guò)中斷方式向總線發(fā)送信息,而對(duì)CAN總線上來(lái)的信息也采用中斷方式,系統(tǒng)每接收到一幀信息,便產(chǎn)生一次中斷以觸發(fā)微處理器進(jìn)入中斷,在中斷服務(wù)程序中讀取該幀信息并傳送到現(xiàn)場(chǎng)。為防止出現(xiàn)死機(jī)和干擾,程序中還采用看門狗技術(shù)進(jìn)行定時(shí)監(jiān)控。
對(duì)CAN控制器進(jìn)行初始化,實(shí)際上就是對(duì)ACR(驗(yàn)收碼寄存器)、AMR(驗(yàn)收屏蔽寄存器)、BTR0(總線定時(shí)寄存器0)、BTR1(總線定時(shí)寄存器 1)、OCR(輸出控制寄存器)這些寄存器進(jìn)行相關(guān)操作。只有當(dāng)控制寄存器CR中的復(fù)位請(qǐng)求位為高時(shí),訪問(wèn)才被允許,否則既寫不進(jìn)去,也讀不出正確的內(nèi)容。對(duì)CR進(jìn)行第一次寫操作,要設(shè)定將要開放的中斷類型,并置位復(fù)位請(qǐng)求,允許初始化開始。對(duì)ACR、AMR進(jìn)行寫操作,要界定對(duì)什么樣的報(bào)文予以接收,因此有時(shí)稱它們?yōu)轵?yàn)收屏蔽濾波器。當(dāng)滿足條件:“ACR與報(bào)文標(biāo)識(shí)符的高 8位在AMR為‘0’相關(guān)位上對(duì)應(yīng)相等”或 “AMR=0FFH,即ACR的所有位均為不相關(guān)(或屏蔽)位”,并存在空的收發(fā)緩存器時(shí),完整報(bào)文可被正確收發(fā)。
發(fā)送報(bào)文:當(dāng)?shù)却l(fā)送的報(bào)文成功發(fā)送或被放棄之后,發(fā)送緩沖區(qū)被釋放并產(chǎn)生一個(gè)發(fā)送中斷。在中斷處理中,必須檢查狀態(tài)寄存器的發(fā)送完成標(biāo)志(TCS) ,以確定之前的發(fā)送是否成功。未成功表示發(fā)送被放棄,在這種情況下CPU對(duì)放棄的發(fā)送執(zhí)行一個(gè)特殊的處理,例如重復(fù)發(fā)送被放棄的報(bào)文。中斷發(fā)送報(bào)文流程圖如圖3。
接收?qǐng)?bào)文:對(duì)于給出的控制器,主要流程在中斷控制的報(bào)文接收之前必須使能CAN控制器的接收終端和CPU的全局中斷。接收中斷使能標(biāo)志(RIE)位于中斷使能寄存器中。
如果CPU已經(jīng)接收到一個(gè)報(bào)文,該報(bào)文通過(guò)驗(yàn)收濾波器并放入接收FIFO,則產(chǎn)生一個(gè)接收中斷。這樣 CPU能夠立即響應(yīng),將這個(gè)接收到的報(bào)文送到自身的報(bào)文存儲(chǔ)器,并置位命令寄存器的釋放緩沖標(biāo)志RRB。接收緩沖器中其他的報(bào)文將引起新的中斷,所以沒(méi)有必要在一次中斷過(guò)程中把接收緩沖器FIFO中的所有有效報(bào)文讀取出來(lái)。不過(guò),在接收中斷過(guò)程結(jié)束時(shí),CPU 可以通過(guò)讀接收緩沖期狀態(tài)標(biāo)志(RBS)來(lái)檢查是否還有其他報(bào)文存在。這一點(diǎn)在使用接收級(jí)中斷(Receive Level Interrupt)時(shí)通常是有用的。
3、總結(jié)
目前,自動(dòng)絡(luò)筒機(jī)中大量地應(yīng)用先進(jìn)電子技術(shù)、自動(dòng)控制技術(shù)等,對(duì)其通信控制系統(tǒng)也提出了更高的要求。CAN總線技術(shù)及其高性能、高可靠性及其獨(dú)特的設(shè)計(jì),已成為現(xiàn)場(chǎng)總線家族中最有希望的總線技術(shù)之一。本系統(tǒng)中將高可靠性的CAN-bus和性價(jià)比高、處理能力強(qiáng)大的AVR有機(jī)結(jié)合,使自動(dòng)絡(luò)筒機(jī)通信系統(tǒng)在傳輸速度、實(shí)時(shí)性、差錯(cuò)率控制、可靠性上都有很好的效果。
本文作者創(chuàng)新點(diǎn):CAN總線以其卓越的特性、極高的可靠性和獨(dú)特的設(shè)計(jì),在工業(yè)過(guò)程監(jiān)控設(shè)備的互聯(lián)方面得到廣泛的應(yīng)用,受到工業(yè)界的廣泛重視,并被公認(rèn)為是最有前途的現(xiàn)場(chǎng)總線之一。作為通用、有效、可靠及經(jīng)濟(jì)的平臺(tái),CA N總線也已經(jīng)廣泛地受到了歡迎。本文所設(shè)計(jì)的基于Atmel ARV系列增強(qiáng)型單片機(jī)Meag64L和SJA1000控制器為核的CAN總線已經(jīng)投入使用,具有簡(jiǎn)單、靈活、使用方便等特點(diǎn)。
評(píng)論