ModBus協議內容介紹
設備必須要有RTU協議!這是Modbus協議上規定的,且默認模式必須是RTU,ASCII作為選項。所以設備都有RTU協議,ASCII協議很少,Modbus協議,只需要了解RTU協議,ASCII作為學習的了解就足夠了。
ModBus協議最基本的通信單位是幀,整個ModBus幀又被稱之為應用數據單元(ADU),ADU中又包含了協議數據單元(PDU)用於傳真正需要傳輸的數據。Modbus協議幀從上圖可以看出:
幀結構 = 地址域 + 功能碼 + 數據 + 差錯校驗
地址域:
占用壹個字節,範圍0-255,其中有效範圍是1-247,其他有特殊用途,比如255是廣播地址(廣播地址就是應答所有地址,正常地需要兩個設備的地址壹樣才能進行查詢和回復)。每個終端設備的地址是唯壹的,如果查詢某個終端設備,必須包含該設備的地址。終端回應也會包含該地址,通過該地址,主機知道哪個終端在與自己進行通信。
功能碼:
常用的功能碼有01、05、03、06、16。壹般占用壹個字節,功能碼的意義就是,知道這個指令是幹啥的,比如妳可以查詢從機的數據,也可以修改數據,所以不同功能碼對應不同功能。常用的功能碼是03和06。
數據:
通信的主要內容,可能是數值、參考地址或者極限值。可能是終端執行特定功能所需要的數據或者終端響應查詢時采集到的數據,根據功能碼不同,有不同結構。
差錯校驗:
為了保證數據不錯誤,增加這個,然後把前面的數據進行計算看數據是否壹致,如果壹致,就說明這個數據是正確的,我再回復;如果不壹樣,說明妳這個數據在傳輸的時候出了問題,數據不對的,所以就拋棄了。有時,由於電噪聲和其它幹擾,壹組數據在從壹個設備傳輸到另壹個設備時在線路上可能會發生壹些改變,出錯校驗能夠保證主機或者終端不去響應那些傳輸過程中發生了改變的數據,這就提高了系統的安全性和效率,出錯校驗使用了16位循環冗余的方法。