




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Modbus通訊協(xié)議學(xué)習(xí)什么是Modbus?
Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。Modbus協(xié)議定義了一個控制器能認識使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進行通信的。它描述了一控制器請求訪問其它設(shè)備的過程,如果回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。Modbus是一個請求/應(yīng)答協(xié)議Modbus以下是要分解的Modbus熱圖
Modbus消息幀
了解了它,會使你對串口通信有一個清晰的認識!通用消息幀
ASCII消息幀
(在消息中的每個8Bit字節(jié)都作為兩個ASCII字符發(fā)送)十六進制,ASCII字符0...9,A...F消息中的每個ASCII字符都是一個十六進制字符組成每個字節(jié)的位1個起始位n個數(shù)據(jù)位,最小的有效位先發(fā)送1個奇偶校驗位,無校驗則無1個停止位(有校驗時),2個Bit(無校驗時)錯誤檢測域LRC(縱向冗長檢測)RTU消息幀8位二進制,十六進制數(shù)0...9,A...F消息中的每個8位域都是一個兩個十六進制字符組成每個字節(jié)的位1個起始位8個數(shù)據(jù)位,最小的有效位先發(fā)送1個奇偶校驗位,無校驗則無1個停止位(有校驗時),2個Bit(無校驗時)錯誤檢測域CRC(循環(huán)冗長檢測)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>///例如把如下字符串轉(zhuǎn)換成字節(jié)數(shù)組///AAAAAAAA0A00680006030454212822E5F316BBBBBBBB轉(zhuǎn)換為字節(jié)數(shù)組///</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>///將字節(jié)數(shù)據(jù)轉(zhuǎn)換為十六進制字符串,中間用“”分割如:AAAAAAAA0A00680006030454212822E5F316BBBBBBBB///</summary>///<paramname="vars">要轉(zhuǎn)換的字節(jié)數(shù)組</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轉(zhuǎn)換為字節(jié)數(shù)組///</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>///轉(zhuǎn)換為符合本程序的十六進制格式///</summary>///<paramname="var">123等。</param>///<returns>返回十六進制字符串,如果是1-9的話,前面帶零</returns>///<example>例如:5="05"12="0C"無論何時,都是兩位數(shù)。</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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公交安全技能培訓(xùn)課件
- 2026屆山東省淄博市部分學(xué)?;瘜W(xué)高三第一學(xué)期期末聯(lián)考試題含解析
- 江蘇省南京江浦高級中學(xué)2026屆化學(xué)高二上期中考試試題含解析
- 血站服務(wù)禮儀培訓(xùn)課件
- 教育信息化基礎(chǔ)設(shè)施在在線教育中的應(yīng)用與發(fā)展報告
- 山西省運城市空港新區(qū)一中2026屆化學(xué)高三第一學(xué)期期中復(fù)習(xí)檢測試題含解析
- 2025招聘審計試題大全及答案
- 食品安全新策略-2025年農(nóng)產(chǎn)品追溯體系構(gòu)建與農(nóng)產(chǎn)品質(zhì)量追溯體系建設(shè)報告
- 2026屆湖北省恩施州化學(xué)高二上期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含答案
- 2025央企審計筆試題目及答案
- 石油監(jiān)督考試試題及答案
- 2025年花卉栽培技術(shù)人員花卉栽培技術(shù)知識考核試卷及答案
- 2025年高一物理下學(xué)期期末考試試題及答案
- 學(xué)堂在線 高技術(shù)與現(xiàn)代局部戰(zhàn)爭 章節(jié)測試答案
- 2025年醫(yī)療器械倉庫管理培訓(xùn)試題及答案
- 助焊劑存儲管理辦法
- 測井工崗位實習(xí)報告
- 2025至2030中國CAN收發(fā)器行業(yè)項目調(diào)研及市場前景預(yù)測評估報告
- 陶瓷考試試題及答案高中
- 乙型肝炎防治知識教學(xué)課件
- 集團公司項目管理辦法
評論
0/150
提交評論