大家都知道S7-200的端口是半双工的RS485,它在接收状态是不能发送的,
现在有一个控制要求是PLC走自由口协议,一直处于接收状态,当收到下位机信号时,处理再先下位机发命令。
现在的问题是,当我端口处于接收状态时(即执行了RCV VB0 ,0)这时程序发现某样东西超标,要向这个下位机发消息,这时就碰上接收状态下要发送程序的情况。请问能不能通过复位什么标志位来禁止接收而执行发送,等发完了之后我再将端口处于接收。我本想通过清SM87.7来禁止接收,但发现不行。数据还是发不出来。
最佳答案
将接收使能为复位后再次执行RCV指令,将取消接收。
R SM87.7, 1
RCV VB0, 0
这样就取消接收了。
只改sm87.7的状态不行,还要在他后面加一个rcv指令,才能真正改变端口状态,PLS,HSC,RCV都是一样,改变了控制字节后要执行指令才生效。
看看这个问题:问题ID: 30600
还要注意的是不要在取消接收的那个周期就发送,关闭接收后,做个延时再XMT.
提问者对于答案的评价:
哈哈,谢谢,虽然问题提出来后就在一个下载的文件中找到了答案,但还是要感谢你!说对了不明白的地方。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc353958.html