签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
问题贴源自,http://www.ad.siemens.com.cn/service/answer/solved_241935_1076.html
有网友说他这个程序偶尔有输入数据变化,而运算结果没有跟着变化的情况。
由于程序的截图,我根据截图自己写了一个测试,没有遇到那位网友说的问题。
如果那位网友自己看到,可以在一下讨论。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1648252&b_id=64&s_id=0&num=8
前面的触点条件,以及程序所在的OB,以及局部变量有可能会出问题。
1、程序是有条件执行的,输入数据有变化,程序执行条件不符合,未执行,当然结果没变化;
2、输入、输出变化是由什么捕捉的?通过监控人工识别?那够快够好使吗?
同时回复1楼和2楼:
注意,原程序看似有条件触发,我只是为了简化描述的问题,而使用M地址的。
注意问题的关键是VW140/VW142可以看到数据变化,而计算结果VD180/VD188且没有数据跟随变化。
原贴描述是在状态图标上,看到VW140/VW142在数据变化,而状态图表中VD180/VD188且没有变化,虽然这个变化是偶然性的。这个在找答案那里,网友自己已经排除VW140/VW142地址的重复使用问题。
留意两个字眼。已变;未变。
两个字眼都是反应此段程序正在被调用。要是未被调用,那……是灰色的,并没有数值可供观察。这让事情变得更加迷雾层层。事主应该有解释的必要。究竟是从哪里看见变和未变?
是的。
我也这样认为,原贴中的程序段排除地址重复使用外,不存在前面的数据有变化(已变),而后面的计算结果未变的现象。
注意,事主还一再强调是在状态图表监控,偶尔会发生这样的情况。
我也仅仅停留在假设层面,如果这些数据转换指令在运行时有出错的可能,那么,程序这样的写法可能会造成描述的未变情况。但是,数据转换出错没有这个概率呀,所以,这个假设也是不存在的。
如果把M0.0换成M0.5,有可能会出现楼主你说的这种问题的。起码我接触过的就遇到3次了。
一般程序在公司测试好了,发货到现场接线调试,然后发现数值一直不变,在线查看状态就是输入改变了输出一直都不变,很无语的。
而且,SM0.5+P 后面的程序,偶尔也会发现不执行,感觉超无语。同一套程序,下载到几十个PLC,就一个PLC偶尔出问题.....让人抓狂的是PLC断电再上电又正常了.....完全是不知道是什么鬼怪附体印堂漆黑如墨了。
所以,现在写程序,能不用SM0.5+P就绝对不用;L区只要是用于整数操作就必须用符合编程并且严格控制数据类型,不能直接用LW、LD这样运算;能不用P、N边沿指令就绝不使用;ACn这些寄存器,绝不再用了,鬼知道编译软件会不会处理数据类型不匹配引发的错误....
至于老芳说的已变?未变?后面的指令有没有被调用?其实,很多不是每周期都执行的单周期调用都是看不到真实状态的。就好比我每0.5秒执行一个周期,然后软件在线时是看不到后面的指令变蓝色的,基本上都是灰色的,所以才郁闷。
会不会是这段程序是在子程序中,子程序条件调用,而整型数据在其他程序段已经有改变,但子程序未调用就不计算了。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录