自由口通讯RCV不终止?

1. 一台电脑监控程序及状态表,另一台电脑用串口调试助手监控串口数据。电脑,电缆,串口等都没有问题。
2. 手册上的自由口通讯例程已经做通的。
3. 我现在要做一个自由口通讯,发送和接收均是 以7e开始 以5e结束。
4. 我的程序是首先PLC发送一个数据包,然后接收。
5.因为人为操作串口调试助手的发送数据,所以PLC可能接收数据比较困难,所以SWB90及SWB92均有设置。
6. 现在的问题好像是RCV一直占用了自由口,串口除了接收到PLC初始化发送的一次数据外,人为的定时发送数据都不行。
程序如下:
主程序
网络1
LD     SM0.1
MOVB   16#09, SMB30                //初始化自由口
MOVB   16#A2, SMB87                // 16#B2.16#B0 均设置过,没有成功
MOVB   16#7E, SMB88                //起始字符
MOVB   16#5E, SMB89                ///结束字符
MOVW   +5, SMW90                   ///空闲超过5毫秒
MOVW   15, SMW92                   ///计时器超过15毫秒
MOVB   100, SMB94                  ////最大接收100个字符
ATCH   INT_0:INT0, 23              /// 连接中断0到接收结束事件
ATCH   INT_2:INT2, 9               /// 连接中断2到发送结束事件
XMT    VB500, 0                    /// 发送数据
ENI
网络2     //  新加的程序,M0.5和SM0.5一样,只是是5秒触发。程序不起作用
LD     M0.5
EU
XMT    VB500, 0

INT_0    RCV指令接收完成中断

网络1 
 LD     SM0.0
XMT    VB500, 0
网络2
LD     SM0.0                 ///新加的程序,无效
CRETI          

INT_2  中断     XMT指令发送完成中断
LD     SM0.0
RCV    VB300, 0


根据以上是不是RCV指令一直占用了自由口?占用了为何结束不了。SMB87设置有问题?我的目的就是发送一个数据包,然后接收一个数据包。PLC没有发送数据包的时候不需要接收。
谢谢各位关注!

最佳答案

前段时间我还是在弄自由口通信,我得出的就是无论你是在执行接收还是在执行发送,设置SM87.7 这个位是很有必要的,发送信息的时候接收使能最好关闭,但是,在设置sm87.7以后,记得需要执行一次RCV或者是XMT指令。我这有一个自由口的文档,自己写的。是PLC作为主站,PC作为从站的。需要加QQ605711338传给你。

提问者对于答案的评价:
谢谢各位!
这个程序有点小问题,在之后提的问题已经说明了,就是在NOT指令后面加了RCV指令。
实际上SMB87经过了多种设置,SMB88,SMB89,SMW90,SMW92均有设置为多个不同数据,最终还是没有解决RCV指令自动停止接收的问题,是强制将SMB87等于0,这样停止接收的。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc311888.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日
下一篇 2020年11月1日

相关推荐