一、功能碼的含義
1.1功能碼決定了PLC(主站)是要讀取還是寫入目標設備(從站)的位或者字,例如我們的工程師拿到目標設備的通訊手冊后,手冊提供了目標設備的功能碼與MODBUS地址,那么我們?nèi)绾螌⑵滢D換成MASTER塊中需要添加的引腳數(shù)值,下面我們來詳細說明。
1.2、西門子1500、1200PLC的MASTER塊是通過MODE與DATA ADDR這兩個引腳的值共同決定功能碼的值是多少,MASTER塊中MODE值為0,是讀取目標設備MODBUS通訊地址;MODE值為1,是寫入目標設備MODBUS通訊地址。下面詳細介紹各個功能碼的含義。

二、讀位的功能碼
2.1、功能碼01,讀取目標設備輸出位的狀態(tài),可以理解為讀取的是目標設備的DO,即讀取的數(shù)據(jù)類型是布爾量,地址1~9999,此功能碼下圖紅框中每個請求的位數(shù)的含義是此功能碼可以連續(xù)讀取多個目標設備輸出位的狀態(tài)。
2.2、功能碼02,讀取目標設備輸入位的狀態(tài),可以理解為讀取的是目標設備的DI,即讀取的數(shù)據(jù)類型是布爾量,地址10001~19999,此功能碼下圖紅框中每個請求的位數(shù)的含義是此功能碼可以連續(xù)讀取多個目標設備輸入位的狀態(tài)。
三、讀字的功能碼
3.1、功能碼03,讀取目標設備輸出寄存器的狀態(tài),可以理解為讀取的是目標設備的AO,即讀取的數(shù)據(jù)類型是字,地址是40001~49999和400001~465535,此功能碼下圖紅框中每個請求的位數(shù)的含義是此功能碼可以連續(xù)讀取多個目標設備輸出寄存器的狀態(tài)。
3.2、功能碼04,讀取目標設備輸入寄存器的狀態(tài),可以理解為讀取的是目標設備的AI,即讀取的數(shù)據(jù)類型是字,地址是30001~39999,此功能碼下圖紅框中每個請求的位數(shù)的含義是此功能碼可以連續(xù)讀取多個目標設備輸入寄存器的狀態(tài)。
四、單次寫入功能碼
4.1、功能碼05,向目標設備寫入一個輸出位,即寫入的數(shù)據(jù)類型是布爾量,MODE值為1,地址為1~9999,此功能碼下圖紅框中每個請求的位數(shù)的含義是此功能碼一次只能向目標設備寫入一個輸出位。
4.2、功能碼06,向目標設備寫入一個保持寄存器,即寫入的數(shù)據(jù)類型是字,MODE值為1,地址為40001~49999和400001~465535,此功能碼下圖紅框中每個請求的位數(shù)的含義是此功能碼一次只能向目標設備寫入一個保持寄存器。
五、連續(xù)寫入功能碼
5.1、功能碼15,向目標設備寫入兩個或兩個以上輸出位時使用,寫入的數(shù)據(jù)類型是布爾量,MODE值為1,地址為1~9999,此功能碼下圖紅框中每個請求的位數(shù)的含義是此功能碼一次只能向目標設備寫入兩個或兩個以上輸出位。注意:不是所有目標設備都支持連續(xù)寫入。
5.2、功能碼16,向目標設備寫入兩個或兩個以上保持寄存器,即寫入的數(shù)據(jù)類型是字,MODE值為1,地址為40001~49999和400001~465535,此功能碼下圖紅框中每個請求的位數(shù)的含義是此功能碼一次只能向目標設備寫入兩個或兩個以上保持寄存器。
六、我們與現(xiàn)場設備進行MODBUS通訊時會遇見目標的MODBUS地址在程序中需要做加一或減一處理的問題,這與設備的MODBUS起始和PLC的MODBUS起始地址有關,下面分三種情況舉例說明。

6.1、地址一致:例如:設備MODBUS地址:1~9000;PLC MODBUS地址:40001~49999
這種情況你要讀取的設備目標地址與程序中紅框位置的地址一致。原因是設備MODBUS地址與PLC MODBUS地址起始地址一致,后續(xù)所有地址一一對應。
6.2、地址加一:例如:設備MODBUS地址:0~9000;PLC MODBUS地址:40001~49999
這種情況你要讀取的設備目標地址在程序中紅框位置地址需要加一,即設備目標地址為35則程序中紅框位置地址為36。原因是設備MODBUS起始地址為0,對應的PLC MODBUS起始地址是1,因此后續(xù)對應地址都需要加一。
6.3、地址減一:例如:設備MODBUS地址:1~9000;PLC MODBUS地址:40000~49999
這種情況你要讀取的設備目標地址在程序中紅框位置地址需要減一,即設備目標地址為35則程序中紅框位置地址為34。原因是設備MODBUS起始地址為1,對應的PLC MODBUS起始地址是0,因此后續(xù)對應地址都需要減一。