基于單片機(jī)的MODBUS通信接口設(shè)計_第1頁
基于單片機(jī)的MODBUS通信接口設(shè)計_第2頁
基于單片機(jī)的MODBUS通信接口設(shè)計_第3頁
基于單片機(jī)的MODBUS通信接口設(shè)計_第4頁
基于單片機(jī)的MODBUS通信接口設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗室開放實驗題目:基于DSP2407單片機(jī)的MODBUS通信接口設(shè)計院系名稱:專業(yè)班級:學(xué)生姓名:學(xué)號:指導(dǎo)教師:成績:成績:指導(dǎo)老師簽名:日期:目錄摘要…………………31緒論………………42設(shè)計方案…………42.1方案概述……………………52.2方案論證……………………52.3MODBUS協(xié)議…………………63硬件電路設(shè)計……………………73.1最小系統(tǒng)電路………………73.2單片機(jī)電源電路……………83.3報警控制電路………………93.4通訊電路……………………104總體設(shè)計方案……………………114.1主程序設(shè)計…………………114.2串口中斷處理設(shè)計…………124.3CRC計算及校驗設(shè)計………134.4數(shù)據(jù)幀處理模塊……………14心得體會……………16參考文獻(xiàn)……………17附錄一局部程序代碼………………18摘要在機(jī)械、化工、紡織等行業(yè),隨著生產(chǎn)規(guī)模的不斷擴(kuò)大,以及對生產(chǎn)過程集中監(jiān)控的迫切要求,現(xiàn)場總線技術(shù)應(yīng)運而生,并成為了當(dāng)今測控領(lǐng)域研究的熱點之一。Modbus協(xié)議作為現(xiàn)場總線的一種,以其開發(fā)本錢低,簡單易用等諸多優(yōu)點己被工業(yè)領(lǐng)域廣泛接受。信號測量作為工業(yè)中重要的測量參數(shù)之一,本課題選擇了信號測量作為測量的對象,并設(shè)計了基于Modbus協(xié)議的信號測量測控節(jié)點。本設(shè)計采用TC1047A傳感器采集現(xiàn)場信號測量,由DSP320IF2407單片機(jī)進(jìn)行AD轉(zhuǎn)換和Modbus協(xié)議通訊。通訊的物理層采用RS232接口,并增加了光電隔離、抗雷擊和短路保護(hù)等功能。最后實現(xiàn)了單個節(jié)點和PC機(jī)的Modbus協(xié)議通訊,并通過控制蜂鳴器和繼電器來模擬工業(yè)現(xiàn)場控制。本文分別從硬件和軟件上闡述了該信號測量測控節(jié)點的實現(xiàn)方法。[關(guān)鍵詞]信號測量測控Modbus協(xié)議RS232DSP320IF24071緒論隨著計算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的開展,工業(yè)參數(shù)的數(shù)字采集促進(jìn)了現(xiàn)場總線技術(shù)的開展,目前現(xiàn)場總線已經(jīng)從當(dāng)初的4-20mA電流信號升級為數(shù)字信號,開展成為全數(shù)字通訊,解決了現(xiàn)場信號遠(yuǎn)距離高速傳送的問題,而且提高了抗干擾性能,增加了系統(tǒng)配置的靈活性,節(jié)省了硬件投資,是未來生產(chǎn)自動化和過程控制的開展方向。目前,較有影響的總線有:Modbus,CAN,LonWorks,Profibus等。采用RS485標(biāo)準(zhǔn)總線技術(shù)對現(xiàn)場數(shù)據(jù)進(jìn)行采集、管理,相對于CAN,LonWorks,Profibus等現(xiàn)場總線系統(tǒng)而言,具有結(jié)構(gòu)簡易、本錢低廉、硬軟件支持豐富、安裝方便,且與傳統(tǒng)的DCS兼容,與現(xiàn)場儀表接口簡單,系統(tǒng)實施容易等特點,因而RS485總線系統(tǒng)在一定時間內(nèi)仍是中小控制系統(tǒng)的主要形式。信號測量測控模塊作為一種重要的設(shè)備,在諸多工業(yè)生產(chǎn)過程中得到了廣泛應(yīng)用。自70年代以來,由于工業(yè)過程控制的需要,特別是微電子技術(shù)和計算機(jī)技術(shù)的迅猛開展,國外信號測量測控開展迅速,并在智能化、自適應(yīng)等方面取得顯著成果。在這方面,以口本、美國、德國、瑞典等國的技術(shù)領(lǐng)先,生產(chǎn)出了很多商品化的、性能優(yōu)異的信號測量測控器及儀器儀表,并在各行業(yè)廣泛應(yīng)用。目前,國外信號測量測控系統(tǒng)及儀表正朝著高精度、智能化、小型化等方面快速開展。基于單片機(jī)的Modbus協(xié)議產(chǎn)品一般由單片機(jī)芯片為核心和外圍輔助邏輯元器件組成,它充分利用單片機(jī)的硬件資源和軟件資源,同時合理配置特定的功能元器件來實現(xiàn)產(chǎn)品的功用,外圍元器件一局部是用來實現(xiàn)通訊的串行接口元件,具有電平轉(zhuǎn)換的功能,這使得Modbus產(chǎn)品具有組成工業(yè)網(wǎng)絡(luò)的能力;另一局部是功能器件,如:數(shù)模轉(zhuǎn)化器、模數(shù)轉(zhuǎn)化器、LED顯示器等,能夠?qū)崿F(xiàn)很多的特定功能。由于產(chǎn)品的硬件構(gòu)成比擬簡單,性能比擬穩(wěn)定,功能比擬強(qiáng)且造價比擬低成為該產(chǎn)品的主要特點,在國內(nèi)使用的Modbus產(chǎn)品大局部是國外產(chǎn)品,國內(nèi)很少有獨立的知識產(chǎn)權(quán),這是Modbus產(chǎn)品在國內(nèi)的現(xiàn)狀。本設(shè)計實現(xiàn)了單節(jié)點與PC機(jī)的Modbus協(xié)議的通訊,通過單片機(jī)的功能模塊進(jìn)行AD采集,數(shù)碼管顯示,蜂鳴器報警和繼電器控制,通過串口以RTU幀的格式和上位機(jī)通訊,實現(xiàn)節(jié)點上傳信號測量AD值和上位機(jī)控制節(jié)點的I/O的功能。2設(shè)計方案2.1方案概述本方案采用精密信號測量電壓轉(zhuǎn)換器TC1047作為采集現(xiàn)場環(huán)境信號測量的傳感器,單片機(jī)選用性價比擬高的DSP320IF2407。外部電壓基準(zhǔn)源為REF3325作為2.5V電壓基準(zhǔn)。8位撥碼開關(guān)用來設(shè)置Modbus協(xié)議節(jié)點的ID號。RS232通訊電路實現(xiàn)節(jié)點和PC的Modbus通訊,并在調(diào)試時作為ISP燒錄程序的接口。RS485電路實現(xiàn)節(jié)點與節(jié)點之間的Modbus通訊接口。由于節(jié)點是在工業(yè)現(xiàn)場進(jìn)行遠(yuǎn)距離布線,所以在設(shè)計RS485總線電路時特別增加了電路抗電磁干擾和防雷電等措施。數(shù)碼管電路用來顯示現(xiàn)場信號測量。在現(xiàn)場信號測量超過設(shè)定的閾值時,蜂鳴器進(jìn)行報警,并且通過控制繼電器來控制閥門等現(xiàn)場的執(zhí)行器。單片機(jī)系統(tǒng)的具體框圖如圖2.1所示:圖2.1單片機(jī)系統(tǒng)框圖方案論證本設(shè)計中,通訊的物理層包括RS232電路和RS485電路兩局部。RS232主要是單節(jié)點與PC機(jī)的通訊,其通訊速率預(yù)設(shè)低于9600b/s,距離小于15米,適用于戶內(nèi)布線,電磁干擾較小,所以采用DB-9連接器及MAX232電壓轉(zhuǎn)換電路即可實現(xiàn)其穩(wěn)定工作。RS485電路適用于節(jié)點之間的通訊,其通訊速率預(yù)設(shè)低于1Mb/s,距離小于1000米,適用于戶外布線,這就存在雷擊、浪涌等電磁干擾,有時還會出現(xiàn)RS485信號線與電力線短路的情況,所以在設(shè)計RS485電路時,要求有抗雷擊、抗浪涌沖擊以及過壓保護(hù)等功能。在設(shè)計硬件電路時,本人查閱了相關(guān)技術(shù)文檔,并經(jīng)過論證,最后確定采用瞬變電壓抑制二極管、自恢復(fù)保險絲以及鉗位電路等來實現(xiàn)上述功能。具體電路見后面章節(jié)詳細(xì)介紹。由于本通訊采用了Modbus協(xié)議及CRC校驗,可以保證數(shù)據(jù)鏈路層和應(yīng)用層數(shù)據(jù)傳輸?shù)目煽啃?。MODBUS協(xié)議2.31MODBUS概述Modbus是由Modicon〔現(xiàn)為施耐德電氣公司的一個品牌〕在1979年創(chuàng)造的,是全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議。為更好地普及和推動Modbus在基于以太網(wǎng)上的分布式應(yīng)用,目前施耐德公司已將Modbus協(xié)議的所有權(quán)移交給IDA〔InterfaceforDistributedAutomation,分布式自動化接口〕組織,并成立了Modbus-IDA組織,為Modbus今后的開展奠定了根底。在我國,Modbus已經(jīng)成為國家標(biāo)準(zhǔn)GB/T19582-2023。據(jù)不完全統(tǒng)計:截止到2007年,Modbus的節(jié)點安裝數(shù)量已經(jīng)超過了1000萬個。Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(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é)議定義了一個控制器能認(rèn)識使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請求訪問其它設(shè)備的過程,如何回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。當(dāng)在Modbus網(wǎng)絡(luò)上通信時,此協(xié)議決定了每個控制器須要知道它們的設(shè)備地址,識別按地址發(fā)來的消息,決定要產(chǎn)生何種行動。如果需要回應(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é)地址、路由路徑及錯誤檢測的方法。Modbus具有以下幾個特點:〔1〕標(biāo)準(zhǔn)、開放,用戶可以免費、放心地使用Modbus協(xié)議,不需要交納許可證費,也不會侵犯知識產(chǎn)權(quán)。目前,支持Modbus的廠家超過400家,支持Modbus的產(chǎn)品超過600種。〔2〕Modbus可以支持多種電氣接口,如RS-232、RS-485等,還可以在各種介質(zhì)上傳送,如雙絞線、光纖、無線等?!?〕Modbus的幀格式簡單、緊湊,通俗易懂。用戶使用容易,廠商開發(fā)簡單。2.32MODBUS通信協(xié)議控制器通信使用主—從技術(shù),即僅一設(shè)備〔主設(shè)備〕能初始化傳輸〔查詢〕。其它設(shè)備〔從設(shè)備〕根據(jù)主設(shè)備查詢提供的數(shù)據(jù)作出相應(yīng)反響。典型的主設(shè)備:主機(jī)和可編程儀表。典型的從設(shè)備:可編程控制器。主設(shè)備可單獨和從設(shè)備通信,也能以播送方式和所有從設(shè)備通信。如果單獨通信,從設(shè)備返回一消息作為回應(yīng),如果是以播送方式查詢的,那么不作任何回應(yīng)。Modbus協(xié)議建立了主設(shè)備查詢的格式:設(shè)備〔或播送〕地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、一錯誤檢測域。從設(shè)備回應(yīng)消息也由Modbus協(xié)議構(gòu)成,包括確認(rèn)要行動的域、任何要返回的數(shù)據(jù)、和錯誤檢測域。如果在消息接收過程中發(fā)生錯誤,或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立錯誤消息并把它作為回應(yīng)發(fā)送出去。控制器能設(shè)置為兩種傳輸模式〔ASCII或RTU〕中的任何一種在標(biāo)準(zhǔn)的Modbus網(wǎng)絡(luò)通信。用戶選擇想要的模式,包括串口通信參數(shù)〔波特率、校驗方式等〕,在配置每個控制器的時候,在一個Modbus網(wǎng)絡(luò)上的所有設(shè)備都必須選擇相同的傳輸模式和串口參數(shù)。硬件電路設(shè)計3.1.最小系統(tǒng)電路DSP320IF2407系列單片機(jī)是宏晶科技生產(chǎn)的單時鐘的單片機(jī),是高速、低功耗、超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051。其內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位AD轉(zhuǎn)換,工作電壓5.5V至3.3V,工作頻率范圍0至35MHz,通用I/O口44個,復(fù)位后為準(zhǔn)雙向口/弱上拉,可設(shè)置成準(zhǔn)雙向口/弱上拉,推挽/強(qiáng)上拉,僅為輸入/高阻,開漏每個I/O口驅(qū)動能力可到達(dá)20mA,但整個芯片最大不超過55mA,有看門狗功能,有8路10位精度ADC,轉(zhuǎn)換速度可達(dá)250K/S,內(nèi)部有60K字節(jié)的Flash程序存儲器。選用DSP320IF2407單片機(jī)完全可以滿足本設(shè)計需求。單片機(jī)最小系統(tǒng)如圖3.1所示:圖3.1單片機(jī)最小系統(tǒng)單片機(jī)電源電路為了給單片機(jī)系統(tǒng)提供穩(wěn)定可靠的電源,本設(shè)計采用國半公司的LM22680系列穩(wěn)壓器電路。LM22680提供了作為降壓開關(guān)穩(wěn)壓器應(yīng)有的一切有源功能,具有優(yōu)良的線性與負(fù)載調(diào)節(jié)特性,可以驅(qū)動電流高達(dá)2A的負(fù)載。其通過使用一個低導(dǎo)通電阻的N溝道金屬氧化物半導(dǎo)體場效應(yīng)管獲得超過90%的高效率,并提供了一種簡易的整體設(shè)計手段,可將使用的外部元器件減少到最低限度。開關(guān)時鐘頻率由內(nèi)部工作在500kHz固定頻率的振蕩器提供,也可以通過一個外部電阻進(jìn)行調(diào)節(jié),或者與高達(dá)1MHz的外部時鐘同步,另外也可以設(shè)置讓多個穩(wěn)壓器自同步,工作在同一開關(guān)頻率。LM22680系列產(chǎn)品具有內(nèi)置熱關(guān)斷和限流功能,而且有一個使能控制輸入端,可使穩(wěn)壓器休眠至靜態(tài)電流為25微安的待機(jī)狀態(tài)。通過選擇適宜的外部軟啟動電容器可實現(xiàn)可調(diào)軟啟動特性。LM22680的其它主要特征如下:〔1〕寬廣的輸入電壓范圍:4.5V至42V〔2〕低等效串聯(lián)阻抗的陶瓷電容器即可穩(wěn)定工作〔3〕輸出電壓可調(diào),輸出低至1.285V〔4〕±1.5%反響參考精度〔5〕500kHz的開關(guān)頻率,且在200kHz至1MHz之間可調(diào)〔6〕工作結(jié)點信號測量范圍為-40°C至125°C對于LM22680_ADJ,輸出電壓應(yīng)該直接連到FB引腳上,不需要電阻分壓器就可實現(xiàn)1.285V的輸出電壓,其它輸出電壓可以利用一個電阻分壓器實現(xiàn)。官方推薦電阻R1和R2之和的最大值不超過10kΩ,以保證高輸出電壓的精確度。在本電源電路中采用510Ω和1.5KΩ,輸出5.06V電壓。單片機(jī)系統(tǒng)電源電路如圖3.2所示:圖3.2單片機(jī)系統(tǒng)電源電路報警控制電路信號測量測控節(jié)點的設(shè)計不僅要對現(xiàn)場信號測量進(jìn)行數(shù)據(jù)上傳,還要對現(xiàn)場進(jìn)行簡單的報警和控制,如當(dāng)信號測量到達(dá)預(yù)設(shè)的閾值時,蜂鳴器要進(jìn)行報警,以提示現(xiàn)場人員,并通過控制繼電器,實現(xiàn)對現(xiàn)場的設(shè)備進(jìn)行簡單的控制。蜂鳴器是一種采用直流電壓供電的電子訊響器,主要分為壓電式與電磁式兩種類型。壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構(gòu)成,當(dāng)接通電源后,多諧振蕩器起振,輸出1.5kHZ至2.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成,當(dāng)接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性的振動發(fā)聲。本系統(tǒng)的設(shè)計采用電磁式蜂鳴器,通過DSP320IF2407單片機(jī)的I/O口進(jìn)行控制,P1.3口具有PWM輸出功能,可以進(jìn)行頻率的設(shè)置,從而讓蜂鳴器發(fā)出不同頻率的聲音,蜂鳴器報警電路如圖3.3所示:圖3.3蜂鳴器報警電路通訊電路為實現(xiàn)現(xiàn)場組網(wǎng)控制和方便上位機(jī)完成現(xiàn)場數(shù)據(jù)采集和各種控制任務(wù),該設(shè)計提供了兩種通信接口:RS485接口和RS232接口。RS232主要用來實現(xiàn)一對一的通信方式,即信號測量測控節(jié)點和上位機(jī)的通訊,而RS485那么可用來完成節(jié)點組網(wǎng)通信。其中RS232通訊電路采用MAX232芯片,它是專門為電腦的RS232標(biāo)準(zhǔn)串口設(shè)計的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。具體RS232通訊電路如圖3.4所示:圖3.4RS232通訊電路4總體設(shè)計方案4.1主程序設(shè)計基于Modbus信號測量測控節(jié)點的程序設(shè)計要實現(xiàn)五大功能:第一,主機(jī)和從機(jī)之間串口通訊功能;第二,要完成命令報文的解析和信息提取功能;第三,實現(xiàn)MODBUS協(xié)議規(guī)定的主要的讀、寫功能;第四,實現(xiàn)在通訊過程中循環(huán)冗余檢測功能;第五,單片機(jī)采集信號測量;第六,數(shù)碼管顯示信號測量功能。在信號測量檢測中,選用單片機(jī)ADC通道1,配置轉(zhuǎn)換精度為8位,速度為420個時鐘周期。由于信號測量的變化速率較慢,為了節(jié)約CPU資源,采用前后臺操作,在后臺中每隔100ms進(jìn)行一次AD采集。在實際的調(diào)試當(dāng)中發(fā)現(xiàn)單片機(jī)剛上電或復(fù)位時,AD剛開始采集的數(shù)值是錯誤的,在本設(shè)計中采取的方法是丟棄前50次采集的AD值,這樣可以保證第一次拿到的AD值是正確的,從而不會出現(xiàn)因復(fù)位而誤報的情況。并且結(jié)合熱敏電阻變化特性及實際環(huán)境信號測量變化的情況,本設(shè)計采用了5個隊列深度的均值濾波,以減小誤差。節(jié)點軟件設(shè)計的重點有:CRC校驗,MODBUS協(xié)議功能實現(xiàn),AD采集程序程序,串口初始化及中斷處理程序,定時器中斷處理程序,單片機(jī)執(zhí)行程序。軟件設(shè)計選用的編譯環(huán)境為經(jīng)典的KeiluVision2IDE。其中C語言具有豐富的庫函數(shù),具有程序編寫簡單,可讀性強(qiáng),維護(hù)性好,也具有直接對硬件進(jìn)行操作的特點,生成目標(biāo)代碼的質(zhì)量高,且有較好的可移植性,所以選用C語言進(jìn)行編程。圖4.1為主函數(shù)程序流程圖:圖4.1主函數(shù)程序流程圖4.2串口中斷處理設(shè)計單片機(jī)與外界通訊主要通過串口,無論是接收還是發(fā)送消息,都是經(jīng)過串口來實現(xiàn),在執(zhí)行通訊任務(wù)時必須進(jìn)行串口的初始化,初始化程序設(shè)計主要是波特率的設(shè)計,在串行通信中,收發(fā)雙方的波特率必須一致。51單片機(jī)串口可有4種工作方式,在本設(shè)計中設(shè)定串口為工作方式1為8位異步收發(fā),波特率由T0的溢出率和SMOD的值共同確定。根據(jù)晶振頻率為11.0592MHz,波特率為4800b/s,SMOD為1時,定時器1的初值為F4H。串口中斷處理程序流程圖如下4.2所示:圖4.2串口中斷處理程序流程圖4.3CRC計算及校驗設(shè)計循環(huán)冗余校驗(CRC)域為兩個字節(jié),包含一個二進(jìn)制16位值。附加在報文后面的CRC的值由發(fā)送設(shè)備計算。接收設(shè)備在接收報文時重新計算CRC的值,并將計算結(jié)果于實際接收到的CRC值相比擬。如果兩個值不相等,那么為錯誤。CRC的計算,開始對一個16位存放器預(yù)裝全1。然后將報文中的連續(xù)的8位子節(jié)對其進(jìn)行后續(xù)的計算。只有字符中的8個數(shù)據(jù)位參與生成CRC的運算,起始位,停止位和校驗位不參與CRC計算。CRC的生成過程中,每個8位字符與存放器中的值異或。然后結(jié)果向最低有效位方向移動1位,而最高有效位位置充零。然后提取并檢查LSB:如果LSB為1,那么存放器中的值與一個固定的預(yù)置值異或;如果LSB為0,那么不進(jìn)行異或操作。這個過程將重復(fù)直到執(zhí)行完8次移位。完成最后一次〔第8次〕移位及相關(guān)操作后,下一個8位字節(jié)與存放器的當(dāng)前值異或,然后又同上面描述過的一樣重復(fù)8次。當(dāng)所有報文中子節(jié)都運算之后得到的存放器中的最終值,就是CRC值。圖4.3為CRC計算及校驗程序流程圖:圖4.3CRC計算及校驗流程圖4.4數(shù)據(jù)幀處理模塊數(shù)據(jù)幀處理是整個系統(tǒng)的核心局部,在現(xiàn)場總線技術(shù)中有著至關(guān)重要的作用。所以要好好讀懂理解Modbus的各個功能對應(yīng)的幀格式,理解其含義和本質(zhì),然后才能找到對應(yīng)信息去對其相應(yīng)的處理。根據(jù)ModBus協(xié)議,其ASCII模式數(shù)據(jù)幀格式如表4.4所示表4.4ASCII模式數(shù)據(jù)幀開始地址功能數(shù)據(jù)縱向冗余檢查結(jié)束1字符2字符2字符n字符2字符2字符編碼系統(tǒng):16進(jìn)制,ASCII字符0-9,A-F起始符位“:〞,終止符為0X0D,0X0A;在數(shù)據(jù)幀處理過程中,首先判斷數(shù)據(jù)幀是否完整,然后判斷是不是發(fā)給本從機(jī)。對完整數(shù)據(jù)幀進(jìn)行LRC校驗,LRC校驗正確的幀執(zhí)行下面的處理步驟,否那么丟棄該幀,并通知上位機(jī)重發(fā)數(shù)據(jù)。幀處理的前提除了LRC校驗正確,還需要確保地址位正確。在前提條件滿足的情況下才能提取功能位和數(shù)據(jù)位。根據(jù)功能位確保要執(zhí)行的功能。并執(zhí)行相關(guān)功能。在具體功能中提取實現(xiàn)功能所需的數(shù)據(jù)位。然后上位機(jī)對發(fā)回來的幀進(jìn)行處理,判斷對應(yīng)的處理是否正確。圖4.5為數(shù)據(jù)幀處理流程圖:圖4.5數(shù)據(jù)幀處理流程圖心得體會通過此次課程設(shè)計,我更進(jìn)一步地熟悉了單片機(jī)的結(jié)構(gòu)及掌握了單片機(jī)的工作原理和其具體的使用方法,了解了單片機(jī)程序設(shè)計與特點,同時也更加深入的掌握了52系列單片機(jī)的相關(guān)知識。并且我懂得了單片機(jī)程序設(shè)計的根本思路,增強(qiáng)了實踐動手能力。除此以外,我還深深地認(rèn)識到嚴(yán)謹(jǐn)、認(rèn)真的科學(xué)態(tài)度在科學(xué)實驗中發(fā)揮的重要作用。對于這次課設(shè),我是把它當(dāng)做一個工程來做,所以一開始就抱著很負(fù)責(zé)很嚴(yán)謹(jǐn)?shù)膽B(tài)度去面對。這也是我在大學(xué)以來第一次去用52單片機(jī)去調(diào)試一個關(guān)于串口的協(xié)議,也是算我親自寫的最長的程序了,所以很有感慨。將一個復(fù)雜的工程分成假設(shè)干個根本模塊進(jìn)行分步設(shè)計和測試,最后將這些模塊連接起來是本實驗根本的設(shè)計思想。從老師剛布置這個題目,感覺這個好難啊,從來沒有接觸過啊,到自己親手去查資料,去寫成程序,去一步一步解決問題,去實現(xiàn)根本功能,去實現(xiàn)附加功能,感覺自己成長了不少。一個東西剛開始接觸可能會覺的有難度,但是自己親手認(rèn)真去作,一個一個解決問題,到最后會發(fā)現(xiàn)其實這個大的難題也沒有什么。這次我學(xué)到的最多的不是單片機(jī)知識,不是Modbus協(xié)議,是這種過程,這種態(tài)度,這種方法,和這種感覺。同樣自己還有很多方面的缺乏有待于改善,所以,我要更加的努力去學(xué)習(xí),更加靜下心去完善自己。參考文獻(xiàn)[1]張友德,趙志英,涂時亮.單片微型機(jī)原理、應(yīng)用與實驗〔第五版〕.復(fù)旦大學(xué)出版社,2006.[2]朱大奇,鄔勤文,袁芳.單片機(jī)原理、應(yīng)用與實驗.科學(xué)出版社,2023.[3]李朝青.單片機(jī)原理及接口技術(shù).北京航空航天大學(xué)出版社,2005.[4]張鳳登.現(xiàn)場總線技術(shù)及應(yīng)用.科學(xué)出版社,2023.[5]何立民.單片機(jī)應(yīng)用技術(shù)選編[M].北京:北京航空大學(xué)出版社,1998.[6]常健生.檢測與轉(zhuǎn)換技術(shù)[M].北京:機(jī)械工業(yè)出版社,1997.[7]凌志浩.智能儀表原理與設(shè)計技術(shù)[M].上海:華東理工大學(xué)出版,2003.[8]譚浩強(qiáng).C程序設(shè)計〔第三版〕[M].北京:清華大學(xué)出版社,2005.[9]康華光.電子技術(shù)根底(模擬局部)[M].北京:高等教育出版社,1987.附錄一局部程序代碼#include<DSP320IF2407.h>#include"crc16.h" #defineLedPortP0 //段選段P0#defineLedCtrlP2 //位選段P2#defineHIG_BJ210typedefstruct{ unsignedcharstate; unsignedcharbuf[15]; unsignedcharRecCunt;unsignedcharSendCunt; unsignedcharTimerCunt;}RECBUF;RECBUFRecBuf;//unsignedcharMAddr;//Modbus節(jié)點地址sbitJDQ=P2^1;sbitSPEAK=P2^0;//數(shù)碼管段碼顯示:0~f,不亮unsignedcharcodeLED_Disp[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11,0x63,0x61,0x71,0x91};unsignedcharLED_value;//數(shù)碼管顯示值unsignedcharDisBuff[4];unsignedcharAD1_Res;//AD1轉(zhuǎn)換結(jié)果unsignedcharAD_buf[5];//AD1轉(zhuǎn)換結(jié)果緩沖區(qū)unsignedcharAD_value;//濾波后的AD值unsignedcharold_AD_value;//上次的AD值unsignedcharT_value;//信號測量值unsignedcharBJnum;//報警次數(shù)unsignedcharPC_Ctrl;unsignedcharJD_Ctrl;unsignedcharmaxADvalue;//最大AD值unsignedcharminADvalue;//最小AD值unsignedcharnowstatus;//當(dāng)前狀態(tài)unsignedcharoldstatus;//上次狀態(tài)unsignedinttimer05scount;unsignedchartimer05sok;unsignedinttimer005scount;unsignedchartimer005sok;unsignedinttimer001scount;unsignedchartimer001sok;/************************************功能:延時的函數(shù)************************************/voidmDelay(unsignedcharmtime){ for(;mtime>0;mtime--) { unsignedcharj=100; while(--j); } }voidcollect_ADvalue(){ if(ADC_CONTR&0x10) { ADC_CONTR=ADC_CONTR&0x80;//關(guān)AD啟動 mDelay(1); AD1_Res=ADC_RES;//讀通道1的AD值 mDelay(1); ADC_CONTR=0x81; mDelay(1); ADC_CONTR=ADC_CONTR|0x08;//開AD啟動 mDelay(1); }}/**********************************功能:均值濾波函數(shù)**********************************/voidlvbo(){ unsignedchari; unsignedintsum,temp; sum=0; AD_buf[4]=AD1_Res; for(i=0;i<5;i++) { AD_buf[i]=AD_buf[i+1]; } for(i=0;i<5;i++) sum+=AD_buf[i]; temp=sum/5; AD_value=(unsignedchar)temp; old_AD_value=AD_value; T_value=AD_value; }/**********************************功能:報警次數(shù)計算函數(shù)**********************************/voidbaojing(){ if((T_value<HIG_BJ)&&(oldstatus==0)) { BJnum++; nowstatus=1; } if((T_value>HIG_BJ)||(T_value==HIG_BJ)) nowstatus=0; if(T_value<HIG_BJ) { JDQ=0; SPEAK=0; JD_Ctrl=1; } if((T_value>HIG_BJ)&&(PC_Ctrl==0)) { JDQ=1; SPEAK=1; JD_Ctrl=0; } oldstatus=nowstatus;}功能:主函數(shù)*******************/voidmain(){unsignedcharj; j=0; EA=0; Timer_Init(); Serial_Init(); AD_Init(); EA=1; RecBuf.state=0x00; RecBuf.RecCunt=0; RecBuf.TimerCunt=0;MAddr=0x01; oldstatus=0; BJnum=0; PC_Ctrl=0; for(j=0;j<50;j++) { collect_ADvalue(); lvbo(); min_max_ADvalue(); } maxADvalue=0; minADvalue=255; while(1) { Modbus_Com(); Disp(); if(timer001sok==1) { collect_ADvalue(); timer001sok=0; } if(timer005sok==1) { lvbo(); min_max_ADvalue(); timer005sok=0; } if(timer05sok==1) { baojing(); LED_value=T_value; timer05sok=0; } } }/************************************功能:串口接收、發(fā)送完成中斷效勞函數(shù)************************************/vo

溫馨提示

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

評論

0/150

提交評論