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