讀線圈:就是說讀開關量輸出的狀態,看看開關量輸出的究竟是開着的仍是關着的,這樣說有點不專業,可是好明白。好比要在上位機顯示開關量輸出的當狀態,就得用這個功能碼。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)用於寫多個寄存器