現(xiàn)場總線的開關量I/O模塊的設計:MODBUS 現(xiàn)場總線技術
2.4 MODBUS應用層協(xié)議
2.4.1 MODBUS功能碼
MODBUS功能碼是MODBUS請求/應答PDU(Protocol Description Unit)的元素。PDU中用一個字節(jié)編碼MODBUS功能碼域,有效的碼字范圍是十進制1~255,其中128~255為異常相應保留。MODBUS定義了三類功能碼:
(1)公共功能碼:由Modbus.org確認的,被確切定義并保證唯一的功能碼。此類功能碼在MBIETFRFC中歸檔,可進行一致性測試。
(2)用戶定義的功能碼:十進制區(qū)間65~72和100~110為用戶可自定義的功能碼。在此區(qū)間內(nèi),用戶無需Modbus組織的任何批準就可以選擇和實現(xiàn)一個功能碼,但不能保證被選功能碼的使用是唯一的。用戶可啟動RFC將改變引入公共分類中,并且指配一個新的功能碼。
(3 )保留功能碼:某些公司在傳統(tǒng)產(chǎn)品上使用的功能碼,不作為公共使用。已定義的Modbus公共功能碼按其功能可分為數(shù)據(jù)訪問類和異常響應及診斷類兩部分。數(shù)據(jù)訪問類功能碼實現(xiàn)對輸入離散量、線圈的位訪問,對寄存器、FIFO隊列的16位訪問以及對文件記錄的讀寫。診斷類功能碼提供了讀異常狀態(tài)、設備標識等功能。表2.5給出了Modbus公共功能碼的定義。
2.4.2 MODBUS異常響應
當客戶機設備向服務器設備發(fā)送請求時,主站的詢問可能導致下列四種事件:
(1)服務器設備接收到無通信錯誤的請求,并且可以正常地處理詢問,那么服務器設備將返回一個正常的響應。
(2)由于通訊錯誤,服務器沒有接收到請求,那么不能返回響應。客戶機程序?qū)⒁曋疄槌瑫r。
(3)服務器接收到請求,但是檢測到一個通信錯誤(奇偶檢驗、LRC、CRC等),那么不能返回響應??蛻魴C程序?qū)⒁曋疄槌瑫r。
(4)服務器接收到無通信錯誤的請求,但不能處理這個請求(例如,請求讀一個不存在的寄存器),服務器將返回一個異常響應,通知客戶機錯誤的實際情況。
異常響應報文時通過功能碼域和數(shù)據(jù)域區(qū)別于正常響應。對于功能碼域,正常響應的服務器復制原始請求的功能碼,即所有功能碼的MSB都為0;異常響應的服務器設置功能碼的MSB為1,即使得異常響應中的功能碼值比正常響應中的功能碼值高80H.對于數(shù)據(jù)域,正常響應的服務器將返回請求中要求的信息;異常響應的服務器返回異常碼。客戶機通過響應報文中功能碼的MSB識別異常響應,并能夠檢測數(shù)據(jù)域中的異常碼。表2 .6給出了Modbus異常碼及其含義。
評論