技术论坛

【分享】加法指令,真的会用吗?

作者 主题
至圣

经验值: 11068
发帖数: 1222
精华帖: 35
主题:【分享】加法指令,真的会用吗?


只看楼主 楼主 2016-09-29 15:44:08

在最近的一个项目中,编程范了个错误,跟 大家分享一下:

先看程序 (2个累加程序 ):

程序运行一切正常,正常累计


M1.5为1S脉冲



但是运行了一段时间后,发现MW3000的累计可以正常累计到3769后清零,MD2000总是计不到123456,这个问题郁闷了很久。


后来查看了加法指令的帮助,发现了问题:






加一个16位数,范围为-32768 to 32767,问题找到,进行测试


把MD2000给定65530,累计到65536时,数据清零,看来就是加法指令没用好啊

把程序修改为以下可以解决:


 L     MD  2000
      +     L#1
      T     MD  2000


把1变为32位数


或者改为

   L     MD  2000
      L     1
      +D   
      T     MD  2000


看似一个小小的编程问题,说明了平时的编程不严谨,对SIEMENS的指令理解的还不够透彻。



Keep calm and carry on!!!
以下网友喜欢您的帖子:

  
重要声明:

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

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

奇侠

经验值: 9337
发帖数: 1238
精华帖: 13
回复:【分享】加法指令,真的会用吗?


只看楼主 1楼 2016-09-29 20:37:08

这是你的过失啊,手册或者帮助都有例程可以参考只是你发的帮助不全省略了下面的示例程序。


SIMATIC!
以下网友喜欢您的帖子:

  
版主

经验值: 76203
发帖数: 19145
精华帖: 378
回复:【分享】加法指令,真的会用吗?


只看楼主 2楼 2016-09-30 00:21:25

对于溢出处理,是计算机编程的基本功啊


Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
至圣

经验值: 11068
发帖数: 1222
精华帖: 35
回复:【分享】加法指令,真的会用吗?


只看楼主 楼主 4楼 2016-09-30 12:31:31
以下是引用Zane在2016-09-30 00:21:25的发言 >

对于溢出处理,是计算机编程的基本功啊

一般的想法是

LD 2000

+1

T LD 2000

是会加到2147483647再清零,因为是32位,但是就是这个+1没有定义为32位,所以才出现了这种情况。


Keep calm and carry on!!!
以下网友喜欢您的帖子:

  
至圣

经验值: 43587
发帖数: 15780
精华帖: 61
回复:【分享】加法指令,真的会用吗?


只看楼主 5楼 2016-09-30 14:26:17

+1和+L#1是两种不同的概念。前者是16位整数,后者是32位整数。L是long的缩写,即长整数。


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
至圣

经验值: 11068
发帖数: 1222
精华帖: 35
回复:【分享】加法指令,真的会用吗?


只看楼主 楼主 6楼 2016-09-30 15:20:12
以下是引用zhangli0在2016-09-30 14:26:17的发言 >5楼

+1和+L#1是两种不同的概念。前者是16位整数,后者是32位整数。L是long的缩写,即长整数。

是这样的,就是没有加上32位的1,当时也没多想,自以为只要加1就可以了,PLC会自动转换的


Keep calm and carry on!!!
以下网友喜欢您的帖子:

  
至圣

经验值: 11068
发帖数: 1222
精华帖: 35
回复:【分享】加法指令,真的会用吗?


只看楼主 楼主 7楼 2016-09-30 15:23:45
以下是引用KITT在2016-09-29 20:37:08的发言 >1楼

这是你的过失啊,手册或者帮助都有例程可以参考只是你发的帮助不全省略了下面的示例程序。

是有例子,是16位加16位的,和32位加32位的,我的问题是32位的存储器与16位的相加,结果变为了16位,我以为用了32位存储器就一定会是32位的结果,失误啊


Keep calm and carry on!!!
以下网友喜欢您的帖子:

  
侠圣

经验值: 3599
发帖数: 564
精华帖: 0
回复:【分享】加法指令,真的会用吗?


只看楼主 8楼 2016-09-30 20:38:23

用梯形图来编就不会出现这种失误。


学无止境
以下网友喜欢您的帖子:

  
游士

经验值: 156
发帖数: 41
精华帖: 0
回复:【分享】加法指令,真的会用吗?


只看楼主 9楼 2016-10-01 14:21:29

又是一个典型的应用经验,看似简单,实际上也是能力的体现。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 63470
发帖数: 12672
精华帖: 121
回复:【分享】加法指令,真的会用吗?


只看楼主 10楼 2016-10-04 15:55:14
以下是引用LJCLWYF在2016-09-30 20:38:23的发言 >8楼

用梯形图来编就不会出现这种失误。

跟编程方式无关.


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3599
发帖数: 564
精华帖: 0
回复:【分享】加法指令,真的会用吗?


只看楼主 11楼 2016-10-06 20:45:10

 梯形图对数据类型有严格的要求,而语句表对数据类型的要求不是很严格。在梯形图中想犯这个错误都不行。


学无止境
以下网友喜欢您的帖子:

  
游士

经验值: 219
发帖数: 45
精华帖: 0
回复:【分享】加法指令,真的会用吗?


只看楼主 12楼 2016-10-08 11:56:54

 不看手册的后果


 
以下网友喜欢您的帖子:

  
至圣

经验值: 69053
发帖数: 12266
精华帖: 59
回复:【分享】加法指令,真的会用吗?


只看楼主 13楼 2016-10-08 17:30:12

计数要考虑的上限~学计算机基础知识好像就有说了,对字节 字 双子 无符号 有符号都要注意~


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
侠士

经验值: 1154
发帖数: 232
精华帖: 0
回复:【分享】加法指令,真的会用吗?


只看楼主 14楼 2016-10-08 22:59:29

梯形图直接报错,输不进去。我v用的STEP7 v5.5版的,以前没怎么注意,现在用仿真调试程序时,发觉OB1里的程序怎么没有编译功能,直接保存,是软件的问题还是西门子软件本来就是这样的。不编译好像还是能够发现错误,当你要保存程序时若有错误会提示你。感觉好怪


雨过分洼种瓜,旱时饮水浇麻。
以下网友喜欢您的帖子:

  
侠圣

经验值: 2608
发帖数: 407
精华帖: 5
回复:【分享】加法指令,真的会用吗?


只看楼主 15楼 2016-10-09 08:20:02

相加的数数据类型要一致


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1008
发帖数: 168
精华帖: 0
回复:【分享】加法指令,真的会用吗?


只看楼主 16楼 2016-10-09 11:41:04

不错,学习了!


坚持就是胜利!付出就有回报!
以下网友喜欢您的帖子:

  
至圣

经验值: 11068
发帖数: 1222
精华帖: 35
回复:【分享】加法指令,真的会用吗?


只看楼主 楼主 18楼 2016-10-10 12:08:29

 

最主要是的还有一点:

当把MD2000给定超过65536时,MD2000还能继续往后累计,只要不为65536就可以正常累计;

测试的时候还是有疏漏。


Keep calm and carry on!!!
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
【分享】加法指令,真的会用吗?
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。