签到有奖
消息提醒
西门子商城
点击复制链接
关注该帖后,有多人参加探讨会对您通知与提示!
帖子
精华
被关注
论坛等级:至圣
注册时间:2007-05-30
钻石 如何晋级?
发布于 2021-12-11 00:44:19
19楼
这样会不会把本来是1的上次输出, 给置0了。也有问题。
还是要按照规矩, 用in-out。
引用3楼详细内容:
刚刚还在一个帖子中向Zane老师求教S/R指令为什么要慎用,现在貌似有那么一点点明白了。
S/R指令虽然可以实现起保停,但是与真正的起保停是有区别的。
S/R指令可以保持原有状态的,但是线圈(就是输出指令),每个扫描周期都会把他前面的逻辑结果输出。
楼主在子程序中用了S/R指令,而子程序是共用L区的64个字节(也有说:只要扫描周期扫到被调用的子程序,系统就会自动给其调拨一个L区),所以这64个字节是什么状态,是无法确定的。如果子程序中的S/R指令不能执行,则S/R指令所对应的局部变量的状态是无法确定的,所以也就有了楼主说的:在跳过S/R指令时,输出其实不一定是False,因此也就有了对于OUT变量的使用,需要先赋值的说法。
比如楼主给出的子程序,如果S/R指令之前,先给bq_1写个“0”,可能就不会有啥错误了。
感谢冯老师的指正,的确当时想的太简单了。
请填写推广理由:
【机械制造/项目型工程】最新软硬件产品与解决方案请您查收!
助你技有所长,论有所获
首次发帖探讨工控技术话题 立获新人礼包,100中奖哦! (包含周边、书籍、兑奖西币)
共有9489条技术帖
恭喜,你发布的帖子
快扫描右侧二维码晒一晒吧!
再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!
分享
只看 楼主
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!