版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Modbus通訊協(xié)議學(xué)習(xí)什么是Modbus?
Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。Modbus協(xié)議定義了一個控制器能認(rèn)識使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請求訪問其它設(shè)備的過程,如果回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。Modbus是一個請求/應(yīng)答協(xié)議Modbus以下是要分解的Modbus熱圖
Modbus消息幀
了解了它,會使你對串口通信有一個清晰的認(rèn)識!通用消息幀
ASCII消息幀
(在消息中的每個8Bit字節(jié)都作為兩個ASCII字符發(fā)送)十六進(jìn)制,ASCII字符0...9,A...F消息中的每個ASCII字符都是一個十六進(jìn)制字符組成每個字節(jié)的位1個起始位n個數(shù)據(jù)位,最小的有效位先發(fā)送1個奇偶校驗位,無校驗則無1個停止位(有校驗時),2個Bit(無校驗時)錯誤檢測域LRC(縱向冗長檢測)RTU消息幀8位二進(jìn)制,十六進(jìn)制數(shù)0...9,A...F消息中的每個8位域都是一個兩個十六進(jìn)制字符組成每個字節(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">十六進(jìn)制字符串</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)換為十六進(jì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">十六進(jìn)制字符串</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)換為符合本程序的十六進(jìn)制格式///</summary>///<paramname="var">123等。</param>///<returns>返回十六進(jìn)制字符串,如果是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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版圖書捐贈與接受合同示范文本3篇
- 2025版小學(xué)校園廣播系統(tǒng)及音響設(shè)備采購合同3篇
- 農(nóng)產(chǎn)品市場營銷策略與實施考核試卷
- 2025年分銷合同的市場需求
- 2025年借殼上市協(xié)議法律條款
- 2025年園林綠化設(shè)計施工居間合同
- 2025年室內(nèi)裝修工程勘察協(xié)議
- 2025年合作哲學(xué)書籍出版合同
- 2025年加盟美甲美睫連鎖店合同
- 二零二五年度木枋行業(yè)人才培訓(xùn)與職業(yè)發(fā)展合同4篇
- 圖像識別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 個體戶店鋪租賃合同
- 禮盒業(yè)務(wù)銷售方案
- 二十屆三中全會精神學(xué)習(xí)試題及答案(100題)
- 【奧運會獎牌榜預(yù)測建模實證探析12000字(論文)】
- 土力學(xué)與地基基礎(chǔ)(課件)
- 主要負(fù)責(zé)人重大隱患帶隊檢查表
- 魯濱遜漂流記人物形象分析
- 危險廢物貯存?zhèn)}庫建設(shè)標(biāo)準(zhǔn)
- 多層工業(yè)廠房主體結(jié)構(gòu)施工方案鋼筋混凝土結(jié)構(gòu)
- 救生艇筏、救助艇基本知識課件
評論
0/150
提交評論