上位机与S7-200通信问题:
PLC通电向上位机发送QB0状态信息,产生发送结束中断事件9,在中断事件9中启动定时器中断和接收完成中断事件10,在定时器中断中检查上位机发送的信息,产生接收中断事件23,在接收中断程序中,把接收到的数据传输给QB0,并把QB0的状态发送给上位机。
但我的程序能接收到PLC数据,但数据不正确,QB0状态也没有变化。请高手帮我看看问题在哪?
主程序:
Network 1 // 网络标题
// 网络注释
LD SM0.7 //首次扫描
O SM0.1 //PLC进入运行模式时设置为自由口通信方式
EU
CALL SBR0
Network 2
LD SM0.7 //若转换到TERM模式,则设置为PPI协议
ED //上升沿监测
MOVB 16#08, SMB30 //设置为PPI协议
Network 3
LD SM0.0
MOVB QB0, VB201 //PLC输出状态在循环扫描时送到输出缓冲区
子程序:
Network 1
LD SM0.0
MOVB 16#09, SMB30
MOVB 16#B0, SMB87
MOVB 16#0A, SMB89
MOVW 100, SMW90
MOVB 1, SMB94
Network 2
LD SM0.0
MOVB QB0, VB201
XMT VB200, 0
ATCH INT1, 9
ATCH INT2, 10
ENI
中断23程序:
Network 1 // 网络标题
// 网络注释
LD SM0.0
MOVB VB300, QB0
DTCH 23 //读取接收的字符
DTCH 10 //禁用接收字符中断事件8
MOVB 1, VB200 //禁用定时中断事件10
MOVB QB0, VB201
XMT VB300, 0
ATCH INT1, 9 //选择端口0,执行发送指令
//启用发送结束中断9
中断9程序:
Network 1 // 网络标题
// 网络注释
LD SM0.0
DTCH 9 //禁用发送结束中断9
ATCH INT0, 23 //启用字符接收中断事件8
MOVB 255, SMB34
ATCH INT2, 10 //启用定时中断事件10
中断10程序:
Network 1 // 网络标题
// 网络注释
LD SM0.0
DTCH 23 //禁用字符接收终端事件8
DTCH 10 //禁用定时中断事件10
MOVB 1, VB200
MOVB QB0, VB201
XMT VB200, 0
//RCV VB200, 0
ATCH INT1, 9 //启用发送结束中断9
Network 2
LD SM0.0
RCV VB300, 0