圖3 中斷程序流程圖 (3) 基于PIC18F258微控制器的郵箱動(dòng)態(tài)分配的實(shí)現(xiàn)
郵箱動(dòng)態(tài)分配的任務(wù)是在不固定某個(gè)郵箱具體特性的同時(shí),實(shí)現(xiàn)對(duì)郵箱中報(bào)文作用的判斷。通過(guò)郵箱的動(dòng)態(tài)分配,可以節(jié)約系統(tǒng)資源,提高軟件靈活性,便于今后系統(tǒng)擴(kuò)展。
在系統(tǒng)初始化過(guò)程中,實(shí)現(xiàn)了郵箱的動(dòng)態(tài)分配,具體方法是:PIC18F258微控制器具有2個(gè)接收緩沖器和6個(gè)接收濾波器,其中:接收緩沖器0對(duì)應(yīng)于接收濾波器0和1;接收緩沖器1對(duì)應(yīng)于接收濾波器2、3、4和5。通過(guò)定義常數(shù)標(biāo)志數(shù)組_uCANRxHndls[i](0≤i≤5),依次將要接收的報(bào)文COBID定義到接收濾波器中。當(dāng)產(chǎn)生CAN總線接收中斷時(shí),根據(jù)中斷標(biāo)志寄存器PIR3的Bit0(RXB0IF,接收緩沖器0中斷標(biāo)志位)和Bit1(RXB1IF,接收緩沖器1中斷標(biāo)志位)來(lái)判斷產(chǎn)生中斷的接收緩沖器。
當(dāng)接收緩沖器0中斷時(shí),則有:
_uCAN_ret=*(_uCANRxHndls+(RXB0CON & 0x01))(1)
其中:uCAN_ret為標(biāo)識(shí)某報(bào)文接收中斷的數(shù)組常數(shù)標(biāo)志;接收緩沖器0控制寄存器(RXB0CON)的Bit0為接收濾波器0、1的選擇位。
當(dāng)接收緩沖器1中斷時(shí),則有:
_uCAN_ret=*(_uCANRxHndls+(RXB1CON & 0x07))(2)
其中:接收緩沖器1控制寄存器(RXB1CON)的Bit2~Bit0為接收濾波器2、3、4和5的選擇位。
通過(guò)式(1)和式(2)可得代表某種報(bào)文中斷的數(shù)組常數(shù)標(biāo)志,實(shí)現(xiàn)對(duì)接收?qǐng)?bào)文類(lèi)型的判斷,完成郵箱動(dòng)態(tài)分配和相應(yīng)報(bào)文處理。
4 實(shí)驗(yàn)驗(yàn)證
為方便實(shí)驗(yàn)室監(jiān)測(cè),直觀地觀察伺服電機(jī)模塊的工作狀態(tài),判斷D/A轉(zhuǎn)化的線性特征,使用LabView軟件設(shè)計(jì)了PC監(jiān)控面板[5],如圖4所示。
圖4 伺服電機(jī)模塊測(cè)試面板
圖4中的amplitude和phase分別用于設(shè)置發(fā)送正弦波的幅度和相位,正弦波數(shù)據(jù)以占用兩字節(jié)的形式發(fā)送,結(jié)合繼電器1和2占用的一個(gè)字節(jié)組成3字節(jié)的TPDO報(bào)文。光耦1、2表示從RPDO報(bào)文接收到的數(shù)據(jù)狀態(tài),在此監(jiān)控面板的基礎(chǔ)上,使系統(tǒng)的調(diào)試更加方便。
在示波器上觀察到的D/A輸出波形如圖5所示,因?yàn)镈/A輸出為瞬間波形,所以在示波器上看到的波形光線只有一部分。此外,由于LabView軟件的限制,最高輸出數(shù)據(jù)周期只能達(dá)到1 ms。 因此, 在示波器上看到的波形有折線存在, 每個(gè)轉(zhuǎn)折點(diǎn)代表一個(gè)輸出點(diǎn),通過(guò)設(shè)置相位值來(lái)決定轉(zhuǎn)折點(diǎn)的個(gè)數(shù),即輸出多少個(gè)數(shù)據(jù)來(lái)表示一個(gè)波形。例如圖5中的相位為18,則會(huì)輸出36個(gè)點(diǎn)來(lái)表示一個(gè)周期波形。
圖5 示波器觀察波形
將此D/A輸出至伺服控制器即可實(shí)現(xiàn)對(duì)伺服電機(jī)的控制,這一點(diǎn)已在現(xiàn)場(chǎng)試驗(yàn)中得到驗(yàn)證。
5 結(jié)論
通過(guò)對(duì)并條機(jī)自調(diào)勻整系統(tǒng)的其他控制節(jié)點(diǎn)采用相同的方法進(jìn)行CANopen協(xié)議開(kāi)發(fā),實(shí)現(xiàn)了網(wǎng)絡(luò)化的控制系統(tǒng)。除了伺服電機(jī)外一個(gè)完整的控制系統(tǒng)還應(yīng)有:主控模塊如(DSP或單片機(jī))、PLC模塊和鍵盤(pán)顯示模塊等。和伺服電機(jī)模塊一樣,可將每個(gè)控制模塊都作為一個(gè)節(jié)點(diǎn)進(jìn)行開(kāi)發(fā)。每個(gè)節(jié)點(diǎn)都有各自的節(jié)點(diǎn)ID,所接收和發(fā)射的數(shù)據(jù)在總線上進(jìn)行交流,通過(guò)改變伺服電機(jī)控制的低速羅拉轉(zhuǎn)速來(lái)調(diào)節(jié)牽伸倍數(shù),從而達(dá)到自調(diào)勻整的目的。
自動(dòng)控制系統(tǒng)的網(wǎng)絡(luò)化、標(biāo)準(zhǔn)化是現(xiàn)代工業(yè)發(fā)展的一個(gè)必然趨勢(shì),將CAN總線應(yīng)用層協(xié)議CANopen應(yīng)用于該領(lǐng)域有著廣闊的應(yīng)用前景。本文通過(guò)將伺服電機(jī)控制模塊做成符合CANopen協(xié)議的標(biāo)準(zhǔn)化裝置,并應(yīng)用于并條機(jī)自調(diào)勻整系統(tǒng)中,使其具有了即插即用和在線監(jiān)控特性,增強(qiáng)了設(shè)備的可擴(kuò)展性,提高了數(shù)據(jù)傳輸?shù)目煽啃。這種基于現(xiàn)場(chǎng)總線應(yīng)用層標(biāo)準(zhǔn)協(xié)議的開(kāi)發(fā)和使用,對(duì)提高系統(tǒng)的工作效率,特別是對(duì)復(fù)雜系統(tǒng)的研制具有一定的指導(dǎo)意義。
參考文獻(xiàn)
[1] Boterenbrood H. CANopen:highlevel protocol for CANbus. 2000.
[2] CiA, CANopen Communication Profile for Industrial Systems Based on CAL. 1996.
[3] 劉和平,劉林,于紅欣,等. PIC18FXXX單片機(jī)原理及接口程序設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,2004.
[4] CiA.CANopen Indicator Specification. 2001.
[5] 汪敏生. LABVIEW基礎(chǔ)教程. 北京:電子工業(yè)出版社,2002.
宋曉梅 副教授,主要研究方向?yàn)樾盘?hào)處理及計(jì)算機(jī)通信技術(shù)。
賈佳 碩士,主要研究方向?yàn)镃ANopen協(xié)議以及單片機(jī)的開(kāi)發(fā)應(yīng)用。





