王宏偉,李彬?qū)?,吳靚,代鑫,彭祥
(中地裝(重慶)地質(zhì)儀器有限公司,重慶 400033)
CAN是控制器局域網(wǎng)絡(luò)(controller area network)的簡(jiǎn)稱,由于CAN總線的通訊方式具有高可靠性、實(shí)時(shí)性和不限節(jié)點(diǎn)的靈活性,成為當(dāng)前通訊領(lǐng)域中應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一,特別是在汽車領(lǐng)域,汽車控制系統(tǒng)中包含多種傳感器節(jié)點(diǎn)和控制終端,主要通過(guò)CAN總線的通訊方式實(shí)現(xiàn)。除此之外,CAN的應(yīng)用領(lǐng)域正在向各行各業(yè)拓展,如機(jī)械工業(yè)、物探工程、石油鉆探、航空航天、船舶管理、海港控制、農(nóng)業(yè)機(jī)械、智能家居、機(jī)器人、醫(yī)療儀器等等。CAN通訊的優(yōu)勢(shì)使得它已被公認(rèn)為最有前途的現(xiàn)場(chǎng)總線之一。
CAN總線是兩線制,CAN_H和CAN_L,通訊介質(zhì)通常有幾種,最常見(jiàn)的是雙絞線,此外,由于應(yīng)用領(lǐng)域的不同,通訊介質(zhì)還有光導(dǎo)纖維和同軸單芯電纜等。在總線上可以掛載多個(gè)節(jié)點(diǎn),節(jié)點(diǎn)不分主從,通訊時(shí)各個(gè)節(jié)點(diǎn)根據(jù)CAN總線協(xié)議,由系統(tǒng)設(shè)置相應(yīng)參數(shù)自動(dòng)進(jìn)行仲裁和優(yōu)先級(jí)判別。通訊距離與節(jié)點(diǎn)個(gè)數(shù)和傳輸速率有關(guān),傳輸速率越低且節(jié)點(diǎn)數(shù)越少,傳輸距離越遠(yuǎn)。但大多數(shù)CAN總線應(yīng)用在系統(tǒng)儀器內(nèi)部,通常傳輸距離都足以保障通訊質(zhì)量的要求。
本設(shè)計(jì)是在井下探測(cè)儀器(以下簡(jiǎn)稱探管)中應(yīng)用CAN通訊技術(shù),探管級(jí)聯(lián)總長(zhǎng)度不超過(guò)10 m,在CAN傳輸終端采集的數(shù)據(jù)實(shí)時(shí)性強(qiáng),雙線差分信號(hào)抗電磁干擾能力強(qiáng),且根據(jù)CAN總線協(xié)議,每幀數(shù)據(jù)都有CRC校驗(yàn)和其他錯(cuò)誤檢測(cè)機(jī)制,能夠保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性和可靠性。此外,CAN_H和CAN_L兩線應(yīng)用于級(jí)聯(lián)探管中線束較少,結(jié)構(gòu)設(shè)計(jì)簡(jiǎn)便。
STM32是意法半導(dǎo)體出品的ARM單片機(jī),性能高、價(jià)格便宜、使用簡(jiǎn)便、程序開(kāi)源、封裝體積小,具有不同容量大小和產(chǎn)品性能。開(kāi)發(fā)人員可根據(jù)設(shè)計(jì)需求選擇適合的產(chǎn)品,STM32系列單片機(jī)現(xiàn)已成為時(shí)下最主流微控制器之一。
本設(shè)計(jì)中采用STM32F103CBT6作為主控芯片,該芯片基于ARM Cortex-M3內(nèi)核,含有豐富的外設(shè)TIM、CAN、SPI、I2C、UART、USB等,工作頻率最高達(dá)到72 MHz。STM32單片機(jī)內(nèi)部集成的CAN控制器是基本擴(kuò)展CAN,支持CAN協(xié)議2.0A(標(biāo)準(zhǔn)型)和2.0B(擴(kuò)展型)。作為測(cè)井儀器的主控芯片,完全能夠滿足通訊和傳輸速率等要求,性價(jià)比很高。
本設(shè)計(jì)的通訊網(wǎng)絡(luò)遵循ISO 11898標(biāo)準(zhǔn)的高速、短距、閉環(huán)網(wǎng)絡(luò),傳輸速率為500 kb/s。每個(gè)節(jié)點(diǎn)都含有一個(gè)CAN控制器和一個(gè)CAN收發(fā)器,CAN控制器已集成在單片機(jī)內(nèi)部,CAN收發(fā)器與單片機(jī)直接相連,每個(gè)節(jié)點(diǎn)的CAN收發(fā)器都輸出兩條線,即差分信號(hào)線CAN_H和CAN_L,為保證線束阻抗匹配,在兩條線的終端均配有一個(gè)120 Ω的電阻,該電阻能有效減少回波反射和噪聲干擾。
STM32單片機(jī)內(nèi)部集成CAN控制器,而引腳輸出TTL電平,必須將其轉(zhuǎn)換為差分信號(hào)才能掛載到總線上,因此需要選用一款合適的CAN收發(fā)器作為電平轉(zhuǎn)換芯片。
本設(shè)計(jì)選用飛思卡爾的高速CAN收發(fā)器MC33901。MC33901收發(fā)器支持最低5 kb/s傳輸速率,標(biāo)準(zhǔn)8 pin輸出,如圖1所示。不需要外部過(guò)濾器組件就能實(shí)現(xiàn)電磁兼容和防靜電性能,在各種波特率下均無(wú)出現(xiàn)嚴(yán)重的過(guò)沖現(xiàn)象。
圖1 MC33901外圍電路Fig.1 Peripheral circuit of MC33901
圖2 探管級(jí)聯(lián)示意圖Fig.2 Schematic diagram of cascading probe tube
探管級(jí)聯(lián)方式如圖2所示,公共短節(jié)探管單片機(jī)內(nèi)部集成CAN控制器,通過(guò)CAN收發(fā)器進(jìn)行通訊,其他測(cè)量參數(shù)探管以同樣的方式掛載到CAN總線。如前文所述,CAN總線節(jié)點(diǎn)在總線上均可廣播和監(jiān)聽(tīng)數(shù)據(jù),在電氣方面具有同等地位,也就是說(shuō)可以不區(qū)分是否為公共短節(jié)還是其他參數(shù)測(cè)量探管。實(shí)際應(yīng)用中為了進(jìn)一步控制不同節(jié)點(diǎn)的功能,通常會(huì)假定一個(gè)主機(jī),比如假定公共短節(jié)探管為主機(jī),其他參數(shù)測(cè)量探管為從機(jī),通過(guò)軟件設(shè)置數(shù)據(jù)段加密的方式可實(shí)現(xiàn)主從機(jī)功能,主機(jī)發(fā)送命令,從機(jī)根據(jù)CAN監(jiān)聽(tīng)的數(shù)據(jù)段內(nèi)容做出相應(yīng)動(dòng)作。
無(wú)論主機(jī)還是從機(jī),在發(fā)送報(bào)文時(shí)集成在單片機(jī)內(nèi)部的CAN控制器將報(bào)文由單片機(jī)引腳CAN_TX發(fā)出,信號(hào)為普通邏輯電平。然后經(jīng)過(guò)CAN收發(fā)器把這個(gè)電平轉(zhuǎn)換成差分信號(hào),通過(guò)兩線電壓差區(qū)分顯性電平還是隱性電平,即CAN收發(fā)器與單片機(jī)相連的輸入部分有區(qū)分“發(fā)送”和“接收”,此時(shí)信號(hào)被廣播到總線網(wǎng)絡(luò)上。在接收?qǐng)?bào)文時(shí),總線上的差分信號(hào)經(jīng)由CAN收發(fā)器轉(zhuǎn)換成能被單片機(jī)識(shí)別的邏輯電平,即CAN收發(fā)器在與總線相連的部分是差分信號(hào),不區(qū)分發(fā)送端還是接收端,只有CAN_H和CAN_L,此時(shí)信號(hào)被單片機(jī)的引腳CAN_RX接收。
在井下探管設(shè)計(jì)中,多個(gè)探管級(jí)聯(lián)需要有多個(gè)CAN節(jié)點(diǎn),不同節(jié)點(diǎn)具有同等地位。為區(qū)分公共短節(jié)與其他測(cè)量參數(shù)探管,本設(shè)計(jì)中將公共短節(jié)所在CAN節(jié)點(diǎn)稱為主機(jī),其他級(jí)聯(lián)的測(cè)量探管稱為從機(jī)。
本設(shè)計(jì)采用CAN 2.0B協(xié)議,設(shè)置29位ID標(biāo)識(shí)符,數(shù)據(jù)段長(zhǎng)度為8字節(jié)。不同開(kāi)發(fā)人員可自定義內(nèi)部協(xié)議對(duì)數(shù)據(jù)段進(jìn)行加密設(shè)計(jì),以此進(jìn)行節(jié)點(diǎn)間的命令傳輸。本設(shè)計(jì)中數(shù)據(jù)段包含控制命令、返回ID及返回?cái)?shù)據(jù)等。按照協(xié)議完成探管間的通訊任務(wù),不同探管對(duì)數(shù)據(jù)段進(jìn)行篩選和判別,并執(zhí)行相應(yīng)程序命令,程序設(shè)計(jì)流程如圖3所示。
圖3 程序設(shè)計(jì)流程圖Fig.3 Flowchart of program design
CAN設(shè)置內(nèi)容比較多,每一項(xiàng)參數(shù)的設(shè)置都必須仔細(xì)斟酌。CAN初始化大致分為4部分:①配置IO接口;②對(duì)CAN通訊的中斷方式配置;③CAN工作模式配置,其中包含了CAN總線協(xié)議的具體模式配置;④CAN過(guò)濾器配置。
(1)IO接口配置。配置CAN的GPIO設(shè)置,注意引腳是否為重映射。
(2)中斷方式配置。配置CAN中斷向量及優(yōu)先級(jí),發(fā)送中斷、接收FIFO中斷和錯(cuò)誤中斷,本設(shè)計(jì)主要是接收FIFO中斷。
(3)工作模式設(shè)置。①時(shí)間觸發(fā)通訊模式;②硬件自動(dòng)離線管理;③自動(dòng)喚醒模式;④自動(dòng)重傳功能;⑤接收FIFO鎖定,即接收非鎖定,F(xiàn)IFO溢出時(shí)覆蓋;⑥發(fā)送FIFO優(yōu)先級(jí),即按照標(biāo)識(shí)符判斷優(yōu)先級(jí);⑦設(shè)置為正常工作模式;⑧通訊位時(shí)序配置,本設(shè)計(jì)設(shè)置比特率為500 kb/s,其中CAN_SJW設(shè)為1 tq、CAN_BS1設(shè)為3 tq、CAN_BS2設(shè)為2 tq、CAN_Prescaler設(shè)為12。CAN通訊位時(shí)序相關(guān)的配置,在各個(gè)節(jié)點(diǎn)必須設(shè)置成相同(或相似)以確保正常通信;⑨CAN單元初始化。
(4)CAN接收過(guò)濾器設(shè)置。①設(shè)置過(guò)濾器組;②設(shè)置過(guò)濾器工作模式為標(biāo)識(shí)符屏蔽模式;③設(shè)置要過(guò)濾的ID高位低位,設(shè)置每位都要過(guò)濾;④設(shè)置過(guò)濾器長(zhǎng)度;⑤設(shè)置過(guò)濾器被關(guān)聯(lián)到FIFO。
通過(guò)STM32單片機(jī)和CAN通訊處理電路,能夠?qū)崿F(xiàn)一次采集多參數(shù)的測(cè)井方法。探管級(jí)聯(lián)組合方式靈活,方便現(xiàn)場(chǎng)安裝,且能配合上位機(jī)完成自動(dòng)識(shí)別參數(shù)類型的功能,可同時(shí)測(cè)量自然γ、井溫、三分量、磁化率、磁測(cè)斜、四電極系、流體電阻率、三側(cè)向電阻率、聲波等參數(shù)。經(jīng)實(shí)驗(yàn)證明該設(shè)計(jì)能夠保證高傳輸速率和可靠通訊,即使在深井高壓高溫環(huán)境下依然能夠保障通訊質(zhì)量。CAN通訊在測(cè)井儀器中的可靠應(yīng)用已得到實(shí)驗(yàn)驗(yàn)證,級(jí)聯(lián)組合方式能夠改善傳統(tǒng)測(cè)井方式的人力、物力消耗,可廣泛應(yīng)用于工程測(cè)井領(lǐng)域。