日韩中文字幕在线人成网站_一二三区精品视频_人人爱天天做夜夜爽_色综合五月婷婷_av片免费大全在线观看不卡_啊哼~可以随时C的世界_亚洲黄色电影 在线_亚洲一级无码毛片中文国产_国产精品第八页_性a爱片免费视频性

歡迎光臨~廣州悅欣電子科技有限公司
聯(lián)系電話 手機(jī)/微信:

18925103846

資料知識

關(guān)于 Modbus 總結(jié)學(xué)習(xí)

Modbus 總結(jié)學(xué)習(xí)


   Modbus 是一個基于 RS485 的工業(yè)標(biāo)準(zhǔn)通訊協(xié)議,廣泛的應(yīng)用在工業(yè)控制中,主要的 應(yīng)用還是在 PLC 等等設(shè)備中。詳細(xì)的概念這里就不做說明,只對使用進(jìn)行詳細(xì)說明

1、modbus 的一些特點

(1)、在同一個 modbus 網(wǎng)絡(luò)中,只能有 1 臺主機(jī),多臺從機(jī)。

(2)、modbus 從機(jī)才需要地址,主機(jī)沒有地址,不需要初始化地址

(3)、modbus 有的通訊都是由主機(jī)發(fā)起的,也就是說從機(jī)不可能主動發(fā)數(shù)據(jù)給從機(jī)。modbus 是主從的,只能主問從答,從機(jī)不能主動上送。

2、modbus 有兩種通信方式:

(1)、RTU 的方式 --- 這個是我們的使用的方式,下面說有的介紹都是基于 RTU 這種方式 (2)、ASCLL 碼的方式 --- 他的數(shù)據(jù)字節(jié)是 7bit 位,我們普通的 mcu 不太好實現(xiàn)。另外市場上 用的比較少。所以這種方式,這里不做研究

 

二、RTU 模式

1、RTU 模式的數(shù)據(jù)幀格式說明

(1)、起始位和結(jié)束符是一樣的

(2)、T1-T2-T3-T4 代表的意思?

這個問題是針對于 modbus rtu 協(xié)議的,這是 modbus rtu 協(xié)議的數(shù)據(jù)格式。其中 T1-T2-T3-T4 表示 4 個字節(jié)的通訊間隔。在 modbus rtu 協(xié)議中要求每個數(shù)據(jù)包的前后有至少傳輸 3.5 個字 節(jié)的時間間隔,用來間隔多條數(shù)據(jù)

(3)、CRC16 校驗參照別人現(xiàn)成的就可以了,不詳細(xì)深究

(4)、設(shè)備地址:這個好理解。Modbus 主機(jī)的地址不需要設(shè)定,從機(jī)的地址可設(shè)定為 1~247。

(5)、功能代碼:參見下面的詳細(xì)說明

(6)、數(shù)據(jù):參見下面詳細(xì)說明

2、RTU模式下如何判斷數(shù)據(jù)的開始

三、功能代碼說明

1、常用功能代碼

(1)、03 功能代碼。這個功能代碼就是讀取指定的寄存器的數(shù)據(jù)。

==>其實說白了,這里面的寄存器是自己所定義的。

==>應(yīng)用到我們的產(chǎn)品中,其實就是讀取系統(tǒng)的狀態(tài)、以及文件總數(shù)等等數(shù)據(jù).

==>也就是我們所說的查詢功能。

(2)、06 功能代碼。這個功能代碼就是寫入數(shù)據(jù)到寄存器中。

==>其實說白了,這個就是主機(jī)發(fā)送數(shù)據(jù),而從機(jī)接受到之后,寫入到自己設(shè)定的寄存器中。

==>應(yīng)用到我們的產(chǎn)品中,其實就是主機(jī)發(fā)送一個指令給我們芯片,而我們的芯片將這個指令存儲到所建立的寄存器 buffer 中,再對這個指令進(jìn)行相應(yīng)的動作

==>也就是我們常說的“控制功能”

四、舉例說明

1、06 功能碼

如圖:我們的 USB 轉(zhuǎn) 485 模塊虛擬出的是 COM5,波特率 9600,無校驗位,數(shù)據(jù)位是 8 位,

1 位停止位,設(shè)備地址假設(shè)為 1。

(1)、寫寄存器的時候,如果我們要把 01 寫到一個地址是 0000 的寄存器地址里,點一下“寫

入”,就會出現(xiàn)發(fā)送指令:01 06 00 00 00 01 48 0A。 (2)、我們來分析一下這幀數(shù)據(jù),其中 01 是設(shè)備地址,06 是功能碼,代表寫寄存器這個功 能,后邊跟 00 00 表示的是要寫入的寄存器的地址,00 01 就是要寫入的數(shù)據(jù),48 0A 就是 CRC 校驗碼,這是軟件自動算出來了。

(3)、而根據(jù) Modbus 協(xié)議,當(dāng)寫寄存器的時候,從機(jī)成功完成該指令的操作后,會把主機(jī) 發(fā)送的指令直接返回,我們的調(diào)試精靈會接收到這樣一幀數(shù)據(jù):01 06 00 00 00 01 48 0A。

 

2、03 功能碼

假如我們現(xiàn)在要從寄存器地址 0002 開始讀取寄存器,并且讀取的數(shù)量是 2 個。如上圖

(1)、點一下“讀出”,就會出現(xiàn)發(fā)送指令:01 03 00 02 00 02 65 CB。

(2)、其中 01 是設(shè)備地址,03 是功能碼,代表寫寄存器這個功能,00 02 就是讀寄存器的起 始地址,后一個 00 02 就是要讀取 2 個寄存器的數(shù)值,65 CB 就是 CRC 校驗。 (3)、而接收到的數(shù)據(jù)是:01 03 04 00 00 00 00 FA 33。其中 01 是設(shè)備地址,03 是功能碼,

04 代表的是后邊讀到的數(shù)據(jù)字節(jié)數(shù)是 4 個,00 00 00 00 分別是地址為 00 02 和 00 03 的寄存 器內(nèi)部的數(shù)據(jù),而 FA 33 就是 CRC 校驗了。751697315

五、配置文件的說明

1、如上圖,我們新建的一個 read.cfg 文件,里面填入的數(shù)字是“030010”,代表含義如下

(1)、第1位 0,代表的意思是按鍵模式配置為 0,詳細(xì)的功能請查找表格

(2)、第二位 3 和第三位 0,共同組成了音量為 30 級,如果這里為 21 的話,是 21 級音量

(3)、第四位 0 和第五位 1,共同組成了 modbus 的設(shè)備地址,這里地址設(shè)定為 01 地址 如果要設(shè)定為 10 地址的話,這里兩位填入 10 即可

(4)、后一位代表的是 busy 腳輸出信號,

01 06 00 01 00 00 D8 0A --- 代表下一曲的命令

01 06 00 03 00 02 F8 0B --- 指定播放第二曲

6、測試說明

 

我們有的 modbus 的指令測試,都是通過電腦端的工具測試的,使用的是“MODBUS 調(diào)試助手.exe”,這個軟件可以問我們索取

測試說明如下:

我們只需要用到 03 和 06 這兩個功能碼

測試我們所設(shè)定的地址為 02

完全支持 modbus 的標(biāo)準(zhǔn)協(xié)議

1、測試 06 功能碼

Modbus 對于 06 功能碼要求:從機(jī)收到數(shù)據(jù)之后,將主機(jī)發(fā)送的數(shù)據(jù)再次發(fā)給主機(jī),作 為從機(jī)收到主機(jī)的指令的應(yīng)答

(1)、0x01 指令測試

這里 modbus 主機(jī)發(fā)送的數(shù)據(jù)是“02 06 00 01 00 00 D8 39 ” 代表的含義是:指定下一曲播放

(2)、0x03 指令測試

這里 modbus 主機(jī)發(fā)送的數(shù)據(jù)是“02 06 00 03 00 02 F8 38 ” 代表的含義是:按照物理順序指定第二段語音播放

(3)、0x08 指令測試

這里 modbus 主機(jī)發(fā)送的數(shù)據(jù)是“02 06 00 08 00 02 89 FA” 代表的含義是:按照物理順序指定第二段語音循環(huán)播放

(4)、0x0F 指令測試

這里 modbus 主機(jī)發(fā)送的數(shù)據(jù)是“02 06 00 0F 01 01 79 AA ” 代表的含義是:指定 01 文件夾下面的 001xxx.mp3 文件播放

用手機(jī)掃描二維碼關(guān)閉
二維碼