




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于mb90f387s單片機的modbus通信系統(tǒng)的設計與實現(xiàn)
1采用通用的工業(yè)網(wǎng)絡控制協(xié)議工業(yè)控制已經(jīng)從限制開始,集中監(jiān)控和分散控制已經(jīng)開始?,F(xiàn)在,它進入了網(wǎng)絡。工業(yè)控制系統(tǒng)的連接為實現(xiàn)控制器的管理體系提供了極大的便利。MODBUS是一個開放式現(xiàn)場總線通信協(xié)議,是工業(yè)網(wǎng)絡控制協(xié)議中的一種,是應用于工業(yè)網(wǎng)絡控制上的一種通用語言,它現(xiàn)在已經(jīng)成為工業(yè)領域全球最流行協(xié)議之一。通過此協(xié)議,不同廠商生產(chǎn)的控制設備可以連成工業(yè)網(wǎng)絡,實現(xiàn)分散控制、集中監(jiān)控。作為對獲得廣泛應用的MODBUS協(xié)議的充分肯定,中國國家標準化管理委員會(SAC)已經(jīng)正式發(fā)布了3個標準作為中華人民共和國工業(yè)自動化標準。MB90F387S則是富士一款高性價比的16位單片機,它具有64k字節(jié)內部FlashROM,2k字節(jié)的內部RAM,具備包括休眠工作模式在內的五種工作模式,具有一路符合CAN2.0A、CAN2.0B協(xié)議的CAN控制器,具備一路串口以及八通道AD轉換接口。2基于主機的網(wǎng)絡msMODBUS定義的是一種設備控制器可以識別和使用的信息幀結構,獨立于物理層介質,可以承載于多種網(wǎng)絡類型,如傳統(tǒng)的RS-232、RS-422、RS-485和以太網(wǎng)等傳輸設備。但在長距離多點通信情況下常采用RS-485方式。采用屏蔽雙絞線的MODBUS系統(tǒng),通信距離可達1000米。MODBUS總線網(wǎng)絡中,信息交換是半雙工的,即同時只允許有一個主機,所有通信都由它發(fā)出。主機可單獨和從機通信,也能以廣播方式和所有從機通信。通信采用命令請求/應答的方式,主機發(fā)出請求,從機應答請求并送回數(shù)據(jù)或狀態(tài)信息,從機不能主動發(fā)送信息。MODBUS網(wǎng)絡可支持多達247個遠程從機,但實際所支持的從機數(shù)要由中繼器數(shù)量、所用通信設備等因素來決定??偩€網(wǎng)絡中的每個從機都必須分配給一個唯一的地址,主機通過地址來選通從機,只有符合地址要求的從機才會響應主機發(fā)出的命令;如果是以廣播方式查詢的,則從機不作任何回應。從機之間不能直接進行通信,必須經(jīng)由主機查詢然后轉發(fā)。典型的基于MODBUS通信的工業(yè)網(wǎng)絡控制系統(tǒng)如圖1所示。MODBUS采用主從方式定時收發(fā)數(shù)據(jù)(定時時間應保證每臺從機有合適的時間做出正確響應),當某從機斷開后(如故障或關機),主機可以診斷出來,而當故障修復后,網(wǎng)絡又可自動接通。MODBUS協(xié)議定義了兩種傳輸模式,即RTU模式和ASCII模式。每個MODBUS網(wǎng)絡通信系統(tǒng)只能使用其中的一種模式,不允許2種模式混用。此外,在同一個Modbus網(wǎng)絡上的所有設備都必須選擇相同的串口參數(shù)。用戶應根據(jù)實際需要選擇相應的模式以及相應的串口通信參數(shù)。2.1以行車編碼作為結束符典型ASCII模式消息幀結構如下所示:使用ASCII模式時,消息以冒號“:”作為起始字符(對應ASCII碼值為0x3A),以回車換行符作為結束符(對應ASCII碼值0x0D,0x0A)。其它域可使用的傳輸字符是’0’~9和’A’~’F’范圍內的SCII碼值。網(wǎng)絡上的設備不斷偵測“:”字符,當有一個冒號接收到時,每個設備都解碼下個域(設備地址)來判斷該消息是否發(fā)給自己的。消息中字符間發(fā)送的時間間隔最長不能超過1秒,否則接收設備將認為傳輸錯誤。2.2直接傳輸數(shù)字典型的RTU消息傳輸幀結構如下所示:使用RTU模式,消息發(fā)送至少要以3.5個字符時間的停頓間隔開始。整個消息幀必須作為一連續(xù)的流傳輸。網(wǎng)絡設備不斷偵測網(wǎng)絡總線,包括停頓間隔時間。傳輸?shù)牡谝粋€域是設備地址。當?shù)谝粋€域(設備地址)接收到,每個設備都進行解碼以判斷是否發(fā)往自己的。在最后一個傳輸字符之后,一個至少3.5個字符時間的停頓標定了消息的結束。一個新的消息可在此停頓后開始。2.3異常回應行為的檢測除有一個冒號字符的起始部分以及回車換行兩個字符的結束部分之外,ASCII模式的信息幀和RTU模式信息幀都包含如下四個功能部分:(1)設備地址:在一個總線上可以掛接多個設備。可能的設備地址是0...127(十進制)。地址0用作廣播地址,以使所有的從機都能認識。(2)功能代碼:當消息從主機發(fā)往從機時,功能代碼將告之從機需要執(zhí)行哪些行為;當從機回應時,它使用功能代碼來指示是正?;貞?無誤)還是有某種錯誤發(fā)生(稱作異?;貞?一般是將功能碼的最高位由0改為1)。功能代碼范圍是十進制的1~255。(3)數(shù)據(jù):從機用于執(zhí)行由功能代碼所定義的行為所需的信息。如不連續(xù)的寄存器地址,要處理項的數(shù)目,實際數(shù)據(jù)字節(jié)數(shù)等。如果沒有錯誤發(fā)生,從從機返回的數(shù)據(jù)包含請求的數(shù)據(jù)。如果有錯誤發(fā)生,此數(shù)據(jù)則包含一異常代碼,主機可以用來判斷采取什么行動。(4)校驗:MODBUS協(xié)議中除有可選的字符奇偶校驗外,ASCII模式采用LRC方法進行幀校驗,RTU模式采用CRC16進行幀校驗。無論是LRC校驗值,還是CRC16校驗值,均由發(fā)送方計算后加入到消息中,接收設備重新計算收到消息的校驗值,與接收到的校驗值比較,作異常與否的處理。LRC校驗值是一個8位二進制數(shù),并轉換為2個ASCII字符傳送。CRC16校驗值是通過對消息內容進行循環(huán)冗余檢測方法得出的。CRC16校驗產(chǎn)生兩個字節(jié)的校驗值(即16位二進制值)。計算CRC16時,起始位及停止位,如有奇偶校驗位的話也包括奇偶校驗位在內都不參與計算。計算方法參見下節(jié)介紹。2.4計算crc18碼計算LRC校驗值的步驟如下:1)生成不包含起始符和結束符在內的十六進制格式的信息幀,將信息幀按字節(jié)全部累加,放棄進位,從而得到一個字節(jié)的累加值。2)用0xFF減去上述的累加值,產(chǎn)生反碼。3)反碼加0x01產(chǎn)生二進制補碼,即LRC校驗值。傳送時,需將LRC校驗值轉換成兩個字節(jié)的ASCII碼值傳送,高字節(jié)在前低字節(jié)在后。計算CRC16碼的步驟如下:1)預置16位寄存器為十六進制值0xFFFF(即全為1),稱此寄存器為CRC16寄存器。2)把第一個8位數(shù)據(jù)與16位CRC16寄存器的低位相異或,結果放于CRC16寄存器。3)把寄存器的內容右移一位(朝低位),用0填補最高位,檢查最低位。4)如果最低位為0:重復第3步(再次移位);如果最低位為1:CRC16寄存器與多項式A001(1010000000000001)進行異或。5)重復步驟3和4,直到右移8次,這樣整個8位數(shù)據(jù)全部進行了處理。6)重復步驟2到5,進行下一個8位數(shù)據(jù)的處理。7)最后得到的CRC16寄存器值即為CRC16校驗碼。需注意的是,發(fā)送時CRC16校驗碼的低字節(jié)在前高字節(jié)在后,而信息幀中其他數(shù)據(jù)則是高字節(jié)在前,低字節(jié)在后。2.5轉變到任務2:c7crc18的轉變ASCII模式的命令可以與RTU模式的命令相互轉換。例如,一條RTU模式的命令串可以簡單的通過以下步驟轉化為ASCII模式的命令串進行傳輸:1)去掉RTU命令串中的CRC16校驗值,計算LRC校驗值,并添加到命令串的末尾。2)把上述轉換后的命令串中的每一個字節(jié)都轉化成相應的兩個ASCII碼字節(jié)。比如RTU模式命令串中的一個字節(jié)0x03,轉化成兩個ASCII碼字節(jié)則分別是0x30,0x33(0的ASCII碼值和3的ASCII碼值)。3)在轉換后的命令串的開頭加上起始符“:”的ASCII碼值0x3A。4)在轉換后的命令串的尾部再加上回車換行符的ASCII碼值0x0D,0x0A即可。同樣,一條ASCII模式,參照上述方法亦可轉換成RTU模式命令串進行傳輸。2.6ascii模式下的rtu模式傳輸數(shù)據(jù)對于ASCII模式來說,它擁有開始和結束符,因此在進行程序處理時比較方便,而且由于傳輸?shù)亩际强梢姷腁SCII字符,所以調試時也非常直觀,另外,它的LRC校驗相對也比較容易程序實現(xiàn)。在RTU模式中,1字節(jié)的信息作為一個8位字符被發(fā)送,而在ASCII模式中則作為兩個ASCII字符被發(fā)送。比如RTU傳輸一個十六進制數(shù)0xF9,ASCII就需要傳輸‘F’和‘9’的SCII碼(分別是0x46和0x39)共兩個字節(jié)的數(shù)據(jù),這樣它的傳輸?shù)男示捅容^低。因此,在同樣的波特率下,發(fā)送同樣數(shù)量的數(shù)據(jù)時,RTU模式的效率大約為ASCII模式的兩倍。此外,用RTU模式傳輸報文字符時必須以連續(xù)數(shù)據(jù)流的形式傳送,字符間的延時相對比較嚴格,而用ASCII模式時,字符之間可產(chǎn)生長達1秒的時間間隔。一般來說,數(shù)據(jù)量大時多采用RTU模式。目前,在工業(yè)網(wǎng)絡控制領域,RTU模式得到更多的關注。本文亦以RTU模式作為主要開發(fā)和介紹對象。3基于i2c總線技術的網(wǎng)絡監(jiān)控主機基于MB90F387S的MODBUS通信主機硬件原理框圖如圖2所示。利用高性價比的16位富士通單片機MB90F387S作為主處理器,采用4MHz有源外部晶振以及Max809T復位芯片構成的時鐘及復位電路,它外掛一片基于I2C總線協(xié)議的2k字節(jié)的EEPROM存儲芯片AT24C16。它包含一路CAN通信接口,方便實現(xiàn)與CAN網(wǎng)絡的銜接,如圖3所示。它包含一路RS485通信接口以及一路RS232通信接口(由切換開關實現(xiàn)RS485與RS232通信功能的切換),前者方便實現(xiàn)MODBUS組網(wǎng)通信,后者主要用來實現(xiàn)MB90F387S的串行程序燒錄以及與PC機的連接調試等。本主機還包含一128*64的LCD液晶中英文顯示模塊,以及由九個按鍵構成的鍵盤,共同實現(xiàn)參數(shù)的實時顯示、瀏覽與修改。光耦隔離RS485電路原理如圖4所示。系統(tǒng)采用屏蔽雙絞線來實現(xiàn)MODBUS信息幀的數(shù)據(jù)傳輸,組網(wǎng)方式同圖1所示。4通信測試流程程序采用模塊化的軟件設計方法,以便于調試與維護。本軟件主要由以下模塊組成:系統(tǒng)初始化模塊,液晶顯示模塊,按鍵定時掃描處理模塊,CAN通信模塊,MODBUS通信模塊。初始化模塊:包括MCU、液晶顯示模塊、按鍵處理模塊、CAN通信模塊、MODBUS通信模塊初始化信息;對于后四個模塊的初始化還可以通過按鍵操作修改并由LCD液晶顯示,方便保證在同一個MODBUS通信網(wǎng)絡上的所有設備的串口參數(shù)、通信模式保持一致。液晶顯示模塊:包含所有參數(shù)信息的中英文顯示,以提供友好的人機界面。按鍵處理模塊:它是信息瀏覽與修改的主要操作接口。CAN通信模塊:它可方便的實現(xiàn)與CAN網(wǎng)絡的連接,從而為具有CAN通信特征的設備接入MODBUS網(wǎng)絡提供了便利。MODBUS模塊:它是本設計的主要部分,通過該模塊實現(xiàn)了MODBUS網(wǎng)絡通信控制功能。MODBUS通信應答流程如下圖5、圖6所示。下面以功能碼3、6為例介紹通信應答:主機請求:[設備地址][功能碼3][起始寄存器地址高8位][低8位][讀取的寄存器數(shù)高8位][低8位][CRC校驗的低8位][CRC校驗的高8位]從機響應:[設備地址][功能碼3][返回的字節(jié)個數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n][CRC校驗的低8位][CRC校驗的高8位]主機請求:[設備地址][功能碼6][需下置的寄存器地址高8位][低8位][下置的數(shù)據(jù)高8位][低8位][CRC校驗的低8位][CRC校驗的高8位]從機響應:[設備地址][功能碼6][需下置的寄存器地址高8位][低8位][下置的數(shù)據(jù)高8位][低8位][CRC校驗的低8位][CRC校驗的高8位]◆設備地址:在一個總線上可以掛接多個從機,設備地址表示想和哪一個設備通訊?!艄δ艽a:本文為3或6。異常響應時,地址不變,功能碼最高位置1(如0x83、0x86),數(shù)據(jù)是一個字節(jié)的異常碼,最后是兩字節(jié)的CRC16校驗值?!羝鹗嫉刂犯?位、低8位:表示想讀取的寄存器的起始地址?!艏拇嫫鲾?shù)高8位、低8位:表示從起始地址開始讀多少個寄存器?!舴祷氐淖止?jié)個數(shù):表示返回數(shù)據(jù)的字節(jié)個數(shù),也就是數(shù)據(jù)1,2...n中的n的值?!魯?shù)據(jù)1...n:其中[數(shù)據(jù)1][數(shù)據(jù)2]分別是第1個寄存器的高8位和低8位,[數(shù)據(jù)3][數(shù)據(jù)4]是第2個寄存器的高8位和低8位,以此類推?!鬋RC校驗值,參考2.4節(jié)。除廣播信息外,主機對于自己發(fā)給從機的每個查詢都期望得到上述的正常響應,當從機不能完成主機所發(fā)送的請求時,期望從機會發(fā)送一個異常響應,主機根據(jù)異常情況做相應處理。對于異常響應格式,下面以RTU模式下異常響應為例介紹:◆設備地址和上面的相同?!繇憫a:為原功能代碼的最高位置1:如讀保持寄存器的功能代碼0x03,則異常響應時,返回的響應代碼為0x83?!舢惓4a:表明發(fā)生的異常情況。標準異常代碼1~8(可根據(jù)需要選擇并定義其含義)。◆CRC校驗同上。計算上述信息幀的LRC校驗值(不含CRC16校驗值),并轉換為相應的ASCII信息幀,然后,添加起始符和結束符即為ASCII模式下的異常響應幀。下面是RTU模式下讀取起始地址為0x006B的兩個寄存器的數(shù)據(jù)內容的通信數(shù)據(jù)流格式:主機請求:[6B][CRC低][CRC高]從機正常響應:[2B][CRC低][CRC高]從機異常響應:[CRC低][CRC高]實驗測試中,搭建如圖1所示的MODBUS通信網(wǎng)絡系統(tǒng),以本設計為MODBUS通信
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三方協(xié)議合同編號怎么弄
- 合格協(xié)議與合同協(xié)議
- 合同怎么代簽協(xié)議
- 個人供貨合同協(xié)議
- 技術合同協(xié)議書樣本圖
- 無合同框架協(xié)議
- 終端維修合同協(xié)議
- 減肥合同退款協(xié)議
- 合同保密協(xié)議內容
- 沒有物業(yè)合同協(xié)議
- 項目一任務三學包粽子課件浙教版初中勞動技術七年級下冊
- 科粵版九上化學-2.2構成物質的微粒(一)-分子-教案設計
- 2024年商鋪租賃終止合同標準范文(二篇)
- 醫(yī)院年度文化建設工作方案范文
- 中國鹽業(yè)集團有限公司招聘筆試題庫2024
- 吊裝式風機安裝作業(yè)指導書
- 高一數(shù)學分層訓練AB卷(人教A版2019必修第二冊)第九章統(tǒng)計(知識通關詳解)【單元測試卷】(原卷版+解析)
- 第九屆全國大學生測井技能大賽備賽試題庫-上(單選題)
- 《全面風險管理報告》模本-模范本
- 廣東省惠城區(qū)2024年中考語文第一次模擬考試試卷(附參考答案)
- 【我國刑民交叉案件的處理模式的困境及建議11000字(論文)】
評論
0/150
提交評論