嚴(yán)正國 王海強
(1. 西安石油大學(xué) 陜西 西安)(2. 西京學(xué)院 陜西 西安)
CAN 總線是一種具有國際標(biāo)準(zhǔn)的現(xiàn)場總線,由于其可靠的通信能力、良好的錯誤檢測能力以及獨特的設(shè)計,成為國際上應(yīng)用最廣泛的總線之一。測井儀器系統(tǒng)是一種分布式實時測控系統(tǒng),CAN 總線的特點能夠有效地支持分布式測控系統(tǒng)。隨著CAN 總線技術(shù)的普及和石油儀器組合化的發(fā)展,CAN 總線已經(jīng)成為井下快速組合測井平臺常用的總線。因此為了實現(xiàn)組合化測井,各種型號的儀器就需要標(biāo)準(zhǔn)的CAN 接口來實現(xiàn)與CAN 總線測井儀器系統(tǒng)的掛接。本文主要介紹了陣列感應(yīng)測井儀與CAN 總線測井成像系統(tǒng)的掛接實現(xiàn)。
在測井成像系統(tǒng)中,CAN 總線通信方式主要應(yīng)用于高速電纜遙傳與井下儀器之間,可以采用多主通信方式,也可以采用單主多從的通信方式。本文介紹的CAN 總線通信采用單主多從輪詢的通信方式,每隔80 ms向井下儀器發(fā)送遠(yuǎn)程幀請求數(shù)據(jù),80 ms 分成若干時間段分配到井下各支儀器。在不同的時間段,儀器收到相應(yīng)地址的遠(yuǎn)程幀的向總線傳送數(shù)據(jù),然后就等待下一個遠(yuǎn)程幀的到來。遙傳在向單支儀器請求數(shù)據(jù)的時間段,不需要應(yīng)答信號,等待若干時間就向下一支儀器的請求數(shù)據(jù)。
陣列感應(yīng)測井儀可以提供從淺到深的電阻率測井曲線讀值,其垂直分辨率很高,一致性好,已成為電纜感應(yīng)測井的標(biāo)準(zhǔn)。由于儀器能夠提供豐富的地層信息,因此需要處理的數(shù)據(jù)量也比較大,數(shù)據(jù)采集模塊采集、處理、傳輸儀器數(shù)據(jù)需要的時間也較長。因此遙傳請求數(shù)據(jù)和儀器更新數(shù)據(jù)之間存在時序上的差異,需要在接口板的軟件設(shè)計中協(xié)調(diào)兩者的工作時序。
CAN 總線的接口主要是實現(xiàn)陣列感應(yīng)儀與CAN總線測井成像系統(tǒng)的穩(wěn)定可靠通信,是系統(tǒng)與儀器連接的橋梁。接口不僅需要協(xié)調(diào)儀器的數(shù)據(jù)采集模塊與遙傳、地面系統(tǒng)的通信連接,同時不能干擾系統(tǒng)中其它儀器的正常工作。接口與系統(tǒng)連接結(jié)構(gòu)示意如圖1所示。
圖1 接口與系統(tǒng)連接結(jié)構(gòu)
一個CAN 總線接口由3 個部分組成,它們分別對應(yīng)于CAN 總線的物理層、數(shù)據(jù)鏈路層和應(yīng)用層。最上層為微控制器,主要負(fù)責(zé)上層應(yīng)用及系統(tǒng)控制,包括CAN 協(xié)議的應(yīng)用協(xié)議的實現(xiàn),協(xié)調(diào)各系統(tǒng)設(shè)備的工作。中間層為CAN 控制器,負(fù)責(zé)處理數(shù)據(jù)幀,完成數(shù)據(jù)的打包、解包、錯誤界定,并提供報文緩沖和傳輸濾波。最底層為CAN 收發(fā)器,主要是進(jìn)行接口電平的轉(zhuǎn)換、接口電氣特性的處理。獨立的CAN 控制器需要外接一個微處理器,在CPU 的控制下才能運行。
本文介紹的CAN 總線接口采用的C8051F060 集成了微處理器和CAN 控制器,大大簡化了應(yīng)用系統(tǒng)的硬件設(shè)計,系統(tǒng)的可靠性也有很大的提高。CAN 收發(fā)器采用TI 公司生產(chǎn)的SN65HVD230 型電路,適用于較高通訊速率、良好抗干擾能力和高可靠性CAN 總線的串行通信。CAN 總線的兩端需要接一個匹配電阻,提高通信的抗干擾能力和可靠性。為了降低儀器節(jié)點對總線的干擾,采用電源隔離和數(shù)據(jù)隔離。接口電路結(jié)構(gòu)示意如圖2 所示。
圖2 接口電路結(jié)構(gòu)圖
接口板的軟件設(shè)計主要是協(xié)調(diào)單片機集成的CAN控制器與異步串行口UART 之間的通信,實現(xiàn)儀器與總線之間的數(shù)據(jù)傳輸。
單片機通過串口與儀器的數(shù)據(jù)采集模塊通信,數(shù)據(jù)采集模塊每隔一定時間更新一次數(shù)據(jù),更新后的數(shù)據(jù)存放在緩沖區(qū),等待接口板請求數(shù)據(jù)。同時,通過CAN 接口與總線通信接收總線上的信息,包括地面系統(tǒng)發(fā)送的命令幀和遙傳發(fā)送的遠(yuǎn)程幀。地面系統(tǒng)隨機向下發(fā)送命令幀,不請求數(shù)據(jù),只改變儀器工作狀態(tài)。遙傳每80 ms 發(fā)送一次遠(yuǎn)程幀,只請求數(shù)據(jù)。因為數(shù)據(jù)采集模塊更新數(shù)據(jù)和遠(yuǎn)程幀請求數(shù)據(jù)的時間不匹配,為了保證兩者的數(shù)據(jù)正確傳輸,需要在軟件設(shè)計上同步兩者的時序。本文采取的措施是在接口板上設(shè)置存儲緩沖區(qū),緩沖區(qū)用來接收來自數(shù)據(jù)采集模塊更新的數(shù)據(jù)。遙傳的遠(yuǎn)程幀到來時,把緩沖區(qū)存放的數(shù)據(jù)發(fā)送到總線,接口板不立即向數(shù)據(jù)采集模塊請求數(shù)據(jù),設(shè)置緩沖時間,等待若干個遠(yuǎn)程幀后再向數(shù)據(jù)采集模塊請求數(shù)據(jù),從而更新總線上的數(shù)據(jù)。程序的主要流程如圖3 所示。
圖3 程序流程圖
流程圖中的標(biāo)志位remote_flag 的置位在CAN 的接收中斷中實現(xiàn),當(dāng)總線上遠(yuǎn)程幀到達(dá)該儀器節(jié)點,程序就會進(jìn)入接收中斷,置位遠(yuǎn)程幀標(biāo)志位。否則,程序就會進(jìn)入等待狀態(tài)。
儀器在掛接到CAN 總線系統(tǒng)調(diào)試過程中,需要保證儀器與地面系統(tǒng)的正常通信,這樣能夠排除總線上的干擾,容易配接。同時很容易定位問題,找到接口板設(shè)計存在的缺陷。儀器與地面系統(tǒng)的配接包括四個模塊的通信,包括地面系統(tǒng)、遙傳、接口板和數(shù)據(jù)采集模塊。
在儀器與地面系統(tǒng)配接過程中,首先地面系統(tǒng)不發(fā)命令,接口板不向數(shù)據(jù)采集模塊請求數(shù)據(jù)。遙傳向接口板請求數(shù)據(jù),此時緩沖區(qū)中存放初始化的數(shù)據(jù),這樣能夠確定接口板的CAN 接口與遙傳的正常通信。根據(jù)C_CAN 用戶手冊,當(dāng)儀器節(jié)點收到遠(yuǎn)程幀,接口板的CAN 控制器中的相應(yīng)的消息對象有三種設(shè)置來處理遠(yuǎn)程幀。一般最常用的設(shè)置是,接收到遠(yuǎn)程幀后,CAN 控制器自動發(fā)送具有同一標(biāo)識符的數(shù)據(jù)幀。第二種配置是忽略遠(yuǎn)程幀,節(jié)點不做響應(yīng)。此處采用第三種配置,把遠(yuǎn)程幀類似于數(shù)據(jù)幀來處理,接到遠(yuǎn)程幀后,節(jié)點不自動發(fā)送數(shù)據(jù),只改變遠(yuǎn)程幀標(biāo)志位,通過判斷標(biāo)志位節(jié)點主動發(fā)送數(shù)據(jù),遠(yuǎn)程幀的標(biāo)識符和節(jié)點發(fā)送的數(shù)據(jù)幀的標(biāo)識符不相同。
地面系統(tǒng)與儀器的通信過程中,數(shù)據(jù)采集模塊啟動采集可能需要較長的時間,這時候地面系統(tǒng)在儀器上電的過程中發(fā)送命令幀,容易導(dǎo)致數(shù)據(jù)采集模塊的不正常工作。因此,一方面要保證數(shù)據(jù)采集模塊的主控芯片的可靠復(fù)位,另一方面,接口板需要延遲命令下發(fā)的時間。通過對CAN 總線發(fā)送數(shù)據(jù)的次數(shù)計數(shù),延遲第一次命令下發(fā)的時間,從而確定地面系統(tǒng)下發(fā)命令,通過遙傳和接口板的透傳,數(shù)據(jù)采集模塊的正常工作。
接口板與數(shù)據(jù)采集模塊的串口通信影響著數(shù)據(jù)的更新速度和正確傳輸。數(shù)據(jù)采集模塊采集到數(shù)據(jù)之后就把數(shù)據(jù)放在緩沖區(qū)等待接口板的命令,當(dāng)采集沒有完成,接口板就請求不到數(shù)據(jù),如果接口板的串口接收過程處理不當(dāng),把這個過程放在主程序,接收中斷服務(wù)程序只改變標(biāo)志位,就會導(dǎo)致程序死機。為了保證接口板數(shù)據(jù)的連續(xù)轉(zhuǎn)發(fā),需要把接口板的串口接收過程放在串口的接收中斷服務(wù)程序中,從而保證程序的連續(xù)執(zhí)行,事實也證明這種處理也解決了拷機過程中丟幀亂幀的現(xiàn)象。
儀器在與地面系統(tǒng)成功配接后就可以進(jìn)行儀器與CAN 總線測井成像系統(tǒng)的集成。CAN 總線上掛接著來自不同廠家的不同型號的儀器,都是通過CAN 總線接口掛接在總線上,按照CAN 總線通訊協(xié)議實現(xiàn)協(xié)調(diào)工作。每個掛接到總線上的儀器都需要遵守CAN 總線通訊協(xié)議,與其它儀器的共同工作。
由于總線上各種儀器硬件上的差異和儀器集成后延長了通信距離,總線上不可避免出現(xiàn)各種干擾。干擾表現(xiàn)在各種方面,通常表現(xiàn)為接入新儀器后總線上時序混亂,儀器都不能正常工作或部分不能正常工作。本文從硬件和軟件兩個方面去解決總線中的相互干擾。
首先,在硬件電路上需要調(diào)節(jié)終端電阻,終端電阻主要是解決信號在通信線路中由于阻抗的不連續(xù)和不匹配造成的信號反射。信號的反射降低了通信的抗干擾性和傳輸能源效率,在通訊線路處在空閑方式時,可能造成整個網(wǎng)絡(luò)數(shù)據(jù)的混亂。陣列感應(yīng)接在測井成像系統(tǒng)的最末端,對輸出功率要求比較嚴(yán)格,因此調(diào)節(jié)終端電阻顯得更加重要。終端電阻的理論值是120 Ω,但是在具體使用中應(yīng)結(jié)合現(xiàn)場具體情況調(diào)節(jié)合適的阻值。
其次,程序設(shè)計中在設(shè)置消息對象之前,宜將相應(yīng)的消息對象Msgval 設(shè)置為無效,配置完成后再將Msgval 設(shè)置為有效。同時,其它不用的消息對象也要設(shè)置為無效,防止在使用過程中,沒有使用的消息對象的不可預(yù)測的行為造成的總線干擾。
最后,一般需要設(shè)置掩碼濾波寄存器,通過掩碼濾波屏蔽該節(jié)點不需要的地址標(biāo)識符,從而使總線不能夠響應(yīng)其它節(jié)點的遠(yuǎn)程幀。但是在配接過程中,C8051F060 集成的CAN 控制器經(jīng)常出現(xiàn)對其它節(jié)點的地址標(biāo)識符的錯誤應(yīng)答,掩碼濾波無法屏蔽這種接收應(yīng)答,影響到了其它儀器的正常工作。根據(jù)C_CAN 用戶手冊,本文通過使用測試模式下的靜聽(Slient)模式解決了當(dāng)前節(jié)點的錯誤應(yīng)答,成功實現(xiàn)了陣列感應(yīng)儀在測井成像系統(tǒng)上的掛接。
CAN 控制器可以在正常模式和測試模式下工作。正常模式用于正常通信,測試模式往往是為了檢驗總線上的錯誤,通過設(shè)定特定的工作模式來定位問題所在。在靜聽模式下,CAN 控制器能夠接收到有效地遠(yuǎn)程幀和數(shù)據(jù)幀,但是它只能夠向總線上發(fā)送隱性位,不能啟動數(shù)據(jù)傳送。盡管CAN 總線一直處在隱形狀態(tài),如果CAN 控制器需要一個顯性位(應(yīng)答位,過載標(biāo)志,激活錯誤標(biāo)志),該位在內(nèi)部自動更改以至于CAN 控制器內(nèi)核可以監(jiān)聽到這個顯性位。靜聽模式可以通過屏蔽該節(jié)點發(fā)送的應(yīng)答和錯誤幀用來分析總線上的運行狀況。靜聽模式下的CAN_TX 和CAN_RX 與CAN核的連接如圖4 所示。
圖4 靜聽模式
在靜聽模式下,CAN 控制器Tx 狀態(tài)不影響總線,對CAN_TX 輸出始終為1。但是,Rx 不僅能接收總線上CAN_RX 上的信號,還能接收到自身Tx 上的信號,其Tx 與CAN_RX 對控制器Rx 的作用為與運算,即若Tx 發(fā)送顯性電平0,CAN_RX 發(fā)送隱形電平1,則控制器收到的電平為0,不過Tx 的狀態(tài)不會反饋到總線上。通過設(shè)置CAN 控制器工作在靜聽模式,消除了新接入的儀器對總線的干擾,保證了當(dāng)前節(jié)點不會對總線產(chǎn)生影響。當(dāng)儀器節(jié)點收到該節(jié)點的遠(yuǎn)程幀后,主程序就需要把CAN 控制器切換到正常工作模式,發(fā)送數(shù)據(jù),發(fā)送結(jié)束之后立即返回靜聽模式。這樣在主程序中發(fā)送數(shù)據(jù)過程的前后設(shè)置模式轉(zhuǎn)換實現(xiàn)了當(dāng)前節(jié)點的正常通信。在實際使用中,這種工作方式穩(wěn)定可靠,滿足了使用要求。
CAN 總線組合測井是當(dāng)前測井行業(yè)的發(fā)展趨勢,傳統(tǒng)儀器與總線系統(tǒng)的掛接成為儀器廠家必須面對的問題。掛接過程涉及的儀器種類繁多且來自不同的廠家和地區(qū),給掛接帶來許多困難和麻煩。本文介紹了陣列感應(yīng)測井儀與CAN 總線測井成像系統(tǒng)的掛接過程中出現(xiàn)的各種問題,并給出了比較可靠的解決方案,為其它儀器的掛接提供了參考,具有一定的實用價值。
[1]楊 明,郭海龍. CAN 總線在測井儀器中的應(yīng)用[J]. 石油儀器,2009,23(4)
[2]童長飛. C8051F 系列單片機開發(fā)與C 語言編程[M]. 北京:北京航空航天出版社