can總線的雙機(jī)冗余系統(tǒng)設(shè)計(jì)——工業(yè)控制網(wǎng)絡(luò)課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  工業(yè)控制網(wǎng)絡(luò) 課程設(shè)計(jì)(論文)</p><p>  題目:CAN總線的雙機(jī)冗余系統(tǒng)設(shè)計(jì)</p><p>  院(系): </p><p>  專業(yè)班級(jí): </p><p>  學(xué) 號(hào): </p>

2、<p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: </p><p>  起止時(shí)間: </p><p>  課程設(shè)計(jì)(論文)任務(wù)及評(píng)語</p><p>  院(系):

3、 教研室:</p><p>  注:成績:平時(shí)20% 論文質(zhì)量60% 答辯20% 以百分制計(jì)算</p><p><b>  摘 要</b></p><p>  現(xiàn)場總線技術(shù)被譽(yù)為自動(dòng)化領(lǐng)域的局域網(wǎng),它是計(jì)算機(jī)技術(shù)、通信技術(shù)、控制技術(shù)的集成。其中,CAN現(xiàn)場總線以其高性能、高可靠性及其獨(dú)特的設(shè)計(jì)越來越受到人們的重視。雙機(jī)冗余

4、技術(shù)是提高計(jì)算機(jī)控制系統(tǒng)可靠性的重要措施之一。</p><p>  本設(shè)計(jì)是綜合所學(xué)知識(shí),出基于CAN總線的雙機(jī)冗余系統(tǒng)的設(shè)計(jì)方法。采用AT89C51單片機(jī)為主控制器,進(jìn)行了單片機(jī)最小系統(tǒng)的硬件設(shè)計(jì)、可編程的CAN通信控制器SJA1000和CAN收發(fā)器PCA82C250組成的CAN通訊模塊的設(shè)計(jì)、雙機(jī)冗余的切換電路設(shè)計(jì)。選用獨(dú)立的CAN總線控制器和總線收發(fā)器以接入總線網(wǎng)絡(luò)所有單片機(jī)共用組數(shù)據(jù)總線、地址總線和控制總

5、線??偩€切換器可以使得主機(jī)控制、使用總線并將從機(jī)隔離于總線??偩€切換器的功能可以由三態(tài)緩沖器等芯片來完成。</p><p>  關(guān)鍵詞:CAN總線;冗余技術(shù);雙機(jī)冗余;切換電路</p><p><b>  目 錄</b></p><p><b>  第1章 緒論1</b></p><p>  第2

6、章 課程設(shè)計(jì)的方案2</p><p><b>  2.1 概述2</b></p><p>  2.2 系統(tǒng)組成總體結(jié)構(gòu)2</p><p>  第3章 硬件設(shè)計(jì)4</p><p>  3.1 單片機(jī)最小系統(tǒng)設(shè)計(jì)4</p><p>  3.1.1 單片機(jī)選擇4</p><

7、;p>  3.1.2 時(shí)鐘電路設(shè)計(jì)6</p><p>  3.1.3 復(fù)位電路設(shè)計(jì)7</p><p>  3.2 CAN總線9</p><p>  3.2.1 CAN總線控制器9</p><p>  3.2.2 CAN總線收發(fā)器10</p><p>  3.3 總線切換器11</p>&

8、lt;p>  3.4 系統(tǒng)總體連接圖13</p><p>  第4章 軟件設(shè)計(jì)14</p><p>  4.1 主程序流程圖14</p><p>  4.2 接收中斷服務(wù)程序流程圖15</p><p>  4.3 接收中斷超時(shí)服務(wù)程序流程圖16</p><p>  4.4 系統(tǒng)程序17</p&g

9、t;<p>  第5章 課程設(shè)計(jì)總結(jié)20</p><p><b>  參考文獻(xiàn)21</b></p><p><b>  緒論</b></p><p>  集先進(jìn)的嵌入式系統(tǒng)、現(xiàn)代通訊、自控理論和網(wǎng)絡(luò)技術(shù)于一身的現(xiàn)場總線技術(shù),是自動(dòng)化技術(shù)發(fā)展的熱點(diǎn)之一。它的出現(xiàn)標(biāo)志著工業(yè)控制技術(shù)領(lǐng)域進(jìn)入了一個(gè)新的時(shí)代。&l

10、t;/p><p>  目前各控制設(shè)備生產(chǎn)廠商采取各種各樣的方法來實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)的冗余以提高計(jì)算機(jī)控制系統(tǒng)的可靠性。有許多大公司如美國的Honey Well、德國的西門子等設(shè)計(jì)生產(chǎn)出專用的檢測(cè)切換電路,它們都是采用專用的檢測(cè)切換電路實(shí)現(xiàn)主從機(jī)的切換。本文介紹一種行之有效的利用現(xiàn)場總線實(shí)現(xiàn)雙機(jī)冗余的技術(shù)。傳統(tǒng)冗余技術(shù)存在的問題有:1.檢測(cè)切換電路設(shè)計(jì)復(fù)雜,且其本身會(huì)引入新的不可靠因素;2.有些場合需要主機(jī)和從機(jī)之間實(shí)時(shí)交

11、換數(shù)據(jù),保證從機(jī)時(shí)刻跟蹤現(xiàn)場信息。一旦主機(jī)發(fā)生故障,從機(jī)立即能以“無縫連接”方式切入運(yùn)行,使被控對(duì)象始終得到連續(xù)控制而不受任何“干擾”。檢測(cè)切換電路的使用反而不利于主從之間通信的實(shí)現(xiàn);3.使用檢測(cè)切換電路實(shí)現(xiàn)雙機(jī)以上的多機(jī)冗余備份十分困難。</p><p>  CAN總線屬于現(xiàn)場總線的范疇,是一種保密性較好、有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。CAN總線是20實(shí)世紀(jì)80年代初德國BOSCH公司為解決現(xiàn)代汽

12、車中眾多的控制與測(cè)試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,它是一種多主總線,其通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維。在自動(dòng)化電子領(lǐng)域的汽車發(fā)動(dòng)機(jī)控制部件、傳感器、抗滑系統(tǒng)等應(yīng)用中,CAN總線的通信速率可高達(dá)1Mbit/s。同時(shí)它也可以廉價(jià)地應(yīng)用到交通運(yùn)輸工具的電氣系統(tǒng)中,以替代以往所需要的許多硬件及各種線路的連接。現(xiàn)場總線控制系統(tǒng)打破了傳統(tǒng)控制系統(tǒng)的結(jié)構(gòu)形式。傳統(tǒng)模擬控制系統(tǒng)采用一對(duì)一的物理連接,而現(xiàn)場總線控制系統(tǒng)把單個(gè)分

13、散的測(cè)量控制設(shè)備變成網(wǎng)絡(luò)節(jié)點(diǎn),以現(xiàn)場總線為紐帶,將每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)連接成可以相互溝通信息、共同完成自控任務(wù)的網(wǎng)絡(luò)系統(tǒng)和控制系統(tǒng)。現(xiàn)場總線中的傳感器、變送器、執(zhí)行機(jī)構(gòu)均置入微控制器。使它們具備了數(shù)字計(jì)算和數(shù)字通信的能力,信息的傳輸不再依賴于控制室內(nèi)的計(jì)算機(jī)或控制儀表,直接在現(xiàn)場的個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)完成,實(shí)現(xiàn)了徹底的分散,有力地推動(dòng)了測(cè)控系統(tǒng)向數(shù)字化、網(wǎng)絡(luò)化、智能化方向發(fā)展。其中CAN總線的總線規(guī)范現(xiàn)已被ISO國際標(biāo)準(zhǔn)</p><p

14、><b>  課程設(shè)計(jì)的方案</b></p><p><b>  概述</b></p><p>  本文提出了一種基于CAN總線的雙機(jī)冗余系統(tǒng)的設(shè)計(jì)方案,使在出現(xiàn)故障時(shí)能自動(dòng)切換,保證系統(tǒng)安全、穩(wěn)定運(yùn)行。總體結(jié)構(gòu)是通過單片機(jī)連接總線控制器、總線收發(fā)器、總線切換器,進(jìn)行數(shù)據(jù)傳遞并控制工作。</p><p>  本方案以

15、AT89C51單片機(jī)作為主控核心,與CAN總線控制器SJA1000完成通信協(xié)議。CAN總線收發(fā)器APC82C250、總線切換器等模塊組成核心主控制模塊。 總線切換器進(jìn)行主站從站工作的切換,使雙機(jī)冗余系統(tǒng)能在各種狀態(tài)工作和切換。</p><p><b>  系統(tǒng)組成總體結(jié)構(gòu)</b></p><p>  基于CAN總線雙機(jī)冗余系統(tǒng)設(shè)計(jì)框圖如圖2.1所示</p>

16、<p>  圖2.1 系統(tǒng)設(shè)計(jì)結(jié)構(gòu)框圖</p><p><b>  各部分功能:</b></p><p>  (1)以單片機(jī)AT89C51為主控制器,與SJA1000進(jìn)行信息傳遞,并進(jìn)行主控制。</p><p>  (2)CAN總線控制器為SJA1000,實(shí)現(xiàn)單片機(jī)與總線之間的數(shù)據(jù)傳輸。</p><p> 

17、 (3)CAN總線收發(fā)器為APC82C250。</p><p> ?。?)總線切換器可以使得主機(jī)控制、使用總線并將從機(jī)隔離于總線??偩€切換器的功能可以由三態(tài)緩沖器74HC244等芯片完成。</p><p><b>  硬件設(shè)計(jì)</b></p><p><b>  單片機(jī)最小系統(tǒng)設(shè)計(jì)</b></p><p

18、><b>  單片機(jī)選擇</b></p><p>  本次設(shè)計(jì)選擇AT89C51。</p><p>  (1)AT89C51單片機(jī)硬件結(jié)構(gòu):</p><p>  AT89C51是一種低功耗、低電壓、高性能的八位CMOS單片機(jī),片內(nèi)有一個(gè)4KB的FLASH可變成可擦除只讀存儲(chǔ)器(FPEROM-Flash Programmable and E

19、rasable Read Only Memory),它采用了CMOS工藝和ATMEL公司的高密度非易失性存儲(chǔ)器技術(shù),而且其輸出引腳和指令系統(tǒng)都與MSC-51兼容。片內(nèi)置通用8位中央處理器(CPU)和FLASH存儲(chǔ)單元,片內(nèi)的存儲(chǔ)器允許在系統(tǒng)內(nèi)改變程序或用常規(guī)的非易失性存儲(chǔ)器編程。因此,AT89C51是一種功能強(qiáng)、靈活性高且價(jià)格合理的單片機(jī),可方便的應(yīng)用于各種控制領(lǐng)域。</p><p><b> ?。?)

20、主要特性:</b></p><p>  與MCS-51產(chǎn)品指令系統(tǒng)兼容</p><p>  4K字節(jié)可編程閃爍存儲(chǔ)器</p><p>  壽命:1000寫、擦循環(huán)</p><p>  數(shù)據(jù)保留時(shí)間:10年</p><p>  全靜態(tài)工作:0Hz-24Hz</p><p><b&

21、gt;  三級(jí)程序存儲(chǔ)器鎖定</b></p><p>  128*8位內(nèi)部RAM</p><p><b>  32可編程I/O線</b></p><p>  兩個(gè)16位定時(shí)器、計(jì)數(shù)器</p><p><b>  6個(gè)中斷源</b></p><p><b>

22、;  可編程串行通道</b></p><p>  低功耗的閑置和掉電模式</p><p>  片內(nèi)振蕩器和時(shí)鐘電路</p><p><b> ?。?)管腳說明:</b></p><p>  VCC(40):供電電壓,其工作電壓為5V。</p><p>  GND(20):接地。<

23、/p><p>  P0端口(P0.0-P0.7):P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)、地址的第八位。再LFASH編程時(shí),P0口作為原碼輸入口,當(dāng)FLASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p>  P1端口(P1.0-P1.7):P1口是一個(gè)

24、內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能夠接收4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。再FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。</p><p>  P2端口(P2.0-P2.7):P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上

25、拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p>  P3端口(P3.0-P3.7):

26、P3口管腳是一個(gè)帶有內(nèi)部上拉電阻的8位的雙向I/O端口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入端時(shí),由于外部下拉為低電平,P3口將輸出電流(ILL)。P3口也可作為AT89C51的一些特殊功能口,如表1所示。P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p>  復(fù)位RST(9):復(fù)位輸入。在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期(24個(gè)振蕩周期)以上的

27、高電平出現(xiàn)在此引腳時(shí),將使單片機(jī)復(fù)位,只要這個(gè)腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P3.0-P3.7口均置1,引腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器SFR全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM的00H處開始運(yùn)行程序。復(fù)位操作不會(huì)對(duì)內(nèi)部RAM有所影響。</p><p>  ALE/(30):當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入

28、編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p>  (29):外部程

29、序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指令期間,每個(gè)機(jī)器周期兩次有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的信號(hào)將不出現(xiàn)。</p><p>  EA/VPP(31):當(dāng)保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),將內(nèi)部鎖定為RESET;當(dāng)端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</

30、p><p>  XTAL1(19):反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。</p><p>  XTAL2(18):來自反向振蕩器的輸出。</p><p>  圖3.1 AT89C51引腳圖</p><p><b>  時(shí)鐘電路設(shè)計(jì)</b></p><p>  單片機(jī)的時(shí)鐘信號(hào)用來提供單片機(jī)片

31、內(nèi)各種微操作的時(shí)間基準(zhǔn),復(fù)位操作則使單片機(jī)的片內(nèi)電路初始化,使單片機(jī)從一種確定的初態(tài)開始運(yùn)行。</p><p>  時(shí)鐘電路 89C51單片機(jī)的時(shí)鐘信號(hào)通常用兩種電路形式得到:內(nèi)部振蕩方式和外部振蕩方式。</p><p>  在引腳XTAL1和XTAL2外接晶體振蕩器(簡稱晶振)或陶瓷諧振器,就構(gòu)成了內(nèi)部振蕩方式。由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)

32、生振蕩時(shí)鐘脈沖。內(nèi)部振蕩方式的外部電路如圖3-1所示。圖3-1中,電容器Cl,C2起穩(wěn)定振蕩頻率、快速起振的作用,其電容值一般在5-30pF。晶振頻率的典型值為12MHz,采用6MHz的情況也比較多。內(nèi)部振蕩方式所得的時(shí)鐘情號(hào)比較穩(wěn)定,實(shí)用電路中使用較多。</p><p><b>  圖3.2 時(shí)鐘電路</b></p><p><b>  復(fù)位電路設(shè)計(jì)<

33、;/b></p><p>  復(fù)位電路電路圖如圖3.3所示</p><p>  當(dāng)89C51單片機(jī)的復(fù)位引腳RST(全稱RESET)出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。根據(jù)應(yīng)用的要求,復(fù)位操作通常有兩種基本形式:上電復(fù)位和上電或開關(guān)復(fù)位。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。</p><p&g

34、t;  常用的上電復(fù)位電路電容C1和電阻R1對(duì)電源+5V來說[20]構(gòu)成微分電路。上電后,保持RST一段高電平時(shí)間,由于單片機(jī)內(nèi)的等效電阻的作用,不用圖中電阻R1,也能達(dá)到上電復(fù)位的操作功能,如圖3.3所示。</p><p>  圖3.3復(fù)位電路電路圖</p><p>  開關(guān)復(fù)位要求電源接通后,單片機(jī)自動(dòng)復(fù)位,并且在單片機(jī)運(yùn)行期間,用開關(guān)操作也能使單片機(jī)復(fù)位常用的上電或開關(guān)復(fù)位電路。上電

35、后,由于電容C3的充電和反相門的作用,使RESET持續(xù)一段時(shí)間的高電平。當(dāng)單片機(jī)已在運(yùn)行當(dāng)中時(shí),按下復(fù)位鍵K后松開,也能使RESET為一段時(shí)間的高電平,從而實(shí)現(xiàn)上電或開關(guān)復(fù)位的操作。</p><p>  單片機(jī)最小系統(tǒng)由單片機(jī),時(shí)鐘電路,復(fù)位電路組成,最小系統(tǒng)圖如下:</p><p>  圖3.4 單片機(jī)最小系統(tǒng)</p><p><b>  CAN總線&l

36、t;/b></p><p><b>  CAN總線控制器</b></p><p>  本次設(shè)計(jì)采用的CAN總線控制器SJA1000 是一種獨(dú)立控制器,用于移動(dòng)目標(biāo)和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制(CAN),它是PHILIPS半導(dǎo)體PCA82C200 CAN 控制器BasicCAN 的替代產(chǎn)品而且它增加了一種新的工作模式PeliCAN, 這種模式支持具有很多新特性的

37、CAN 2.0B 協(xié)議,其軟件、硬件均與原有的82C200相兼容。</p><p>  SJA1000的主要特點(diǎn)如下:</p><p> ?。?)管腳及電氣特性與PCA82C200CAN獨(dú)立控制器兼容;</p><p>  (2)具有擴(kuò)展的接收緩沖區(qū)(64字節(jié)FIFO);</p><p>  (3)支持CAN2.0B規(guī)范,同時(shí)支持11位標(biāo)識(shí)符

38、和29位標(biāo)識(shí)符;</p><p> ?。?)位速率可達(dá)到1Mbps;</p><p> ?。?)24MHz時(shí)鐘頻率;</p><p> ?。?)可與不同微處理器連接;</p><p>  (7)可編程CAN 輸出驅(qū)動(dòng)配置;</p><p> ?。?)超寬的溫度范圍(-40至+125℃);</p><

39、p> ?。?)可讀/寫訪問的錯(cuò)誤計(jì)數(shù)器;</p><p> ?。?0)可編程的錯(cuò)誤報(bào)警限制;</p><p> ?。?1)錯(cuò)誤碼寄存器;</p><p> ?。?2)每次CAN 總線錯(cuò)誤都產(chǎn)生的錯(cuò)誤中斷;</p><p> ?。?3)詳細(xì)記錄仲裁丟失位的仲裁丟失中斷;</p><p> ?。?4)單次發(fā)送(無重發(fā)

40、功能);</p><p> ?。?5)監(jiān)聽模式(無應(yīng)答,無活動(dòng)錯(cuò)誤標(biāo)志);</p><p> ?。?6)支持熱插拔(軟件驅(qū)動(dòng)的位速率檢測(cè));</p><p> ?。?7)接收過濾器(4 字節(jié)驗(yàn)收碼,4 字節(jié)屏蔽碼);</p><p> ?。?8)接收自發(fā)信息(自檢測(cè)請(qǐng)求);</p><p>  SJA1000 的引腳圖

41、如圖3.5所示。</p><p>  圖3.5 SJA1000引腳圖</p><p><b>  CAN總線收發(fā)器</b></p><p>  CAN總線收發(fā)器PCA82C250是CAN控制器和物理總線之間的接口,它最初為汽車高速通信應(yīng)用設(shè)計(jì)。器件可以提供對(duì)總線的差動(dòng)發(fā)送能力和對(duì)CAN控制器的差動(dòng)接收能力。</p><p&g

42、t;  圖3.6 82C250的功能框圖</p><p><b>  引腳說明:</b></p><p>  1腳:欲發(fā)送數(shù)據(jù)的輸入端;</p><p><b>  2腳:電源地端;</b></p><p><b>  3腳:電源端;</b></p><p&

43、gt;  4腳:接收數(shù)據(jù)的輸入端;</p><p>  5腳:參考電壓的輸出端;</p><p>  6腳:低電平CAN總線輸入/輸出端;</p><p>  7腳:高電平CAN總線輸入/輸出端;</p><p>  8腳:總線脈沖斜率控制電阻連接端。</p><p>  82C250驅(qū)動(dòng)電路內(nèi)部具有限流電路,可防止輸

44、出極對(duì)電池電壓的正端和負(fù)端短路。雖然在這種故障條件出現(xiàn)時(shí),功耗增加,但這種特性可以防止發(fā)送輸出級(jí)的破壞。若結(jié)溫超過大約160℃數(shù)值時(shí),兩個(gè)發(fā)送器輸出端的極限電流將減少。由于發(fā)送器是功耗的主要部分,因而決定了芯片的較低溫度。集成芯片的所有其它部分仍然工作。當(dāng)總線短路時(shí),過熱保護(hù)十分需要。82C250采用雙線差分驅(qū)動(dòng),有助于抑制惡劣電氣環(huán)境下的瞬變干擾。</p><p>  利用82C250還可方便地在CAN控制器與

45、收發(fā)器之間建立光電隔離,以實(shí)現(xiàn)總線上各節(jié)點(diǎn)間的電氣隔離。</p><p>  SJA1000的AD0~AD7和AT89C51的P0口相連接,和P16相連接,和P32相連接。SJA1000采用的是Intel模式。</p><p><b>  總線切換器</b></p><p>  總線切換電路主要由四部分組成:D觸發(fā)器、RC電路、與門和八雙向總線

46、收發(fā)器74HC244芯片組成。</p><p>  本次設(shè)計(jì)采用74HC244總線收發(fā)器(bus transceiver),是典型的CMOS型三態(tài)緩沖門電路。由于單片機(jī)或CPU的數(shù)據(jù)/地址/控制總線端口都有一定的負(fù)載能力,如果負(fù)載超過其負(fù)載能力,一般應(yīng)加驅(qū)動(dòng)器。</p><p>  74HC244這種八位總線收發(fā)器是為數(shù)據(jù)總線間進(jìn)行異步兩路通訊而設(shè)計(jì)的。采用控制功能可以盡量減少外部定時(shí)電路

47、的要求。這種電路可以將數(shù)據(jù)從A總線傳送到B總線,也可以將B總線傳送到A總線,具體傳送方向要看方向控制(DIR)輸入的邏輯電平而定??梢杂檬鼓芏溯斎雭斫惯@種電路,使總線之間能有效地隔離。</p><p>  總線切換電路原理圖如下:</p><p>  圖3.7 總線切換電路</p><p>  系統(tǒng)上電后,電路中輸出低電平,與門輸出低電平,D觸發(fā)器置1,控制74

48、HC244切斷單片機(jī)與三總線的聯(lián)系,從硬件上保證了新上電單片機(jī)處于從機(jī)狀態(tài)。電路中輸出高電平后,D觸發(fā)器的輸出可以受控于對(duì)方單片機(jī)。當(dāng)需要主從切換時(shí),確保故障節(jié)點(diǎn)在被切除出去以后對(duì)三總線不能產(chǎn)生影響。從機(jī)在將自己置為從機(jī)時(shí),應(yīng)先向P1.0引腳送一低電平,使故障節(jié)點(diǎn)的D觸發(fā)器置1,關(guān)閉其三態(tài)緩沖器,切斷與三總線的聯(lián)系,然后再向P1.1引腳發(fā)送1個(gè)脈沖信號(hào),使D觸發(fā)器翻轉(zhuǎn),輸出低電平,完成主機(jī)與從機(jī)的切換。</p><p

49、><b>  系統(tǒng)總體連接圖</b></p><p><b>  軟件設(shè)計(jì)</b></p><p><b>  主程序流程圖</b></p><p>  圖4.1 主程序流程圖</p><p>  接收中斷服務(wù)程序流程圖</p><p>  圖4

50、.2 接收中斷服務(wù)程序流程圖</p><p>  單片機(jī)初始化完成后,在總線上發(fā)送詢問幀,若有主機(jī)在運(yùn)行,則置當(dāng)前機(jī)為主機(jī)。獲得三總線的控制權(quán)和使用權(quán)。若兩機(jī)同時(shí)接受到信號(hào),則根據(jù)CAN總線仲裁協(xié)議,其中一個(gè)回去的優(yōu)先權(quán),使它的詢問幀發(fā)送成功。若發(fā)送詢問幀后無反應(yīng),則認(rèn)為出現(xiàn)故障。</p><p>  接收中斷超時(shí)服務(wù)程序流程圖</p><p>  圖4.3 接收中

51、斷超時(shí)服務(wù)程序流程圖</p><p>  在整個(gè)工作過程中,主機(jī)與從機(jī)不斷進(jìn)行信息傳遞交換工作狀態(tài),主機(jī)將自己的狀態(tài)信息、被控對(duì)象當(dāng)前狀態(tài)數(shù)據(jù)及需要備份的數(shù)據(jù)定時(shí)向從機(jī)發(fā)送。若從機(jī)在約定時(shí)間沒有收到主機(jī)發(fā)來的信息或主機(jī)報(bào)告出錯(cuò),則出現(xiàn)故障,從機(jī)置自己為主機(jī),獲得三總線使用權(quán),主機(jī)成為從機(jī),接收原從機(jī)發(fā)來的信息,再次啟動(dòng)工作。</p><p><b>  系統(tǒng)程序</b>

52、;</p><p>  SJA1000工作程序:</p><p>  void CanInit();void CanSend(unsigned char *bufDATA,unsigned char datalen);void Port_IO_Init();void Oscillator_Init();void Init_Device(void);void WR_SJA(unsi

53、gned char sja_addr,unsigned char sja_data);unsigned char RD_SJA(unsigned char sja_addr);//******SJA1000內(nèi)部寄存器地址(初始化復(fù)位模式) PeliCAN模式的地址表.//******標(biāo)準(zhǔn)幀格式(SFF)與擴(kuò)展幀格式(EFF).</p><p>  #define SJA_MOD 0  &

54、#160; /*模式寄存器 可以定義過濾模式 MOD.3=AFM 00H*/#define SJA_CMR 1      //命令寄存器#define SJA_SR    2      //狀態(tài)寄存器 #define SJA_IR    3    // 中斷標(biāo)志 

55、        03#define SJA_IER 4     /*中斷允許 04H */#define SJA_BTR0 6     /*總線定時(shí)器0   06H*/#define SJA_BTR1 7     

56、 /*總線定時(shí)器1   07H*/#define SJA_OCR   8      /*輸出控制   08H*/</p><p>  #define SJA_ALC 11    // 仲裁丟失捕捉     11   

57、;        #define SJA_ECC 12       /*錯(cuò)誤代碼捕捉 0CH*/#define SJA_EWLR 13     //錯(cuò)誤報(bào)警限制寄存器#define SJA_RXERR 14     

58、; //錯(cuò)誤計(jì)數(shù)寄存器#define SJA_TXERR 15     /*發(fā)送錯(cuò)誤記數(shù) 0FH*/</p><p>  //以下為復(fù)位模式定義#define SJA_ACR0 16      /*驗(yàn)收代碼 即ID ?16*/ #define SJA_ACR1 17    

59、60; /*驗(yàn)收代碼 即ID   17*/#define SJA_ACR2 18      /*驗(yàn)收代碼 即ID   18*/#define SJA_ACR3 19      /*驗(yàn)收代碼 即ID   19*/#define SJA_AMR0 20  &

60、#160;  /*驗(yàn)收屏蔽 初地址20*/ #define SJA_AMR1 21      /*驗(yàn)收屏蔽 初地址21*/ #define SJA_AMR2 22      /*驗(yàn)收屏蔽 初地址22*/ #define SJA_AMR3 23      /*驗(yàn)收屏蔽 初地址

61、23*/</p><p>  //SJA1000內(nèi)部寄存器地址(工作模式)#define SJA_EFF 16      //RX和TX結(jié)構(gòu)信息 擴(kuò)展幀/標(biāo)準(zhǔn)幀#define SJA_ID1 17      //識(shí)別碼#define SJA_ID2 18    

62、0; //識(shí)別碼#define SJA_ID3 19      //識(shí)別碼,標(biāo)準(zhǔn)幀無#define SJA_ID4 20      //識(shí)別碼,標(biāo)準(zhǔn)幀無#define SJA_D1 21 //</p><p>  #define SJA_D2 22 </p><p>

63、  #define SJA_D3 23 </p><p>  #define SJA_D4 24 </p><p>  #define SJA_D5 25 </p><p>  #define SJA_D6 26 </p><p>  #define SJA_D7 27 </p><

64、;p>  #define SJA_D8 28</p><p>  單片機(jī)程序如下:#include <c8051f340.h>#include <INTRINS.H>#include "s.h"sbit led1    = P2^0;sbit led2    = P2^1;sbit SDA&#

65、160;   = P2^2;sbit SCL    = P2^3;sbit J1     = P3^0;sbit J2     = P3^1;sbit st1    = P0^4;</p><p>  sbit ALE_CAN = P0^0;sb

66、it RD_CAN   = P0^1;sbit INT_CAN = P0^2;sbit CS_CAN   = P0^3;sbit WR_CAN   = P2^7;</p><p>  #define WriteDeviceAddress 0xa0 //地址以及讀寫方向,本設(shè)備中只有一個(gè)IIC設(shè)備地址為0#define ReadDviceAddre

67、ss 0xa1#define uchar unsigned char#define uint unsigned int#define nop _nop_ uchar c1[16]={0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0a,0X0b,0X0c,        0X0d,0X0e,0X0f};

68、uchar c2[16];uchar c3[8] ={0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07};</p><p>  unsigned int idata MaxLenCanRxBuf=440;unsigned char xdata CanRxBuf[440];    //40個(gè)CAN幀緩沖區(qū)unsigned char idata Ca

69、nTempBuf[11];   //單個(gè)can報(bào)文的緩沖區(qū)。unsigned char idata CanTxData[8];   //CAN發(fā)送數(shù)據(jù)緩沖區(qū)unsigned char data_flag=0;</p><p>  unsigned int idata CanRxAddr=0;unsigned char CanRxcompleteFlag=0;unsi

70、gned char idata cfgbuf[32];unsigned char SendBufId[2]={0x07,0x20};</p><p>  unsigned char SendBufInfo;unsigned int xdata mSendDelay=0;</p><p>  unsigned char *h_pointer;unsigned char *l_point

71、er;unsigned char i=0;unsigned char j=0;uint LedFlag1=0;</p><p><b>  課程設(shè)計(jì)總結(jié)</b></p><p>  經(jīng)過幾天的努力,完成了CAN總線的雙機(jī)冗余系統(tǒng)的設(shè)計(jì)。過程雖是辛苦的,但從中我卻學(xué)到了很多東西。</p><p>  這次課程設(shè)計(jì)使我意識(shí)到理論與實(shí)際相結(jié)合的

72、重要,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐結(jié)合起來,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考能力。同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握的不夠牢固。</p><p>  鞏固了課上學(xué)習(xí)的理論知識(shí),對(duì)于計(jì)算機(jī)匯編語言的系統(tǒng)化整體化有了更深的認(rèn)識(shí)。整個(gè)設(shè)計(jì)過程最大的收獲就是意識(shí)到理論知識(shí)扎實(shí)的重要性,實(shí)踐是建立在理論之上的,只有平時(shí)掌握知識(shí)扎實(shí),才能在實(shí)踐時(shí)熟練運(yùn)用

73、,課程設(shè)計(jì)把平時(shí)所學(xué)的知識(shí)靈活運(yùn)用結(jié)合起來,鍛煉我們的思維和動(dòng)手能力。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 馬秀娟.電工電子實(shí)踐教程[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2004.157-160.</p><p>  [2] 陳正義.單片機(jī)控制實(shí)習(xí)[M].北京:人民郵電出版社,2006.3-90. <

74、/p><p>  [3] 吉雷:《Protel99從入門到精通》,西安電子科技大學(xué)出版社,2000.10</p><p>  [4] 郭永貞.電子技術(shù)試驗(yàn)與課程設(shè)計(jì)指導(dǎo)模擬電路分冊(cè)[M].南京:東南大學(xué)出版社,2004.34-39.</p><p>  [5] 求是科技:《單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航》,北京人民郵電出版社,2004.5</p><p&

75、gt;  [6] 西華大學(xué)老師.電子技術(shù)試驗(yàn)指導(dǎo)書[M].成都:西華大學(xué)電工電子試驗(yàn)實(shí)習(xí)中心,2009.105-188.</p><p>  [7] 褚南峰.電工技術(shù)試驗(yàn)及課程設(shè)計(jì)[M].北京:中國電力出版社,2005.166-168.</p><p>  [8] 鄒季軍.現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003</p><p> 

76、 [9] 陳在平.現(xiàn)場總線及工業(yè)控制網(wǎng)絡(luò)技術(shù)[M] .電子工業(yè)出版社,2003</p><p>  [10] 冷毅,李青俠,劉勝.基于無線傳感器和CAN總線的直接式輪胎壓力檢測(cè)系統(tǒng)[J].儀器儀表學(xué)報(bào),2008,29(4):711-717</p><p>  [11] 孫立輝,原亮.單片機(jī)與嵌入式系統(tǒng)應(yīng)用合訂本(7~12)[M].2001</p><p>  [12

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論