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