Modbus協議筆記

  讀線圈:就是說讀開關量輸出的狀態,看看開關量輸出的究竟是開着的仍是關着的,這樣說有點不專業,可是好明白。好比要在上位機顯示開關量輸出的當狀態,就得用這個功能碼。blog

  寫線圈:就是說讀開關量輸入的狀態,開關量的輸入大可能是爲了查看執行元件的動做狀況,看看是否執行到位。索引

  讀保持寄存器:就是說對被控制的從器件設置一些狀態值,如設置時間,設置一些定值,設置互感器的變比什麼的。get

  讀輸入寄存器:意思說讀取一些寄存器的輸入值,如模擬量的採集,AD結果寄存器的值什麼的。若是要在上位機實時顯示電壓,電流,溫度什麼,就要用到這個命令。原理

  強制線圈:意思就是說發出投切控制命令,如機器的啓動,中止等。bfc

 

1.0x01功能碼用於讀線圈,一個線圈表明一個比特位,每個線圈有一個索引,從1開始,可是地址編號從0開始請求

以上圖爲例:im

0x13即十進制19數據

即從地址爲19(線圈索引爲20)的線圈開始讀,讀取19個線圈,也就是響應中的線圈索引爲20-38這19個線圈,響應中的0xCD/0x6B/0x05的每個比特位表明了對應該位的線圈的狀態;19個線圈2個字節存不下,因此須要3個字節返回。img

2.0x02功能碼用於讀離散量,其原理與讀線圈是同樣的,此處很少言了,如下圖爲例時間

3.0x03功能碼用於讀保持寄存器

每一個寄存器含有兩個字節,請求命令中請求的是寄存器的個數,所以,響應數據中返回「2*寄存器個數」個字節

4.0x04功能碼用於讀輸入寄存器,其原理與讀保持寄存器同樣

 

 

5.0x05功能碼用於寫單個線圈

注意,是寫「單個」線圈,也就是一個比特位(地址爲0x00AC)

6.0x06功能碼用於寫單個寄存器

7.0x0F用於寫多個線圈

8.0x10(即16)用於寫多個寄存器

相關文章
相關標籤/搜索