本人做了一个S7-200与仪表的自由口通讯,发现PLC发送了数据却不调用接受中断,请各位高手帮忙看看我的程序哪有问题。
以下是我的程序:
MAIN
Network 1 // 网络标题
// 开机延时启动通讯,并调用自由口初始化程序
LD SM0.1
CALL SBR0
S M10.0, 1
ENI
Network 2
//延时到后,取通讯限制,开始通讯
LD M10.0
TON T40, +50
A T40
R M10.0, 1
Network 3
//VW10累加到5时,向P0发送一次
LDW= VW0, VW40
AN M10.0
CALL XMT_0:SBR1Network 4
LDW= VW0, 10
MOVW 0, VW0
SBR0
Network 1
//p0:no,1start,8bit,1stop,9600,free
LD SM0.0
MOVB 16#09, SMB30 //p0:no,1start,8bit,1stop,9600,free
MOVB 16#A0, SMB87 //接收允许控制字
MOVB 16#0D, SMB89 //接收结束字符
MOVB 18, SMB94 //最多接收18个字节
MOVW 5, VW40
ENI
Network 2
LD SM0.0
MOVB 100, SMB34
ATCH DT_0:INT1, 10
SBR1 //发送数据
Network 0
LD SM0.0
MOVB 5, VB200
MOVB 16#02, VB201 //STX
MOVB 16#32, VB202 //2
MOVB 16#55, VB203 //U
MOVB 16#42, VB204 //B
MOVB 16#0D, VB205 //CR
MOVD &VB301, VD220 //接收指针指向VB300
ATCH RCV_0:INT0, 8 //连接接收中断
ENI
XMT VB200, 0 //发送数据到0口
SBR2//数据处理
Network 1//仪表回复的消息STX 2 U B 数据 CR
LDB= VB302, 16#32 //VB302的字符=2时
STR VB300, 4, VD330 //字符转为实数
INT0
Network 1
LD SM0.0
MOVB SMB2, *VD220
INCD VD220
MOVB SMB2, VB320
Network 2
LDB= SMB2, 16#0D //收到结束字符
CALL DATA_0:SBR2
INT1
LD SM0.0
INCW VW0