【正文】
由于出錯(cuò)而遭破壞的幀可自動(dòng)重發(fā)送 。 ? 遠(yuǎn)程數(shù)據(jù)請(qǐng)求 。二是特別強(qiáng)化了對(duì)數(shù)據(jù)安全性的關(guān)注 , 滿足控制系統(tǒng)及其它較高數(shù)據(jù)要求的系統(tǒng)需求。 二、 CAN總線 (一 )CAN 總線介紹 CAN 總線 (Cont roller Area Network 控制器局域網(wǎng) )是現(xiàn)場(chǎng)總線的一種。 關(guān)鍵詞 : 數(shù)據(jù)采集 CAN 總線 現(xiàn)場(chǎng)總線 芯片 SJA 1000 XXX 大學(xué) XXX 學(xué)院本科畢業(yè)設(shè)計(jì) II Design and realization of data acquisition system based on CAN bus—— CAN BUS uniostion experiment Abstract : One kind of current data acquisition system based on CAN (ControllerA reaN etwork) bus is designed its core design is CAN bus controller SJA1000. The principle of the data acquisition system and the software and hadware design of a single node are given . The main concerns are design, the realization and the rules of the intelligent node of CAN bus . The result of test shows three aspects of advantages . The multi master capabilities of CAN bus make the system resetmore smartly . The speed rate of data transmsion reaches 1M bit/s . The stability and good reliability of data transm ission can meet the real time need of the field . Dependability is good, and the field real time demand is satisfied . Meanw hile the expenses of connecting wires, maintenance and installation are decreased because of the use of CAN bus . It improves the price ration of the system. Thus it will be widely applied . Key words: data acquisition controller area work bus field bus controller SJA 1000 XXX 大學(xué) XXX 學(xué)院本科畢業(yè)設(shè)計(jì) III 目 錄 一、引言 ............................................................... 1 二、 CAN 總線 ........................................................... 1 (一 )CAN 總線介紹 ........................................................ 1 (二 )CAN 協(xié)議 ............................................................ 1 三、結(jié)構(gòu)設(shè)計(jì) ........................................................... 4 四、硬件設(shè)計(jì) ........................................................... 5 五、軟 件設(shè)計(jì) ........................................................... 6 (一)初始化子程序 ..................................................... 7 (二)發(fā)送子程序 ....................................................... 8 (三)查詢方式接收子程序 .............................................. 10 六、測(cè)試報(bào)告 .......................................................... 12 附錄 .................................................................. 15 參考文獻(xiàn) .............................................................. 36 XXX 大學(xué) XXX 學(xué)院本科畢業(yè)設(shè)計(jì) 1 一、引言 信息技術(shù)的飛速發(fā)展 ,引起了自動(dòng)化系統(tǒng)結(jié)構(gòu)的變革 , 形成以網(wǎng)絡(luò)集成自動(dòng)化為基礎(chǔ)的控制系統(tǒng)。XXX 大學(xué) XXX 學(xué)院本科畢業(yè)設(shè)計(jì) I 基于 CAN總線數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) ——CAN總線通信實(shí)驗(yàn) 學(xué)生: 指導(dǎo)教師: 內(nèi)容提要 : 以 CAN (Controller Area Network) 總線控制器 SJA1000 為核心 , 設(shè)計(jì)了一種通用的基于 CAN 總線的數(shù)據(jù)采集系統(tǒng) , 給出了數(shù)據(jù)采集系統(tǒng)的原理、單個(gè)節(jié)點(diǎn)的軟硬件設(shè)計(jì) 。CAN 總線的使用大大節(jié)約了連接導(dǎo)線、維護(hù)和安裝費(fèi)用 , 提高了系統(tǒng)的性價(jià)比 , 具有廣泛的應(yīng)用前景。 本設(shè)計(jì)設(shè)計(jì)了一個(gè)通用的基于 CAN 總線的數(shù)據(jù)采集卡 , 著重闡述了它的設(shè)計(jì)及其實(shí)現(xiàn)。其好處是可在線上網(wǎng)下網(wǎng)、 即插即用和多站接收 。 ? 借助接收濾波的多地址幀傳送 。 ? 錯(cuò)誤檢測(cè)和出錯(cuò)信令 。 XXX 大學(xué) XXX 學(xué)院本科畢業(yè)設(shè)計(jì) 2 分層結(jié)構(gòu)的協(xié)議 CAN 是一串行通訊協(xié)議 CAN 總線規(guī)范規(guī)定了任意兩個(gè)節(jié)點(diǎn)之間的兼容性 ,包括電氣特性及數(shù)據(jù)解釋協(xié)議 ,為保證設(shè)計(jì)使用的透明性及使用的靈活性 ,CAN 協(xié)議分為如下幾層 :目標(biāo)層 、傳送層 、物理層 。 網(wǎng)絡(luò)通訊協(xié)議 總線控制器支持 4 種不同結(jié)構(gòu)的 CAN 協(xié)議幀類型: 數(shù)據(jù)幀用于節(jié)點(diǎn)之間的數(shù)據(jù)傳輸 遠(yuǎn)程幀:用于請(qǐng)求發(fā)送具有相同標(biāo)識(shí)符的數(shù)據(jù)幀 出錯(cuò)幀:用于指示檢測(cè)到的錯(cuò)誤狀態(tài) 過載幀:用于提供先前和后續(xù)數(shù)據(jù)幀或遠(yuǎn)程幀之間的附加延時(shí) 數(shù)據(jù)幀、遠(yuǎn)程幀、出錯(cuò)幀、過載幀都按一定的格式進(jìn)行編碼 數(shù)據(jù)幀:由 7個(gè)不同的位場(chǎng)構(gòu)成 ,如 圖 1所示。 圖 1 數(shù)據(jù)幀的構(gòu)成 幀起始、仲裁場(chǎng)、控制場(chǎng)、數(shù)據(jù)場(chǎng)、序列幀段均以位填充方法進(jìn)行編碼 ,即在以送XXX 大學(xué) XXX 學(xué)院本科畢業(yè)設(shè)計(jì) 3 位流中檢測(cè)到 5個(gè)數(shù)值相同的時(shí)候 ,自動(dòng)插 人一個(gè)補(bǔ)碼位。 對(duì)于發(fā)送器 ,若在幀結(jié)束完成前不存在錯(cuò)誤 ,則該幀有效。當(dāng)許多節(jié)點(diǎn)一起開始發(fā)送時(shí) ,只有發(fā)送具有最高優(yōu)先權(quán)的幀節(jié) 點(diǎn)變?yōu)榭偩€主機(jī) ,享有對(duì)總線的控制權(quán)。 “總線脫離”節(jié)點(diǎn): 當(dāng)一個(gè)節(jié)點(diǎn)由于請(qǐng)求故障界定實(shí)體而對(duì)總線處于關(guān)閉狀態(tài)時(shí) ,其處于“總線脫離”狀態(tài),在“總線脫離”狀態(tài)。 當(dāng)節(jié)點(diǎn)的發(fā)送計(jì)數(shù)器的值 超過 255 時(shí) ,則監(jiān)控器要求置相應(yīng)節(jié)點(diǎn)為“脫離總線”狀態(tài)。系統(tǒng)采用總線式網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu) , 其系統(tǒng)總體結(jié)構(gòu)如圖 2 所示。 數(shù)據(jù)采集系統(tǒng)將由現(xiàn)場(chǎng)傳感器送來的數(shù)據(jù)發(fā)送到空閑的 CAN 總線上 , 而總線上各節(jié)點(diǎn)通過預(yù)先設(shè)置好的驗(yàn)收碼和驗(yàn)收屏蔽碼 , 來決定是否使用這個(gè)消息。 而當(dāng)它需要對(duì)所有節(jié)點(diǎn)加以控制時(shí) , 則采用廣播方式將命令發(fā)送到總線。 圖 3 節(jié)點(diǎn)硬件框圖 由于以 AD574為 A/D 轉(zhuǎn)換器的數(shù)據(jù)采集卡比較普及 , 故下面重點(diǎn)闡述數(shù)據(jù)傳輸部分 , 即 CAN 總線智能節(jié)點(diǎn)的設(shè)計(jì) 與實(shí)現(xiàn)。 在 CAN 總線通信接口中 , 使用 PH IL IPS 公司的 SJA 1000和 TJA 1040 芯片。 同時(shí)在總線兩端 CANH 和 CANL 之間加上分離中斷的 120 8 終端電阻 , 對(duì)總線阻抗匹配起著相當(dāng)重要的作用 [ 4 ]。 1208 終端電阻不可忽略。 若“ SPL IT”不使用 , 只需保持開路即可。當(dāng)然要將 CAN 總線應(yīng)用于通信任務(wù)比較復(fù)雜的系統(tǒng)中還需詳細(xì)了解有關(guān) CAN 總線錯(cuò)誤處理、總線脫離處理、接收濾波處理、波特率參數(shù)設(shè)置和自動(dòng)檢測(cè)以及 CAN 總線通信距XXX 大學(xué) XXX 學(xué)院本科畢業(yè)設(shè)計(jì) 7 離和節(jié)點(diǎn)數(shù)的計(jì)算等方面的內(nèi)容。在完成 SJA1000 的初始化設(shè)置以后 SJA1000 就可以回到工作狀態(tài) 進(jìn)行正常的通信任務(wù)。 CANINI: MOV DPTR, MOD ;方式寄存器 MOV A , 09H ;進(jìn)入復(fù)位模式 對(duì) SJA1000 進(jìn)行初始化 . MOVX DPTR, A MOV DPTR, CDR ;時(shí)鐘分頻寄存器 MOV A , 88H ;選擇 PeliCAN 模式 關(guān)閉時(shí)鐘輸出 CLKOUT MOVX DPTR, A MOV DPTR, IER ;中斷允許寄存器 MOV A , 0DH ;開放發(fā)送中斷 超載中斷和錯(cuò)誤警告中斷 MOVX DPTR, A MOV DPTR , AMR ;接收屏蔽寄存器 MOV R6, 4 MOV R0 , DAMR ;接收屏蔽寄存器內(nèi)容在片內(nèi) RAM 中的首址 AMR: MOV A R0 MOVX DPTR , A ;接收屏蔽寄存器賦初值 INC DPTR DJNZ R6 , AMR MOV DPTR , ACR ;接收代碼寄存器 MOV R6 , 4 MOV R0, DACR ;接收代碼寄存器內(nèi)容在片內(nèi) RAM 中的首址 XXX 大學(xué) XXX 學(xué)院本科畢業(yè)設(shè)計(jì) 8 ACR: MOV A, R0 MOVX DPTR, A ;接收代碼寄存器賦初值 INC DPTR DJNZ R6 , ACR MOV DPTR, BTR0 ;總線定時(shí)寄存器 0 MOV A, 03H MOVX DPTR, A MOV DPTR, BTR1 ;總線定時(shí)寄存器 1 MOV A , 0FFH ; 16MHz 晶振情況下 設(shè)置波特率為 80kbps. MOVX DPTR, A MOV DPTR, OCR ;輸出控制寄存器 MOV A , 0AAH MOVX DPTR , A MOV DPTR, RBSA ;接收緩存器起始地址寄存器 MOV A, 0 ;設(shè)置接收緩存器 FIFO 起始地址為 0 MOVX DPTR, A MOV DPTR, TXERR ;發(fā)送錯(cuò)誤計(jì)數(shù)寄存器 . MOV A , 0 ;清除發(fā)送錯(cuò)誤計(jì)數(shù)寄存器 MOVX DPTR, A MOV DPTR , ECC ;錯(cuò)誤代碼捕捉寄存器 MOVX A , DPTR ;清除錯(cuò)誤代碼捕捉寄存器 MOV DPTR, MODE ;方式寄存器 MOV A , 08H ;設(shè)置單濾波接收方式 并返回工作狀態(tài) MOVX DPTR , A RET (二) 發(fā)送子程序 發(fā)送子程序負(fù)責(zé)節(jié)點(diǎn)報(bào)文的發(fā)送,發(fā)送時(shí)用戶只需將待發(fā)送的數(shù)據(jù)按特定格 式組合成一幀報(bào)文送入 SJA1000 發(fā)送緩存區(qū)中,然后啟動(dòng) SJA1000發(fā)送即可。 XXX 大學(xué) XXX 學(xué)院本科畢業(yè)設(shè)計(jì) 9 TDATA: MOV DPTR, SR ;狀態(tài)寄存器 MOVX A, DPTR ;從 SJA1000 讀入狀態(tài)寄存器值 JB , TDATA ;判斷是否正在接收 正在接收 則等待 TS0: MOVX A,