CAN總線在測(cè)溫系統(tǒng)中的應(yīng)用
控制器局部網(wǎng)(controller area network,CAN)屬于現(xiàn)場(chǎng)總線的范疇,它是一種有效支持分布式控制的串行通訊網(wǎng)絡(luò),被公認(rèn)為是最有前途的現(xiàn)場(chǎng)總線之一。本文利用MAX6675測(cè)溫芯片作為傳感器,使用CAN總線標(biāo)準(zhǔn)設(shè)計(jì)了一種智能測(cè)溫系統(tǒng)(適用范圍0℃~+1023.5℃)。該系統(tǒng)精度高(±0.5℃)、可靠性好、結(jié)構(gòu)簡(jiǎn)單、成本低,在適用范圍內(nèi)可取代傳統(tǒng)的測(cè)溫系統(tǒng),對(duì)該系統(tǒng)稍加修改,可使它應(yīng)用于在多種測(cè)溫場(chǎng)合。
1 硬件設(shè)計(jì)
硬件電路由微處理器、CAN控制器、測(cè)溫芯片MAX6675、LED、鍵盤、復(fù)位電路、蜂鳴器等幾部分組成,如圖1所示。單片機(jī)AT89C51是硬件電路的核心,承擔(dān)CAN 控制器的初始化、數(shù)據(jù)收發(fā)控制等任務(wù);CAN總線控制器用于同上位機(jī)進(jìn)行遠(yuǎn)程通訊,能夠獨(dú)立完成CAN總線上數(shù)據(jù)的接收和發(fā)送工作;MAX6675芯片用于檢測(cè)和發(fā)送溫度數(shù)據(jù)。
圖2 測(cè)溫電路圖
MAX6675從I/O口線輸出數(shù)據(jù)的具體過(guò)程如下:P12端口輸出的低電平將CS變低,并提供時(shí)鐘信號(hào)給SCK,由SO口讀取測(cè)量結(jié)果。CS變低,將停止任何轉(zhuǎn)換過(guò)程,CS變高將啟動(dòng)一個(gè)新的轉(zhuǎn)換過(guò)程。
一個(gè)完整串行接口讀操作需16個(gè)時(shí)鐘周期,在時(shí)鐘的下降沿讀16個(gè)輸出位。第15位是偽標(biāo)志位,并總為0;第14位到第3位為以MSB到LSB順序排列的轉(zhuǎn)換溫度值;第2位平時(shí)為低,當(dāng)熱電偶輸入開(kāi)放時(shí)為高,開(kāi)放熱電偶檢測(cè)電路完全由MAX6675實(shí)現(xiàn),為開(kāi)放熱電偶檢測(cè)器操作,T-必須接地,并使能地點(diǎn)盡可能接近GND 腳;第1位為低以提供MAX6675器件身份碼,第0位為三態(tài)標(biāo)志位 。
1.2 CAN總線的通信節(jié)點(diǎn)電路
通信節(jié)點(diǎn)采用PHILIPS公司生產(chǎn)的符合CAN2.0B協(xié)議的獨(dú)立CAN通信控制器SJA1000及CAN收發(fā)器PCA82C250組成與其他智能節(jié)點(diǎn)或上位機(jī)的通信接口,實(shí)現(xiàn)數(shù)據(jù)傳輸。CAN控制器SJA1000工作在中斷模式,通過(guò)其中斷輸出引腳向CPU申請(qǐng)中斷,CPU在中斷子程序內(nèi)完成對(duì)上位機(jī)命令的解釋與執(zhí)行。CAN通信節(jié)點(diǎn)電路如圖3所示。
圖4 溫度采集程序流程圖
2.2 CAN通訊節(jié)點(diǎn)設(shè)計(jì)
CAN接口通信軟件設(shè)計(jì)主要分為三部分:CAN初始化、數(shù)據(jù)發(fā)送、數(shù)據(jù)接收。
2.2.1 CAN控制器SJA1000的初始化
CAN初始化主要是設(shè)置SJA1000的參數(shù)。需要初始化的CAN控制寄存器有:模式寄存器、時(shí)分寄存器、接收代碼寄存器、屏蔽寄存器、總線定時(shí)寄存器、輸出控制寄存器。這些寄存器只能在CAN控制器處于復(fù)位狀態(tài)下才可寫訪。設(shè)SJA1000的首地址是0BF00H。初始化子程序如下:
CR EQU 0BF00H; 控制寄存器
CMR EQU 0BF01H; 命令寄存器
SR EQU 0BF02H; 狀態(tài)寄存器
IR EQU 0BF03H; 中斷寄存器
ACR EQU 0BF04H; 驗(yàn)收碼寄存器
AMR EQU 0BF05H; 驗(yàn)收屏蔽寄存器
BTR0 EQU 0BF06H; 總線定時(shí)寄存器0
BTR1 EQU 0BF07H; 總線定時(shí)寄存器1
OCR EQU 0BF08H; 輸出控制寄存器
CANINI:MOV DPTR,#CR ;開(kāi)始初始化
MOV A,#01H ;置復(fù)位請(qǐng)求為高
MOVX @DPTR,A
CANI1:MOVX A,@DPTR ;判復(fù)位請(qǐng)求有效
JNB ACC.0,CAN I1
MOV DPTR,#ACR ;寫接收碼寄存器
MOV A,NODE;設(shè)置接點(diǎn)號(hào)
MOVX @DPIR,A
MOV DPTR,#AMR;寫接收碼屏蔽寄存器
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#BTR0;寫總線定時(shí)寄存器0
MOV A,NBTR0;設(shè)置波特率
MOVX @DPIR,A
MOV DPTR,#BTR1;寫總線定時(shí)寄存器1
MOV A,NBTR1
MOVX @DPTR,A
MOV DPTR,#OCR;寫輸出控制寄存器
MOV A,#0FAH
MOV @DPTR,A
MOV DPTR,#CDR;寫時(shí)鐘分頻寄存器
MOV A,#00H ;設(shè)定工作模式
MOVX @DfTR ,A
MOV DPTR,#CR ;寫控制寄存器
MOV A,#0EH ;開(kāi)放中斷源
MOVX @DPTR,A
RET
2.2.2 CAN接收與發(fā)送數(shù)據(jù)程序
發(fā)送數(shù)據(jù)程序把數(shù)據(jù)存儲(chǔ)區(qū)中待發(fā)送的數(shù)據(jù)取出,組成數(shù)據(jù)幀,并將主機(jī)的ID地址填人幀頭,然后將數(shù)據(jù)幀發(fā)送到CAN 控制器的發(fā)送緩沖區(qū)。其數(shù)據(jù)幀形式如下:
幀起始→仲裁場(chǎng)→控制場(chǎng)→數(shù)據(jù)場(chǎng)(8B)→CRC場(chǎng)→ACK場(chǎng)→幀結(jié)束。
在接收到主機(jī)的發(fā)送請(qǐng)求后,發(fā)送程序啟動(dòng)發(fā)送命令。數(shù)據(jù)從CAN控制器發(fā)送到總線是由CAN控制器自動(dòng)完成的。數(shù)據(jù)從CAN總線到CAN控制器的接收緩沖區(qū)也是由CAN控制器自動(dòng)完成的。接收程序只需從接收緩沖區(qū)讀取數(shù)據(jù),并將其存儲(chǔ)在數(shù)據(jù)存儲(chǔ)區(qū)。接收和發(fā)送數(shù)據(jù)的中斷程序流程如圖5、圖6所示。
圖5 接收數(shù)據(jù)的中斷程序流程 圖6 發(fā)送數(shù)據(jù)的中斷程序流程
3 結(jié)語(yǔ)
基于CAN總線的智能測(cè)溫系統(tǒng)具有測(cè)量范圍廣、精度高、環(huán)境適應(yīng)能力強(qiáng)等特點(diǎn)。該系統(tǒng)通過(guò)CAN適配器與計(jì)算機(jī)連接,可以方便地構(gòu)成分布式測(cè)控系統(tǒng)。已經(jīng)成功應(yīng)用于CNC精密成型磨削設(shè)備數(shù)控的研制項(xiàng)目中。此外,該智能測(cè)溫系統(tǒng)在電力、油田、樓宇、冶金等工業(yè)自動(dòng)化領(lǐng)域可具有廣泛的應(yīng)用前景。