在哪里结束RCV指令

我的问题与找答案中“自由口通讯RCV指令不结束?”的问题基本一样,这个问题的答案是通过复位sm86.7和执行RCV指令可以结束RCV指令,但没有说明是在哪里执行这两段代码?是在接收结束中断子程序还是在主程序?另外,我还想知道在smb87中设置了超时及其smw92中设置了超时时间后,在接收超时之后,是否进入接收结束中断。我在接收结束中断子程序中运用了复位sm86.7和执行了RCV指令,但没有效果。所以才想要知道究竟在哪里执行这两条指令才能结束RCV指令,实现接收超时退出RCV?
需要说明的是,不希望通过在发送结束中断程序中启动定时中断的方式来判断接收超时,如果这样的话,我认为没有利用smb87本身所具有的这项功能。

问题补充:
针对yanxiao的回答3,由于超时没有产生接收结束中断,所以认为说使用RCV结束没有效果
针对回答4:通过设置smb87=16#BC和smw92=200,我认为已经符合自动结束条件,却没有触发接收结束中断

最佳答案

捣鼓了半天,版主在我之前回复了,那我省略一部分,补充个例子。

一般执行XMT后,在发送完成中断里执行RCV,同时启动定时中断或者启动定时器或者执行开始间隔时间BITIM,计时时间到复位使能位SM87.7/SM187.7,同时执行RCV,这样结束RCV

指令,说说两种常用的方法:
1 发送完成中断里执行RCV并连接定时中断,定时中断里执行如下程序:
 LD     SM0.0
 R      SM87.7, 1
 RCV    VB0, 0
 S      SM87.7, 1
 
 LD     SM0.0
 DTCH   10
 
 LD     SM0.0
 XMT    VB100, 0

2 发送完成中断里执行RCV并执行BITIM指令,主程序里执行结束RCV程序
发送完成中断:
LD     SM0.0                      
RCV    VB0, 0                     
S      M0.0, 1                     
BITIM  VD200  

主程序:
LD     M0.0                        
CITIM  VD200, AC0                 
AW>=   AC0, 550                 //大于550毫秒 
R      SM87.7, 1                    
RCV    VB0, 0
S      SM87.7, 1                   
R      M0.0, 1


用定时器也可以,方法和上面的差不多。

针对yanxiao的回答3,由于超时没有产生接收结束中断,所以认为说使用RCV结束没有效果
针对回答4:通过设置smb87=16#BC和smw92=200,我认为已经符合自动结束条件,却没有触发接收结束中断

答:只要符合自动结束条件(用指令显式结束RCV除外),都会触发接收结束中断,超时也不例外。

提问者对于答案的评价:
经过测试,终于弄明白符合自动结束条件,在这里指的是超时自动触发接收结束中断的关键,其实是smw92=0,smb87的il和c/m以及tmr必须置位,缺一不可。

专家置评

已阅,最佳答案正确。

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

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

相关推荐

  • 如何终止PTO脉冲的发送

    PTO多速控制中,如何在脉冲没有发送完之前停止发送脉冲?之后如何重头开始发送脉冲? 最佳答案 把smxx.7置0然后执行pls指令就会立即停止。 提问者对于答案的评价:正解! 专家…

    SIMATIC S7-200 2017年11月16日
  • s7-200PLC和数传电台通信能不能用PPI协议

    现有一台s7-200  cpu226PLC 要通过数传电台和wincc通信。请问能通过1、S7-200用PPI电缆接电台,另一端电台接PC机232串口…

    SIMATIC S7-200 2020年10月31日
  • plc实数类型的问题

    各位大神好,s7200双整数转换成实数,在状态表中当前值怎么显示为一长串数字,比如说双整数36转换为实数状态表显示+1108161331?而且我想把实数显示在TD400c上,显示的…

    SIMATIC S7-200 2017年11月20日
  • step 7-Micro/win 4.0 sp6 不能下装

    同样一段程序,当我把step 7-Micro/win 4.0 切换为英文的是后,不能下装,提示:A compile error&n…

    SIMATIC S7-200 2020年10月31日
  • 干扰抑制

    在西门子测温模块手册上的干扰抑制,共模抑制怎么理解,这些数据是怎样测得的 最佳答案 共模干扰,就是相线/中线与地线之间的电磁谐波所产生的干扰。抑制干扰,有接地、屏蔽和滤波三种途径。…

    SIMATIC S7-200 2017年7月26日
  • S7-200每秒自加1操作

    如题,我想做一个每秒自加1的运算,但是做了如下程序,发现LW1(IN_OUT)的值总是在0和1之间变化,有时候还会突然来个溢出变成-32xxx之类的数值。我也尝试了用自增INC_W…

    2021年7月5日
  • 还是cp243-1SF亮红灯问题

    cp243-1 SF一直亮红灯,但24v电源已经加载上。现在通过PLC-information查不到cp243-1的信息。并且通过以太网组态步骤也读取不了cp243-1的…

    SIMATIC S7-200 2021年7月4日
  • wincc那个版本以才上可以支持中文啊?高版本能向低版本兼容吗?

    我的PLC是314的.不知道用哪个版本的WINCC好?最好支持中文? 最佳答案 据我所知,WinCC 6.0 SP2以后都有相应的中文版本。现在最新的是WinC…

    SIMATIC S7-200 2021年7月5日
  • 谁有西门子200和ABB acs510通讯的程序啊 给我一份

    最好是完整的  好使的 最佳答案 现成的程序应该不好找,参考一下:《s7-200plc怎么和abb变频器acs510通讯》http://www.ad.sieme…

    SIMATIC S7-200 2020年10月31日
  • S7-200更换CPU的问题

    CPU226下带有模拟量模块,以太网通讯模块,程序里有PID调节程序,更换CPU后直接下载程序可以使用吗? 问题补充:是同一型号,有以太网模块也没事吗?里面的pid程序不需要从新做…

    SIMATIC S7-200 2018年1月1日