MAIN:
LD SM0.1
MOVB XXX , SMB30 //根據(jù)和對方約定的波特率,字符格式等設(shè)定
MOVB 16#9C, SMB87 //允許接收信息,使用SMB90值檢察空閑狀態(tài),定時器是信息定時器 , 超過SMW92值停止接收
MOVW +80, SMW92 //根據(jù)報文長短,波特率及從站響應(yīng)的快慢設(shè)定,這個時間要小于接收中斷(INT3)里定時中斷的時間。
MOVW +0, SMW90
MOVB 200, SMB94 //SMW94 最大接收字符數(shù),這里無用,但必須要設(shè)置。
ENI
LD SM0.1
ATCH 接收:INT3, 9 //傳輸完成中斷
MOVB 150, SMB34
ATCH 發(fā)送:INT2, 10 //定時中斷
發(fā)送:
LD SM0.0
DTCH 10
XMT VB100, 0
接收:
LD SM0.0
RCV VB200, 0
MOVB 250, SMB34
ATCH 發(fā)送:INT2, 10
1 本程序只適用于單從站的問答式規(guī)約(包括MODBUS)。該程序為主站程序。
2 發(fā)送的數(shù)據(jù)放置在數(shù)據(jù)塊,比如讀取從站地址為16#12的寄存器的數(shù)據(jù)。校驗提前算好,減輕PLC負(fù)擔(dān)。
VB100 16#8 16#12 16#03 16#00 16#0A 16#00 16#02 16#E6 16#AA
3 不用考慮起始字符 結(jié)束字符等等,以下是通訊流程圖,不論從站有無故障,詢問不受影響。
4 9600波特率,從站回復(fù)13字節(jié)
5 校驗程序可以放在主程序里,
有時間再發(fā)一個多從站的程序,程序大小和這個基本程序不變。