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