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