技术论坛

同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的

作者 主题
游士

经验值: 194
发帖数: 5
精华帖: 0
主题:【求助】同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 楼主 2022-05-16 17:24:56




同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传过来的






 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1762441&b_id=64&s_id=0&num=14

至圣

经验值: 24344
发帖数: 4846
精华帖: 6
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 1楼 2022-05-16 17:42:28

数据格式导致的?或以二进制的形式看看每个位是否有实质性的差异?


谨慎低调
以下网友喜欢您的帖子:

  
游侠

经验值: 357
发帖数: 63
精华帖: 0
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 2楼 2022-05-16 21:23:22

数据格式查看一下



 
以下网友喜欢您的帖子:

  
至圣

经验值: 17186
发帖数: 2946
精华帖: 6
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 3楼 2022-05-17 08:03:41

是不是在程序的第一行与第二行之间,触摸屏的VD164数值已经改变了,并且很多触摸屏有写优先功能,后台运行的中断程序在这两行之间改变了数值。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67523
发帖数: 14779
精华帖: 100
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 4楼 2022-05-17 08:22:30
以下是引用YUKJ在2022-05-17 08:03:41的发言 >3楼

是不是在程序的第一行与第二行之间,触摸屏的VD164数值已经改变了,并且很多触摸屏有写优先功能,后台运行的中断程序在这两行之间改变了数值。

每个周期都准时在这个时刻写?你这个假设不合理。

我确实也觉得奇怪。想不到任何合理的假设。两个网络之间还能有什么原因修改地址数值?而且是恒定的。

楼主,你这两个数值都是始终固定不变的吗?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 17186
发帖数: 2946
精华帖: 6
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 5楼 2022-05-17 10:10:26
以下是引用芳季在2022-05-17 08:22:30的发言 >4楼

每个周期都准时在这个时刻写?你这个假设不合理。

我确实也觉得奇怪。想不到任何合理的假设。

以下是引用YUKJ在2022-05-17 08:03:41的发言 >3楼:是不是在程序的第一...

引用3楼详细内容:

是不是在程序的第一行与第二行之间,触摸屏的VD164数值已经改变了,并且很多触摸屏有写优先功能,后台运行的中断程序在这两行之间改变了数值。

不可能每个周期都准时在这个时刻写。

即使触摸屏设置了定时写,但由于通讯所消耗的时间不会总是=扫描周期,通讯时间数值还不是绝对固定。扫描周期的长短也不是固定,所以通讯中断也不是固定发生在第一第二行之间。即使通讯中断随机发生在第一第二行之间造成数值不一样,但下一个扫描周期数值肯定会被刷新成为最后的数值。

但实实在在截图显示VD164 的数值不一致,那只能解释为下面a+b或者c碰巧发生在同一个扫描周期内。


碰巧的事情是会有的,无巧不成书。

a.  触摸屏的VD164改变,通讯中断随机发生在第一第二行之间

b.  截屏完成也与a碰巧处于同一个扫描周期内。

c.  楼主碰巧在这个扫描周期内做了停止运行操作,plc数值不再刷新。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7860
发帖数: 900
精华帖: 0
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 6楼 2022-05-17 14:03:08

 感觉是数据格式不一样。


 
以下网友喜欢您的帖子:

  
游士

经验值: 194
发帖数: 5
精华帖: 0
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 楼主 7楼 2022-05-17 17:01:27
以下是引用YUKJ在2022-05-17 10:10:26的发言 >5楼

不可能每个周期都准时在这个时刻写。

即使触摸屏设置了定时写,但由于通讯所消耗的时间不会总是=扫描周期,通讯时间数值还不是绝对固定。扫描周期的长短也不是固定,所以通讯中断也不是固定发生在第一第二行之间。即使通讯中断随机发生在第一第二行之间造成数值不一样,但下一个扫描周期数值肯定会被刷新成为最后的数值。

但实实在在截图显示VD164 的数值不一致,那只能解释为下面a+b或者c碰巧发生在同一个扫描周期内。


碰巧的事情是会有的,无巧不成书。

a.  触摸屏的VD164改变,通讯中断随机发生在第一第二行之间

b.  截屏完成也与a碰巧处于同一个扫描周期内。

c.  楼主碰巧在这个扫描周期内做了停止运行操作,plc数值不再刷新。

以下是引用芳季在2022-05-17 08:22:30的发言 >4楼:每个周期都准时在这...

引用4楼详细内容:

每个周期都准时在这个时刻写?你这个假设不合理。

我确实也觉得奇怪。想不到任何合理的假设。

以下是引用YUKJ在2022-05-17 08:03:41的发言 >3楼:是不是在程序的第一...

引用3楼详细内容:

是不是在程序的第一行与第二行之间,触摸屏的VD164数值已经改变了,并且很多触摸屏有写优先功能,后台运行的中断程序在这两行之间改变了数值。

设置完这个值是一直不变的,还发现VD164下面,VD168两个地方也不一致



 
以下网友喜欢您的帖子:

  
至圣

经验值: 19261
发帖数: 3857
精华帖: 1
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 8楼 2022-05-17 17:26:21

VD164,VD168有数据重叠。你交叉引用一下地址就知道了。


弘扬中华传统美德,无私奉献为根本,助人为乐为根源。
以下网友喜欢您的帖子:

  
至圣

经验值: 67523
发帖数: 14779
精华帖: 100
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 9楼 2022-05-19 14:09:59

再次下载过程序没有?

楼上,就算重叠了。但是在两个不一致之间没有任何程序给动过,是不会不一致的。监视是执行时的值,上一个执行时是什么值,下一个就是什么值。两个比较触点之间没有什么改写的指令了 。如果两个比较触点中间有一些再赋值的程序,那么肯定可以造成这个影响。

现在有吗?

没有。


 
以下网友喜欢您的帖子:

  
版主

经验值: 25990
发帖数: 11808
精华帖: 43
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 10楼 2022-05-20 07:53:43

初步看了下,一个值按浮点解释,另一个值按整数解释。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 8139
发帖数: 843
精华帖: 14
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 11楼 2022-05-20 09:26:21

楼主把程序发一下吧,大家帮你验证验证


13478405725
以下网友喜欢您的帖子:

  
侠士

经验值: 1320
发帖数: 172
精华帖: 0
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 12楼 2022-05-20 09:27:36
以下是引用yanxiao在2022-05-20 07:53:43的发言 >10楼

初步看了下,一个值按浮点解释,另一个值按整数解释。

版主可以看看 7L 的截图

T52前为true,说明 VD128 > VD168

T53前为false,说明 VD132 < VD168

但根据监控, VD128 = 2.9828,VD132 = 2.9975,得出 VD132 > VD128,

都是浮点比较,不管VD168显示格式是什么,值是多少,都上面结论矛盾了,嗯,前提是期间值没变的话;

-------------------

首先,VD168是HMI下置的,那HMI上设置的值是不是监控上显示的浮点数 -1.3422,还是别的;

通过监控表查看 VD168 对应的原始的4个16进制数,通过工具转换成浮点和整型,能不能和监控上的值对应;


如果猜测是通信不停写入导致的,那去掉 HMI 等带来干扰的通信;

如果猜测是程序问题,那把中断或者是子程序,通过 rtn / jmp / 使能false,或者干脆直接删除代码,只跑这一段,看看效果;

通过编程软件手动修改VD168的值,看看监控的值和手动下置的值能不能匹配上;

判断前,通过blkmov,把 VD168 赋值给某组寄存器,判断后,再赋值给另一组寄存器,两组寄存器查看16进制数,进行比对;


等等。。。


多找方法试试,先找到问题;


-----------

也许初始化下PLC,升级下固件,或者是换个PLC,就正常了呢



 
以下网友喜欢您的帖子:

  
至圣

经验值: 67523
发帖数: 14779
精华帖: 100
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 13楼 2022-05-20 14:13:56

楼主用过什么方法检查过些什么?


 
以下网友喜欢您的帖子:

  
游士

经验值: 194
发帖数: 5
精华帖: 0
回复:同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的


只看楼主 楼主 14楼 2022-05-22 11:46:24

找了个200smart,将程序下装到里面,在状态图表里直接给VD164赋值,程序段中的使用VD164地方的值一致,再测试占用VD164中的字节,使用VD162/VD167测试,最后VD164程序中的值是一致的。


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
同一个地址VD164,程序中两个地方的数值不一致,VD164是触摸屏传入的
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。