modulebus協議發送命令失敗?通訊協議是指需要通信的各方事先約定好的通訊規則,可以簡單地理解為各個計算機之間進行相互會話所使用的共同語言,局域網中通常使用的通信協議主要包括TCP/iP、netbeui、ipx/spx三種協議,每個協議都有其适用的環境,今天小編就來聊一聊關于modulebus協議發送命令失敗?接下來我們就一起去研究一下吧!
通訊協議是指需要通信的各方事先約定好的通訊規則,可以簡單地理解為各個計算機之間進行相互會話所使用的共同語言,局域網中通常使用的通信協議主要包括TCP/iP、netbeui、ipx/spx三種協議,每個協議都有其适用的環境。
Modbus通訊協議:
Modbus是一種串行通訊協議,(串行通訊是指在數據傳輸過程中,每次隻有一個數據位在設備之間傳輸,并行通訊時指在數據傳輸過程中, 同時有多組數據在傳輸。)是工業電子設備中最常用的一種通訊協議。
一個modbus指令包含了所有準備執行命令的設備其modbus地址,發送指令時所有的設備都可以收到,但是隻有指定的某個設備會回傳信息。
01 03 00 01 00 02 95 CB指令中每個數字代表的含義:
第一個01:是指從站地址,簡單地說就是,由于modbus通訊中,一個上位機可以連接很多台設備,具體需要哪台設備進行回傳信息,通過這裡來确定,01代表1号設備,此處也可以是02、03等。
第二個03:是指功能碼,也就是說需要做什麼動作,03代表的是讀取的意思,
第三第四個00 01:代表的是寄存器地址,(儀表中存放程序的虛拟地址),這裡表示要從01号寄存器中讀取信息。
第五個第六個00 02 : 表示在這裡需要讀取幾位,因為01号寄存器中,重量值存儲位置為0001 和0002占據兩個寄存器 ,所以輸入2,
最後兩位95CB代表的是校驗碼,意思是通過輸入這些字符表示,讀取的指令已經結束。這兩位數字不是固定的,是通過這裡計算出來的
下邊以實例來說明具體該怎麼進行通訊。
一、1号從站數據的讀取和回傳
1、首先将儀表的從站地址選擇成01,該設置可以通過說明書。
2、将稱體标定好,分度值設置成5,小數點設置成2位,
3、經過稱量,我手機的重量為225.05g,
4、通過串口測試工具,通過查詢說明書,找到重量值寄存器地址為00 01、 00 02 兩個,
輸入01 03 00 01 00 02 95 CB
回傳信息01 03 04 00 00 57 E9 05 8D
經過計算57E9轉換成10進制為22505,回傳正确。
01 03 04 00 00 57 E9 05 8D該組數據的含義:01:從站地址,03:功能碼,04:回傳的數據從後邊第四位開始讀取,57E9回傳的重量值(16進制),05 8D校驗碼(表示該組回傳指令已經結束),下同。
5、讀取儀表的峰值,峰值的寄存器地址為0006、0007
輸入01 03 00 06 00 02 24 0A
回傳 01 03 04 00 00 5F F0 C3 87
5F F0轉換成10進制為24560,回傳正确,因為在稱台上放置手機的時候,會有向下的力,導緻峰值會大于22505。
6、小數點位數的讀取,小數點位數寄存器地址為00 00
輸入 01 03 00 00 00 01 84 0A
回傳 01 03 02 00 02 39 85
回傳小數點位數為2,回傳正确。
7、分度值的讀取,分度值的寄存器地址為0014
輸入 01 03 00 14 00 01 C4 04
回傳 01 03 02 00 02 39 85
回傳數據不正确。
二、5号從站數據的讀取和回傳
8、首先将儀表的從站地址選擇成05,該設置可以通過說明書。
9、将稱體标定好,分度值設置成5,小數點設置成2位,
10、經過稱量,手機的重量為225.05g,
11、通過串口測試工具,通過查詢說明書,找到重量值寄存器地址為 0001 0002 兩個,
輸入05 03 00 01 00 02 94 4F
回傳信息05 03 04 00 00 58 11 44 3F
經過計算58 11轉換成10進制為22596,讀取的時候儀表顯示重量值為22545,回傳正确。
12、讀取儀表的峰值,峰值的寄存器地址為0006、0007
輸入05 03 00 06 00 02 25 8E
回傳 05 03 04 00 00 58 CF C4 67
58 CF轉換成10進制為22735,回傳正确。
13、小數點位數的讀取,小數點位數寄存器地址為00 00
輸入 05 03 00 00 00 01 85 8E
回傳 05 03 02 00 02 C8 45
14、分度值的讀取,分度值的寄存器地址為0014
輸入 05 03 00 14 00 01 C5 8A
回傳 05 03 02 00 02 C8 45
回傳數據不正确。
問題:經過反複測試,分度值無法正确的讀取,每次回傳的都是上一次測試的回傳數據。分析:
1. 可能是該儀表内部沒有0014号寄存器地址。
2. 儀表内部程序亂了,導緻無法讀取正确的分度值。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!