我的程序主要是完成在收到〈op〉字符后逐个接通q0.0到q0.3,并发送opend.然后接收到后,同时关闭q0.0到q0.3.并发送closed.在前两次输入〈op〉和〈cl〉后都可以正常运行,但是第三次输入〈op〉时就不能运行了。这是我的程序,请高手赐教。谢谢。
//
//MAIN 主程序
NETWORK 1 //首行扫描调用子程序0
LD SM0.1
CALL SBR_0
NETWORK 2 // M0.0上升延触发发送VB0(CLOSED)的条件
LD M0.0
EU
R SM87.7, 1
RCV VB100, 0
XMT VB0, 0
NETWORK 3 //M0.1上升延出发发送VB20(OPEND)的条件
LD M0.1
EU
R SM87.7, 1
RCV VB100, 0
XMT VB20, 0
NETWORK 4 // M0.3触发逐个开启Q0.0到Q0.3
LD M0.3
LD Q0.0
AN V2000.0
OLD
= Q0.0
TON T33, +50
NETWORK 5
LD T33
LD Q0.1
AN V2000.0
OLD
= Q0.1
TON T34, +50
NETWORK 6
LD T34
LD Q0.2
AN V2000.0
OLD
= Q0.2
TON T35, +50
NETWORK 7
LD T35
LD Q0.3
AN V2000.0
OLD
= Q0.3
TON T36, +50
NETWORK 8 //Q0.3开启后还原M0.3的触发条件 .
LD Q0.3 //同时触发发送条件M0.1
S M0.1, 1
R M0.3, 1
//
// 子程序0
NETWORK 1 //NETWORK TITLE (single line)
//
//NETWORK COMMENTS
//
LD SM0.0 //初始化通讯模式,
MOVB 16#09, SMB30
MOVB 16#C4, SMB87 //和接收信息模式
MOVB '>', SMB88
MOVW +5, SMW92
MOVB 10, SMB94
ATCH INT_0, 23
ATCH INT_1, 9
ENI
NETWORK 2 //接收信息到VB100
LD SM0.0
RCV VB100, 0
//INT_0 中断程序0
NETWORK 1 //NETWORK TITLE (single line)
//
//NETWORK COMMENTS
//
LDB= VB101, '>' //接收完成判断
LPS
AB= VB102, 'O' //接收是OP触发M0.3
AB= VB103, 'P' //
S M0.3, 1
LPP
AB= VB102, 'C' //接收是CL触发M0.0
AB= VB103, 'L' //
= V2000.0
S M0.0, 1
//INT_1 中断程序1
NETWORK 1
//发送VB0(CLOSED)完成
LD M0.0 //转换为接收方式
S SM87.7, 1
RCV VB100, 0
R M0.1, 1
NETWORK 2
//每次发送完成清空接受缓冲区
LD SM0.0
FILL +0, VW100, 10
NETWORK 3
LD M0.1 // 发送VB20(OPEND)完成
//转换为接收方式
S SM87.7, 1
RCV VB100, 0
R M0.1, 1
VB0 和VB20 我是用DATA BLOCK 定义的
VB0 7 //7个字符
VB1 'CLOSED' //要发送的信息
VB7 16#0D // 回车结束
VB20 7
VB21 'OPENED'
VB27 16#0D