- 品牌/商標:南自
- 企業類型:制造商
- 新舊程度:全新
- 原產地:浙江
MODBUS協議只允許在主機(PC,PLC等)和終端設備之間通訊,而不允許獨立的終端設備之間的數據交換,這樣各終端設備不會在它們初始化時占據通訊線路,而僅限于響應到達本機的查詢信號。
主機查詢:查詢消息幀包括設備地址碼、功能人碼、數據信息碼、校驗碼。地址碼表明要選中的從機設備;功能代碼告之被選中的從設備要執行何種功能,例如功能代碼03或04是要求從設備讀寄存器并返回它們的內容;數據段包含了從設備要執行功能的其它附加信息,如在讀命令中,數據段的附加信息有從何寄存器開始讀的寄存器數量;校驗碼用來檢驗一幀信息的正確性,為從設備提供了一種驗證消息內容是否正確的方法,它采用CRC16的校準規則。
從機響應:如果從設備產生一正常的回應,在回應消息中有從機地址碼、功能代碼、數據信息碼和CRC16校驗碼。數據信息碼包括了從設備收集的數據:如寄存器值或狀態。如果有錯誤發生,我們約定是從機不進行響應。
傳輸方式是指一個數據幀內一系列獨立的數據結構以及用于傳輸數據的有限規則,下面定義了與MODBUS協議-RTU方式相兼容的傳輸方式。每個字節的位:1個起始位、8個數據位(無奇偶校驗位)、2個停止位。
數據幀的結構:即:報文格式。
|
地址碼 |
功能碼 |
數據碼 |
校驗碼 |
|
1個BYTE |
1個BYTE |
N個BYTE |
2個BYTE |
地址碼在幀的開始部分,由一個字節(8位二進制碼)組成,十進制為0~255,在我們的系統中只使用1~247,其它地址保留。這些位標明了用戶指定的終端設備的地址,該設備將接收來自與之相連的主機數據。每個終端設備的地址必須是的,僅僅被尋址到的終端會響應包含了該地址的查詢。當終端發送回一個響應,響應中的從機地址數據告訴了主機哪臺終端與之進行通信。
功能碼告訴了被尋址到的終端執行何種功能。下表列出所支持的功能碼,以及它們的意義和功能。
|
代碼 |
意義 |
行為 |
|
03/04 |
讀數據寄存器 |
獲得一個或多個寄存器的當前二進制值 |
|
16 |
寫預置寄存器 |
設定二進制值到相關的寄存器中 |
數據碼包含了終端執行特定功能所需要的數據或者終端響應查詢時采集到的數據。這些數據的內容可能是數值、參考地址或者設置值。例如:功能域碼告訴終端讀取一個寄存器,數據域則需要反映明從哪個寄存器開始及讀取多少個數據,而從機數據碼回送內容則包含了數據長度和相應的數據。
校驗碼錯誤校驗(CRC)域占用兩個字節,包含了一個16位的二進制值。CRC值由傳輸設備計算出來,然后附加到數據幀上,接收設備在接收數據時重新計算CRC值,然后與接收到的CRC域中的值進行比較。如果這兩個值不相等,就發生了錯誤。
生成一個CRC的流程為:
(1).預置一個16位寄存器為FFFFH(16進制,全1),稱之為CRC寄存器。
(2).把數據幀中的個字節的8位與CRC寄存器中的低字節進行異或運算,結果存回CRC寄存器。
(3).將CRC寄存器向右移一位,位填以0,位移出并檢測。
(4).上一步中被移出的那一位如果為0:重復第三步(下移位);為1:將CRC寄存器與一個預設的固定值(
(5).重復第三點和第四步直到8次移位。這樣處理完了一個完整的八位。
(6).重復第2步到第5步來處理下一個八位,直到所有的字節處理結束。
(7).終CRC寄存器的值就是CRC的值。
通訊報文舉例:1.讀數據(功能碼:03/04):這個功能可使用戶獲得終端設備采集、記錄的數據,以及系統參數。主機請求采集的數據個數沒有限制,但不能超出定義的地址范圍。下面的例子是從終端設備地址為12(0CH)的從機上,讀取變送數據BS1(數據幀中數據每個地址占用2個字,測量數據字地址為12(0CH)開始,數據長度為2(02H)個字。字通訊方式。)
查詢數據幀(主機)
|
地址 |
命令 |
起始寄存器地址 (高位) |
起始寄存器地址 (低位) |
寄存器個數 (高位) |
寄存器個數 (低位) |
CRC16 低位 |
CEC16 高位 |









