發(fā)布時間:2019-07-21 來源:眾智博遠
實現CP341作Modbus主站的通信程序是“P_SND_RK”FB8負責發(fā)送控制字。編程如下:
FB8參數說明表格1。
SF
‘S’為發(fā)送,此處必須為大寫的‘S’
LADDR
硬件組態(tài)中的起始邏輯地址,本例中為272
REQ
發(fā)送數據觸發(fā)位,上升沿觸發(fā),本例中為M0.5,以1s為周期的脈沖信號
DB_NO
發(fā)送數據塊號,本例中為1
DBB_NO
發(fā)送數據的起始地址,本例中為0
LEN
發(fā)送數據的長度,本例中暫時為6
R_TYP
‘X’為擴展的數據塊,此處必須為大寫的‘X’
R
取消通信,本例始終為初始值FALSE
DONE
發(fā)送完成位,無故障發(fā)送完成后為true,M100.0
ERROR
錯誤位,為true說明有錯誤,M100.1
STATUS
狀態(tài)字,標識錯誤代碼,查看Modbus Master和CP341手冊
其它參數
查看在線幫助
表 1
IA&DT
其中創(chuàng)建發(fā)送數據塊DB1結構如圖10所示:
圖10 發(fā)送DB塊源區(qū)域結構
創(chuàng)建的發(fā)送數據塊DB1,至少要有6個字節(jié)的長度,后面根據功能碼的不同,所需長度不同,建議發(fā)送數據塊創(chuàng)建的長度長一些。以上圖為例6個字節(jié)Address為所通訊對象的Modbus地址為1,code為功能碼FC03,所讀對象寄存器的起始地址為0,所讀寄存器的數量為4,其中一個寄存器為兩個字節(jié)。
此處有幾個注意事項:
1) R_TYP必須為大寫的‘X’,
為小寫"x"時,CP341 作為Modbus master時,調用FB8的狀態(tài)字顯示為 "0E4F" 錯誤。注意R_TYP必須為大寫。且對于R_TYP可以寫的值如下:
’D’ DB 區(qū)’X’ DX 區(qū),extended data block ’E’ I 區(qū)’A’ Q 區(qū) ’M’ M 區(qū) ’T’ T 區(qū) ’C’ C 區(qū)
2) LEN的長度要根據通信所需功能碼來針對填寫,
如下表所示
“P_RCV_RK”FB7用于接收通信數據。編程如圖11所示:
FB7參數說明表格3
LADDR
硬件組態(tài)中的起始邏輯地址,本例中為272
DB_NO
接收數據塊號,本例中為DB2
DBB_NO
接收數據的起始地址,本例中默認為0
LEN
接收數據的長度反饋
EN_R
使能接收位,本例中始終為TURE
R
取消通信,本例始終為初始值FALSE
NDR
接收完成位,無故障接收完成后為true
ERROR
錯誤位,為true說明有錯誤
STATUS
狀態(tài)字,標識錯誤代碼,查看Modbus Master和CP341手冊
其它參數
查看在線幫助