張友明
(大慶油田測(cè)試技術(shù)服務(wù)分公司監(jiān)測(cè)技術(shù)研發(fā)中心 黑龍江 大慶 163453)
?
·開(kāi)發(fā)設(shè)計(jì)·
基于C8051F500的井下CAN總線接口設(shè)計(jì)
張友明
(大慶油田測(cè)試技術(shù)服務(wù)分公司監(jiān)測(cè)技術(shù)研發(fā)中心 黑龍江 大慶 163453)
CAN總線具有通訊速率高、穩(wěn)定可靠、技術(shù)成熟的特點(diǎn),是工程測(cè)井技術(shù)模塊化應(yīng)用的關(guān)鍵技術(shù)之一。文章介紹了CAN總線及C8051F500集成單片機(jī)的特點(diǎn),給出了基于該種單片機(jī)實(shí)現(xiàn)的CAN總線接口硬件結(jié)構(gòu)和軟件設(shè)計(jì)方法,并通過(guò)實(shí)驗(yàn)證明了該設(shè)計(jì)可以滿足應(yīng)用要求。
CAN總線;C8051F500;接口硬件;接口軟件;模塊化工程測(cè)井應(yīng)用
在模塊化應(yīng)用設(shè)計(jì)中,高速井下總線是重要支撐技術(shù)[1]。CAN總線是由德國(guó) BOSCH公司首先提出的用于汽車實(shí)時(shí)控制的串行通信總線技術(shù),經(jīng)多年發(fā)展,目前已是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一[2]。CAN總線采用了多種先進(jìn)技術(shù),總線采用差分結(jié)構(gòu),抗干擾能力強(qiáng),物理介質(zhì)為廉價(jià)的雙絞線,總線構(gòu)建十分簡(jiǎn)單。其通訊速率高達(dá)1 Mbps,可有效管理64個(gè)以上節(jié)點(diǎn)。由于CAN是基于報(bào)文的編碼,而不是對(duì)CAN節(jié)點(diǎn)進(jìn)行編碼,增添或刪除CAN節(jié)點(diǎn)不會(huì)對(duì)整個(gè)系統(tǒng)造成影響,特別適合模塊化應(yīng)用中短接按需掛接?;谏鲜鲈?,選擇了CAN總線作為模塊化應(yīng)用的井下總線。
1.1 應(yīng)用模型
如圖1所示,在模塊化應(yīng)用中,不同短接掛接在同一CAN井下總線上,成為總線上一個(gè)節(jié)點(diǎn),通過(guò)各自的CAN總線接口,一方面接收地面系統(tǒng)的下發(fā)指令,另一方面,解碼指令,并按照指令要求,通過(guò)井下總線上傳各短接模塊的數(shù)據(jù)。
圖1 模塊化應(yīng)用示意圖
由于CAN總線接口具有控制和指令判斷等功能,是一智能接口,因此,多用MCU(或DSP)加CAN控制模塊、CAN驅(qū)動(dòng)器來(lái)構(gòu)建接口硬件,如圖2所示。若采用獨(dú)立的CAN控制模塊,如常見(jiàn)的CAN控制器SJA1000[3],來(lái)構(gòu)建CAN接口,需占用MCU的I/O口及較多硬件和程序資源,單元之間連線也多,結(jié)構(gòu)復(fù)雜,應(yīng)用不便。由于CAN總線的廣泛應(yīng)用,眾多廠家推出了各種內(nèi)部集成了CAN控制器的MCU,本應(yīng)用選擇的C8051F500便是其中綜合性能較高的一種。CAN驅(qū)動(dòng)器,決定著CAN總線節(jié)點(diǎn)數(shù)目,隨著技術(shù)的發(fā)展,其性能不斷提高,功能不斷完善。不同產(chǎn)品在驅(qū)動(dòng)能力、抗干擾能力、防靜電能力、總線隔離能力方面各有特點(diǎn),可根據(jù)需要來(lái)選擇[4]。
圖2 CAN接口硬件結(jié)構(gòu)示意圖
由于C8051F500和驅(qū)動(dòng)器體積小,連線簡(jiǎn)單,基于模塊化設(shè)計(jì)思想,可將它們與其它少量輔助元件一起設(shè)計(jì)成CAN接口模塊,如圖3所示。它含有CAN通訊所需各種硬件,擴(kuò)展了眾多I/O口,方便用于短接功能模塊的控制,可作為一個(gè)器件使用,適于應(yīng)用在不同短接的CAN接口設(shè)計(jì)中。
圖3 CAN接口模塊小板
1.2 C8051F500特點(diǎn)
C8051F500是Silicon Labs 推出的完全集成的混合信號(hào)片上系統(tǒng)型微處理器,它采用兼容MCS-51指令集的高速8051μc內(nèi)核,但指令方式為高效的流水線模式,執(zhí)行速度是標(biāo)準(zhǔn)8051的10倍以上。除具備標(biāo)準(zhǔn)8051功能外,片上還集成了12位高速A/D、比較器等模擬外設(shè),UART、CAN、SMBUS、SPI、PCA等數(shù)字外設(shè),功能強(qiáng)大。C8051F500采用48-Pin QFP封裝,體積小。具有40個(gè)I/O口,控制能力強(qiáng)。擁有64K片上程序存儲(chǔ)空間和4K內(nèi)部RAM,適合復(fù)雜編程。該芯片為汽車級(jí)芯片,工作溫度-40℃~125℃,具有多種低功耗工作模式。
C8051F500集成了Bosch-CAN控制器,支持CAN2.0A(標(biāo)準(zhǔn))和2.0B(擴(kuò)展)規(guī)范,CAN通訊速率可達(dá)1 Mbps,它擁有多達(dá)32個(gè)消息郵箱用于發(fā)送和接收數(shù)據(jù)。如圖4所示,該CAN控制器獨(dú)立性強(qiáng),只須MCU提供可編程時(shí)鐘。由于C8051F500已將CAN控制器的協(xié)議寄存器一一對(duì)應(yīng)地映射到MCU的寄存器,對(duì)CAN控制器的寄存器操作可通過(guò)直接操作MCU中對(duì)應(yīng)寄存器來(lái)完成,控制簡(jiǎn)單高效[4]。
圖4 C8051F500的集成CAN模塊
作為井下短接的CAN總線接口,主要功能是響應(yīng)總線下發(fā)指令,并上傳本短接的數(shù)據(jù)。總體軟件流程如圖5所示??紤]到指令接收的實(shí)時(shí)性,指令接收采用中斷響應(yīng),在CAN接收中斷程序中置位“命令接收標(biāo)志”,供主程序查詢,命令響應(yīng)后,再清零“命令接收標(biāo)志”。
圖5 接口軟件設(shè)計(jì)流程圖
由于C8051F500的CAN控制器集成了CAN物理層及數(shù)據(jù)鏈路層的大部分硬件功能, 包括數(shù)據(jù)的編碼、解碼、校驗(yàn)。用戶只須定義應(yīng)用層通訊協(xié)議,并按協(xié)議對(duì)CAN控制器進(jìn)行配置,對(duì)發(fā)送和接收郵箱進(jìn)行初始化,將數(shù)據(jù)寫(xiě)入發(fā)送郵箱即啟動(dòng)發(fā)送,接收時(shí)根據(jù)接收中斷標(biāo)志,直接從接收郵箱中獲取接收數(shù)據(jù)。本例中通訊協(xié)議基于CA2.0B技術(shù)規(guī)范制訂,充分利用其29位ID定義了短接的編號(hào)、數(shù)據(jù)類型、數(shù)據(jù)塊長(zhǎng)度、短接狀態(tài)等信息。CAN通訊軟件分為3部分:CAN 初始化、數(shù)據(jù)發(fā)送、命令接收。
2.1 CAN模塊初始化
CAN模塊初始化就是根據(jù)應(yīng)用層協(xié)議參數(shù)來(lái)設(shè)置好本短接要接收和發(fā)送的CAN幀的幀類型、幀格式、ID號(hào),指定接收對(duì)象和發(fā)送對(duì)象使用的郵箱號(hào),設(shè)置CAN通訊速率并啟動(dòng)CAN狀態(tài)機(jī)。由于C8051F500中CAN控制器的易用性,只需將有關(guān)參數(shù)直接寫(xiě)入C8051F500的CAN0_PAGE中的相關(guān)寄存器即可,初始化程序一般結(jié)構(gòu)如下:
voidInitCan( )
{
SFRPAGE= CAN0_PAGE; ∥切換到CAN寄存器頁(yè)
ClearMsgObjs(); ∥ 清空CAN緩沖區(qū)
InitTxMsgObj(MsgBoxNum1); ∥根據(jù)應(yīng)用層協(xié)議參數(shù)初始化發(fā)送報(bào)文對(duì)象
∥發(fā)送報(bào)文對(duì)象使用“MsgBoxNum1”號(hào)郵箱
InitRxMsgObj(MsgBoxNum2); ∥根據(jù)應(yīng)用層協(xié)議參數(shù)初始化接收?qǐng)?bào)文對(duì)象
∥接收?qǐng)?bào)文對(duì)象使用“MsgBoxNum2”號(hào)郵箱
StartCan(); ∥設(shè)置CAN通訊速率率,啟動(dòng)CAN狀態(tài)機(jī)
}
2.2 CAN幀的發(fā)送與接收
在完成了CAN控制器初始化后,發(fā)送程序要做的就是將數(shù)據(jù)寫(xiě)入發(fā)送報(bào)文對(duì)象的數(shù)據(jù)場(chǎng)區(qū),并為對(duì)象指定發(fā)送郵箱,CAN控制器將在總線空閑時(shí)將包含數(shù)據(jù)的CAN幀送至總線。程序通常結(jié)構(gòu)如下:
voldCanTransmit (char MsgBoxNum,*nTxBuf)
{
SFRPAGE= CAN0_PAGE; ∥ 切換到CAN寄存器頁(yè)
IF1CMDMSK=0xaf; ∥ 設(shè)定為"寫(xiě)"發(fā)送報(bào)文對(duì)象
IF1DATA1=nTxBuf[0]; IF1DATA2=nTxBuf[1]; ∥ 填充發(fā)送報(bào)文對(duì)象的數(shù)據(jù)場(chǎng)
IF1DATB1=nTxBuf[2]; IF1DATB2=nTxBuf[3];
IF1CMDRQST=MsgBoxNum; ∥通過(guò)IF1寫(xiě)“MsgBoxNum”號(hào)郵箱,并啟動(dòng)發(fā)送
}
CAN幀的接收也是由CAN控制器自動(dòng)完成的。當(dāng)CAN控制器偵測(cè)到總線上有CAN幀時(shí),將其存入緩沖區(qū),通過(guò)初始化中設(shè)置的掩碼、仲裁字對(duì)CAN幀進(jìn)行濾波,濾波通過(guò)則產(chǎn)生接收中斷,通知程序從接收郵箱取出數(shù)據(jù),存入接收數(shù)組。接收程序如下:
voldCanReceive (char MsgBoxNum,*nRxBuf)
{
SFRPAGE= CAN0_PAGE; ∥ 切換到CAN寄存器頁(yè)
IF2CMDMSK=0x4e; ∥ 設(shè)定為"讀"接收?qǐng)?bào)文對(duì)象
IF2CMDRQST=MsgBoxNum; ∥ 通過(guò)IF2讀取“MsgBoxNum”號(hào)郵箱,獲取數(shù)據(jù)
nRxBuf[0] = IF2DATA1; nRxBuf[1] = IF2DATA2; ∥ 指向數(shù)據(jù)場(chǎng),接收數(shù)據(jù),存入數(shù)據(jù)接收數(shù)組
nRxBuf[2] = IF2DATB1; nRxBuf[3] = IF2DATB2;
}
2.3 多幀處理
根據(jù)CAN協(xié)議,單個(gè)CAN幀只能傳輸8個(gè)字節(jié),這對(duì)一般控制應(yīng)用是足夠的。在模塊化應(yīng)用中,控制命令的收發(fā)可使用單幀方式來(lái)完成,但工程測(cè)井通常采集數(shù)據(jù)量較大,需要通過(guò)多個(gè)CAN幀才能完成傳輸。實(shí)現(xiàn)數(shù)據(jù)多幀傳輸?shù)姆桨负芏?,本例采取的方法是,在?duì)象的ID中設(shè)置多幀標(biāo)志,并將其數(shù)據(jù)場(chǎng)第1字節(jié)用作多幀計(jì)數(shù)器,只有多幀標(biāo)志信顯示為多幀時(shí),此字節(jié)才計(jì)數(shù),若是單幀,則此字節(jié)仍用來(lái)傳輸數(shù)據(jù)。程序中,若需要多幀傳輸,則在對(duì)象ID中置位多幀標(biāo)志,根據(jù)短接數(shù)據(jù)量,計(jì)算所需單幀數(shù)量,按順序逐幀傳輸,數(shù)據(jù)場(chǎng)第1字節(jié)用作幀序號(hào)。接收時(shí),再按序號(hào)將多幀數(shù)據(jù)整合成完整數(shù)據(jù)幀。該方法比較容易實(shí)現(xiàn),擴(kuò)展性好。
為檢驗(yàn)上述CAN總線接口設(shè)計(jì),進(jìn)行了CAN通訊實(shí)驗(yàn)。實(shí)驗(yàn)中三個(gè)模擬CAN節(jié)點(diǎn)通過(guò)CAN接口掛接在CAN雙絞線總線上。主節(jié)點(diǎn)向從節(jié)點(diǎn)1(Muledd短接)、從節(jié)點(diǎn)2(井徑短接)、從節(jié)點(diǎn)3(方位短接)發(fā)送控制指令和索數(shù)指令,從節(jié)點(diǎn)響應(yīng)指令、上傳本節(jié)點(diǎn)數(shù)據(jù)及其狀態(tài)到主節(jié)點(diǎn),主節(jié)點(diǎn)再將這些數(shù)據(jù)與本節(jié)點(diǎn)數(shù)據(jù)合成統(tǒng)一數(shù)據(jù)幀,上傳到PC機(jī)。實(shí)驗(yàn)中,雙絞線長(zhǎng)度20 m,速率為1Mbps,實(shí)驗(yàn)溫度150 ℃。結(jié)果表明,數(shù)據(jù)、命令傳輸正常,命令實(shí)時(shí)響應(yīng)正常。圖6是實(shí)驗(yàn)截圖。
圖6 CAN總線通訊實(shí)驗(yàn)效果
基于C8051F500的CAN總線接口設(shè)計(jì),以高性能的片上系統(tǒng)型MCU為基礎(chǔ),采用集成化設(shè)計(jì)方法,具有硬件結(jié)構(gòu)簡(jiǎn)單、可編程能力強(qiáng)的特點(diǎn)。經(jīng)實(shí)驗(yàn)驗(yàn)證,該設(shè)計(jì)可以滿足模塊化工程測(cè)井應(yīng)用數(shù)據(jù)量大、控制復(fù)雜、實(shí)時(shí)性強(qiáng)的技術(shù)需求。
[1] 張友明, 劉青昕,劉向友. 套管檢測(cè)技術(shù)的模塊化應(yīng)用設(shè)計(jì). 大慶測(cè)試分公司論文集, 2012:120-120.(資料)
[2] 饒運(yùn)濤,鄒繼軍,鄭勇蕓. 現(xiàn)場(chǎng)總線CAN 原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003:208-209.
[3] 王 敏.CAN控制器與單片機(jī)的接口電路設(shè)計(jì)[J]. 石油儀器, 2011,25(2):76-80.
[4] 秦 健.基于CAN總線驅(qū)動(dòng)器和異步收發(fā)器的通信網(wǎng)絡(luò)[J].計(jì)算機(jī)測(cè)量與控制 2010,18(2):443-445.
·專利技術(shù)·
專利名稱:一種撬裝式油氣分離計(jì)量測(cè)試儀
專利申請(qǐng)?zhí)枺篊N201320345710.9 公開(kāi)號(hào):CN203271708U
申請(qǐng)日:2013.06.17 公開(kāi)日:2013.11.06
申請(qǐng)人:王成;李曉雷;王奔
本實(shí)用新型涉及一種撬裝式油氣分離計(jì)量測(cè)試儀,包括底座和設(shè)在底座下的滾輪,分離緩沖罐上開(kāi)設(shè)有與旋流分離器相連通的入口分離器,分離緩沖罐頂部開(kāi)設(shè)有出氣口和底部開(kāi)設(shè)有出液口,出氣口處安裝除霧器,出氣口通過(guò)管道依次連通有壓力計(jì)、控制閥和氣體流量計(jì),出液口通過(guò)管道依次連通有離心泵和質(zhì)量流量計(jì),氣體流量計(jì)和質(zhì)量流量計(jì)輸出端連接有輸出控制閥,控制顯示部分分別控制旋流分離器、除霧器、離心泵、壓力計(jì)和氣體流量計(jì)以及質(zhì)量流量計(jì)。所述的一種撬裝式油氣分離計(jì)量測(cè)試儀,此測(cè)試儀可以對(duì)特殊位置油井的產(chǎn)量進(jìn)行計(jì)量,利用質(zhì)量流量計(jì)和氣體流量計(jì)實(shí)現(xiàn)油氣水三相分離計(jì)量,其具有結(jié)構(gòu)緊湊,便于操作并且便于移動(dòng)運(yùn)輸,適用于單井計(jì)量。
(王元蓀 提供)
Design of CAN Bus Interface for Underground Communication Based on C8051F500
ZHANG Youming
(Logging&TestingServicesCompanyofDaqingOilfieldCompanyLtd.,Daqing,Heilongjiang163453,China)
CAN bus is an advanced, stable and reliable bus technology with high communication rate, so it is used in modular engineering logging application as a key technology. The paper first introduces the technologic parameters of CAN bus and C8051F500 MCU, then gives the hardware structure and the software designing of CAN bus interface based on C8051F500. The experiment results verify that the interface design can meet the requirements of the modular engineering logging application.
CAN bus,C8051F500,hardware of interface,software of interface,modular engineering logging technology
張友明,男,1970年生,高級(jí)工程師,1992年畢業(yè)于大慶石油學(xué)院勘探系礦場(chǎng)地球物理專業(yè),現(xiàn)在大慶油田測(cè)試技術(shù)服務(wù)分公司監(jiān)測(cè)技術(shù)研發(fā)中心從事測(cè)井儀器研制工作。E-mial:dlts_zhangyoum@pefrochian.com.cn
TN919
A
2096-0077(2015)01-0033-03
2014-05-20 編輯:姜婷)