国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

Modbus協議在多機系統開發中的應用

發布時間:2010-8-17 16:34    發布者:lavida
關鍵詞: MODBUS , 多機系統
1 引言  

在自控裝置和電力系統微機綜合保護以及其它工業自動化控制領域,微控制器的應用越來越 廣泛,其裝置的復雜性也越來越高。為了解決其開發對象實時多任務性的要求,單CPU、單個開發 的模式將被多個、多類型CPU 和多人協同開發的模式所代替,在這新的開發模式中,面臨一個新 問題——在實施信息交互的過程中如何將實現CPU 之間信息交互的軟硬件標準化,這是關系到 該模式能否成功實施的關鍵。在眾多的通信方式中,基于UART 的RS-485 串行通信模式以其連 線簡捷、高可靠性以及可帶動多CPU 的能力而被廣泛采用。在軟件通信協議的選擇上,Modbus 協議由于其通用、成熟的調試軟件,為用戶使用提供了諸多優勢。因此,在開發新型電動機綜合 保護裝置的過程中,采用RS-485 串行通信方式和Modbus 通信協議,實現了多CPU 之間的數據和 控制命令的信息交互。為了增強串行通信的高效、協調性,筆者在通信機制的軟硬件結構上采取 了很多措施,并取得了很好的效果。在調試系統通信階段,使用了各CPU 模塊先與Modbus 標準 測試軟件通信,之后再互相聯調的方法,大大提高了協同開發的效率。實踐證明,該設計思想簡化 了系統的結構,大大提高了裝置的運行效率和可靠性。  

2 電動機綜合保護裝置的特點  

電動機綜合保護裝置除綜合保護功能以外,兼有測量、遠動和通信的功能;大屏幕的漢字液 晶顯示,可以實現友好的人機界面;利用CAN 總線,與監控主機進行通信,從而構成分級分散式的 變電站綜合自動化系統的子系統。由于裝置需要實現多任務,為了優化系統功能, 采用了多CPU 的系統結構設計方法。其中一個CPU 負責定時采樣脈沖發送;主CPU 模塊負責數據處理、電量計算、故障判斷和開關操作;而板模塊上CPU 負責人機交互,并實現與主保護模塊和監控主機的通 信任務。各個CPU 模塊有明確的任務分工,研制時也容易實現多人協同開發。在整個構成中,串 行通信溝通了主CPU 和面板CPU,使人機交互成為可能,因而有著重要的地位。建立合理的通信 機制則是串行通信部分的核心的所在,它決定著通信的協調性和系統開發后期調試的效率。  

3 通信機制介紹  

3.1 通信機制硬件設計  

本系統通信機制的提出以高效、可靠為目的。RS-485 為半雙工結構,現場中比全雙工往往更接 近于實用,在此采用只有2 條信號線的簡易型連接。系統接口電路圖由圖1 所示,主保護模塊上 的8051 單片機輸出的TTL 邏輯電平通過光電隔離后,由MAX485 芯片轉換為RS-495 電平,再由面 板模塊上的MAX485 芯片轉換為TTL 邏輯電平,由8031 單片機讀取。在8051 單片機一側,使用并 行輸入輸出口2 的一位P2.7 對MAX 輸入使能端RE、輸出使能端DE 進行控制。由圖1 可知,當P2.7 輸出高電平時,RE 使能,單片機一側接收數據;當P2.7 輸出低電平時,DE 使能,單片機一側發送數 據。這樣,避免了盲目發送造成的數據疊加丟失現象,通信質量高,通信速度也能得到保證。  


  
3.2 通信協議  

為了保證保護裝置中兩個模塊之間能夠正確地傳遞數據,必須有一套關于信息傳輸的模 式、數據格式和內容等的規定,即規約或通信協議。由于沒有現成的較成熟的調試軟件,主 CPU 模塊基本是黑匣子,系統聯調時的困難較多且難以克服。因此,采用了當前流行的 Modbus 通信協議,并結合本裝置的特點加以簡化,從而實現了模塊間的通信,事實證明效果 很好。Modbus 的通信方式為主從方式,主方首先向從方發送通信請求指令,從方根據請求 指令中的功能碼向主方發回數據。每個從方都有自己獨立的地址,主方所發的請求幀和從方 所發的應答幀都是以從方地址開頭的。從方只讀發給自己的指令,對以其他從方地址開頭的 報文不作應答,它是通過8051 的串行口工作方式2 或方式3 來實現的,這種一問一答的通 信模式,大大提高了通信的正確率,本文裝置中采用了Modbus 的RTU 傳送方式。  

4 提高通信可靠性的措施  

Modbus 報文末的兩個字節為校驗字節,RTU 方式通信采用CRC-16 位循環碼冗余校驗, 它的編譯碼設備比較簡單,誤判概率很低,可通過計算法和編程法實現,幾種方法如下:  

4.1 基本算法(人工筆算)  

以CRC16-CCITT 為例進行說明,CRC 校驗碼為16 位,生成多項式17 位。假如數據流為 4 字節:BYTE、BYTE、BYTE、BYTE[0];  

數據流左移16 位,相當于擴大256×256 倍,再除以生成多項式0x11021,進行不借位的除 法運算(相當于按位異或),所得的余數就是CRC 校驗碼。 發送時的數據流為6 字節:BYTE、BYTE、BYTE、BYTE[0]、CRC、CRC[0]。  

4.2 計算機算法1(比特型算法)  

1)將擴大后的數據流(6 字節)高16 位(BYTE、BYTE)放入長度為16 的寄存器;  

2)如果寄存器的首位為1,將寄存器左移1 位(寄存器的最低位從下一個字節獲得),再與生成多項式的簡記式異或;否則僅將寄存器左移1 位(寄存器的最低位從下一個字節獲得);  

3)重復第2 步,直到數據流(6 字節)全部移入寄存器;  

4)寄存器中的值則為CRC 校驗碼CRC、CRC[0]。  

4.3 計算機算法2(字節型算法)(256^n 表示256 的n 次方)  

把按字節排列的數據流表示成數學多項式,設數據流為BYTE[n]BYTE[n-1]BYTE[n-2] ...BYTEBYTE[0],表示成數學表達式  

BYTE[n]×256^n+BYTE[n-1]×256^(n-1)+ ...+BYTE*256+BYTE[0],在這里+表示為異或運算。設生成多項式為G17(17bit),則CRC 碼為CRC16。  

CRC16=(BYTE[n]×256^n+BYTE[n-1]×256^(n-1)+...+BYTE×256+BYTE[0])×25  

6^2/G17,即數據流左移16 位,再除以生成多項式G17。  

經過推導可知,BYTE[n-1]字節的CRC 校驗碼等于上一字節CRC 校驗碼Y[n]的高8位(YH8[n])與本字節BYTE[n-1]異或結果。  

字節型算法如下:  

1)CRC 寄存器組初始化為全"0"(0x0000)。  

2)CRC 寄存器組向左移8 位,并保存到CRC 寄存器組。  

3)原CRC 寄存器組高8 位(右移8 位)與數據字節進行異或運算,得出一個指向值表的索引。  

4)索引所指的表值與CRC 寄存器組做異或運算。  

5)數據指針加1,如果數據沒有全部處理完,則重復步驟2)。  

6)得出CRC。  

5 提高通信效率的措施  

5.1 將通信的接收和發送兩個任務獨立  

8051 單片機可以使用中斷的方法通過串行口發送和接收數據,串行口控制器SCON 可 以初始化、可以位尋址,當串行口發生中斷請求時,SCON 低兩位能鎖存發送中斷和接收中 斷,當CPU 向串行口的發送數據緩沖器SUBF 寫入一個數據或字符時(指令MOV SUBF, A),發送器就開始發送,當發送完一幀數據后,由硬件置“1”TI 標志,表示串行口正在向 CPU 請求中斷,請求發送下一幀數據。同樣,若串行口接受器允許接收,當接收器接收到 一幀數據,置“1”RI 標志,表示串行口正在向CPU 請求中斷,請求CPU 到接收數據緩沖器 讀取數據。  

5.2 縮短中斷時間  

由于設計軟件結構時使用了多個中斷,為了保證程序的可靠運行,減少不同任務相互沖 突的機率,在編制軟件時盡可能簡練各種中斷的任務,縮短中斷執行時間。在通信中斷子程序 中,進入中斷后執行必要的任務,如:清串行口控制寄存器中相應的狀態位,將剛接收到的字 符或需要發送的字符從緩沖區內讀出或寫入緩沖區,已接收或發送字符數增1 等,之后便立 即退出中斷。其它任務如判斷幀的有效性、對接收幀命令(遙測、遙控命令)的應答,準備 發送幀等,都放在主程序中完成。  

5.3 有效地判斷幀結束,防止通信停滯  

利用單獨的軟件定時器,來判斷一幀接收報文結束,可以防止若報文接收不完整,該幀通 信任務無法結束而影響下一幀的接收。由于一幀報文中字節與字節之間的時間間隔和幀與幀 之間的時間間隔相比要小得多,因此每當接收一個新字節,就啟動軟件定時器開始計時,定時 器的時間設定為幀與幀的最小時間間隔。波特率不同,該時間間隔也不同。若不到預定的時間內又接收到下一個字節,則說明一幀報文未結束,定時器重新計時;若定時器順利計數到預 定時間,就會觸發相應的中斷號,在該定時器中斷子程序中設定幀結束標志字節,表明一幀報 文接收完畢。當主程序內檢測到一幀報文接收完畢后,會通過核查從方地址及循環冗余校驗 字節是否正確來判斷該幀的有效性。若確定接收到的是一幀發送給已方的正確報文,則會根 據報文內的功能碼對該幀命令進行相應的處理,并準備發送幀,當從方接收報文不正確時發 回出錯幀,如果從方收到的報文校驗不正確,可采取不作應答的方式,主方若在規定時間內 未收到從方的應答報文時,將重發請求報文;若多次未收到從方應答報文,則報通訊故障。  

5.4 通信速率的確定  

由于所用的裝置都在同一機箱內,模塊與模塊之間的間距很短,而Modbus 是基于RS485 的長距離通信,可以不考慮距離對通信波特率的影響,并且由于采用主從式通信模式,不會出 現線路堵塞現象。因此從通信效率來看,只要不超過模塊所使用芯片對最高波特率的限制, 則設定的波特率越高,信息交互越快,通信效率也越高,由于設定通信雙方波特率完全一致, 可以使接收端對每一個數據位的采樣都發生在位周期的中點,從而實現可靠通信。  

5.5 合理的調試方法  

調試時先將各個CPU 模塊分別通RS485/RS232 數據轉化模塊與微機進行通信測試,成 功后再進行模塊間聯調,大大提高了聯調的效率。在調試各模塊與微機通信的過程中,微機 使用Modbus 調試軟件,模仿主方的通信過程,主動向從方索要信息,整個接收、發送過程 都是透明的、清晰的,從而使得模塊中存在的問題得以及時解決;聯調時,利用總線監控軟 件觀察雙方的數據,及時地發現問題和解決問題。  

6 本文的創新點  

第一,本文在保護裝置中的采用Modbus 這種通用的工業標準,所需的工具軟件可以直 接從相關網站獲得,不需知識產權方面的花費;第二,保護裝置實施多任務化,利用Modbus 協議創建了CPU 模塊間合理的聯調機制,大大提高了系統協同開發的效率。
本文地址:http://m.qingdxww.cn/thread-21994-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 四虎永久免费影院| 忘忧草秋观看未满十八| 极品少妇高潮XXXXX| 香蕉鱼视频观看在线视频下载| 亚洲一级黄色片| 欧美在线看片a免费观看| 一二三四视频免费观看影视| 亚洲第一区精品观看| 岛国大片在线观看免费版| 十分钟免费观看大全视频| 日产精品一区二区免费| 四虎影院国产精品| 亚洲啊v天堂| 国产精品久AAAAA片| 三级黄色在线免费观看| 一级片a| 日本一区二区三区免费高清在线| 亚洲精品一级毛片| 伊人99| 老人FREE VIODES老少配| 欧美一区二区三区大片| 性激烈的欧美三级高清视频| 天天干天天要| 亚洲天堂va| 国产电影三级午夜a影院| 亚洲国产高清在线| 亚洲不卡视频| 在线免费观看韩国a视频| 玉蒲团之淫行天下| 麻豆精品传媒一二三区| 在线高清无码欧美久章草| 一级a性色生活片毛片| 亚洲国产一区二区在线| 中文成人在线视频| 久久人妻少妇嫩草AV无码| 色婷婷久久| 欧美综合图区亚洲综合图区| 爽好舒服使劲添高h视频| 中国老妇xxxx性开放| 漂亮妈妈中文字幕版| 亚洲高清heyzo加勒比|