基于總線的分布式水下航行器控制器設(shè)計(jì)
摘要:提出了一種基于CAN總線的分布式水下航行器控制器的設(shè)計(jì)方法,主要描述了其硬件總體設(shè)計(jì)方案和實(shí)現(xiàn)辦法??刂破髯鳛榉植际娇刂葡到y(tǒng)的一個(gè)節(jié)點(diǎn),與其他節(jié)點(diǎn)之間以CAN總線連接并形成網(wǎng)絡(luò),相互傳輸數(shù)據(jù)和控制命令,每個(gè)節(jié)點(diǎn)都有主控計(jì)算機(jī),以實(shí)現(xiàn)計(jì)算任務(wù)的分散化??刂破饕曰贏RM架構(gòu)的MCU為控制計(jì)算機(jī),搭載隔離模塊、CAN控制器和收發(fā)器、數(shù)據(jù)存儲(chǔ)模塊、I/O接口模塊、RS232模塊等電路。該控制器的特點(diǎn)是體積和功耗小,通訊功能強(qiáng),可實(shí)現(xiàn)智能控制、數(shù)據(jù)采集處理,故障發(fā)現(xiàn)等控制功能。
關(guān)鍵詞:水下航行器;CAN總線;分布式控制;ARM
水下自主航行器是可移動(dòng)水下探測(cè)和水下作業(yè)工程裝備的統(tǒng)稱,是進(jìn)行海洋考察與開(kāi)發(fā)的重要工具。它能夠完成水下地形勘探、偵測(cè)、水下危險(xiǎn)環(huán)境作業(yè)等任務(wù)。它的控制器是其硬件的重要組成部分,其主要作用是根據(jù)其使命任務(wù)對(duì)運(yùn)動(dòng)參數(shù)的部分或全部進(jìn)行控制,使其按規(guī)定的軌跡航行,并保證AUV運(yùn)動(dòng)的穩(wěn)定性,滿足AUV動(dòng)態(tài)精度要求,其性能直接影響到AUV的總體性能。隨著AUV技術(shù)的發(fā)展,對(duì)控制器提出了高可靠性、高實(shí)時(shí)性、精確定位、精確控制、維護(hù)簡(jiǎn)單等要求。本文提出了一種基于總線的分布式水下航行器控制器的設(shè)計(jì)方案,主要目的是實(shí)現(xiàn)以分布式控制系統(tǒng)總體結(jié)構(gòu)為基礎(chǔ)的控制節(jié)點(diǎn)設(shè)計(jì)。進(jìn)而實(shí)現(xiàn)真正的分布式控制系統(tǒng),減少中央處理機(jī)的運(yùn)算負(fù)荷,將大量數(shù)據(jù)處理和分析在現(xiàn)場(chǎng)完成。該方案設(shè)計(jì)的控制器具有完善的智能控制和通訊功能,所選的CAN總線,相比其他總線協(xié)議,軟硬件技術(shù)成熟、安全可靠、傳輸速度快且成本低廉、易于擴(kuò)展和維護(hù)。
1 控制器的組成結(jié)構(gòu)
水下航行器控制器由MCU最小系統(tǒng)(JTAG電路、復(fù)位電路)、外擴(kuò)Flash存儲(chǔ)模塊、I/O接口、隔離電路模塊、通訊電路等組成。其系統(tǒng)結(jié)構(gòu)圖如圖1所示。整個(gè)控制器包含4大部分,第一是MCU最小控制系統(tǒng),包括復(fù)位電路和JTAG調(diào)試電路。第二是數(shù)據(jù)采集部分,I/O接口和RS2 32串行接口用于與水下各種傳感器相連接,收集傳感器發(fā)送的實(shí)時(shí)數(shù)據(jù),并傳輸至MCU進(jìn)行分析融合。有的傳感器送出的是模擬形式的信號(hào),還要使用AD/DA轉(zhuǎn)換模塊加以轉(zhuǎn)換后再進(jìn)入處理中心。數(shù)據(jù)采集部分還包括一個(gè)溫度數(shù)據(jù)收集電路,用作系統(tǒng)運(yùn)行狀態(tài)的監(jiān)控。第三是數(shù)據(jù)存儲(chǔ)模塊,主要用于存儲(chǔ)和輸出實(shí)驗(yàn)數(shù)據(jù)。在水下航行器運(yùn)行過(guò)程中記錄航行數(shù)據(jù),也可用于調(diào)試目的。第四是通訊部分,主要包括CAN總線接口電路,用于與其他節(jié)點(diǎn)之間互相傳輸被控過(guò)程的數(shù)據(jù)和其他控制命令。
2 MCU最小控制系統(tǒng)
文中采用基于ARM7-TDMI架構(gòu)的NXP2478嵌入式微控制器作為主控計(jì)算機(jī)。NXP2478以ARM7為內(nèi)核,它包括一個(gè)10/100以太網(wǎng)媒體訪問(wèn)控制器(MAC)、1個(gè)帶4 kB終端RAM的USB全速設(shè)備/主機(jī)/OTG控制器、4個(gè)UART、兩路CAN通道、1個(gè)SPI接口、兩個(gè)同步串行端口、3個(gè)I2C接口和1個(gè)I2S接口。同時(shí)還帶有一個(gè)4 MHz的片內(nèi)振蕩器、98 kB RAM,以及一個(gè)外部存儲(chǔ)器控制器來(lái)支持上述的各種串行通信接口。以NXP2478為核心的最小系統(tǒng)主要包括電源模塊、復(fù)位電路和JTAG模塊,電源模塊實(shí)現(xiàn)2個(gè)功能:1)電壓轉(zhuǎn)換功能,將輸入為5 V電平的電壓降至NXP2478的3.3 V工作電壓。2)穩(wěn)壓穩(wěn)流功能,微控制器需要紋波比較小的穩(wěn)定電壓供電,電壓如果突然下降往往會(huì)引起程序的跑飛,因此,必須要有專門的電路來(lái)穩(wěn)定工作電壓。一般通過(guò)并聯(lián)大電阻來(lái)穩(wěn)定工作電壓。復(fù)位電路則可以采用自帶看門狗功能的復(fù)位芯片來(lái)完成。主要實(shí)現(xiàn)上電復(fù)位、掉電復(fù)位、人工復(fù)位等功能??撮T狗電路可以在程序跑飛時(shí)提供自動(dòng)復(fù)位的保護(hù)措施。JTAG電路主要實(shí)現(xiàn)程序的在線仿真和燒寫功能。其電路如圖2所示。
3 數(shù)據(jù)采集電路
數(shù)據(jù)采集是指從傳感器中獲取現(xiàn)場(chǎng)信息的過(guò)程。水下航行器控制器所用到的主要是GPS、MTI姿態(tài)傳感器、深度等傳感器。傳感器輸出信號(hào)的標(biāo)準(zhǔn)大多是RS232/485標(biāo)準(zhǔn).有些傳感器的信號(hào)需要經(jīng)過(guò)數(shù)模轉(zhuǎn)換。因此數(shù)據(jù)采集電路主要包括RS232/485、I/O接口電路、AD/DA轉(zhuǎn)換電路和隔離電路。NXP2478自身帶有4個(gè)串行端口,其中有一個(gè)為9線制端口,有完整的握手信號(hào)。但這些端口的工作電平為0~3.3 V。而RS232的電壓約為±12 V左右,所以需要一個(gè)電平轉(zhuǎn)換芯片,這里采用常用的MAX232芯片。I/O接口電路也需要進(jìn)行兼容電平的轉(zhuǎn)換,外部開(kāi)關(guān)信號(hào)可能電壓幅度比較大,采用隔離芯片既可以保護(hù)外部信號(hào)串?dāng)_對(duì)控制器的影響,又可以起到電平兼容的作用。I/O隔離模塊如圖3所示。
溫度監(jiān)控作為數(shù)據(jù)采集的一部分,用作檢測(cè)控制器運(yùn)行時(shí)的溫度狀態(tài),并提供報(bào)警功能。本文采用DS18B20作為溫度數(shù)據(jù)傳感器,DS18B 20是一種在分布式溫度控制系統(tǒng)中廣泛使用的直接輸出數(shù)字信號(hào)的溫度傳感器,輸出數(shù)據(jù)遵從one-wire bus協(xié)議。其采集溫度的范圍從-55攝氏度到125攝氏度,輸出的數(shù)字信號(hào)可直接進(jìn)入MCU的I/O口中。DS18B20只有三根信號(hào)線:地線,電源線和數(shù)據(jù)線。因此其接口電路非常簡(jiǎn)單,將數(shù)據(jù)線直接接入MCU的GPIO口即可。
4 數(shù)據(jù)存儲(chǔ)模塊
數(shù)據(jù)存儲(chǔ)模塊使用Nand Flash與微控制器接口來(lái)實(shí)現(xiàn)。Nand Flash內(nèi)存是flash內(nèi)存的一種,在嵌入式系統(tǒng)中的地位和PC機(jī)上的硬盤是類似的。具有容量大、改寫速度快、系統(tǒng)掉電后數(shù)據(jù)不會(huì)丟失等優(yōu)點(diǎn),適用于大量數(shù)據(jù)的存儲(chǔ)。Nand Flash的接口本質(zhì)上是一個(gè)I/O接口,數(shù)據(jù)總線寬度8bit,沒(méi)有地址總線。CLE和ALE這兩條信號(hào)線用于區(qū)分總線上的數(shù)據(jù)類別。當(dāng)系統(tǒng)對(duì)Nand Flash設(shè)備數(shù)據(jù)訪問(wèn)的時(shí)候,需要先向Nand Flash設(shè)備發(fā)出相關(guān)的命令和參數(shù),然后再讀出需要的數(shù)據(jù)。在連接中,注意用NXP2478的地址線A19與A20連接ALE和CLE引腳,這種連接方式必須在配置總線速度的時(shí)候使NXP2478總線速度和Nand Flash時(shí)序相匹配。電路中R/-(-相)引腳和寫保護(hù)引腳直接接上拉電阻。此外還有一種方案是把R/-(-還)引腳與GPIO口相連,主要目的是當(dāng)讀寫Nand Flash操作完成時(shí),這可以通過(guò)中斷來(lái)判斷一次的讀或者寫完成的時(shí)刻。Nand Flash接口電路如圖4所示。
5 通訊模塊
5.1 CAN通信模塊
CAN總線是目前廣泛應(yīng)用于汽車和飛機(jī)工業(yè)上的一種現(xiàn)場(chǎng)總線。具有以下特點(diǎn):1)多主控制,在總線空閑時(shí),所有單元都可以開(kāi)始發(fā)送消息,通過(guò)沖突檢測(cè),最先訪問(wèn)總線的單元獲得發(fā)送權(quán)。如果多個(gè)主機(jī)同時(shí)發(fā)送,則優(yōu)先級(jí)較高的主機(jī)獲得發(fā)送權(quán),這就是CAN的仲裁機(jī)制。2)可發(fā)送遠(yuǎn)程幀,主動(dòng)請(qǐng)求遠(yuǎn)程主機(jī)的數(shù)據(jù)。3)CAN協(xié)議具有完善的差錯(cuò)功能,幀格式中含有糾錯(cuò)編碼,進(jìn)一步增強(qiáng)容錯(cuò)性。4)錯(cuò)誤發(fā)現(xiàn)功能,所有總線上的單元都可以檢測(cè)錯(cuò)誤,并且檢測(cè)出錯(cuò)誤的單元會(huì)立刻通知其他單元(錯(cuò)誤通知功能)。正在發(fā)送消息的單元一旦檢測(cè)出錯(cuò)誤,會(huì)強(qiáng)制結(jié)束并重新發(fā)送。直到發(fā)送成功為止。5)故障關(guān)閉功能,CAN總線可以判斷出錯(cuò)誤的類型是總線上暫時(shí)的數(shù)據(jù)錯(cuò)誤還是持續(xù)的數(shù)據(jù)錯(cuò)誤(如某個(gè)節(jié)點(diǎn)硬件故障)。當(dāng)總線上發(fā)生持續(xù)的數(shù)據(jù)錯(cuò)誤時(shí),可將引起故障的單元從總線上隔離出去。這些特點(diǎn)使得CAN特別適用于分布式現(xiàn)場(chǎng)控制。一個(gè)控制器要接入CAN總線,需要CAN控制器和CAN收發(fā)器。典型的CAN控制器有Philips公司的SJA1000,它支持CAN2.0協(xié)議,包括標(biāo)準(zhǔn)的和擴(kuò)展的數(shù)據(jù)和遠(yuǎn)程幀;位速率可編程控制,有可編程時(shí)鐘輸出;有擴(kuò)展的64字節(jié)FIFO接收緩沖器;除了BasicCAN操作模式以外,還增加了一種新的操作模式——PeliCAN。在電氣特性方面,SJA1000的引腳特性與PCA200兼容,通信速率可達(dá)1 Mbps。CAN接口電路如圖5所示。AD0—AD7與微控制器的數(shù)據(jù)端口連接,片選信號(hào)與GPIO口連接,晶振使用的是12M無(wú)源晶振,另外還要設(shè)置附加的濾波電容。SJA1000的輸出還要接入CAN收發(fā)器PCA82C250,最后才接入CAN總線中。
5.2 無(wú)線通信接口
無(wú)線接口用于水下航行器的遠(yuǎn)程控制,當(dāng)航行器浮上水面時(shí)可以使用。采用基于2.4 GHz射頻收發(fā)芯片nRF2401的無(wú)線通訊子系統(tǒng),工作時(shí)功耗低,所需外圍元器件很少??膳渲帽扌吞炀€或者環(huán)形天線,通訊距離約為100 m左右??闪己玫臐M足工作需要。無(wú)線通信芯片接口如圖6所示。
6 結(jié)束語(yǔ)
文中討論了一種以NXP2478為控制核心,擴(kuò)展了多個(gè)I/O接口,基于CAN總線的分布式控制系統(tǒng)節(jié)點(diǎn)。搭載多種導(dǎo)航設(shè)備與傳感器,有很強(qiáng)的數(shù)據(jù)處理和通信能力,系統(tǒng)功耗小、靈活性高、擴(kuò)展方便。用于水下航行器的控制系統(tǒng)中,可作為主控節(jié)點(diǎn)或現(xiàn)場(chǎng)控制節(jié)點(diǎn)。