摘 要:波動仿生推進器是一種依據魚類仿生學原理設計的新型水下推進器。控制器局域網(Controller Area Network,即CAN總線)是一種能有效地支持具有很高安全等級的分布實時控制的串行通信協議。基于波動仿生推進器內部環境及多電機獨立控制結構的特點,采用CAN總線來構建波動仿生推進器內部的通信網絡。文章對CAN總線在波動仿生推進器上的應用方案進行了系統闡述,提出了具體的軟硬件解決方案,并對其中的一些關鍵點進行了說明。此外,對波動仿生推進器的波動控制技術,即多電機的協調控制方法也作了相應論述。
關鍵詞:波動仿生推進器; 波動控制; CAN總線; 多電機系統; 協調控制
0 引言
作為一種面向水下航行器的新型仿生推進裝置,波動仿生推進器主要模擬依靠身體波動式推進的魚類的游動方式,以單柔性長鰭的波動推進為基礎,利用多背鰭之間的協同控制來產生推力、升力、偏航和俯仰力矩。在機構設計上,一個單柔性長鰭由若干根鰭條組成,通過對這若干根鰭條進行不同的配置,可以實現單柔性長鰭不同的波形。而波形參數(波長、波幅、波頻、波傳播方向等)的不同將直接影響到單柔性長鰭所產生推力的大小。在研究初期,需要對單柔性長鰭進行靈活控制,以便確定推進效率最優的波形參數。為此,我們設計了一種多電機獨立控制方案,即由一個電機控制一根鰭條,通過電機之間的協調來實現對單柔性長鰭的波動控制。
CAN(Controller Area Network)總線,又稱控制器局域網,是Bosch公司在現代汽車技術中領先推出的一種多主機局部網,也是一種串行通訊協議。其卓越的可靠性和傳輸的高速性,使它能夠有效地支持具有很高安全等級的分布式實時控制。CAN總線現在已廣泛應用于工業現場控制、智能大廈、環境監控等眾多領域,從高速的網絡到通用的多路接線都可以使用。在汽車電子行業里,使用CAN總線連接發動機控制單元、傳感器、防剎車系統等,其傳輸速度可達1Mbit/s。波動仿生推進器多電機系統內部通訊總線與汽車內部總線有很多相似的特性,如都處于強機械震蕩、強電磁干擾環境等,而且CAN總線在機器人內部通訊系統中的應用已經有了許多成功的先例。因此在波動仿生推進器的內部通訊總線設計中采用CAN 協議。
1 系統總體結構
水下波動仿生推進器采用分級控制的思路,總體網絡結構如圖1所示。在岸上,以一臺IBM-PC機作為操控平臺,實現操縱命令的給定、彈載內部運行狀態的監測與可視化管理以及人機界面的功能。它通過RS-232總線連接到仿生推進器內部的主控上位機PC/104上。PC/104是仿生推進器運動控制的核心模塊,負責實現除底層電機控制模塊以外的所有上層控制算法,包括多電機的波形控制、姿態與深度測量、安全狀態監控等。其中,多電機的波形控制是通過PC/104對底層若干個電機控制節點的協調來實現的,通過采用基于CAN現場總線的串行通信協議,保證了通信的可靠性及實時性。
在本系統中,核心控制部分采用SBS公司的PC/104模塊,并通過該公司集成的基于PC/104的CSD-CAN總線控制器與波動仿生推進器內部的各控制節點組成CAN通信網絡。在底層各電機控制節點上,采用日本安川公司模塊化SGMAH04型交流伺服電機和相應SGDM04ADA型伺服驅動器。該伺服驅動器可通過自帶的RS-232串口(CN3)與數字操作器或者PC聯接,通過編碼器接頭(CN2)聯接編碼器至伺服電機,同時它還提供一個實時I/O端口(CN1)可與運動模塊MP910等或其它上級裝置聯接。向其I/O端口發送脈沖序列可以對電機進行速度和位置控制,向其串口發送命令指令可以獲取電機當前的速度和位置信息。這樣,我們可以跳過最底層與電機接口部分的軟硬件開發,而通過單片機直接對伺服驅動器進行控制。在各個電機控制節點上,研制相應的CAN智能節點以實現與彈載上位機PC/104的通信。
波動仿生推進器中CAN網絡必須具備波形控制和狀態監控兩大功能。對于該多電機系統,各個節點相互獨立,通過在PC/104中對這若干個節點進行合理的調配來實現波動仿生推進器的波形控制功能。另外,各CAN節點實時監測本控制節點對應電機的工作狀態,并將其返回給上位機;同時,各CAN節點定時監測節點本身的工作狀態,利用CAN總線協議強大的錯誤處理功能對各種可能出現的錯誤進行分析處理。
2 CAN網絡的硬件方案
由圖1可知,各個CAN節點直接掛接于同一個CAN網絡。它們的軟硬件組成結構完全一致,硬件組成框圖見圖2。
系統中的各CAN節點采用的都是智能節點,即都由微控制器和可編程的CAN控制芯片組成。從圖2可以看出,各CAN節點電路主要由微控制器AT89C51、獨立CAN控制器SJA1000、CAN收發器82C250、高速光耦6N137、撥碼開關地址輸入電路、電源監測與看門狗電路以及面向伺服電機的部分電路組成。

由于采用了模塊化的伺服電機驅動器,各控制節點只需實現簡單的伺服控制功能,故采用Atmel公司的8位單片機AT89C51作為微控制器。CAN控制芯片完成CAN的通信協議,主要由實現CAN總線協議的部分與實現與微控制器接口部分的電路組成,這里采用的是PHILIPS公司的SJA1000。它是一種獨立CAN控制器,具有BasicCAN和PeliCAN兩種工作模式,其中PeliCAN模式支持具有很多新特性的CAN2.0B協議。82C250是高性能的CAN總線收發器,是CAN協議控制器和物理總線的接口,它對總線提供差動發送能力,對CAN控制器提供差動接收能力。通過對82C250的8號管腳的不同設置,可使其工作于高速、待機、斜率等三種模式。
撥碼開關地址輸入電路用于對各個CAN節點的標識。上電后,單片機首先讀取撥碼開關的數值,并在CAN初始化中將其寫入SJA1000的接收代碼寄存器,作為該節點的標識碼。電源監測與看門狗電路采用的是MAX813,它在系統上電時刻提供上電復位功能,在程序運行時提供看門狗監測和電源監測功能,并能夠實現手動復位。
為進一步提高CAN總線的可靠性,在系統設計中采取了一系列的抗干擾措施。一方面將SJA1000與82C250通過高速光耦6N137相連,從而實現了CAN總線上各CAN節點的電氣隔離。另一方面,在82C250與CAN物理總線的接口部分也采用一定的安全和抗干擾措施。比如,82C250 的CANH和CANL引腳各自通過一個5Ω的電阻與CAN總線相連,可起到一定的限流作用,保護82C250免受過流的沖擊;CANH和CANL與地之間分別并聯一個30P的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力;CANH和CANL與地之間分別反接了一個保護二極管,這樣,當CAN總線有較高的負電壓時,通過二極管的短路可起到一定的過壓保護作用。
另外,為了保護各CAN節點控制端不受電機端的影響,在單片機與電機接口處均采用了基于6N137的光電隔離方案。這樣,當伺服電機端有大電壓電流產生時,由于光耦的保護作用,不會對控制端產生較大影響。
在應用光電隔離方案時要注意的一個重要問題是要必須確保光耦兩端的兩個電源完全隔離,否則光電隔離將起不到其應有的保護作用。在本系統中,通過采用廣州金升陽公司的小功率電源隔離模塊B0505S-1W很好地實現了各電源之間的完全隔離。
3 CAN網絡的軟件設計
CAN網絡的軟件主要包括三部分:初始化設計、通信設計、電機協調控制設計。下面從CAN控制節點的角度對它們進行說明。
3.1 初始化設計
CAN網絡的初始化包括對微控制器內部資源的初始化和CAN控制器SJA1000的初始化。微控制器的內部資源包括程序中使用的各控制變量、定時器、外部中斷、串口等,需要在程序進入正常工作前對它們進行合理的設置。這里重點對SJA1000的初始化進行說明。
SJA1000的初始化只能在復位模式下進行。其主要內容包括工作方式的設置、接收濾波方式的設置、接收屏蔽寄存器和接收代碼寄存器的設置、波特率參數的設置、中斷允許寄存器的設置等等。在完成SJA1000的初始化設置之后,應使SJA1000回到工作模式,進行正常的通信任務。圖3是SJA1000的初始化流程圖。需要特別引起注意的是,在同一個CAN網絡中,各個CAN節點必須設置成相同的波特率,否則無法進行CAN通信。

3.2 通信設計
CAN網絡能否正常工作很大程度上取決于基于CAN總線的發送和接收程序能否正確設計。跟大多數的通信過程一樣,CAN的發送和接收也分為查詢和中斷兩種方式。在本系統中,發送采用查詢方式,接收采用中斷方式。發送時用戶只需將待發送的數據按特定格式組合成一幀報文,送入SJA1000的發送緩存區中,然后啟動SJA1000發送即可。其間需要對CAN總線的發送緩存區狀態進行判斷。發送流程如圖4。
在PeliCAN模式中,SJA1000有8個不同的中斷,接收中斷是其中的一個。一旦CAN產生中斷,SJA1000就將中斷輸出設為低電平,直到主控制器通過讀SJA1000的中斷寄存器對中斷采取相應措施,或釋放接收緩存器后產生接收中斷。在主控制器完成該動作后,SJA1000將輸出中斷跳到高電平。處理中斷請求的握手信號或兩個中斷之間的高電平脈沖要求主控制器的中斷由電平觸發。中斷接收的流程如圖5所示。相比發送子程序而言,它除了進行單純的數據幀接收之外,還要對中斷運行寄存器中允許引起中斷的各種錯誤(比如總線脫落、錯誤報警、接收溢出等)進行判斷并作相應處理。在波動仿生推進器的應用里,設置了接收中斷和數據溢出中斷,并在主程序里定時檢測總線狀態,如果發現總線脫離,則對SJA1000進行復位處理。
3.3 電機協調控制設計
波動仿生推進器單柔性長鰭的波動控制要求其多電機系統按照設定的波動參數帶動多個鰭條形成相應的波形。由于采用了高性能的伺服電機及驅動器,我們可以很精確的控制電機的運行速度,故在形成了各電機之間按設定波長要求的相位差之后,只要保持各個電機之間速度的嚴格同步,就可以實現多個電機之間的協調運轉。為此,需要在各個電機控制節點里預先設置一些相關的控制原語,如電機原點定位、相位調整、速度設定、方向設定以及停機等基本電機控制指令。主控模塊PC/104通過對這些控制原語的合理調用,便可實現各種類型的波形。
另一種更合理可靠的方法是,各電機控制節點采集伺服電機上增量編碼器的角度脈沖信號,經過解析將角度數字信號送往PC/104。在每個控制周期內,PC/104對這些角度信號進行綜合處理,通過一定的協調機制來實時修改對電機的控制量。由于CAN總線在一定條件下其最高通信速率可達1Mbps,通過設定適當的控制周期,可以滿足本系統的需要。
4 結論
本文設計的CAN總線系統在波動仿生推進器的波動控制中得到了成功應用。與基于RS-232總線的控制系統相比,本系統在通信的可靠性和快速性上體現出了較大優勢。在通信速率為250Kbps以及13個底層節點的情況下,通過實際反復的靜水和航行試驗表明其通信效果完全可以滿足系統的需要,同時該CAN總線系統也具備良好的波形控制和狀態監測功能。
本文作者創新點:基于CAN總線技術設計了新型的波動仿生推進器控制系統,給出了詳細的軟硬件設計方案,并對多個電機的協調控制作了相應分析。
參考文獻
[1] 鄔寬明.CAN總線原理和應用系統設計.北京:北京航空航天大學出版社,1996
[2] 羅丁,劉建輝,張全貴.基于CAN總線的嵌入式監控系統中智能節點研究.微計算機信息, 2004, 20(7):78 - 79
[3] 鄒繼軍,饒運濤.基于SJA1000的CAN總線系統智能節點設計.單片機與嵌入式系統應用,2001(12):26 - 31
[4] 林龍信,張代兵,等.基于RS-232總線的多電機波形控制研究.第24屆中國控制會議論文集,2005
[5] PHILIPS SJA1000 stand-alone CAN controller product specification, 2000 Jan 04