日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是Modbus

發(fā)布時間:2023/12/1 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是Modbus 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是Modbus

1. Modbus如何工作

Modbus是通過設(shè)備之間的幾根連線來傳遞數(shù)據(jù),最簡單的設(shè)置就是主站和從站之間用一跟串口線相連。數(shù)據(jù)通過一串0或者1來傳遞,也就是位。0為正電壓,1為負(fù)電壓。位數(shù)據(jù)傳遞速度非常快,常見的傳輸速度為9600波特(即9600bits/s).

2. 標(biāo)準(zhǔn)Modbus怎么存儲數(shù)據(jù)

信息存儲在從站的四個不同的表中。兩個表存儲數(shù)字量,稱為線圈;兩個表存儲模擬量,稱為寄存器。線圈和寄存器分別有一個只讀,另一個可讀寫。每個表可存儲9999個值。線圈是一位的,地址從0000到270E;寄存器是一個字的(16位,2字節(jié))地址也是從0000到270E.

Coil/Register NumbersData AddressesTypeTable Name
1-99990000 to 270ERead-WriteDiscrete Output Coils
10001-199990000 to 270ERead-OnlyDiscrete Input Contacts
30001-399990000 to 270ERead-OnlyAnalog Input Registers
40001-499990000 to 270ERead-WriteAnalog Output Holding Registers

線圈/寄存器編號可以看做是位置的名字,它們不出現(xiàn)在實(shí)際發(fā)送的信息當(dāng)中,數(shù)據(jù)地址(Data Address)出現(xiàn)在實(shí)際發(fā)送的信息中。

舉個例子,第一個Holding Register的編號為40001,數(shù)據(jù)地址為0000.這兩個數(shù)字的區(qū)別在于偏移量。

3. 什么是從站ID

在網(wǎng)絡(luò)中,每一個從機(jī)分配一個唯一的設(shè)備地址,從1到247.當(dāng)主機(jī)請求數(shù)據(jù)時,發(fā)送的信息的第一個字節(jié)就是從機(jī)地址,這樣,從機(jī)接收到第一個字節(jié)后就知道是否忽略信息。

4. 什么是功能碼

主機(jī)發(fā)送的第二個字節(jié)就是功能碼。這個功能碼告訴從機(jī)需要訪問哪個表,是向這個表中寫數(shù)據(jù)還是讀數(shù)據(jù)。

Fun CodeActionTable Name
01(01 hex)ReadDiscrete Output Coils
05(05 hex)Write singleDiscrete Output Coil
15(0F hex)Write multipleDiscrete Output Coils
02(02 hex)ReadDiscrete Input Contacts
04(04 hex)ReadAnalog Input Registers
03(03 hex)ReadAnalog Output Holding Registers
06(06 hex)Write singleAnalog Output Holding Register
16(10 hex)Write multipleAnalog Output Holding Registers

5. 什么是CRC

CRC即循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy check),是在每一個發(fā)送的信息后面加上的兩字節(jié),用于檢驗(yàn)發(fā)送和接受是否出錯。信息中的每一個字節(jié)都用于計算CRC。接受設(shè)備同時計算CRC,然后與發(fā)送方計算的CRC進(jìn)行比較,如果兩者不同,則產(chǎn)生錯誤。

6. Modbus發(fā)送指令和回應(yīng)的格式

Modbus發(fā)送指令和回應(yīng)的格式

Data AddressesReadWrite SingleWrite Multiple
Discrete Output Coils 0xxxxFC01FC05FC15
Discrete Input Contacts 1xxxxFC02NANA
Analog Input Registers 3xxxxFC04NANA
Analog Output Holding Registers 4xxxxFC03FC06FC16

注:FC表示Function Code

eg1.
數(shù)據(jù)請求:
11 01 0013 0025 0E84
11: 從機(jī)地址 (0x11 = 17 )
01: 功能碼01(讀線圈狀態(tài))
0013: 線圈首地址(0x0013=19,+1偏移量=#20線圈)
0025: 要讀的線圈數(shù) (0x25 = 37, 20~56 )
0E84: CRC校驗(yàn)和
回應(yīng)
11 01 05 CD6BB20E1B 45E6
11: 從機(jī)地址 (0x11 = 17 )
01: 功能碼01(讀線圈狀態(tài))
05:后面的字節(jié)數(shù)(37/8=5字節(jié))
CD:線圈27 - 20 (1100 1101)
6B: 線圈35 - 28 (0110 1011)
B2: 線圈43 - 36 (1011 0010)
0E: 線圈51 - 44 (0000 1110)
1B: 3空格和線圈56 - 52 (0001 1011)
45E6: CRC校驗(yàn)和

其他例子與此類似,不再贅述。

參考資料:simplyModbus

轉(zhuǎn)載于:https://www.cnblogs.com/zhengkang/p/4891131.html

總結(jié)

以上是生活随笔為你收集整理的什么是Modbus的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。