2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)設(shè)計(jì)(論文)</b></p><p>  題 目: 基于單片機(jī)的智能協(xié)議轉(zhuǎn)換器設(shè)計(jì) </p><p>  學(xué)生姓名: 學(xué)號(hào): </p><p>  專 業(yè): 電子信息工程 </p><p>

2、;  院(系): 信息工程學(xué)院 </p><p>  完成時(shí)間: </p><p>  基于單片機(jī)的智能協(xié)議轉(zhuǎn)換器設(shè)計(jì)</p><p>  摘要 隨著通信行業(yè)的發(fā)展,為了保證通信設(shè)備的正常運(yùn)行,采用了大量的配有智能監(jiān)控接口的動(dòng)力設(shè)備和專用空調(diào)設(shè)備,而為了有效的管理

3、這些支撐設(shè)備,需要將這些設(shè)備納入統(tǒng)一的監(jiān)控平臺(tái),實(shí)現(xiàn)集中遠(yuǎn)程監(jiān)控管理。本文主要介紹了一個(gè)基于89C52單片機(jī)的智能協(xié)議轉(zhuǎn)換器設(shè)計(jì)方案。用該方案設(shè)計(jì)的智能協(xié)議轉(zhuǎn)換器,已經(jīng)在實(shí)際中應(yīng)用并達(dá)到了預(yù)期目的。該系統(tǒng)同樣可以應(yīng)用到其他類似的工業(yè)控制和數(shù)據(jù)采集系統(tǒng)中。</p><p>  關(guān)鍵詞 單片機(jī) 通訊協(xié)議 串口 監(jiān)控 協(xié)議轉(zhuǎn)換器</p><p>  Abstact: As the co

4、mmunications industry, in order to ensure the normal operation of communications equipment, the use of a large number of interfaces with intelligent monitoring and special air-conditioning equipment, power equipment, and

5、 support for effective management of these devices, you need to monitor these devices into a unified platform to realize centralized management of remote monitoring。This paper describes a 89C52 microcontroller-based inte

6、lligent protocol converter design. With th</p><p><b>  朗讀</b></p><p>  顯示對(duì)應(yīng)的拉丁字符的拼音</p><p>  字典 - 查看字典詳細(xì)內(nèi)容</p><p><b>  名詞 </b></p><p&

7、gt;<b>  agreement</b></p><p><b>  protocol</b></p><p><b>  pact</b></p><p>  Key Words: SCM ,Communication protocol,Serial port, Monitoring, Prot

8、ocol conversion instrument 目錄</p><p><b>  1 概述1</b></p><p>  1.1 課題的意義1</p><p>  1.2 設(shè)計(jì)的任務(wù)和要求1</p><p>  2 系統(tǒng)實(shí)現(xiàn)原理及硬件設(shè)計(jì)1</p><p>  2.1 系統(tǒng)

9、實(shí)現(xiàn)原理1</p><p>  2.2 系統(tǒng)硬件設(shè)計(jì)2</p><p>  2.2.1通信接口的擴(kuò)展2</p><p>  2.2.2硬件看門狗設(shè)計(jì)4</p><p>  2.2.3抗外界干擾設(shè)計(jì)4</p><p>  2.3 主要硬件說(shuō)明4</p><p>  2.3.1 單

10、片機(jī)系統(tǒng)4</p><p>  2.3.1.1 89C52單片機(jī)簡(jiǎn)介4</p><p>  2.3.1.2 89C52單片機(jī)的管腳5</p><p>  2.3.2 可編程串行接口芯片8251A7</p><p>  2.3.2.1 8251A的系統(tǒng)框圖7</p><p>  2.3.2.1 8251A的

11、組成部件及管腳介紹7</p><p>  2.3.3 MAX813L芯片(看門狗及復(fù)位專用芯片)8</p><p>  2.3.4 MAX485接口芯片介紹11</p><p>  3 系統(tǒng)軟件設(shè)計(jì)14</p><p>  3.1 數(shù)據(jù)采集方案設(shè)計(jì)14</p><p>  3.2軟件看門狗設(shè)計(jì)15<

12、/p><p>  3.3數(shù)據(jù)幀傳輸設(shè)計(jì)15</p><p>  3.3.1 Modbus 協(xié)議簡(jiǎn)介16</p><p>  3.3.2查詢—回應(yīng)周期17</p><p>  3.3.3兩種傳輸方式17</p><p>  4 總結(jié)與體會(huì)24</p><p><b>  參考文獻(xiàn)

13、25</b></p><p><b>  附錄26</b></p><p><b>  1 概述</b></p><p>  1.1 課題的意義</p><p>  所有的通訊設(shè)備需要可靠的動(dòng)力系統(tǒng)進(jìn)行支撐,這些動(dòng)力設(shè)備包括開(kāi)關(guān)電源、高低壓電源開(kāi)關(guān)柜、蓄電池組、機(jī)房智能空調(diào)等等。

14、通訊行業(yè)的本身的人力資源和客觀的管理水平發(fā)展,要求實(shí)現(xiàn)設(shè)備間的互連互通,但長(zhǎng)期以來(lái)不同企業(yè)出于自身利益的考慮定了互不兼容的總線標(biāo)準(zhǔn),使得處于不總線網(wǎng)絡(luò)中的設(shè)備通信難。本系統(tǒng)正是基于這種需求而提出的解決方案。</p><p>  1.2 設(shè)計(jì)的任務(wù)和要求</p><p>  1、設(shè)計(jì)一套協(xié)議轉(zhuǎn)換器系統(tǒng)。</p><p>  2、能夠?qū)崿F(xiàn)將不同設(shè)備廠家的數(shù)據(jù)通訊協(xié)議轉(zhuǎn)

15、換成統(tǒng)一的通訊協(xié)議。</p><p>  2 系統(tǒng)實(shí)現(xiàn)原理及硬件設(shè)計(jì) </p><p>  2.1 系統(tǒng)實(shí)現(xiàn)原理</p><p>  在集中監(jiān)控系統(tǒng)中,一方面要與被監(jiān)控設(shè)備通信,發(fā)送各種控制命令和數(shù)據(jù)采集命令以便獲取當(dāng)前設(shè)備的運(yùn)行參數(shù);另一方面與中央監(jiān)控主機(jī)通信,單片機(jī)不但完成對(duì)上層控制命令的解析,并將上層命令轉(zhuǎn)換成被監(jiān)控設(shè)備的通信協(xié)議,同時(shí)也要講采集到的數(shù)據(jù)

16、進(jìn)行分析,按照中央監(jiān)控軟件協(xié)議對(duì)數(shù)據(jù)進(jìn)行打包處理。集中監(jiān)控系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。</p><p>  圖1 集中監(jiān)控系統(tǒng)結(jié)構(gòu)框圖</p><p><b>  通訊協(xié)議</b></p><p>  通訊協(xié)議是應(yīng)用于電子控制器上的一種通用語(yǔ)言,規(guī)定了電子設(shè)備之間進(jìn)行通訊的格式及方式,其中Modbus 協(xié)議是一種常見(jiàn)的通訊協(xié)議,但并沒(méi)有強(qiáng)制規(guī)定必

17、須使用該通訊協(xié)議進(jìn)行通訊。通過(guò)此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。有了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。此協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過(guò)何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請(qǐng)求訪問(wèn)其它設(shè)備的過(guò)程,如果回應(yīng)來(lái)自其它設(shè)備的請(qǐng)求,以及怎樣偵測(cè)錯(cuò)誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。</p><p&g

18、t;  智能協(xié)議轉(zhuǎn)換器的作用就是將不同廠家的設(shè)備通信協(xié)議轉(zhuǎn)換為中央監(jiān)控主機(jī)的通信協(xié)議。</p><p><b>  數(shù)據(jù)交換流程</b></p><p>  中央監(jiān)控主機(jī)發(fā)送廣播指令 協(xié)議轉(zhuǎn)換器接收指令,判斷是否需要回復(fù)數(shù)據(jù) 按照協(xié)議轉(zhuǎn)換格式對(duì)指令進(jìn)行轉(zhuǎn)換 由協(xié)議轉(zhuǎn)換器將轉(zhuǎn)換后的數(shù)據(jù)幀發(fā)送到被監(jiān)控設(shè)備 被監(jiān)控設(shè)備按照私有的

19、通訊協(xié)議返回?cái)?shù)據(jù)或執(zhí)行動(dòng)作 由協(xié)議轉(zhuǎn)換器將被監(jiān)控設(shè)備返回的數(shù)據(jù)按照協(xié)議轉(zhuǎn)換格式進(jìn)行轉(zhuǎn)換并回復(fù)到中央監(jiān)控主機(jī) 完成。</p><p>  根據(jù)以上的分析,該系統(tǒng)完成的主要任務(wù)是進(jìn)行協(xié)議轉(zhuǎn)換。為了完成協(xié)議轉(zhuǎn)換,需要進(jìn)行相應(yīng)的硬件設(shè)計(jì)和軟件設(shè)計(jì)。 </p><p>  2.2 系統(tǒng)硬件設(shè)計(jì)</p><p>  系統(tǒng)硬件設(shè)計(jì)主要完成通信口

20、擴(kuò)展以及系統(tǒng)穩(wěn)定性、可靠性設(shè)計(jì),如硬件看門狗、抗干擾等等。</p><p>  2.2.1通信接口的擴(kuò)展</p><p>  由于電源廠家、UPS廠家、以及油機(jī)等都提供智能接口,對(duì)上層和下層均采用串口通信機(jī)制使得組網(wǎng)簡(jiǎn)捷,通信簡(jiǎn)單。MCS-51自身提供一個(gè)串口,采用串行接口芯片擴(kuò)展串口資源,8251需要外加時(shí)鐘信號(hào)。</p><p>  為了使單片機(jī)可靠運(yùn)行,增加其

21、抗干擾能力,采用可編程信號(hào)發(fā)生器4702為8251提供時(shí)鐘信號(hào)。</p><p>  在集中監(jiān)控系統(tǒng)中,單片機(jī)與不同型號(hào)被監(jiān)控設(shè)備通信,用單片機(jī)自身串口通信可方便地在軟件中設(shè)置通信波特率;基于單片機(jī)的協(xié)議轉(zhuǎn)換器與中央監(jiān)控主機(jī)則用8251通信,在同一網(wǎng)絡(luò)中,可固定4702向8251輸出時(shí)鐘的波特率。圖2所示虛線框內(nèi)為協(xié)議轉(zhuǎn)換器的結(jié)構(gòu)圖。</p><p>  圖2 協(xié)議轉(zhuǎn)化器結(jié)構(gòu)框圖</

22、p><p>  為了增加系統(tǒng)的擴(kuò)展能力,協(xié)議轉(zhuǎn)換器上傳接口提供RS485接口標(biāo)準(zhǔn)。</p><p>  RS485采用差分信號(hào)負(fù)邏輯,+2V~+6V表示“1”,- 6V~- 2V表示“0”。RS485有兩線制和四線制兩種接線,四線制是全雙工通訊方式,兩線制是半雙工通訊方式。在RS485通信網(wǎng)絡(luò)中一般采用的是主從通信方式,即一個(gè)主機(jī)帶多個(gè)從機(jī)。</p><p>  RS4

23、85/MODBUS是現(xiàn)在流行的一種布網(wǎng)方式,其特點(diǎn)是實(shí)施簡(jiǎn)單方便 ,而且現(xiàn)在支持RS485的儀表又特多,特別是在油品行業(yè)RS485/MODBUS簡(jiǎn)直是一統(tǒng)天下,現(xiàn)在的儀表商也紛紛轉(zhuǎn)而支持RS485/MODBUS,原因很簡(jiǎn)單,象原來(lái)的 HART儀表想買一個(gè)轉(zhuǎn)換口非常困難 而且價(jià)格昂貴,RS485的轉(zhuǎn)換接口就便宜的多而且種類繁多。至少在低端市場(chǎng)RS485/MODBUS還將是最主要的組網(wǎng)方式,近兩三年內(nèi)不會(huì)改變。圖3是485總線接口示意圖。&

24、lt;/p><p>  圖3 485總線接口示意圖</p><p>  2.2.2硬件看門狗設(shè)計(jì)</p><p>  當(dāng)單片機(jī)程序跑飛,如果既沒(méi)有落入軟件陷阱,又沒(méi)有相應(yīng)的軟件冗余指令處理,程序?qū)⑻幱谒姥h(huán)狀態(tài)。而通信機(jī)房處于無(wú)人值守狀態(tài),一旦出現(xiàn)故障不可能去人工復(fù)位。采用硬件看門狗MAX813L芯片可以解決這一問(wèn)題。該芯片在規(guī)定1.6S內(nèi)沒(méi)有得到喂狗信號(hào),將單片機(jī)復(fù)

25、位。</p><p>  2.2.3抗外界干擾設(shè)計(jì)</p><p>  在單片機(jī)與被監(jiān)控設(shè)備通信,采用光耦器件,可以有效的一致尖峰脈沖及各種噪音干擾,提高通信的可靠性和抗干擾性。在動(dòng)力監(jiān)控中,工作環(huán)境多為大電流環(huán)境,而協(xié)議轉(zhuǎn)換器均為數(shù)字信號(hào),所以數(shù)據(jù)采集線和協(xié)議轉(zhuǎn)換器做好屏蔽工作以防止電磁干擾。</p><p>  2.3 主要硬件說(shuō)明</p>&l

26、t;p>  2.3.1 單片機(jī)系統(tǒng)</p><p>  2.3.1.1 89C52單片機(jī)簡(jiǎn)介</p><p>  本次設(shè)計(jì)采用的單片機(jī)是市面上較為常見(jiàn)的STC-89C52型單片機(jī)。 其主要特性有:</p><p>  1、工作電壓:5.5V~3.4V;</p><p>  2、ROM大?。?KB;</p><p&

27、gt;  3、RAM大?。?12B;</p><p>  4、工作頻率可到40MHz;</p><p>  5、工作溫度范圍:-40°~85°;</p><p>  6、塑料雙列直插式(PDIP)封裝</p><p>  2.3.1.2 89C52單片機(jī)的管腳</p><p><b> 

28、 VCC:供電電壓。</b></p><p><b>  GND:接地。</b></p><p>  P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0

29、輸出原碼,此時(shí)P0外部必須被拉高。</p><p>  P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。</p><p>  P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2

30、口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(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)。&l

31、t;/p><p>  P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p>  P3口也可作為89C52的一些特殊功能口,如下表所示:</p><p>  P3口同時(shí)為閃爍編程和編程校驗(yàn)接收

32、一些控制信號(hào)。</p><p>  RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><p>  ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要

33、注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。</p><p>  /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將

34、不出現(xiàn)。</p><p>  /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。</

35、p><p>  XTAL2:來(lái)自反向振蕩器的輸出。</p><p>  XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。</p><p>  2

36、.3.2 可編程串行接口芯片8251A</p><p>  2.3.2.1 8251A的系統(tǒng)框圖</p><p>  圖4 8251A系統(tǒng)框圖</p><p>  2.3.2.1 8251A的組成部件及管腳介紹</p><p>  發(fā)送器:包括發(fā)送緩沖器、發(fā)送移位寄存器(并/串轉(zhuǎn)換)及發(fā)送控制電路三部分; 與發(fā)送器相關(guān)的引腳信號(hào):</

37、p><p>  TXD:數(shù)據(jù)發(fā)送線,輸出串行數(shù)據(jù);</p><p>  TXRDY:發(fā)送器已準(zhǔn)備信號(hào),表示發(fā)送數(shù)據(jù)緩沖器已滿;</p><p>  TXEMPTY:發(fā)送器空閑信號(hào),表示發(fā)送移位寄存器已空;</p><p>  /TXC:發(fā)送器時(shí)鐘信號(hào),是外部輸入線;</p><p>  接收器:包括接收緩沖器、接收移位寄存

38、器及接收控制電路三部分;與接收器有關(guān)的引腳信號(hào)如下:</p><p>  RXD:數(shù)據(jù)接收線,輸入串行數(shù)據(jù);</p><p>  RXRDY:接收器已準(zhǔn)備好信號(hào),表示接收緩沖寄存器已接收到一個(gè)數(shù)據(jù)符號(hào),等待向CPU輸入; </p><p>  SYNDET/BRKDET:雙功能的檢測(cè)信號(hào),高電平有效;</p><p>  /RXC:接收器時(shí)鐘

39、,由外部輸入;此時(shí)鐘頻率決定8251A接收數(shù)據(jù)的速率;</p><p>  數(shù)據(jù)總線緩沖器:是CPU與8251A之間信息交換的通道。包含3個(gè)8位緩沖寄存器,其中兩個(gè)存放CPU向8251A讀取的數(shù)據(jù)及狀態(tài),當(dāng)CPU執(zhí)行IN指令時(shí),便從這2個(gè)寄存器中讀取數(shù)據(jù)字及狀態(tài)字;另一個(gè)緩沖寄存器存放CPU向8251A寫入的數(shù)據(jù)或控制字。當(dāng)CPU執(zhí)行OUT指令時(shí),可向這個(gè)寄存器寫入;</p><p>  

40、讀/寫控制電路:與讀/寫控制電路接收的控制信號(hào)如下:</p><p>  RESET:復(fù)位信號(hào);輸入,高電平有效;</p><p>  CLK:主時(shí)鐘;輸入,用來(lái)產(chǎn)生8251A內(nèi)部的定時(shí)信號(hào);</p><p>  /CS:片選信號(hào);輸入,低電平有效;</p><p>  /RD和/WR:讀和寫控制信號(hào),輸入,低電平有效;</p>

41、<p>  C//D:控制/數(shù)據(jù)信號(hào);為1時(shí)表示當(dāng)前通過(guò)數(shù)據(jù)總線傳送的是控制字或狀態(tài)信息;為0時(shí)表示當(dāng)前傳送的是數(shù)據(jù); </p><p>  調(diào)制/解調(diào)控制電路:8251A與調(diào)制解調(diào)器之間的接口信號(hào)如下:</p><p>  /DTR:數(shù)據(jù)終端準(zhǔn)備好信號(hào),向調(diào)制解調(diào)器輸出,低電平有效;有效表示CPU準(zhǔn)備好接收數(shù)據(jù);</p><p>  /DSR:數(shù)據(jù)裝置

42、準(zhǔn)備好信號(hào),由調(diào)制解調(diào)器輸入,低電平有效;有效表示調(diào)制解調(diào)器或外設(shè)已準(zhǔn)備好發(fā)送數(shù)據(jù),實(shí)際上是對(duì)/DTR的應(yīng)答信號(hào);</p><p>  /RTS:請(qǐng)求發(fā)送信號(hào),向調(diào)制解調(diào)器輸出,低電平有效。有效表示CPU已準(zhǔn)備好發(fā)送數(shù)據(jù);</p><p>  /CTS:清除發(fā)送信號(hào),由調(diào)制解調(diào)器輸入,低電平有效;有效表示調(diào)制解調(diào)器已作好接收數(shù)據(jù)準(zhǔn)備,只要控制字中TXEN位為1,發(fā)送器才可串行發(fā)送數(shù)據(jù);它實(shí)

43、際上是對(duì)/RTS的應(yīng)答信號(hào);</p><p>  2.3.3 MAX813L芯片(看門狗及復(fù)位專用芯片)</p><p>  2.3.3.1 MAX813L芯片特點(diǎn)   · 加電、掉電以及供電電壓下降情況下的復(fù)位輸出,復(fù)位脈沖寬度典型值為200 ms。· 獨(dú)立的看門狗輸出,如果看門狗輸入在1.6 s內(nèi)未被觸發(fā),其輸出將變?yōu)楦唠娖健?#183; 1.25

44、 V門限值檢測(cè)器,用于電源故障報(bào)警、電池低電壓檢測(cè)或+5 V以外的電源。</p><p>  · 門限電壓為4.65V· 低電平有效的手動(dòng)復(fù)位輸入。· 8引腳DIP封裝。 2.3.3.2 MAX813L的引腳及功能    MAX813L芯片引腳排列見(jiàn)圖1—12.3.3.3引腳功能及工作原理說(shuō)明(1)手動(dòng)復(fù)位輸入端()   當(dāng)該

45、端輸入低電平保持140 ms以上,MAX813L就輸出復(fù)位信號(hào).該輸入端的最小輸入脈寬要求可以有效地消除開(kāi)關(guān)的抖動(dòng)。與TTL/CMOS兼容。(2)工作電源端(VCC):接+5V電源。(3)電源接地端(GND):接0 V參考電平。(4)電源故障輸入端(PFI):當(dāng)該端輸入電壓低于1.25 V時(shí),5號(hào)引腳輸出端的信號(hào)由高電平變?yōu)榈碗娖健?5)電源故障輸出端()  電源正常時(shí),保持高電平,電源電壓變低或掉電時(shí),輸出由高電平變?yōu)榈碗娖?/p>

46、。(6)看門狗信號(hào)輸入端(WDI)  程序正常運(yùn)行時(shí),必須在小于1.6 s的時(shí)間間隔內(nèi)向該輸入端發(fā)送一個(gè)脈沖信號(hào),以清除芯片內(nèi)部的看門狗定時(shí)器。若超過(guò)1.6 s該輸入端收不到脈沖信號(hào),則內(nèi)部定時(shí)器溢出,8號(hào)引腳由高電平變?yōu)榈碗娖健?7)復(fù)位信號(hào)輸出端(RST)  上電時(shí),自動(dòng)產(chǎn)生200 ms的復(fù)位脈</p><p>  2.3.4 MAX485接口芯片介紹</p><p>  MA

47、X485是用于RS-485與RS-422通信的低功耗收發(fā)器,每個(gè)器件中都具有一個(gè)驅(qū)動(dòng)器和一個(gè)接收器。MAX485的驅(qū)動(dòng)器擺率不受限制,可以實(shí)現(xiàn)最高2.5Mbps的傳輸速率。這些收發(fā)器在驅(qū)動(dòng)器禁用的空載或滿載狀態(tài)下,吸取的電源電流在120(A 至500(A 之間。另外,MAX481、MAX483與MAX487具有低電流關(guān)斷模式, 僅消耗0.1µA。所有器件都工作在5V單電源下。驅(qū)動(dòng)器具有短路電流限制,并可以通過(guò)熱關(guān)斷電路將驅(qū)動(dòng)器

48、輸出置為高阻狀態(tài),防止過(guò)度的功率損耗。接收器輸入具有失效保護(hù)特性,當(dāng)輸入開(kāi)路時(shí),可以確保邏輯高電平輸出。</p><p>  MAX485通訊程序與MAX232通訊程序在本質(zhì)上是一樣的,只是MAX485通訊程序需要加上通訊方向控制。下面是基于mega128 16AU的485通信中斷接收的程序,調(diào)試通過(guò),晶振為外部16M,MAX485的DE和RE短接連PC0口, 程序如下: #define SEND_

49、485 PORTC|=0x01 #define READ_485 PORTC&=0xfe void Usart1_init(void)  //16Mhz頻率,設(shè)置波特率9.6k,8位數(shù)據(jù)位,無(wú)校驗(yàn),接收發(fā)送使能,1位停止位  {    UBRR1H=0;    UBRR1L=103;  &

50、#160; UCSR1B=(1<<RXCIE1)|(1<<RXEN1)|(1<<TXEN1);  //發(fā)送接收使能,使用中斷方式,    UCSR1C=(1<<UCSZ10)|(1<<UCSZ11);  //0x06 8位數(shù)據(jù),1位停止位,無(wú)校驗(yàn)  }  void

51、 Usart1_transmit(unsigned char c)  //查詢方式發(fā)送接收字符函數(shù)   {    SEND_485;   DelayBu</p><p><b>  3 系統(tǒng)軟件設(shè)計(jì)</b></p><p>  3.1 數(shù)據(jù)采

52、集方案設(shè)計(jì)</p><p>  基于單片機(jī)的協(xié)議轉(zhuǎn)換器實(shí)現(xiàn)協(xié)議的轉(zhuǎn)換有三種類型命令。</p><p>  第一類是數(shù)據(jù)采集命令,當(dāng)中央監(jiān)控主機(jī)沒(méi)有發(fā)送任何命令的時(shí)候,單片機(jī)自己采用輪詢方式向被監(jiān)控設(shè)備依次下發(fā)各種數(shù)據(jù)采集命令,對(duì)被監(jiān)控設(shè)備的信息解析,并且進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換和數(shù)據(jù)重新排序等操作,整合成符合內(nèi)部協(xié)議的數(shù)據(jù),并存放在數(shù)據(jù)緩沖區(qū)中備查。當(dāng)中央監(jiān)控主機(jī)發(fā)出輪詢命令是,單片機(jī)可以直接將數(shù)

53、據(jù)緩沖區(qū)中的直接向上發(fā)送而不必考慮可能的時(shí)間延遲,這樣可以提高整個(gè)運(yùn)行網(wǎng)絡(luò)的巡檢速度。</p><p>  第二類是控制命令(如開(kāi)關(guān)機(jī)命令),單片機(jī)首先要向中央監(jiān)控主機(jī)返回已經(jīng)接收到中央監(jiān)控主機(jī)的控制命令,然后由單片機(jī)根據(jù)被監(jiān)控設(shè)備的通訊協(xié)議格式向被監(jiān)控設(shè)備發(fā)送相應(yīng)的控制指令。</p><p>  第三類是實(shí)時(shí)數(shù)據(jù)采集命令,協(xié)議轉(zhuǎn)換器不僅要接收中央監(jiān)控主機(jī)命令和向監(jiān)控設(shè)備發(fā)送命令,而且還要

54、等協(xié)議轉(zhuǎn)換器將采集到的數(shù)據(jù)拆解整合后發(fā)送給中央監(jiān)控主機(jī),可見(jiàn)這種方式耗時(shí)較多。由于在動(dòng)力監(jiān)控中,數(shù)據(jù)更新不是特別快,一般不特別強(qiáng)調(diào)數(shù)據(jù)的實(shí)時(shí)性,可以采用第一種類型命令讓中央監(jiān)控主機(jī)直接從單片機(jī)的數(shù)據(jù)緩沖區(qū)讀取被監(jiān)控設(shè)備運(yùn)行參數(shù)。</p><p>  對(duì)于這三種類型的命令處理,如軟件流程圖5所示,當(dāng)有控制命令時(shí)首先處理控制命令,其次處理實(shí)時(shí)數(shù)據(jù)采集命令,最后處理數(shù)據(jù)采集命令。</p><p>

55、;<b>  圖5 軟件流程圖</b></p><p>  3.2軟件看門狗設(shè)計(jì)</p><p>  單片機(jī)系統(tǒng)中,為了提高程序的運(yùn)行可靠性,利用單片機(jī)硬件定時(shí)器中斷,可以很容易實(shí)現(xiàn)軟件看門狗。在程序中的接受中央監(jiān)控主機(jī)命令和向受監(jiān)控設(shè)備發(fā)送命令這兩個(gè)關(guān)鍵步驟設(shè)置軟件狗,為了程序由于意外情況發(fā)生,使單片機(jī)始終處于接受數(shù)據(jù)狀態(tài)或者發(fā)送數(shù)據(jù)狀態(tài)時(shí),就可以利用軟件看門狗跳

56、出死循環(huán)。</p><p>  在系統(tǒng)程序中,根據(jù)要求件事時(shí)間的長(zhǎng)短去設(shè)置“標(biāo)志”,一旦程序沒(méi)有在給定的時(shí)間重置標(biāo)志值,就導(dǎo)致系統(tǒng)復(fù)位。具體實(shí)現(xiàn)方法是在程序中設(shè)定查詢“標(biāo)志”,查詢后清零或減1,,直到標(biāo)志為0時(shí),執(zhí)行復(fù)位指令或轉(zhuǎn)向出錯(cuò)處理程序,并在出錯(cuò)處理程序中完成各種后續(xù)工作,再使系統(tǒng)復(fù)位。</p><p>  3.3數(shù)據(jù)幀傳輸設(shè)計(jì)</p><p>  為了使整個(gè)

57、監(jiān)控系統(tǒng)高可靠性地傳輸數(shù)據(jù),數(shù)據(jù)采用幀結(jié)構(gòu)形式傳輸。幀格式如圖5所示。</p><p><b>  圖5 數(shù)據(jù)幀結(jié)構(gòu)</b></p><p>  監(jiān)控采用主從呼應(yīng)方式,這樣可以避免多個(gè)現(xiàn)場(chǎng)節(jié)點(diǎn)同時(shí)呼叫而出現(xiàn)通信阻塞。</p><p>  受控設(shè)備接受一幀命令,回應(yīng)一幀數(shù)據(jù)。在一個(gè)監(jiān)控系統(tǒng)中,同一時(shí)刻只能有一個(gè)設(shè)備發(fā)送信息,但有多個(gè)設(shè)備接受信息

58、。</p><p>  中央監(jiān)控主機(jī)首先按照幀結(jié)構(gòu)向單個(gè)或多個(gè)協(xié)議轉(zhuǎn)換器發(fā)送命令,單片機(jī)按照幀結(jié)構(gòu)對(duì)命令進(jìn)行解析,并把它轉(zhuǎn)化為符合被監(jiān)控設(shè)備協(xié)議的命令,然后采集數(shù)據(jù),同時(shí)將采集的數(shù)據(jù)進(jìn)行分析,并把它轉(zhuǎn)化為符合中央監(jiān)控主機(jī)的幀結(jié)構(gòu)的形式,用單片機(jī)實(shí)現(xiàn)協(xié)議的轉(zhuǎn)換。</p><p>  3.3.1 Modbus 協(xié)議簡(jiǎn)介 </p><p>  Modbus 協(xié)議是應(yīng)用于電

59、子控制器上的一種通用語(yǔ)言。通過(guò)此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。有了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。此協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過(guò)何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請(qǐng)求訪問(wèn)其它設(shè)備的過(guò)程,如果回應(yīng)來(lái)自其它設(shè)備的請(qǐng)求,以及怎樣偵測(cè)錯(cuò)誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。 </p><p&

60、gt;  當(dāng)在一Modbus網(wǎng)絡(luò)上通信時(shí),此協(xié)議決定了每個(gè)控制器須要知道它們的設(shè)備地址,識(shí)別按地址發(fā)來(lái)的消息,決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),控制器將生成反饋信息并用Modbus協(xié)議發(fā)出。在其它網(wǎng)絡(luò)上,包含了Modbus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。這種轉(zhuǎn)換也擴(kuò)展了根據(jù)具體的網(wǎng)絡(luò)解決節(jié)地址、路由路徑及錯(cuò)誤檢測(cè)的方法。 </p><p>  1、在Modbus網(wǎng)絡(luò)上轉(zhuǎn)輸 </p>&l

61、t;p>  標(biāo)準(zhǔn)的Modbus口是使用一RS-232C兼容串行接口,它定義了連接口的針腳、電纜、信號(hào)位、傳輸波特率、奇偶校驗(yàn)??刂破髂苤苯踊蚪?jīng)由Modem組網(wǎng)。 </p><p>  控制器通信使用主—從技術(shù),即僅一設(shè)備(主設(shè)備)能初始化傳輸(查詢)。其它設(shè)備(從設(shè)備)根據(jù)主設(shè)備查詢提供的數(shù)據(jù)作出相應(yīng)反應(yīng)。典型的主設(shè)備:主機(jī)和可編程儀表。典型的從設(shè)備:可編程控制器。 </p><p>

62、;  主設(shè)備可單獨(dú)和從設(shè)備通信,也能以廣播方式和所有從設(shè)備通信。如果單獨(dú)通信,從設(shè)備返回一消息作為回應(yīng),如果是以廣播方式查詢的,則不作任何回應(yīng)。Modbus協(xié)議建立了主設(shè)備查詢的格式:設(shè)備(或廣播)地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、一錯(cuò)誤檢測(cè)域。 </p><p>  從設(shè)備回應(yīng)消息也由Modbus協(xié)議構(gòu)成,包括確認(rèn)要行動(dòng)的域、任何要返回的數(shù)據(jù)、和一錯(cuò)誤檢測(cè)域。如果在消息接收過(guò)程中發(fā)生一錯(cuò)誤,或從設(shè)備不能執(zhí)行其命

63、令,從設(shè)備將建立一錯(cuò)誤消息并把它作為回應(yīng)發(fā)送出去。 </p><p>  2、在其它類型網(wǎng)絡(luò)上轉(zhuǎn)輸 </p><p>  在其它網(wǎng)絡(luò)上,控制器使用對(duì)等技術(shù)通信,故任何控制都能初始和其它控制器的通信。這樣在單獨(dú)的通信過(guò)程中,控制器既可作為主設(shè)備也可作為從設(shè)備。提供的多個(gè)內(nèi)部通道可允許同時(shí)發(fā)生的傳輸進(jìn)程。 </p><p>  在消息位,Modbus協(xié)議仍提供了主—從原

64、則,盡管網(wǎng)絡(luò)通信方法是“對(duì)等”。如果一控制器發(fā)送一消息,它只是作為主設(shè)備,并期望從從設(shè)備得到回應(yīng)。同樣,當(dāng)控制器接收到一消息,它將建立一從設(shè)備回應(yīng)格式并返回給發(fā)送的控制器。 </p><p>  3.3.2查詢—回應(yīng)周期 </p><p><b>  查詢 </b></p><p>  查詢消息中的功能代碼告之被選中的從設(shè)備要執(zhí)行何種功能。數(shù)據(jù)

65、段包含了從設(shè)備要執(zhí)行功能的任何附加信息。例如功能代碼03是要求從設(shè)備讀保持寄存器并返回它們的內(nèi)容。數(shù)據(jù)段必須包含要告之從設(shè)備的信息:從何寄存器開(kāi)始讀及要讀的寄存器數(shù)量。錯(cuò)誤檢測(cè)域?yàn)閺脑O(shè)備提供了一種驗(yàn)證消息內(nèi)容是否正確的方法。 </p><p><b>  回應(yīng) </b></p><p>  如果從設(shè)備產(chǎn)生一正常的回應(yīng),在回應(yīng)消息中的功能代碼是在查詢消息中的功能代碼的回

66、應(yīng)。數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù):象寄存器值或狀態(tài)。如果有錯(cuò)誤發(fā)生,功能代碼將被修改以用于指出回應(yīng)消息是錯(cuò)誤的,同時(shí)數(shù)據(jù)段包含了描述此錯(cuò)誤信息的代碼。錯(cuò)誤檢測(cè)域允許主設(shè)備確認(rèn)消息內(nèi)容是否可用。 </p><p>  3.3.3兩種傳輸方式 </p><p>  控制器能設(shè)置為兩種傳輸模式(ASCII或RTU)中的任何一種在標(biāo)準(zhǔn)的Modbus網(wǎng)絡(luò)通信。用戶選擇想要的模式,包括串口通信參數(shù)(波

67、特率、校驗(yàn)方式等),在配置每個(gè)控制器的時(shí)候,在一個(gè)Modbus網(wǎng)絡(luò)上的所有設(shè)備都必須選擇相同的傳輸模式和串口參數(shù)。 </p><p>  所選的ASCII或RTU方式僅適用于標(biāo)準(zhǔn)的Modbus網(wǎng)絡(luò),它定義了在這些網(wǎng)絡(luò)上連續(xù)傳輸?shù)南⒍蔚拿恳晃?以及決定怎樣將信息打包成消息域和如何解碼。 </p><p>  在其它網(wǎng)絡(luò)上(象MAP和Modbus Plus)Modbus消息被轉(zhuǎn)成與串行傳輸無(wú)

68、關(guān)的幀。 </p><p>  1、ASCII模式 </p><p>  當(dāng)控制器設(shè)為在Modbus網(wǎng)絡(luò)上以ASCII(美國(guó)標(biāo)準(zhǔn)信息交換代碼)模式通信,在消息中的每個(gè)8Bit字節(jié)都作為兩個(gè)ASCII字符發(fā)送。這種方式的主要優(yōu)點(diǎn)是字符發(fā)送的時(shí)間間隔可達(dá)到1秒而不產(chǎn)生錯(cuò)誤。 </p><p><b>  代碼系統(tǒng) </b></p>&

69、lt;p>  · 十六進(jìn)制,ASCII字符0...9,A...F </p><p>  · 消息中的每個(gè)ASCII字符都是一個(gè)十六進(jìn)制字符組成 </p><p><b>  每個(gè)字節(jié)的位 </b></p><p><b>  · 1個(gè)起始位 </b></p><p&g

70、t;  · 7個(gè)數(shù)據(jù)位,最小的有效位先發(fā)送 </p><p>  · 1個(gè)奇偶校驗(yàn)位,無(wú)校驗(yàn)則無(wú) </p><p>  CRC域是兩個(gè)字節(jié),包含一16位的二進(jìn)制值。它由傳輸設(shè)備計(jì)算后加入到消息中。接收設(shè)備重新計(jì)算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同,則有誤。 </p><p>  CRC是先調(diào)入一值是全“1”的16位寄存

71、器,然后調(diào)用一過(guò)程將消息中連續(xù)的8位字節(jié)各當(dāng)前寄存器中的值進(jìn)行處理。僅每個(gè)字符中的8Bit數(shù)據(jù)對(duì)CRC有效,起始位和停止位以及奇偶校驗(yàn)位均無(wú)效。 </p><p>  CRC產(chǎn)生過(guò)程中,每個(gè)8位字符都單獨(dú)和寄存器內(nèi)容相或(OR),結(jié)果向最低有效位方向移動(dòng),最高有效位以0填充。LSB被提取出來(lái)檢測(cè),如果LSB為1,寄存器單獨(dú)和預(yù)置的值或一下,如果LSB為0,則不進(jìn)行。整個(gè)過(guò)程要重復(fù)8次。在最后一位(第8位)完成后,

72、下一個(gè)8位字節(jié)又單獨(dú)和寄存器的當(dāng)前值相或。最終寄存器中的值,是消息中所有的字節(jié)都執(zhí)行之后的CRC值。 </p><p>  CRC添加到消息中時(shí),低字節(jié)先加入,然后高字節(jié)。 </p><p>  CRC簡(jiǎn)單函數(shù)如下: </p><p>  unsigned short CRC16(puchMsg, usDataLen) </p><p>  

73、unsigned char *puchMsg ; /* 要進(jìn)行CRC校驗(yàn)的消息 */ </p><p>  unsigned short usDataLen ; /* 消息中字節(jié)數(shù) */ </p><p><b>  { </b></p><p>  unsigned char uchCRCHi = 0xFF ; /* 高CRC字節(jié)初始化 */

74、 </p><p>  unsigned char uchCRCLo = 0xFF ; /* 低CRC 字節(jié)初始化 */ </p><p>  unsigned uIndex ; /* CRC循環(huán)中的索引 */ </p><p>  while (usDataLen--) /* 傳輸消息緩沖區(qū) */ </p><p><b>  {

75、 </b></p><p>  uIndex = uchCRCHi ^ *puchMsgg++ ; /* 計(jì)算CRC */ </p><p>  uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ; </p><p>  uchCRCLo = auchCRCLo[uIndex] ; </p><p>

76、<b>  } </b></p><p>  return (uchCRCHi << 8 uchCRCLo) ; </p><p><b>  } </b></p><p>  /* CRC 高位字節(jié)值表 */ </p><p>  static unsigned char auchCR

77、CHi[] = { </p><p>  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, </p><p>  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, </p><p>  0x00, 0xC1, 0x81, 0x4

78、0, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, </p><p>  0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, </p><p>  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, </p><

79、;p>  0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, </p><p>  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, </p><p>  0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0

80、, 0x80, 0x41, </p><p>  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, </p><p>  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, </p><p>  0x01, 0xC0, 0x80,

81、 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, </p><p>  0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, </p><p>  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, </p>

82、<p>  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, </p><p>  0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, </p><p>  0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00,

83、0xC1, 0x81, 0x40, </p><p>  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, </p><p>  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, </p><p>  0x00, 0xC1, 0

84、x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, </p><p>  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, </p><p>  0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, </p&

85、gt;<p>  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, </p><p>  0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, </p><p>  0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x

86、01, 0xC0, 0x80, 0x41, </p><p>  0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, </p><p>  0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 </p><p><b>  } ; </b></p>

87、<p>  /* CRC低位字節(jié)值表*/ </p><p>  static char auchCRCLo[] = { </p><p>  0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, </p><p>  0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04,

88、0xCC, 0x0C, 0x0D, 0xCD, </p><p>  0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, </p><p>  0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, </p><p>  0x1E, 0

89、xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, </p><p>  0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, </p><p>  0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, &

90、lt;/p><p>  0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, </p><p>  0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, </p><p>  0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x

91、38, 0x28, 0xE8, 0xE9, 0x29, </p><p>  0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, </p><p>  0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, </p><p>  0x2

92、2, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, </p><p>  0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, </p><p>  0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6

93、F, </p><p>  0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, </p><p>  0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, </p><p>  0x7F, 0xBF, 0x7D, 0xBD, 0xBC

94、, 0x7C, 0xB4, 0x74, 0x75, 0xB5, </p><p>  0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, </p><p>  0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, </p><p> 

95、 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, </p><p>  0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, </p><p>  0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B,

96、 0x8B, </p><p>  0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, </p><p>  0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, </p><p>  0x43, 0x83, 0x41, 0x81,

97、0x80, 0x40 </p><p><b>  } ; </b></p><p>  ModBus網(wǎng)絡(luò)是一個(gè)工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計(jì)算機(jī)通過(guò)公用線路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過(guò)程監(jiān)控。下表1是ModBus的功能碼定義。 </p><p>  表1 ModBus功能

98、碼 </p><p>  01 READ COIL STATUS </p><p>  02 READ INPUT STATUS </p><p>  03 READ HOLDING REGISTER </p><p>  04 READ INPUT REGISTER </p><p>  05 WRITE SINGL

99、E COIL </p><p>  06 WRITE SINGLE REGISTER </p><p>  15 WRITE MULTIPLE COIL </p><p>  16 WRITE MULTIPLE REGISTER </p><p>  ModBus網(wǎng)絡(luò)只是一個(gè)主機(jī),所有通信都由他發(fā)出。網(wǎng)絡(luò)可支持247個(gè)之多的遠(yuǎn)程從屬控制器,但

100、實(shí)際所支持的從機(jī)數(shù)要由所用通信設(shè)備決定。采用這個(gè)系統(tǒng),各PC可以和中心主機(jī)交換信息而不影響各PC執(zhí)行本身的控制任務(wù)。 </p><p>  (1)ModBus的傳輸方式 </p><p>  在ModBus系統(tǒng)中有2種傳輸模式可選擇。這2種傳輸模式與從機(jī)PC通信的能力是同等的。選擇時(shí)應(yīng)視所用ModBus主機(jī)而定,每個(gè)ModBus系統(tǒng)只能使用一種模式,不允許2種模式混用。一種模式是ASCII

101、(美國(guó)信息交換碼),另一種模式是RTU(遠(yuǎn)程終端設(shè)備)這兩種模式的定義見(jiàn)表3 </p><p>  表3 ASCII和RTU傳輸模式的特性 </p><p>  ASCII可打印字符便于故障檢測(cè),而且對(duì)于用高級(jí)語(yǔ)言(如Fortan)編程的主計(jì)算機(jī)及主PC很適宜。RTU則適用于機(jī)器語(yǔ)言編程的計(jì)算機(jī)和PC主機(jī)。 </p><p>  用RTU模式傳輸?shù)臄?shù)據(jù)是8位二進(jìn)制字

102、符。如欲轉(zhuǎn)換為ASCII模式,則每個(gè)RTU字符首先應(yīng)分為高位和低位兩部分,這兩部分各含4位,然后轉(zhuǎn)換成十六進(jìn)制等量值。用以構(gòu)成報(bào)文的ASCII字符都是十六進(jìn)制字符。ASCII模式使用的字符雖是RTU模式的兩倍,但ASCII數(shù)據(jù)的譯瑪和處理更為容易一些,此外,用RTU模式時(shí)報(bào)文字符必須以連續(xù)數(shù)據(jù)流的形式傳送,用ASCII模式,字符之間可產(chǎn)生長(zhǎng)達(dá)1s的間隔,以適應(yīng)速度較快的機(jī)器。 </p><p> ?。?)ModB

103、us的數(shù)據(jù)校驗(yàn)方式 </p><p>  CRC-16(循環(huán)冗余錯(cuò)誤校驗(yàn)) </p><p>  CRC-16錯(cuò)誤校驗(yàn)程序如下:報(bào)文(此處只涉及數(shù)據(jù)位,不指起始位、停止位和任選的奇偶校驗(yàn)位)被看作是一個(gè)連續(xù)的二進(jìn)制,其最高有效位(MSB)首選發(fā)送。報(bào)文先與X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示為二進(jìn)制數(shù)1100000000

104、0000101。整數(shù)商位忽略不記,16位余數(shù)加入該報(bào)文(MSB先發(fā)送),成為2個(gè)CRC校驗(yàn)字節(jié)。余數(shù)中的1全部初始化,以免所有的零成為一條報(bào)文被接收。經(jīng)上述處理而含有CRC字節(jié)的報(bào)文,若無(wú)錯(cuò)誤,到接收設(shè)備后再被同一多項(xiàng)式(X↑16+X↑15+X↑2+1)除,會(huì)得到一個(gè)零余數(shù)(接收設(shè)備核驗(yàn)這個(gè)CRC字節(jié),并將其與被傳送的CRC比較)。全部運(yùn)算以2為模(無(wú)進(jìn)位)。 </p><p>  習(xí)慣于成串發(fā)送數(shù)據(jù)的設(shè)備會(huì)首選

105、送出字符的最右位(LSB-最低有效位)。而在生成CRC情況下,發(fā)送首位應(yīng)是被除數(shù)的最高有效位MSB。由于在運(yùn)算中不用進(jìn)位,為便于操作起見(jiàn),計(jì)算CRC時(shí)設(shè)MSB在最右位。生成多項(xiàng)式的位序也必須反過(guò)來(lái),以保持一致。多項(xiàng)式的MSB略去不記,因其只對(duì)商有影響而不影響余數(shù)。 </p><p>  生成CRC-16校驗(yàn)字節(jié)的步驟如下: </p><p> ?、傺b如一個(gè)16位寄存器,所有數(shù)位均為1。 &

106、lt;/p><p>  ②該16位寄存器的高位字節(jié)與開(kāi)始8位字節(jié)進(jìn)行“異或”運(yùn)算。運(yùn)算結(jié)果放入這個(gè)16位寄存器。 </p><p>  ③把這個(gè)16寄存器向右移一位。 </p><p> ?、苋粝蛴遥?biāo)記位)移出的數(shù)位是1,則生成多項(xiàng)式1010000000000001和這個(gè)寄存器進(jìn)行“異或”運(yùn)算;若向右移出的數(shù)位是0,則返回③。 </p><p>

107、; ?、葜貜?fù)③和④,直至移出8位。 </p><p> ?、蘖硗?位與該十六位寄存器進(jìn)行“異或”運(yùn)算。 </p><p> ?、咧貜?fù)③~⑥,直至該報(bào)文所有字節(jié)均與16位寄存器進(jìn)行“異或”運(yùn)算,并移位8次。 </p><p>  ⑧這個(gè)16位寄存器的內(nèi)容即2字節(jié)CRC錯(cuò)誤校驗(yàn),被加到報(bào)文的最高有效位。 </p><p>  另外,在某些非Mod

108、Bus通信協(xié)議中也經(jīng)常使用CRC16作為校驗(yàn)手段,而且產(chǎn)生了一些CRC16的變種,他們是使用CRC16多項(xiàng)式X↑16+X↑15+X↑2+1,單首次裝入的16位寄存器為0000;使用CRC16的反序X↑16+X↑14+X↑1+1,首次裝入寄存器值為0000或FFFFH。 </p><p>  LRC(縱向冗余錯(cuò)誤校驗(yàn)) </p><p>  LRC錯(cuò)誤校驗(yàn)用于ASCII模式。這個(gè)錯(cuò)誤校驗(yàn)是一

109、個(gè)8位二進(jìn)制數(shù),可作為2個(gè)ASCII十六進(jìn)制字節(jié)傳送。把十六進(jìn)制字符轉(zhuǎn)換成二進(jìn)制,加上無(wú)循環(huán)進(jìn)位的二進(jìn)制字符和二進(jìn)制補(bǔ)碼結(jié)果生成LRC錯(cuò)誤校驗(yàn)(參見(jiàn)圖)。這個(gè)LRC在接收設(shè)備進(jìn)行核驗(yàn),并與被傳送的LRC進(jìn)行比較,冒號(hào)(:)、回車符號(hào)(CR)、換行字符(LF)和置入的其他任何非ASCII十六進(jìn)制字符在運(yùn)算時(shí)忽略不計(jì)</p><p><b>  4 總結(jié)與體會(huì)</b></p>&

110、lt;p>  為了組網(wǎng)方便,上述監(jiān)控系統(tǒng)的所有數(shù)據(jù)都用串口方式采集和傳輸,如果受監(jiān)控設(shè)備提供智能串口,可以直接連接組網(wǎng),如果受監(jiān)控設(shè)備提供的不是標(biāo)準(zhǔn)的串口,而是其他接口(如RS485/422、CAN),則可以用相關(guān)的接口轉(zhuǎn)換器對(duì)接口標(biāo)準(zhǔn)進(jìn)行轉(zhuǎn)換。對(duì)于沒(méi)有智能接口的設(shè)備,可以采用專門的數(shù)據(jù)采集器采集數(shù)據(jù)進(jìn)行連接組網(wǎng)。</p><p>  雖然網(wǎng)絡(luò)技術(shù)不斷發(fā)展,但各個(gè)廠商為了保證數(shù)據(jù)傳輸?shù)目煽啃?,其智能協(xié)議接口

111、仍然以RS232和RS485/422接口為主,因此,基于單片機(jī)的智能協(xié)議轉(zhuǎn)換器仍然可以發(fā)揮其作用。但是,協(xié)議轉(zhuǎn)換器與中央監(jiān)控主機(jī)之間的數(shù)據(jù)傳輸方式卻有了相應(yīng)的發(fā)展,已經(jīng)有不少?gòu)S商采用TCP/IP進(jìn)行上層數(shù)據(jù)的傳輸,以便適應(yīng)更多的功能需要。</p><p>  在實(shí)際使用過(guò)程中,為了適應(yīng)一部分惡劣的環(huán)境,在協(xié)議轉(zhuǎn)換器接口部分做了一些硬件的優(yōu)化,如:為了提高防雷效果,每個(gè)接口增加了防雷電路;為了提高接口的適應(yīng)能力,增

112、加了多接口同源設(shè)計(jì)。</p><p>  基于單片機(jī)的智能協(xié)議轉(zhuǎn)化器不僅可以用于動(dòng)力集中監(jiān)控系統(tǒng)中,而且還可以用于其它數(shù)據(jù)傳輸場(chǎng)合如樓宇自控、DCS等等。</p><p><b>  參考文獻(xiàn)</b></p><p>  1 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社. 2003</p&g

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論