CAN總線在波動(dòng)仿生推進(jìn)器中的應(yīng)用
作為一種面向水下航行器的新型仿生推進(jìn)裝置,波動(dòng)仿生推進(jìn)器主要模擬依靠身體波動(dòng)式推進(jìn)的魚類的游動(dòng)方式,以單柔性長鰭的波動(dòng)推進(jìn)為基礎(chǔ),利用多背鰭之間的協(xié)同控制來產(chǎn)生推力、升力、偏航和俯仰力矩。在機(jī)構(gòu)設(shè)計(jì)上,一個(gè)單柔性長鰭由若干根鰭條組成,通過對(duì)這若干根鰭條進(jìn)行不同的配置,可以實(shí)現(xiàn)單柔性長鰭不同的波形。而波形參數(shù)(波長、波幅、波頻、波傳播方向等)的不同將直接影響到單柔性長鰭所產(chǎn)生推力的大小。在研究初期,需要對(duì)單柔性長鰭進(jìn)行靈活控制,以便確定推進(jìn)效率最優(yōu)的波形參數(shù)。為此,我們設(shè)計(jì)了一種多電機(jī)獨(dú)立控制方案,即由一個(gè)電機(jī)控制一根鰭條,通過電機(jī)之間的協(xié)調(diào)來實(shí)現(xiàn)對(duì)單柔性長鰭的波動(dòng)控制。
CAN(Controller Area Network)總線,又稱控制器局域網(wǎng),是Bosch公司在現(xiàn)代汽車技術(shù)中領(lǐng)先推出的一種多主機(jī)局部網(wǎng),也是一種串行通訊協(xié)議。其卓越的可靠性和傳輸?shù)母咚傩?,使它能夠有效地支持具有很高安全等?jí)的分布式實(shí)時(shí)控制。CAN總線現(xiàn)在已廣泛應(yīng)用于工業(yè)現(xiàn)場控制、智能大廈、環(huán)境監(jiān)控等眾多領(lǐng)域,從高速的網(wǎng)絡(luò)到通用的多路接線都可以使用。在汽車電子行業(yè)里,使用CAN總線連接發(fā)動(dòng)機(jī)控制單元、傳感器、防剎車系統(tǒng)等,其傳輸速度可達(dá)1Mbit/s。波動(dòng)仿生推進(jìn)器多電機(jī)系統(tǒng)內(nèi)部通訊總線與汽車內(nèi)部總線有很多相似的特性,如都處于強(qiáng)機(jī)械震蕩、強(qiáng)電磁干擾環(huán)境等,而且CAN總線在機(jī)器人內(nèi)部通訊系統(tǒng)中的應(yīng)用已經(jīng)有了許多成功的先例。因此在波動(dòng)仿生推進(jìn)器的內(nèi)部通訊總線設(shè)計(jì)中采用CAN 協(xié)議。
1 系統(tǒng)總體結(jié)構(gòu)
水下波動(dòng)仿生推進(jìn)器采用分級(jí)控制的思路,總體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。在岸上,以一臺(tái)IBM-PC機(jī)作為操控平臺(tái),實(shí)現(xiàn)操縱命令的給定、彈載內(nèi)部運(yùn)行狀態(tài)的監(jiān)測與可視化管理以及人機(jī)界面的功能。它通過RS-232總線連接到仿生推進(jìn)器內(nèi)部的主控上位機(jī)PC/104上。PC/104是仿生推進(jìn)器運(yùn)動(dòng)控制的核心模塊,負(fù)責(zé)實(shí)現(xiàn)除底層電機(jī)控制模塊以外的所有上層控制算法,包括多電機(jī)的波形控制、姿態(tài)與深度測量、安全狀態(tài)監(jiān)控等。其中,多電機(jī)的波形控制是通過PC/104對(duì)底層若干個(gè)電機(jī)控制節(jié)點(diǎn)的協(xié)調(diào)來實(shí)現(xiàn)的,通過采用基于CAN現(xiàn)場總線的串行通信協(xié)議,保證了通信的可靠性及實(shí)時(shí)性。
在本系統(tǒng)中,核心控制部分采用SBS公司的PC/104模塊,并通過該公司集成的基于PC/104的CSD-CAN總線控制器與波動(dòng)仿生推進(jìn)器內(nèi)部的各控制節(jié)點(diǎn)組成CAN通信網(wǎng)絡(luò)。在底層各電機(jī)控制節(jié)點(diǎn)上,采用日本安川公司模塊化SGMAH04型交流伺服電機(jī)和相應(yīng)SGDM04ADA型伺服驅(qū)動(dòng)器。該伺服驅(qū)動(dòng)器可通過自帶的RS-232串口(CN3)與數(shù)字操作器或者PC聯(lián)接,通過編碼器接頭(CN2)聯(lián)接編碼器至伺服電機(jī),同時(shí)它還提供一個(gè)實(shí)時(shí)I/O端口(CN1)可與運(yùn)動(dòng)模塊MP910等或其它上級(jí)裝置聯(lián)接。向其I/O端口發(fā)送脈沖序列可以對(duì)電機(jī)進(jìn)行速度和位置控制,向其串口發(fā)送命令指令可以獲取電機(jī)當(dāng)前的速度和位置信息。這樣,我們可以跳過最底層與電機(jī)接口部分的軟硬件開發(fā),而通過單片機(jī)直接對(duì)伺服驅(qū)動(dòng)器進(jìn)行控制。在各個(gè)電機(jī)控制節(jié)點(diǎn)上,研制相應(yīng)的CAN智能節(jié)點(diǎn)以實(shí)現(xiàn)與彈載上位機(jī)PC/104的通信。
波動(dòng)仿生推進(jìn)器中CAN網(wǎng)絡(luò)必須具備波形控制和狀態(tài)監(jiān)控兩大功能。對(duì)于該多電機(jī)系統(tǒng),各個(gè)節(jié)點(diǎn)相互獨(dú)立,通過在PC/104中對(duì)這若干個(gè)節(jié)點(diǎn)進(jìn)行合理的調(diào)配來實(shí)現(xiàn)波動(dòng)仿生推進(jìn)器的波形控制功能。另外,各CAN節(jié)點(diǎn)實(shí)時(shí)監(jiān)測本控制節(jié)點(diǎn)對(duì)應(yīng)電機(jī)的工作狀態(tài),并將其返回給上位機(jī);同時(shí),各CAN節(jié)點(diǎn)定時(shí)監(jiān)測節(jié)點(diǎn)本身的工作狀態(tài),利用CAN總線協(xié)議強(qiáng)大的錯(cuò)誤處理功能對(duì)各種可能出現(xiàn)的錯(cuò)誤進(jìn)行分析處理。
2 CAN網(wǎng)絡(luò)的硬件方案
由圖1可知,各個(gè)CAN節(jié)點(diǎn)直接掛接于同一個(gè)CAN網(wǎng)絡(luò)。它們的軟硬件組成結(jié)構(gòu)完全一致,硬件組成框圖見圖2。
系統(tǒng)中的各CAN節(jié)點(diǎn)采用的都是智能節(jié)點(diǎn),即都由微控制器和可編程的CAN控制芯片組成。從圖2可以看出,各CAN節(jié)點(diǎn)電路主要由微控制器AT89C51、獨(dú)立CAN控制器SJA1000、CAN收發(fā)器82C250、高速光耦6N137、撥碼開關(guān)地址輸入電路、電源監(jiān)測與看門狗電路以及面向伺服電機(jī)的部分電路組成。
由于采用了模塊化的伺服電機(jī)驅(qū)動(dòng)器,各控制節(jié)點(diǎn)只需實(shí)現(xiàn)簡單的伺服控制功能,故采用Atmel公司的8位單片機(jī)AT89C51作為微控制器。CAN控制芯片完成CAN的通信協(xié)議,主要由實(shí)現(xiàn)CAN總線協(xié)議的部分與實(shí)現(xiàn)與微控制器接口部分的電路組成,這里采用的是PHILIPS公司的SJA1000。它是一種獨(dú)立CAN控制器,具有BasicCAN和PeliCAN兩種工作模式,其中PeliCAN模式支持具有很多新特性的CAN2.0B協(xié)議。82C250是高性能的CAN總線收發(fā)器,是CAN協(xié)議控制器和物理總線的接口,它對(duì)總線提供差動(dòng)發(fā)送能力,對(duì)CAN控制器提供差動(dòng)接收能力。通過對(duì)82C250的8號(hào)管腳的不同設(shè)置,可使其工作于高速、待機(jī)、斜率等三種模式。
撥碼開關(guān)地址輸入電路用于對(duì)各個(gè)CAN節(jié)點(diǎn)的標(biāo)識(shí)。上電后,單片機(jī)首先讀取撥碼開關(guān)的數(shù)值,并在CAN初始化中將其寫入SJA1000的接收代碼寄存器,作為該節(jié)點(diǎn)的標(biāo)識(shí)碼。電源監(jiān)測與看門狗電路采用的是MAX813,它在系統(tǒng)上電時(shí)刻提供上電復(fù)位功能,在程序運(yùn)行時(shí)提供看門狗監(jiān)測和電源監(jiān)測功能,并能夠?qū)崿F(xiàn)手動(dòng)復(fù)位。
為進(jìn)一步提高CAN總線的可靠性,在系統(tǒng)設(shè)計(jì)中采取了一系列的抗干擾措施。一方面將SJA1000與82C250通過高速光耦6N137相連,從而實(shí)現(xiàn)了CAN總線上各CAN節(jié)點(diǎn)的電氣隔離。另一方面,在82C250與CAN物理總線的接口部分也采用一定的安全和抗干擾措施。比如,82C250 的CANH和CANL引腳各自通過一個(gè)5Ω的電阻與CAN總線相連,可起到一定的限流作用,保護(hù)82C250免受過流的沖擊;CANH和CANL與地之間分別并聯(lián)一個(gè)30P的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力;CANH和CANL與地之間分別反接了一個(gè)保護(hù)二極管,這樣,當(dāng)CAN總線有較高的負(fù)電壓時(shí),通過二極管的短路可起到一定的過壓保護(hù)作用。
另外,為了保護(hù)各CAN節(jié)點(diǎn)控制端不受電機(jī)端的影響,在單片機(jī)與電機(jī)接口處均采用了基于6N137的光電隔離方案。這樣,當(dāng)伺服電機(jī)端有大電壓電流產(chǎn)生時(shí),由于光耦的保護(hù)作用,不會(huì)對(duì)控制端產(chǎn)生較大影響。
在應(yīng)用光電隔離方案時(shí)要注意的一個(gè)重要問題是要必須確保光耦兩端的兩個(gè)電源完全隔離,否則光電隔離將起不到其應(yīng)有的保護(hù)作用。在本系統(tǒng)中,通過采用廣州金升陽公司的小功率電源隔離模塊B0505S-1W很好地實(shí)現(xiàn)了各電源之間的完全隔離。
3 CAN網(wǎng)絡(luò)的軟件設(shè)計(jì)
CAN網(wǎng)絡(luò)的軟件主要包括三部分:初始化設(shè)計(jì)、通信設(shè)計(jì)、電機(jī)協(xié)調(diào)控制設(shè)計(jì)。下面從CAN控制節(jié)點(diǎn)的角度對(duì)它們進(jìn)行說明。
3.1 初始化設(shè)計(jì)
CAN網(wǎng)絡(luò)的初始化包括對(duì)微控制器內(nèi)部資源的初始化和CAN控制器SJA1000的初始化。微控制器的內(nèi)部資源包括程序中使用的各控制變量、定時(shí)器、外部中斷、串口等,需要在程序進(jìn)入正常工作前對(duì)它們進(jìn)行合理的設(shè)置。這里重點(diǎn)對(duì)SJA1000的初始化進(jìn)行說明。
SJA1000的初始化只能在復(fù)位模式下進(jìn)行。其主要內(nèi)容包括工作方式的設(shè)置、接收濾波方式的設(shè)置、接收屏蔽寄存器和接收代碼寄存器的設(shè)置、波特率參數(shù)的設(shè)置、中斷允許寄存器的設(shè)置等等。在完成SJA1000的初始化設(shè)置之后,應(yīng)使SJA1000回到工作模式,進(jìn)行正常的通信任務(wù)。圖3是SJA1000的初始化流程圖。需要特別引起注意的是,在同一個(gè)CAN網(wǎng)絡(luò)中,各個(gè)CAN節(jié)點(diǎn)必須設(shè)置成相同的波特率,否則無法進(jìn)行CAN通信。
3.2 通信設(shè)計(jì)
CAN網(wǎng)絡(luò)能否正常工作很大程度上取決于基于CAN總線的發(fā)送和接收程序能否正確設(shè)計(jì)。跟大多數(shù)的通信過程一樣,CAN的發(fā)送和接收也分為查詢和中斷兩種方式。在本系統(tǒng)中,發(fā)送采用查詢方式,接收采用中斷方式。發(fā)送時(shí)用戶只需將待發(fā)送的數(shù)據(jù)按特定格式組合成一幀報(bào)文,送入SJA1000的發(fā)送緩存區(qū)中,然后啟動(dòng)SJA1000發(fā)送即可。其間需要對(duì)CAN總線的發(fā)送緩存區(qū)狀態(tài)進(jìn)行判斷。發(fā)送流程如圖4。
在PeliCAN模式中,SJA1000有8個(gè)不同的中斷,接收中斷是其中的一個(gè)。一旦CAN產(chǎn)生中斷,SJA1000就將中斷輸出設(shè)為低電平,直到主控制器通過讀SJA1000的中斷寄存器對(duì)中斷采取相應(yīng)措施,或釋放接收緩存器后產(chǎn)生接收中斷。在主控制器完成該動(dòng)作后,SJA1000將輸出中斷跳到高電平。處理中斷請(qǐng)求的握手信號(hào)或兩個(gè)中斷之間的高電平脈沖要求主控制器的中斷由電平觸發(fā)。中斷接收的流程如圖5所示。相比發(fā)送子程序而言,它除了進(jìn)行單純的數(shù)據(jù)幀接收之外,還要對(duì)中斷運(yùn)行寄存器中允許引起中斷的各種錯(cuò)誤(比如總線脫落、錯(cuò)誤報(bào)警、接收溢出等)進(jìn)行判斷并作相應(yīng)處理。在波動(dòng)仿生推進(jìn)器的應(yīng)用里,設(shè)置了接收中斷和數(shù)據(jù)溢出中斷,并在主程序里定時(shí)檢測總線狀態(tài),如果發(fā)現(xiàn)總線脫離,則對(duì)SJA1000進(jìn)行復(fù)位處理。
3.3 電機(jī)協(xié)調(diào)控制設(shè)計(jì)
波動(dòng)仿生推進(jìn)器單柔性長鰭的波動(dòng)控制要求其多電機(jī)系統(tǒng)按照設(shè)定的波動(dòng)參數(shù)帶動(dòng)多個(gè)鰭條形成相應(yīng)的波形。由于采用了高性能的伺服電機(jī)及驅(qū)動(dòng)器,我們可以很精確的控制電機(jī)的運(yùn)行速度,故在形成了各電機(jī)之間按設(shè)定波長要求的相位差之后,只要保持各個(gè)電機(jī)之間速度的嚴(yán)格同步,就可以實(shí)現(xiàn)多個(gè)電機(jī)之間的協(xié)調(diào)運(yùn)轉(zhuǎn)。為此,需要在各個(gè)電機(jī)控制節(jié)點(diǎn)里預(yù)先設(shè)置一些相關(guān)的控制原語,如電機(jī)原點(diǎn)定位、相位調(diào)整、速度設(shè)定、方向設(shè)定以及停機(jī)等基本電機(jī)控制指令。主控模塊PC/104通過對(duì)這些控制原語的合理調(diào)用,便可實(shí)現(xiàn)各種類型的波形。
另一種更合理可靠的方法是,各電機(jī)控制節(jié)點(diǎn)采集伺服電機(jī)上增量編碼器的角度脈沖信號(hào),經(jīng)過解析將角度數(shù)字信號(hào)送往PC/104。在每個(gè)控制周期內(nèi),PC/104對(duì)這些角度信號(hào)進(jìn)行綜合處理,通過一定的協(xié)調(diào)機(jī)制來實(shí)時(shí)修改對(duì)電機(jī)的控制量。由于CAN總線在一定條件下其最高通信速率可達(dá)1Mbps,通過設(shè)定適當(dāng)?shù)目刂浦芷冢梢詽M足本系統(tǒng)的需要。
4 結(jié)論
本文設(shè)計(jì)的CAN總線系統(tǒng)在波動(dòng)仿生推進(jìn)器的波動(dòng)控制中得到了成功應(yīng)用。與基于RS-232總線的控制系統(tǒng)相比,本系統(tǒng)在通信的可靠性和快速性上體現(xiàn)出了較大優(yōu)勢。在通信速率為250Kbps以及13個(gè)底層節(jié)點(diǎn)的情況下,通過實(shí)際反復(fù)的靜水和航行試驗(yàn)表明其通信效果完全可以滿足系統(tǒng)的需要,同時(shí)該CAN總線系統(tǒng)也具備良好的波形控制和狀態(tài)監(jiān)測功能。
本文作者創(chuàng)新點(diǎn):基于CAN總線技術(shù)設(shè)計(jì)了新型的波動(dòng)仿生推進(jìn)器控制系統(tǒng),給出了詳細(xì)的軟硬件設(shè)計(jì)方案,并對(duì)多個(gè)電機(jī)的協(xié)調(diào)控制作了相應(yīng)分析。