基于CAN總線的小水電多功能自動(dòng)化裝置的研發(fā)
(1) CAN模塊的初始化
在CAN控制器運(yùn)行時(shí),首先必須對(duì)MSCAN模塊初始化,對(duì)它的一些內(nèi)部寄存器進(jìn)行設(shè)置,CAN模塊的初始化流程圖如圖3所示。
首先使MSCAN進(jìn)入軟件復(fù)位狀態(tài),因?yàn)橹挥羞@樣才可以對(duì)MSCAN設(shè)置有關(guān)的寄存器進(jìn)行寫(xiě)入,此時(shí),MSCAN會(huì)退出所有的發(fā)送和接收操作,并失去總線同步。所以當(dāng)MSCAN設(shè)置完相關(guān)寄存器并退出軟件復(fù)位狀態(tài)后,要判斷MSCAN與總線是否同步,只有完成同步,MSCAN才能正常的接收發(fā)送數(shù)據(jù)幀。
(2) CAN模塊的數(shù)據(jù)接收
CAN接收數(shù)據(jù)幀時(shí)采用中斷機(jī)制,由于MSCAN初始化時(shí)設(shè)置接收中斷允許寄存器,允許接收緩沖區(qū)滿中斷,即在接收緩沖區(qū)滿時(shí)會(huì)觸發(fā)一個(gè)MSCAN接收中斷請(qǐng)求,CAN接收中斷流程圖如圖4所示。在接收中斷服務(wù)程序中,為了避免此時(shí)再發(fā)生中斷,在接收數(shù)據(jù)幀之前設(shè)置中斷允許寄存器,不允許接收緩沖區(qū)滿中斷,在接收數(shù)據(jù)幀之后,清除接收緩沖區(qū)滿標(biāo)志,并允許接收緩沖區(qū)滿中斷,便于下一次接收中斷的處理。
本文引用地址:http://www.ex-cimer.com/article/163498.htm
(3) CAN模塊的數(shù)據(jù)發(fā)送
CAN發(fā)送數(shù)據(jù)幀時(shí)也采用中斷機(jī)制,但與接收中斷不同的是,由于MSCAN初始化時(shí)設(shè)置發(fā)送器控制寄存器CANTCR,不允許發(fā)送緩沖區(qū)空中斷,所以在發(fā)送數(shù)據(jù)幀時(shí)需要通過(guò)設(shè)置CANTCR允許發(fā)送緩沖區(qū)空中斷,從而啟動(dòng)發(fā)送中斷,進(jìn)入發(fā)送中斷服務(wù)程序, CAN發(fā)送中斷流程圖如圖5所示。在中斷服務(wù)程序中,設(shè)置CANTCR不允許發(fā)送緩沖區(qū)空中斷,直到下一次啟動(dòng)發(fā)送中斷。確定發(fā)送緩沖區(qū)為空時(shí)填寫(xiě)發(fā)送緩沖數(shù)據(jù)寄存器并清除發(fā)送緩沖區(qū)空標(biāo)志,這樣MSCAN才能開(kāi)始發(fā)送數(shù)據(jù)。
3.3 裝置內(nèi)部各CPU模塊的CAN通訊
裝置內(nèi)部各CPU模塊CAN通訊的信息量很大,所以通訊協(xié)議使用CAN 2.0B擴(kuò)展模式,報(bào)文標(biāo)識(shí)符幾乎不受限制,此時(shí)仲裁場(chǎng)的標(biāo)識(shí)符有29位。
在CAN的規(guī)范中,只定義了數(shù)據(jù)幀的結(jié)構(gòu),而沒(méi)有定義有關(guān)發(fā)送和接收的結(jié)構(gòu)信息,所以在編寫(xiě)通訊程序時(shí),首先需要給數(shù)據(jù)幀的不同位賦以特定的含義,其中包含數(shù)據(jù)傳輸所需要的所有信息,包括傳輸源地址、目標(biāo)地址、幀類(lèi)型、傳輸字節(jié)數(shù)、傳輸信息體等等。由于CAN協(xié)議規(guī)定,每幀最多傳送8個(gè)字節(jié)的數(shù)據(jù),所以,為了盡可能使8個(gè)字節(jié)中的數(shù)據(jù)都為傳輸信息體,較好的解決辦法就是將其他的信息包含在29位標(biāo)識(shí)符中。本設(shè)計(jì)中,CAN通訊的數(shù)據(jù)幀格式定義如表1所示。
其中,前4個(gè)字節(jié)是擴(kuò)展數(shù)據(jù)幀的仲裁場(chǎng)和控制場(chǎng),后8個(gè)字節(jié)是數(shù)據(jù)場(chǎng)。
表1在設(shè)計(jì)中:
PRI:優(yōu)先級(jí)。1為低優(yōu)先級(jí),0為高優(yōu)先級(jí),剩余的優(yōu)先級(jí)由源地址決定,低地址優(yōu)先級(jí)高,該功能可有效支持緊急信息傳送如報(bào)警等。
Source Address:發(fā)送數(shù)據(jù)的源地址。
Type:幀類(lèi)型,包括單幀、多幀、點(diǎn)對(duì)點(diǎn)傳送、廣播傳送。
SRR:在數(shù)據(jù)幀中,SRR必須為“顯性”電平,而在遠(yuǎn)程幀中,SRR必須為“隱性”電平。
IDE:屬于仲裁場(chǎng),為“隱性”電平。
DLC:表示要發(fā)送的字節(jié)數(shù),等于字節(jié)數(shù)減1。由于每幀最多發(fā)送8個(gè)字節(jié)的數(shù)據(jù),故DLC最大為7。
Data index:索引字節(jié)。單幀沒(méi)有索引字節(jié),所以該字節(jié)為空;多幀數(shù)據(jù)時(shí)Data index表示發(fā)送數(shù)據(jù)幀的幀序號(hào)。
Destination Address:發(fā)送數(shù)據(jù)的目標(biāo)地址。
RTR:定義本幀信息為數(shù)據(jù)幀還是遠(yuǎn)程數(shù)據(jù)幀請(qǐng)求位。
Data length (L), Data length (H):多幀信息包的長(zhǎng)度,只有在傳輸多幀數(shù)據(jù)的第一幀時(shí)填充,其他幀不填充,而可以填充要傳輸?shù)男畔Ⅲw。
6 bytes data:要傳輸?shù)男畔Ⅲw。
遵循上述約定的CAN協(xié)議,各CPU模塊之間的通訊快速可靠,抗干擾性強(qiáng),傳輸波特率達(dá)到500kbps,達(dá)到了研發(fā)的性能指標(biāo)要求。
4 小結(jié)
為了實(shí)現(xiàn)小型水電站提出的少人值班、無(wú)人值班的要求,提高水電站的自動(dòng)化水平,集發(fā)電機(jī)測(cè)控保護(hù)、勵(lì)磁調(diào)節(jié)、同期并列、順控、遠(yuǎn)程通訊、人機(jī)交互等多功能于一體的組合智能裝置是一個(gè)經(jīng)濟(jì)可行的技術(shù)方案,必將成為小水電綜合自動(dòng)化未來(lái)發(fā)展的趨勢(shì)。此研發(fā)的多功能測(cè)控裝置采用面向?qū)ο蟮姆謱臃植际浇Y(jié)構(gòu),各CPU模塊采用CAN總線相連,各模塊之間的數(shù)據(jù)交互快速可靠、抗干擾性強(qiáng),在外觀上這些功能模塊都在一個(gè)機(jī)箱內(nèi),結(jié)構(gòu)緊湊,便于安裝使用。實(shí)際應(yīng)用中,既可以在現(xiàn)場(chǎng)獨(dú)立運(yùn)行和操作,又可以在多機(jī)系統(tǒng)聯(lián)合運(yùn)行時(shí)根據(jù)需要配置上位機(jī),構(gòu)成水電站監(jiān)控系統(tǒng),具有非常廣泛的應(yīng)用前景。
評(píng)論