日韩欧美在线观看成人日韩福利在线_中文字幕一区二区三区在线视频_国产亚洲色婷婷久久99精品_亚洲精品鲁一鲁一区二区三区冒白浆_66亚洲一卡2卡新区成片发布_中文字幕亚洲情99在线_丰满大号美女_日韩人妻熟女中文字幕_婷婷综合人人网_91香蕉嫩草_欧日美韩视频网站C0m_欧美亚洲国产激情一区二区_91噜噜噜_小黄人福利导航_久久在精品线影院精品国产_五月天综合人人永久精品

歡迎光臨~廣州悅欣電子科技有限公司
聯系電話 手機/微信:

18925103846

您的位置: 網站首頁 > 資料知識

資料知識

關于 Modbus 總結學習

Modbus 總結學習


   Modbus 是一個基于 RS485 的工業(yè)標準通訊協議,廣泛的應用在工業(yè)控制中,主要的 應用還是在 PLC 等等設備中。詳細的概念這里就不做說明,只對使用進行詳細說明

1、modbus 的一些特點

(1)、在同一個 modbus 網絡中,只能有 1 臺主機,多臺從機。

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

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

2、modbus 有兩種通信方式:

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

 

二、RTU 模式

1、RTU 模式的數據幀格式說明

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

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

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

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

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

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

(6)、數據:參見下面詳細說明

2、RTU模式下如何判斷數據的開始

三、功能代碼說明

1、常用功能代碼

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

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

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

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

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

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

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

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

四、舉例說明

1、06 功能碼

如圖:我們的 USB 轉 485 模塊虛擬出的是 COM5,波特率 9600,無校驗位,數據位是 8 位,

1 位停止位,設備地址假設為 1。

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

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

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

 

2、03 功能碼

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

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

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

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

五、配置文件的說明

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

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

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

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

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

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

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

6、測試說明

 

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

測試說明如下:

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

測試我們所設定的地址為 02

完全支持 modbus 的標準協議

1、測試 06 功能碼

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

(1)、0x01 指令測試

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

(2)、0x03 指令測試

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

(3)、0x08 指令測試

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

(4)、0x0F 指令測試

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

用手機掃描二維碼關閉
二維碼