Modbus功能碼介紹
功能碼作用
啟動Modbus事務(wù)處理的客戶機創(chuàng)建Modbus應(yīng)用數(shù)據(jù)單元。功能碼(PDU中的)向服務(wù)器指示將執(zhí)行哪種操作?
用一個字節(jié)編碼Modbus數(shù)據(jù)單元的功能碼域。有效范圍是十制制1-255(128-255為異常響應(yīng)保留)。當從客戶機向服務(wù)器發(fā)送報文時,功能碼域通過服務(wù)器執(zhí)行哪種操作?
從客戶機向服務(wù)器發(fā)送的報文數(shù)據(jù)域包括附加信息,服務(wù)器使用這個信息執(zhí)行功能碼定義的操作。這個域還包括離散項目和寄存器地址、處理項目的數(shù)量以及域中的實際數(shù)據(jù)字節(jié)數(shù)。
在某種請求中,數(shù)據(jù)域可以是不存在的,在此情況下服務(wù)器不需要任何附加信息。功能碼僅說明操作。
功能碼的類型
功能碼主要分為有效功能碼、異常功能碼和錯誤功能碼。
如果在一個正確接收Modbus ADU中,不出現(xiàn)與請求Modbus功能有關(guān)的差錯,那么服務(wù)器至客戶機的響應(yīng)數(shù)據(jù)會包含請求中的正常功能碼。如果出現(xiàn)與請求Modbus功能有關(guān)的差錯,那么響應(yīng)數(shù)據(jù)會包含一個異常碼和錯誤碼。
例如,客戶機能夠讀一組離散量輸出或輸入的開/關(guān)狀態(tài),或者用戶能夠讀/寫一組寄存器數(shù)據(jù)內(nèi)容。當服務(wù)器對客戶機響應(yīng)時,它使用功能碼域來指示正常(無差錯)響應(yīng)或出現(xiàn)某種差錯(稱為異常響應(yīng))。對于一個正常響應(yīng)來說,服務(wù)器僅對原始功能碼響應(yīng)。
對于異常響應(yīng),服務(wù)器返回一個與客戶機等同的碼,設(shè)置該原始功能碼的最高有效位為邏輯1,并加該異常碼后增加錯誤碼,以通知客戶機異常原因。
有效功能碼
有效功能碼有二十幾種,但是一般使用上都以1、2、3、4、5、6、15、16等八種最為常用,以及另外特殊使用的20、21兩種,此為General Reference Register,絕大部份的Modbus設(shè)備并不會提供此Register。于PLC上主要的控制數(shù)據(jù)有下列四種型式。此八種功能碼就是處理這些控制資料,詳細說明如下各點:
控制數(shù)據(jù)四種型式:
DI:DigitalInput(數(shù)字輸入,離散輸入),一個地址一個數(shù)據(jù)位,用戶只能讀取它的狀態(tài),不能修改。以一個 bit表示 On/Off,用來記錄控制信號的狀態(tài)輸入,例如:開關(guān),接觸點,馬達運轉(zhuǎn),超限switch等。于PLC上被稱為Input relay、input coil等。
DO:DigitalOutput(數(shù)字輸出,線圈輸出),一個地址一個數(shù)據(jù)位,用戶可以置位、復(fù)位,可以回讀狀態(tài)。以一個 bit表示 On/Off,用來輸出控制信號,以激活或停止馬達,警鈴,燈光等。于PLC上被稱為Output relay、Output coil等。
AI:Analog Input(模擬輸入,輸入寄存器),一個地址16位數(shù)據(jù),用戶只能讀,不能修改,,以16 bits integer表示一個數(shù)值,用來記錄控制信號的數(shù)值輸入,例如:溫度、流量、料量、速度、轉(zhuǎn)速、文件板開度、液位、重量等。于PLC上被稱為Input register。
AO:AnalogOutput(模擬輸出,保持寄存器),一個地址16位數(shù)據(jù),用戶可以寫,也可以回讀,以16 bits integer表示一個數(shù)值,用來輸出控制信號的數(shù)值,例如:溫度、流量、速度、轉(zhuǎn)速、文件板開度、飼料量等設(shè)定值。于PLC上被稱為Output register、Holding register。
