技术论坛

关于数据计算结果

作者 主题
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
主题:【探讨】关于数据计算结果


只看楼主 楼主 2020-10-28 11:59:29

问题贴源自,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

至圣

经验值: 13020
发帖数: 1815
精华帖: 22
回复:关于数据计算结果


只看楼主 1楼 2020-10-28 17:59:15

前面的触点条件,以及程序所在的OB,以及局部变量有可能会出问题。


 
以下网友喜欢您的帖子:

  
版主

经验值: 25997
发帖数: 11809
精华帖: 43
回复:关于数据计算结果


只看楼主 2楼 2020-10-28 19:50:43

1、程序是有条件执行的,输入数据有变化,程序执行条件不符合,未执行,当然结果没变化;

2、输入、输出变化是由什么捕捉的?通过监控人工识别?那够快够好使吗?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:关于数据计算结果


只看楼主 楼主 3楼 2020-10-29 11:01:49

同时回复1楼和2楼:

注意,原程序看似有条件触发,我只是为了简化描述的问题,而使用M地址的。

注意问题的关键是VW140/VW142可以看到数据变化,而计算结果VD180/VD188且没有数据跟随变化。

原贴描述是在状态图标上,看到VW140/VW142在数据变化,而状态图表中VD180/VD188且没有变化,虽然这个变化是偶然性的。这个在找答案那里,网友自己已经排除VW140/VW142地址的重复使用问题。



 
以下网友喜欢您的帖子:

  
至圣

经验值: 67546
发帖数: 14783
精华帖: 100
回复:关于数据计算结果


只看楼主 4楼 2020-10-29 15:45:50

留意两个字眼。已变;未变。

两个字眼都是反应此段程序正在被调用。要是未被调用,那……是灰色的,并没有数值可供观察。这让事情变得更加迷雾层层。事主应该有解释的必要。究竟是从哪里看见变和未变?



 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:关于数据计算结果


只看楼主 楼主 5楼 2020-10-29 16:04:39
以下是引用芳季在2020-10-29 15:45:50的发言 >4楼

留意两个字眼。已变;未变。

两个字眼都是反应此段程序正在被调用。要是未被调用,那……是灰色的,并没有数值可供观察。这让事情变得更加迷雾层层。事主应该有解释的必要。究竟是从哪里看见变和未变?


是的。

  我也这样认为,原贴中的程序段排除地址重复使用外,不存在前面的数据有变化(已变),而后面的计算结果未变的现象。

注意,事主还一再强调是在状态图表监控,偶尔会发生这样的情况。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:关于数据计算结果


只看楼主 楼主 6楼 2020-10-29 16:21:55

我也仅仅停留在假设层面,如果这些数据转换指令在运行时有出错的可能,那么,程序这样的写法可能会造成描述的未变情况。但是,数据转换出错没有这个概率呀,所以,这个假设也是不存在的。







 
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:关于数据计算结果


只看楼主 7楼 2020-10-30 20:07:12

如果把M0.0换成M0.5,有可能会出现楼主你说的这种问题的。起码我接触过的就遇到3次了。

一般程序在公司测试好了,发货到现场接线调试,然后发现数值一直不变,在线查看状态就是输入改变了输出一直都不变,很无语的。

而且,SM0.5+P 后面的程序,偶尔也会发现不执行,感觉超无语。同一套程序,下载到几十个PLC,就一个PLC偶尔出问题.....让人抓狂的是PLC断电再上电又正常了.....完全是不知道是什么鬼怪附体印堂漆黑如墨了。


所以,现在写程序,能不用SM0.5+P就绝对不用;L区只要是用于整数操作就必须用符合编程并且严格控制数据类型,不能直接用LW、LD这样运算;能不用P、N边沿指令就绝不使用;ACn这些寄存器,绝不再用了,鬼知道编译软件会不会处理数据类型不匹配引发的错误....


至于老芳说的已变?未变?后面的指令有没有被调用?其实,很多不是每周期都执行的单周期调用都是看不到真实状态的。就好比我每0.5秒执行一个周期,然后软件在线时是看不到后面的指令变蓝色的,基本上都是灰色的,所以才郁闷。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1218
发帖数: 138
精华帖: 0
回复:关于数据计算结果


只看楼主 8楼 2021-10-28 08:24:06

会不会是这段程序是在子程序中,子程序条件调用,而整型数据在其他程序段已经有改变,但子程序未调用就不计算了。


行远自迩,登高自卑
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
关于数据计算结果
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。