現場(chǎng)總線(xiàn)的開(kāi)關(guān)量I/O模塊的設計:MODBUS 現場(chǎng)總線(xiàn)技術(shù)
2.4 MODBUS應用層協(xié)議
2.4.1 MODBUS功能碼
MODBUS功能碼是MODBUS請求/應答PDU(Protocol Description Unit)的元素。PDU中用一個(gè)字節編碼MODBUS功能碼域,有效的碼字范圍是十進(jìn)制1~255,其中128~255為異常相應保留。MODBUS定義了三類(lèi)功能碼:
(1)公共功能碼:由Modbus.org確認的,被確切定義并保證唯一的功能碼。此類(lèi)功能碼在MBIETFRFC中歸檔,可進(jìn)行一致性測試。
(2)用戶(hù)定義的功能碼:十進(jìn)制區間65~72和100~110為用戶(hù)可自定義的功能碼。在此區間內,用戶(hù)無(wú)需Modbus組織的任何批準就可以選擇和實(shí)現一個(gè)功能碼,但不能保證被選功能碼的使用是唯一的。用戶(hù)可啟動(dòng)RFC將改變引入公共分類(lèi)中,并且指配一個(gè)新的功能碼。
(3 )保留功能碼:某些公司在傳統產(chǎn)品上使用的功能碼,不作為公共使用。已定義的Modbus公共功能碼按其功能可分為數據訪(fǎng)問(wèn)類(lèi)和異常響應及診斷類(lèi)兩部分。數據訪(fǎng)問(wèn)類(lèi)功能碼實(shí)現對輸入離散量、線(xiàn)圈的位訪(fǎng)問(wèn),對寄存器、FIFO隊列的16位訪(fǎng)問(wèn)以及對文件記錄的讀寫(xiě)。診斷類(lèi)功能碼提供了讀異常狀態(tài)、設備標識等功能。表2.5給出了Modbus公共功能碼的定義。

2.4.2 MODBUS異常響應
當客戶(hù)機設備向服務(wù)器設備發(fā)送請求時(shí),主站的詢(xún)問(wèn)可能導致下列四種事件:
(1)服務(wù)器設備接收到無(wú)通信錯誤的請求,并且可以正常地處理詢(xún)問(wèn),那么服務(wù)器設備將返回一個(gè)正常的響應。
(2)由于通訊錯誤,服務(wù)器沒(méi)有接收到請求,那么不能返回響應??蛻?hù)機程序將視之為超時(shí)。
(3)服務(wù)器接收到請求,但是檢測到一個(gè)通信錯誤(奇偶檢驗、LRC、CRC等),那么不能返回響應??蛻?hù)機程序將視之為超時(shí)。
(4)服務(wù)器接收到無(wú)通信錯誤的請求,但不能處理這個(gè)請求(例如,請求讀一個(gè)不存在的寄存器),服務(wù)器將返回一個(gè)異常響應,通知客戶(hù)機錯誤的實(shí)際情況。
異常響應報文時(shí)通過(guò)功能碼域和數據域區別于正常響應。對于功能碼域,正常響應的服務(wù)器復制原始請求的功能碼,即所有功能碼的MSB都為0;異常響應的服務(wù)器設置功能碼的MSB為1,即使得異常響應中的功能碼值比正常響應中的功能碼值高80H.對于數據域,正常響應的服務(wù)器將返回請求中要求的信息;異常響應的服務(wù)器返回異常碼??蛻?hù)機通過(guò)響應報文中功能碼的MSB識別異常響應,并能夠檢測數據域中的異常碼。表2 .6給出了Modbus異常碼及其含義。

評論