




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Modbus通訊協議學習什么是Modbus?
Modbus協議是應用于電子控制器上的一種通用語言。通過此協議,控制器相互之間、控制器經由網絡(例如以太網)和其它設備之間可以通信。Modbus協議定義了一個控制器能認識使用的消息結構,而不管它們是經過何種網絡進行通信的。它描述了一控制器請求訪問其它設備的過程,如果回應來自其它設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內容的公共格式。Modbus是一個請求/應答協議Modbus以下是要分解的Modbus熱圖
Modbus消息幀
了解了它,會使你對串口通信有一個清晰的認識!通用消息幀
ASCII消息幀
(在消息中的每個8Bit字節都作為兩個ASCII字符發送)十六進制,ASCII字符0...9,A...F消息中的每個ASCII字符都是一個十六進制字符組成每個字節的位1個起始位n個數據位,最小的有效位先發送1個奇偶校驗位,無校驗則無1個停止位(有校驗時),2個Bit(無校驗時)錯誤檢測域LRC(縱向冗長檢測)RTU消息幀8位二進制,十六進制數0...9,A...F消息中的每個8位域都是一個兩個十六進制字符組成每個字節的位1個起始位8個數據位,最小的有效位先發送1個奇偶校驗位,無校驗則無1個停止位(有校驗時),2個Bit(無校驗時)錯誤檢測域CRC(循環冗長檢測)CRC校驗(/view/1664507.htm)publicstaticstringCRCCheck(stringval){val=val.TrimEnd('');string[]spva=val.Split('');byte[]bufData=newbyte[spva.Length+2];bufData=ToBytesCRC(val);ushortCRC=0xffff;ushortPOLYNOMIAL=0xa001;for(inti=0;i<bufData.Length-2;i++){CRC^=bufData[i];for(intj=0;j<8;j++){if((CRC&0x0001)!=0){CRC>>=1;CRC^=POLYNOMIAL;}else{CRC>>=1;}}}returnMaticsoft.DBUtility.HLConvert.ToHex(System.BitConverter.GetBytes(CRC));}///<summary>///例如把如下字符串轉換成字節數組///AAAAAAAA0A00680006030454212822E5F316BBBBBBBB轉換為字節數組///</summary>///<paramname="hex">十六進制字符串</param>///<returns></returns>publicstaticbyte[]ToBytesCRC(stringhex){string[]temp=hex.Split('');byte[]b=newbyte[temp.Length+2];for(inti=0;i<temp.Length;i++){b[i]=Convert.ToByte(temp[i],16);}returnb;}///<summary>///將字節數據轉換為十六進制字符串,中間用“”分割如:AAAAAAAA0A00680006030454212822E5F316BBBBBBBB///</summary>///<paramname="vars">要轉換的字節數組</param>///<returns></returns>publicstaticStringToHex(byte[]vars){returnBitConverter.ToString(vars).Replace('-','').Trim();}CS校驗(累加和)publicstaticstringCSCheck(stringstr){if(str.Length==0)return"";elsestr=str.Trim();byte[]sss=ToBytes(str);intn=0;for(inti=0;i<sss.Length;i++){n+=sss[i];}returnToHex(n);}///<summary>///ABCD123B轉換為字節數組///</summary>///<paramname="hex">十六進制字符串</param>///<returns></returns>publicstaticbyte[]ToBytes(stringhex){string[]temp=hex.Split('');byte[]b=newbyte[temp.Length];for(inti=0;i<temp.Length;i++){if(temp[i].Length>0)b[i]=Convert.ToByte(temp[i],16);}returnb;}///<summary>///轉換為符合本程序的十六進制格式///</summary>///<paramname="var">123等。</param>///<returns>返回十六進制字符串,如果是1-9的話,前面帶零</returns>///<example>例如:5="05"12="0C"無論何時,都是兩位數。</example>publicstaticstringToHex(intvar){intcs=var;stringtmp="";if(cs==0){tmp="00";}while(cs>0){intys;cs=Math.DivRem(cs,256,outys);tmp=tmp.Insert(0,string.Format("{0}",Right("00"+Convert.ToString(ys,16),2).ToUpper()));}returntmp.Trim();}publicstaticstringRight(stringstr,intLength){if((Length<=0)||(str==null)){return"";}intlength=str.Length;if(Length>=length){returnstr;}returnstr.Substring(length-Length,Length);}LRC校驗(LRC錯誤校驗用于ASCII模式)///<summary>///取模FF(255)///取反+1///</summary>///<paramname="writeUncheck"></param>///<returns></returns>publicstaticstringLRCheck(stringwriteUncheck){char[]hexArray=newchar[writeUncheck.Length];hexArray=writeUncheck.ToCharArray();intdecNum=0,decNumMSB=0,decNumLSB=0;intdecByte,decByteTotal=0;boolmsb=true;for(intt=0;t<=hexArray.GetUpperBound(0);t++){if((hexArray[t]>=48)&&(hexArray[t]<=57))decNum=(hexArray[t]-48);elseif((hexArray[t]>=65)&(hexArray[t]<=70))decNum=10+(hexArray[t]-65);if(msb){decNumMSB=decNum*16;msb=false;}else{decNumLSB=decNum;msb=true;}if(msb){decByte=decNumMSB+decNumLSB;decByteTotal+=decByte;}}decByteTotal=(255-decByteTotal)+1;decByteTotal=decByteTotal&255;inta,b=0;stringhexByte="",hexTotal="";doublei;for(i=0;decByteTotal>0;i++){b=Convert.ToInt32(System.Math.Pow(16.0,i));a=decByteTotal%16;decByteTotal/=16;if(a<=9)hexByte=a.ToString();else{switch(a){case10:hexByte="A";break;case11:hexByte="B";break;case12:hexByte="C";break;case13:hexByte="D";break;case14:hexByte="E";break;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫院培訓課件:評估SOAP和目標制定SMART
- 青年航校培養協議書
- 倒閉廠設備轉讓協議書
- 食堂水果采購協議書
- 酒店股東住房協議書
- 高考師生努力協議書
- 道路花磚維修協議書
- 高速公路清掃協議書
- 連云港市投資協議書
- WPS便簽用戶協議書
- 當前我國社會民生熱點問題解析課件
- 城管協管筆試題及答案
- 遼寧省名校聯盟2025年高三5月份聯合考試語文及答案
- 全國助殘日 課件高中下學期主題班會
- 2025年浙江省杭州市錢塘區中考二模英語試題(含筆試答案無聽力答案、原文及音頻)
- 2025年考研政治真題及答案
- 動力電池熱失控蔓延機理及其控制策略研究
- 2024年江蘇鎮江中考地理試卷真題及答案詳解(精校打?。?/a>
- 輕型顱腦閉合性損傷護理查房
- 體育場館停車場車輛管理規范范文
- 文明檢修培訓課件
評論
0/150
提交評論