西门子XMT和RCV通讯不正常时的问题
2019-12-23 浏览次数:187次
我用S7200和仪表通讯时。 用XMT和RCV做发送接收程序时,存在两个问题。
1.首先用m0.0沿触发发送指令,马上就会通过RCV指令收到一串数据。 接收完成后,我再人工触发一次m0.0发出XMT发送命令,如此循环,发送请求都是我人工写入m0.0的值产生的,怎样做到接收完成后自己触发发送命令呢?
2.如果我发送XMT命令时,首先忘记给发送缓冲区赋协议定义好的数值就发出了XMT命令,程序就再也通讯不上了。
2)首先建议你先定义好发送数据,确认后再发送。但当中间过程出现不可预见的问题时,可以利用通讯控制的几个标志位(如接收指令中的SM86.7/SM186.7 = 0),中断通讯内容,然后,等待确认完成后,再启动通讯。
zd19672.cn.b2b168.com/m/
1.首先用m0.0沿触发发送指令,马上就会通过RCV指令收到一串数据。 接收完成后,我再人工触发一次m0.0发出XMT发送命令,如此循环,发送请求都是我人工写入m0.0的值产生的,怎样做到接收完成后自己触发发送命令呢?
2.如果我发送XMT命令时,首先忘记给发送缓冲区赋协议定义好的数值就发出了XMT命令,程序就再也通讯不上了。
另外我如果把仪表的通讯线拔掉后再插回来,程序也一样在也通讯不上了。怎么办
1)这个可以。当发送完成后进入发送完成中断,在这个中断中编辑接收程序,当接收完成后进入接收完成中断,在这个中断中编辑发送指令,这样就循环了,如果需要跳出循环,调用一次中断分离就可以,当需要重新启动信号,再调用一次中断初始化就可以。
2)首先建议你先定义好发送数据,确认后再发送。但当中间过程出现不可预见的问题时,可以利用通讯控制的几个标志位(如接收指令中的SM86.7/SM186.7 = 0),中断通讯内容,然后,等待确认完成后,再启动通讯。
3)SM86.7=0后,启动定义才能生效!
zd19672.cn.b2b168.com/m/