沈繼斌,高艷玲,劉焰波,孫欣艷
(中石油西部鉆探測井公司,新疆 克拉瑪依 834000)
基于CAN總線的測井儀器系統(tǒng)設(shè)計(jì)
沈繼斌,高艷玲,劉焰波,孫欣艷
(中石油西部鉆探測井公司,新疆 克拉瑪依 834000)
為了解決現(xiàn)階段井下儀器常用的總線不能滿足快速組合測井平臺(tái)數(shù)據(jù)傳輸?shù)膯栴},設(shè)計(jì)了一種基于CAN總線的測井儀器系統(tǒng),詳細(xì)介紹了利用ATMEL公司的AT90CAN128控制器及其內(nèi)部集成的CAN核實(shí)現(xiàn)CAN通信的方法和源代碼。現(xiàn)場試驗(yàn)證明,該系統(tǒng)可靠性高、糾錯(cuò)能力強(qiáng)、傳輸速率快和擴(kuò)展靈活,具有較好的應(yīng)用前景。
CAN總線;測井儀器;AT90CAN128
伴隨石油測井儀器組合化和普遍掛接成像儀器的發(fā)展。測井儀器井下系統(tǒng)常用的總線已不能滿足快速組合測井平臺(tái)數(shù)據(jù)傳輸?shù)囊螅?,有必要?duì)測井儀器井下系統(tǒng)的總線結(jié)構(gòu)進(jìn)行升級(jí)。CAN總線是目前較為流行的現(xiàn)場總線之一 ,在石油測井儀器領(lǐng)域有廣泛的應(yīng)用前景。因此,筆者對(duì)基于CAN總線的測井儀器系統(tǒng)進(jìn)行了研究。
CAN(Controller Area Network,控制器局域網(wǎng)絡(luò))是一種具有國際標(biāo)準(zhǔn)的現(xiàn)場總線。由于其高可靠性 、靈活性以及獨(dú)特的設(shè)計(jì),越來越受到人們的重視并被廣泛應(yīng)用于航海、航空、醫(yī)療及工業(yè)領(lǐng)域。CAN總線具有如下特點(diǎn):①通信方式靈活,可以采用多主通信方式,也可以采用單主多從的通信方式;②可根據(jù)報(bào)文的ID決定接收或屏蔽該報(bào)文 ,同時(shí)有可靠的錯(cuò)誤處理和檢錯(cuò)機(jī)制,在發(fā)送的信息遭到破壞后,可自動(dòng)重發(fā),而且節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下具有自動(dòng)退出總線的功能;③通過報(bào)文濾波即可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)及全局廣播等幾種方式傳送接收數(shù)據(jù),無需專門的“調(diào)度”;④通信速率最高可達(dá) 1Mbps(通信距離最長為40m);⑥CAN上的節(jié)點(diǎn)數(shù)主要取決于總線驅(qū)動(dòng)電路,目前可達(dá) 110個(gè)。
圖1 一種典型的CAN總線測井儀器系統(tǒng)
測井儀器系統(tǒng)是一種分布式實(shí)時(shí)測控系統(tǒng),而 CAN總線自身的特點(diǎn)使 CAN總線能夠有效地支持分布式實(shí)時(shí)測控系統(tǒng)。結(jié)合CAN總線在分布式實(shí)時(shí)測控系統(tǒng)中的成功應(yīng)用經(jīng)驗(yàn)以及測井儀器系統(tǒng)的特點(diǎn),將 CAN總線應(yīng)用于測井儀器系統(tǒng)具有較大的優(yōu)勢。在測井儀器中,高速電纜遙傳與井下儀器之間采用高速 CAN總線協(xié)議方式通信,通信速率可以達(dá)到1Mbps,其中高速電纜遙傳由井下調(diào)制MOD/解調(diào)DEMOD單元及井下CAN總線主控制單元組成,二者通過雙口RAM相連接;為了實(shí)現(xiàn)井下儀器與高速電纜遙傳的 CAN通信,每支井下儀器必須配備相應(yīng)的CAN總線子節(jié)點(diǎn)接口。圖1所示為一種典型的基于CAN總線的測井儀器系統(tǒng)示意圖。
圖2 CAN控制器AT90CAN128
地面下發(fā)的命令經(jīng)過遙傳短接的解碼部分解碼后得到的并口信號(hào)通過單片機(jī)的數(shù)據(jù)口PC口進(jìn)入單片機(jī),然后通過單片機(jī)編程將該信號(hào)轉(zhuǎn)換成CAN信號(hào)后,下發(fā)給遙傳儀器或井下其他儀器。井下所有儀器獲得該命令后,儀器中的CAN網(wǎng)絡(luò)會(huì)對(duì)CAN指令中的地址位和該儀器固有的地址進(jìn)行比對(duì),如果一致則接受數(shù)據(jù)并執(zhí)行相應(yīng)的命令。從其余井下儀器得到的數(shù)據(jù)后,經(jīng)過CAN收發(fā)器到控制器,然后從數(shù)據(jù)口PC到達(dá)遙傳的編碼部分,上傳到地面。CAN控制器AT90CAN128如圖2所示。通過數(shù)據(jù)口PC口(PC0~PC7)向遙傳短接的編碼解碼單元接受命令和上傳信號(hào),通過TXCAN和RXCAN和其他井下儀器的CAN站點(diǎn)進(jìn)行通訊,下傳命令或者上傳測井?dāng)?shù)據(jù)信息。
AT90CAN128內(nèi)嵌的CAN核只提供CAN控制協(xié)議,應(yīng)用時(shí)需外加CAN總線 收發(fā)器,設(shè)計(jì)中選用CAN收發(fā)器SN65HVD1050(見圖3)。SN65HVD1050收發(fā)器是協(xié)議控制器和物理傳輸線路之間的接口。為了提高系統(tǒng)的抗干擾能力和對(duì)CAN控制器和收發(fā)器的保護(hù),在CAN總線接口和CAN收發(fā)器之間添加了CAN總線浪涌保護(hù)器NUP2105,其功率為350W反向工作電壓24V擊穿電壓26.4V,可以有效地保護(hù)容錯(cuò)CAN網(wǎng)中的收發(fā)器免受EMI和ESD的影響。二極管采用雙向配置,防止長電纜的系統(tǒng)因共模電壓失調(diào)而對(duì)正常的數(shù)據(jù)線路信號(hào)造成的鉗位。同時(shí)在收發(fā)器的CANH和CANL引腳外接了電容電阻網(wǎng)絡(luò),起到阻抗匹配和抗干擾的作用。
圖3 CAN收發(fā)器SN65HVD1050
4.1數(shù)據(jù)發(fā)送部分的設(shè)計(jì)
1)CAN發(fā)送數(shù)據(jù)初始化 初始化程序主要完成對(duì)所有的報(bào)文對(duì)象進(jìn)行初始化,如設(shè)定CAN總線的接收端和發(fā)送端、設(shè)置CANTCON(CAN控制寄存器)、指定單片機(jī)的工作時(shí)鐘、設(shè)置CANBT[3..1]CAN總線傳輸?shù)牟ㄌ芈实取?/p>
2) CAN發(fā)送數(shù)據(jù)程序 該程序主要是完成以下功能:通過設(shè)置CANPAGE來指定使用的消息對(duì)象,筆者使用的是消息對(duì)象1(MOB1);通過設(shè)置CANIDT[4..1]來制定CAN信息的ID頭信息的位數(shù)和優(yōu)先級(jí)。設(shè)置完成后,將收到的數(shù)據(jù)存入對(duì)應(yīng)的消息對(duì)象緩沖區(qū),具體程序如下:
// 函數(shù)名稱: void CAN_tx_data(uchar txdat)
void CAN_tx_data(uchar *txdat, uchar cnt)
if (cnt >8)
cnt = 8;
CANIDT2 = 0xAA;
CANIDT3 = 0x55;
CANIDT4 = 0xA8;
CANCDMOB = 0x00; //先關(guān)閉CAN通信,然后延遲5ms
delay_ms(5);
4.2數(shù)據(jù)接受部分的設(shè)計(jì)
1)數(shù)據(jù)接受初始化設(shè)計(jì) 初始化程序主要完成都所有的報(bào)文對(duì)象進(jìn)行初始化,如設(shè)定CAN總線的接收端口和發(fā)送端口、設(shè)置CANTCON(CAN控制寄存器)指定單片機(jī)的工作時(shí)鐘等,同時(shí)還要設(shè)置應(yīng)對(duì)ID頭信息的哪幾位進(jìn)行比較,筆者是對(duì)29位信息都進(jìn)行比較,故CANIDM[4..1]的設(shè)置的為全1。具體程序如下:
void CAN_rx_data_init()
{
// 端口設(shè)置
2)CAN接受數(shù)據(jù)程序 該程序是由控制器自動(dòng)完成,只需比較CANSTMOB的RXOK位是否置1,就可判斷數(shù)據(jù)接受是否完成,若完成即可從緩沖區(qū)中取出數(shù)據(jù)。具體程序如下:
// 函數(shù)名稱: CAN_rx_data()
uint CAN_rx_data()
{
uint rx_data;
}
4.3主程序
利用該主程序配合CAN轉(zhuǎn)USB轉(zhuǎn)換器進(jìn)行試驗(yàn),即上位機(jī)程序通過USB口向設(shè)計(jì)的CAN節(jié)點(diǎn)發(fā)送數(shù)據(jù),該節(jié)點(diǎn)接受該數(shù)據(jù)后,同時(shí)將該數(shù)據(jù)發(fā)回到上位機(jī),并在數(shù)據(jù)窗口顯示。使用的是吉陽光電的USB-CAN200 Adapter GY8508和AT90CAN128進(jìn)行CAN 通信。具體程序如下:
Void main()
{
while(1)
{
通過正確配置上位機(jī)程序并和USB轉(zhuǎn)CAN轉(zhuǎn)換器正確連接,利用上位機(jī)程序向設(shè)計(jì)的CAN節(jié)點(diǎn)發(fā)送數(shù)據(jù)后,返回收到的數(shù)據(jù)和發(fā)送的數(shù)據(jù)相同,證明設(shè)計(jì)取得了成功?,F(xiàn)場測試表明,該系統(tǒng)可靠性高、糾錯(cuò)能力強(qiáng)、傳輸速率快和擴(kuò)展靈活,具有較好的應(yīng)用前景。
[1]楊明,郭海龍.CAN總線在測井儀器中的應(yīng)用[J].石油儀器,2009,23(4):86-88.
[3]李積英.基于AT90CAN128單片機(jī)總線實(shí)現(xiàn)方案的研究[J].蘭州交通大學(xué)報(bào)(自然科學(xué)版),2007,26(1):32-34.
[編輯] 李啟棟
10.3969/j.issn.1673-1409(N).2012.06.046
P631.83;TN919
A
1673-1409(2012)06-N141-04
長江大學(xué)學(xué)報(bào)(自科版)2012年16期