找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
我理解的你是需要读数据,是定时读取,也就是轮询就可以了,但是写的是命令,是根据你的程序流程定的,不是要一直写入的,所以你这样就要区别对待了,你之所以一直写入数据,是因为你的写命令也在轮询里面,如果你要把写命令根据需要再去写,简单一点的是,如果你从站支持的话,举例子,01是启动命令,02是停止命令,00是空指令,那你可以是修改写命令的寄存器里的内容就可以,启动发送01,启动后就把命令寄存器的值改我00,这样你还可以使用轮询这中方式,前提是协议是定义好的,发送00不会报错。
如果这种方式不支持,那你就要改变逻辑了,就是在不需要发送写命令的时候,不要去执行写命令。如果还用你现在这个方式的话,就是在写命令前加条件,比如你写命令的时候,可以置1一个变量,比如Write1,将这个变量串在你的程序段6的Req引脚上,这样只有Write1为1是,轮询到这一步才会执行写命令。在程序段7中复位这个变量,表示当写命令成功后把Write1复位。当但不发送写命令的时候,那Write1为0,所以将不执行写命令,为了能跳转,在程序段7,把Write1以常闭形式,并联在M10.6下面,这样在没有写命令时,将自动跳转到第三步。
后面那个写命令以同样的方式处理即可!
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!