91黄动漫 I 欧美 日韩 国产 成人 在线 I a级成人毛片 I 农村黄色片 I 男生捅女生的肌肌 I 精品99一区二区三区 I 妃光莉av I 日日夜夜操操 I 性中国古装videossex I 久久不卡av I 美女高潮动态图 I 极品美女开粉嫩精品 I 牛牛精品一区二区 I 91精品福利视频 I 成人刺激视频 I 91国内精品视频 I 中国一级特黄毛片大片 I 校长狠狠挺进校花体内小说 I 欧美激情黄色片 I 欧美久久久一区 I 爱豆国产剧免费观看大全剧苏畅 I 麻豆国产人妻欲求不满谁演的 I 亚洲一区二区在线免费观看视频 I 国产超碰av人人做人人爽 I 精品国产第一国产综合精品 I 久久免费看av I 欧美一区二区三区白人 I 国产精品夫妻激情 I 校花被肉干高h潮不断 I 欧美最猛黑人xxxx黑人表情 I 国产欧美日韩一区二区搜索 I 极品女神露脸呻吟啪啪 I 人人天天久久 I 亚洲动漫在线 I 日本91福利区 I 五月天 桃色 开心 I av在线免费观看国产 I 男人添女人的免费视频 I 夜夜穞天天穞狠狠穞

13660355656
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 84 個(gè)
工控威望: 119 點(diǎn)
下載積分: 10185 分
在線時(shí)間: 134(小時(shí))
注冊(cè)時(shí)間: 2021-03-19
最后登錄: 2026-02-27
查看13660355656的 主題 / 回貼
樓主  發(fā)表于: 2021-05-12 14:17
1.    Modbus是一種單主站的主/從通信模式。Modbus網(wǎng)絡(luò)上只能有一個(gè)主站存在,主站在 Modbus網(wǎng)絡(luò)上沒有地址,從站的地址范圍為 0 - 247,其中 0 為廣播地址,從站的實(shí)際地址范圍為 1 - 247。 Modbus通信標(biāo)準(zhǔn)協(xié)議可以通過各種傳輸方式傳播,如 RS232C、RS485、光纖、無線電等。
2.    Modbus具有兩種串行傳輸模式,ASCII 和 RTU。它們定義了數(shù)據(jù)如何打包、解碼的不同方式。支持 Modbus 協(xié)議的設(shè)備一般都支持 RTU 格式。通信雙方必須同時(shí)支持上述模式中的一種。
    
3.    上面說的是官話,下面是我說的大白話:    
4.    modbus協(xié)議也只是通訊協(xié)議的一種,沒什么神秘的,通訊協(xié)議包括兩個(gè)方面:    
5.    一、通訊格式,即: 波特率,檢驗(yàn)方式,數(shù)據(jù)位,停止位
6.    波特率:一秒鐘傳送的位數(shù),也就是通訊速率;比如波特率為9600,即,一秒種可以傳送9600個(gè)位數(shù),位的概念看下面的數(shù)據(jù)位介紹
7.    校驗(yàn)方式:奇校驗(yàn)或偶校驗(yàn)或無校驗(yàn),目的是判斷傳輸過程中是否有錯(cuò)誤!它只是用于判斷一個(gè)字符(比如八個(gè)位或是七個(gè)位組成一個(gè)字符)傳輸是否有錯(cuò)誤。但是它并不能完全能夠判斷傳輸是否有錯(cuò)。比如偶校驗(yàn),在檢驗(yàn)送八個(gè)“11111111”時(shí),如果到達(dá)接收方,由于干擾而變成了“10111101”,“1”的個(gè)數(shù)仍然是偶數(shù),接收方就判斷不出來傳送的字符已經(jīng)錯(cuò)誤!
8.    數(shù)據(jù)位:傳輸一個(gè)字符由幾個(gè)位組成,計(jì)算機(jī)的基本單位就是“位”,其值非“0”即“1”,又如傳送A,定義通訊格式時(shí),是定義的八位,其傳送的數(shù)據(jù)可能就是:00001010;
9.    停止位:傳輸一個(gè)字符有幾個(gè)停止位,用于判斷某個(gè)字符是否傳輸結(jié)束,以便開始接收下一個(gè)字符。    
10.    通訊格式的作用是規(guī)范發(fā)送方與接收方的傳輸格式,如果雙方通訊格式不一樣,接收方就不可能正確判斷發(fā)送方發(fā)來的東西是什么。
11.    比如,接收方設(shè)置的波特率是10(一秒只接收十個(gè)位)位,而發(fā)送方的波特率是20(一秒發(fā)送二十個(gè)位),那么發(fā)送方一秒種發(fā)送的20個(gè)字符,接收方就不可能都收到,只能接收到10個(gè),造成通訊出錯(cuò)。
12.    校驗(yàn)方式:雙方校驗(yàn)方式不一樣,就沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)認(rèn)定傳輸是否有錯(cuò)誤。
13.    數(shù)據(jù)位,接收方設(shè)定的七位,即它接收到七個(gè)位就認(rèn)為是一個(gè)字符,而實(shí)際發(fā)送方設(shè)定的是八位,那么接收方認(rèn)定的字符與發(fā)送方發(fā)送的字符就不一樣了。
14.    ***參與通訊的雙方設(shè)定的通訊格式必須一樣的!!
15.    二、通訊規(guī)范(這個(gè)詞是我自己定義的,不能引用,會(huì)被人笑話的)
16.    通訊格式只是保證接收方正確地接收到發(fā)送方傳輸過來的每一個(gè)字符(實(shí)際如上所述,檢驗(yàn)方式并不能保證完全正確,還要靠通訊規(guī)范中的校驗(yàn)和計(jì)算來驗(yàn)證整體正確性,下面會(huì)繼續(xù)說明),那么接收到的整串字符做什么用呢,就要靠通訊規(guī)范了
17.    MODBUS的通訊規(guī)范很簡單!
18.    先說ASCII方式:
19.    ASCII方式發(fā)送時(shí)的規(guī)范定義如下:
20.    起始符 +  設(shè)備地址   +  功能代碼   +   數(shù)據(jù)  +   校驗(yàn)   +  結(jié)束符    
     1\起始符:    接收到一串字符,總要知道這串字符從哪個(gè)地方開始吧,這就是起始符的作用,接收方不管以前收到多少個(gè)字符。當(dāng)接收到起始符時(shí),以前的字符就不再理它了,從起始符開始分析以后的字符!  MODBUS的ASCII方式起始符是一個(gè)冒號(hào)  “:”
    2\設(shè)備地址:
    前面說過,MODBUS是單主站的主/從通信模式,一個(gè)主站下面可以接十多個(gè)從站。大家都掛在一條線,如果沒有一個(gè)設(shè)備地址,就不知道是發(fā)給哪個(gè)從站的,大家都回應(yīng)的話,這條線上的信號(hào)就亂七八糟了,主站也不知道接收到的是什么了。所以,設(shè)這么一個(gè)設(shè)備地址,告訴是給那個(gè)從站的。只要這個(gè)從站回答,其他的閉嘴!“二號(hào),請(qǐng)您回答,其他人就不要吱聲了。”
廣播地址(0)是命令式的,不要求從站回答的!岸悸犞,晚上全體到我家喝酒去,不去者死,散會(huì)!”
設(shè)備地址是要求兩個(gè)字符,比如發(fā)給2號(hào)站,則是“02”
現(xiàn)在的組合是“:02”
3\功能代碼:
•    1
告訴從站應(yīng)該做什么,比如讀數(shù)據(jù)的命令是“3”,從站接收到這個(gè)命令,再根據(jù)下面數(shù)據(jù)要求的具體地址,把具體地址的數(shù)據(jù)返回給主站。
功能代碼也是要求兩個(gè)字符,比如讀命令3,則是“03”
現(xiàn)在的組合是“:0203“

4\數(shù)據(jù):
1、告訴從站具體的元件通訊地址,寫入到哪里,從哪里讀。如讀變頻器的設(shè)定頻率的通訊地址是00A0
元件的通訊地址要求是四個(gè)字符,如果控制器的元件地址不足四個(gè)字符,則在前面補(bǔ)0,比如元件通訊地址是A0,則在前面補(bǔ)足兩個(gè)0:“00A0”
2、數(shù)據(jù)又有可能包括您要讀取的字節(jié)數(shù)( 有的控制器是字?jǐn)?shù)),比如連續(xù)讀取PLC的兩個(gè)十六位寄存器,其字節(jié)數(shù)為四個(gè),則是“0004”。您看出來了吧,讀取個(gè)數(shù)也是要求四個(gè)字符,不足四個(gè),前面補(bǔ)零
現(xiàn)在的組合是“:020300A00004“
3、而當(dāng)您要實(shí)現(xiàn)寫入功能時(shí),數(shù)據(jù)又可能包括寫入的數(shù)據(jù),比如寫入一個(gè)十六位寄存器的值,則要包括是寫入的數(shù)值,如“0D98”
現(xiàn)在的組合是“:020600A00D98“ 06是單個(gè)寄存器的寫入命令
4、當(dāng)連續(xù)寫入多個(gè)寄存器時(shí),這個(gè)數(shù)據(jù)包括的內(nèi)容又不一樣,它可能是:
寄存器通訊地址(四個(gè)字符) +字?jǐn)?shù)(四個(gè)字符)+字節(jié)數(shù)(兩個(gè)字符)+ 要寫入的數(shù)值
您看亂了嗎?沒關(guān)系的,等您拿到具體控制器時(shí),此控制器的通訊說明上會(huì)告訴您此數(shù)據(jù)都包括什么內(nèi)容,以什么樣的格式排列!您一定為我上面四點(diǎn)中的可能字樣而生氣,您認(rèn)為講解就應(yīng)該講解的具體,而不是可能什么又可能什么!
這又要重復(fù)說明一下MODBUS的通訊規(guī)范,
起始符 + 設(shè)備地址 + 功能代碼 + 數(shù)據(jù) + 校驗(yàn) + 結(jié)束符
MODBUS是一種標(biāo)準(zhǔn)通訊協(xié)議,這種標(biāo)準(zhǔn)定義了上面紅色字符的通訊規(guī)范,除了數(shù)據(jù)項(xiàng),其他的都是固定字符個(gè)數(shù)。
數(shù)據(jù)呢,因?yàn)楣δ艽a的不同,其包含的內(nèi)容也不同!所以我只好說可能包含這個(gè),可能包含那個(gè)。您無須擔(dān)心此數(shù)據(jù)變來變?nèi),造成接收方不知道如何分析。接收方在接收到功能代碼時(shí),就已經(jīng)知道此數(shù)據(jù)包含多少個(gè)字符了!
1.    5\檢驗(yàn)和:
2.    前面說過,通訊格式里的校驗(yàn)方式并不能保證每個(gè)字符都正確,所以這里就把所有字符的值加在一起,其和(檢驗(yàn)值)傳給接收方,接收再把接收到的字符的值加在一起,與發(fā)送方傳送過來的檢驗(yàn)值比較,如果相等,就算接收正確了。
3.    "這種方式極大地提高了傳輸?shù)目煽啃裕WC了傳輸?shù)捻樌M(jìn)行,為傳輸事業(yè)做出了巨大貢獻(xiàn)"
4.    這樣的描述讓您想到了什么?假話唄,檢驗(yàn)只是提高了校驗(yàn)的可靠性。并不能完全判斷傳輸是否正確。想要最大限度的提高傳輸?shù)目煽啃,唯有最大限度地降低干擾!于是產(chǎn)生了232,485,422傳輸方式,他們的區(qū)別就在于傳輸?shù)目煽啃裕?br />1+2+3=6 3+2+1=6 這兩個(gè)字符串的作用肯定是不一樣的!但是其校驗(yàn)和是一樣的,如果在傳輸過程中,由于干擾,1變3,3變1,根據(jù)校驗(yàn)和的計(jì)算,接收方并不知道由于干擾而造成傳輸錯(cuò)誤,此時(shí),或是出現(xiàn)通訊錯(cuò)誤,或是出現(xiàn)通訊混亂。
如,命令碼03,由于干擾而變成了30,此時(shí)校驗(yàn)和是一樣的,而MODBUS并沒有30這個(gè)命令碼,接收不認(rèn)識(shí),于是出現(xiàn)通訊錯(cuò)誤。
再如,讀變頻器的設(shè)定頻率通訊地址是0001,由于干擾而變成了0010,此時(shí)校驗(yàn)和是一樣的,但是通訊地址卻變了,變頻器就可能返回的是其他數(shù)據(jù),造成通訊混亂!
校驗(yàn)字符是要求兩個(gè)字符,如果計(jì)算結(jié)果超過兩個(gè)字符,則取后兩位!
**參加校驗(yàn)計(jì)算的字符是起始符與校驗(yàn)符之間的字符串(不含起始符與校驗(yàn)符)
現(xiàn)在的組合是“:02030A000004FB“ (假設(shè)校驗(yàn)和為FB)
02030A000004參加校驗(yàn)和計(jì)算
6\結(jié)束符:
•    1
接收到一串字符,總要知道在那個(gè)地方結(jié)束吧,這就是結(jié)束符的作用,接收方不管以后還會(huì)收到多少個(gè)字符。當(dāng)接收到結(jié)束符時(shí),以后再接收的字符就算是下一輪的東西了,從起始符到結(jié)束符之間的字符就是它要分析的字符! MODBUS的ASCII方式結(jié)束符是— Chr(13)+Chr
(10)
現(xiàn)在的組合是“:02030A000004FB“+ Chr(13)+Chr
(10)
至此,ASCII方式的發(fā)送就完成了,控制器接收到此串字符后,根據(jù)MODBUS協(xié)議定義的通訊規(guī)范分析此串字符的作用,然后返回相應(yīng)的字符!
注意:發(fā)送的字符都是以十六進(jìn)制數(shù)表示!
控制器返回的字符根據(jù)命令的不同而不同,此處不好講解,在下面具體例子中會(huì)有說明!
1.    再說RTU方式:
2.    RTU方式發(fā)送時(shí)的規(guī)范定義如下:
3.    至少3.5個(gè)字符傳輸時(shí)間的停頓間隔時(shí)間標(biāo)定消息的開始  設(shè)備地址  + 功能代碼+   數(shù)據(jù)  +   校驗(yàn)  +  至少3.5個(gè)字符傳輸時(shí)間的停頓間隔時(shí)間標(biāo)定了消息的結(jié)束  
4.    其他的就不用說了,與ASCII方式一樣的作用,唯獨(dú)這3.5個(gè)字符的時(shí)間搞暈了很多人,實(shí)際我也不敢太解釋,大致說一下吧,您就當(dāng)聽著玩,比如通訊格式是9600,E,8,1
5
.    波特率是做什么的?一秒傳輸多少個(gè)位(比如一秒傳送9600個(gè)位),一個(gè)字符是多少個(gè)位呢?通訊格式已經(jīng)標(biāo)定了(7個(gè)位或是8個(gè)位),那3.5個(gè)字符的傳送時(shí)間就好算了吧:
3.5*11(或10)=39個(gè)位(35個(gè)位),傳3.5個(gè)字符需要的時(shí)間是:39/9600=4毫秒。
不是說八位嘛,怎么乘11,記住了,還有一個(gè)起始位,奇或偶的校驗(yàn)位(無奇偶校驗(yàn),則沒有此位),停止位(兩個(gè)停止位就是2了。)
如9600,N,8,2為11個(gè)位,
9600,N,7,1.為9個(gè)位
就是說,您得保證發(fā)送字符串的連續(xù)性,中間停頓時(shí)間超過4毫秒,接收方就認(rèn)為您已經(jīng)發(fā)送完了這組消息,開始處理了。這就是至少3.5個(gè)字符傳輸時(shí)間的停頓間隔時(shí)間標(biāo)定了消息的結(jié)束的含義
如果您發(fā)送的太連續(xù),下一組消息與上一組消息之間的間隔時(shí)間沒超過4毫秒,接收方就認(rèn)為這些字符是一組消息,按一組消息去處理。所以,您發(fā)送結(jié)束一組命令后,必須間隔4毫秒才能發(fā)送下一組命令. 這就是至少3.5個(gè)字符傳輸時(shí)間的停頓間隔時(shí)間標(biāo)定消息的開始的含義
至此我的大白話結(jié)束,有什么錯(cuò)誤,請(qǐng)您批評(píng),多謝!
1.    通訊協(xié)議實(shí)際也就是這回事,任何一個(gè)協(xié)議都大同小異。通訊格式,通訊規(guī)范兩種而已。
2.    您如果愿意,也可以自己定義一個(gè)通訊規(guī)范,用PLC或是VB語言按照您自己定義的這個(gè)規(guī)范處理,如果可靠性超過modbus,那您的通訊規(guī)范就是最流行的了!
我經(jīng)常問某些產(chǎn)品推廣人員,“您設(shè)備的通訊協(xié)議是什么”,他回答:“232”或是“485”。今天您看了上面這些大白話,請(qǐng)您就不要再這樣回答了。
Modbus通信標(biāo)準(zhǔn)協(xié)議可以通過各種傳輸方式傳播,如 RS232C、RS485、光纖、無線電等。
“232”或是“485”只是一種線路傳輸方式,與協(xié)議是無關(guān)的!232傳輸抗干擾性差,485傳輸抗干擾相對(duì)強(qiáng)。
MODBUS做為一種標(biāo)準(zhǔn)的協(xié)議,應(yīng)用于各種PLC,控制器,儀表。這些儀表或是控制器應(yīng)用中,元件的通訊地址肯定是不一樣了;各個(gè)命令碼的各部分組成的意義也許也會(huì)不同;
但是,它一定會(huì)遵守MODBUS的協(xié)議規(guī)范。即,每個(gè)命令碼的組成一定符合MODBUS的規(guī)范!一樣不多,一樣不少!
下面針對(duì)某種支持MODBUS協(xié)議的控制器,說一下具體的讀/寫例子
1\ 讀某控制器的十五個(gè)寄存器值,發(fā)送的字符串是:(ASCII方式)
“: 01031000000FDD”+ Chr(13)+Chr
(10)
起始符“:” + 站號(hào)(01) + 讀命令(03)+ 起始寄存器通訊地址(1000)+ 字?jǐn)?shù)(15;轉(zhuǎn)換成十六進(jìn)制000F)+ 校驗(yàn)和(DD)+ 結(jié)束符
控制器返回的字符數(shù)是71個(gè)
起始符“:” + 站號(hào)(01) + 讀命令(03)+ 字?jǐn)?shù)(0F)+ 60個(gè)數(shù)據(jù)字符(一個(gè)寄存器是4個(gè),一共十五個(gè)) + 校驗(yàn)和(DD)+ 結(jié)束符(兩個(gè))
2\ 分別向某控制器兩個(gè)寄存器寫入數(shù)值,發(fā)送的字符串是:(ASCII方式)
“: 01101000000204”+ 寫入的數(shù)值(8個(gè)字符)+ 校驗(yàn)和 + Chr(13)+Chr
(10)
起始符“:” + 站號(hào)(01) + 寫命令(10)+ 起始寄存器通訊地址(1000)+ 字?jǐn)?shù)(2;轉(zhuǎn)換成十六進(jìn)制0002)+ 字節(jié)數(shù)(04) + 校驗(yàn)和(因?yàn)閷懭霐?shù)值是變化的,需要得經(jīng)過計(jì)算得出校驗(yàn)和)+ 結(jié)束符
控制器返回的字符數(shù)是17個(gè)
起始符“:” + 站號(hào)(01) + 寫命令(10)+ 起始寄存器通訊地址(1000)+ 字?jǐn)?shù)(02)+ 錯(cuò)誤碼(2個(gè)) + 校驗(yàn)和(DD)+ 結(jié)束符(兩個(gè))
*錯(cuò)誤碼,當(dāng)通訊正確時(shí)是什么,通訊錯(cuò)誤時(shí)是什么,具體控制器會(huì)有說明
讀其他儀表的某值時(shí),參照上述讀的規(guī)范,也就是更改一下起始寄存器通訊地址、字?jǐn)?shù)、校驗(yàn)和(校驗(yàn)和是編制程序塊自動(dòng)計(jì)算的。)
要讀多個(gè)儀表的同一個(gè)檢測(cè)值更簡單,更改站號(hào)就可以了。
本帖最近評(píng)分記錄:
  • 下載積分:+1(勤工儉學(xué)) 好貼好貼!

    主站蜘蛛池模板: 琪琪色18 | 国产美女又黄又爽又色视频免费 | 天堂av手机在线观看 | 碰超97 | 欧美二区乱c黑人 | 久久综合精品无码av一区二区三区 | 亚洲免费视频播放 | 天天躁日日躁aaaxxⅹ | 久久久久国产精品人妻aⅴ武则天 | 亚洲国产成人无码网站大全 | 国产成人 综合 亚洲欧洲 | 亚洲成人免费av | 天堂√在线中文最新版 | 亚洲欧美日韩精品一区二区 | 台湾精品一区二区蜜桃 | 四川性一交一乱一乱一视一频 | 亚洲欧美日韩二三区在线 | 国产日本卡二卡三卡四卡 | 国产精品白丝av嫩草影院 | 被窝福利片久久福利片 | 欧美激欧美啪啪片免费看 | 亚洲福利影视 | 黄色大片av | 国产成人欧美一区二区三区八 | 一本大道av伊人久久综合 | 成人美女毛片 | 欧美 亚洲 另类 丝袜 自拍 动漫 | 亚洲三级在线中文字幕 | 国产乱人激情h在线观看 | 国产亚洲精品久久久久久无挡照片 | 四虎免费网址 | 在线永久无码不卡av | 无码国产精品一区二区免费式直播 | www.成人在线 | 深爱婷婷| 欧美日韩国产亚洲沙发 | 自在自线亚洲а∨天堂在线 | 久久久久国产精品夜夜夜夜夜 | 日本不卡视频在线播放 | 日本乱偷互换人妻中文字幕 | 日韩精品人涩人 | 国产精品无码久久综合 | 综合精品久久 | 无遮挡在线观看 | 亚洲天堂成人在线观看 | 少妇做爰k8经典 | 久久看片网 | 日本高清www无色夜在线视频 | 国产超碰人人做人人爽av牛牛 | 成在人线av无码免费高潮求绕 | 欧美精品一线 | 婷婷伊人五月尤物 | 免费av观看网址 | 香港日本三级亚洲三级 | 国产成人精品一区二区视频 | 久久无码av中文出轨人妻 | 成人黄色在线观看 | 欧洲av在线播放 | 狠狠插综合 | 亚洲视频 欧美视频 | 欧美理伦黑寡妇艳妇 | 欧美日韩69 | 国产成人av在线播放不卡 | 亚洲人成人网站18禁 | 日本一区二区在线看 | 日本亲近相奷中文字幕 | 潮喷大喷水系列无码久久精品 | 色天使亚洲 | 国产在线精品一区二区不卡顿 | 国产精品无码一区二区三区 | 老太婆性杂交视频 | 久草综合在线观看 | 午夜大片爽爽爽免费影院 | 国产你懂得 | 午夜免费福利影院 | 国产精品国产精品国产专区不片 | 中文字幕不卡乱偷在线观看 | 成人无码精品一区二区三区亚洲区 | 国产国语在线播放视频 | 亚洲欧美综合精品另类天天更新 | xxx国产老太婆视频 免费中文熟妇在线影片 | 成人午夜爽爽爽免费视频 | 91高清免费观看 | 色国产精品| 美女又爽又黄网站视频 | 国产精品一区二区在线观看 | 超碰成人网| 717影院理论午夜伦八戒 | 男女超级黄aaa大片免费 | 丁香六月激情综合 | 波多野结衣初尝黑人 | 天天做天天爱夜夜爽毛片毛片 | 国产ww久久久久久久久久 | 国产欧美一区二区三区免费 | 第一宅男av导航入口 | 91精品久久久久久久久久久 | 日韩欧美tⅴ一中文字暮 | 精品久久久久久久中文字幕 | 99热久久精品免费精品 |