技术论坛

西门子PLC中的ACCU1/2累加器

作者 主题
游士

经验值: 285
发帖数: 19
精华帖: 0
主题:【探讨】西门子PLC中的ACCU1/2累加器


只看楼主 只看精华 楼主 2020-04-16 10:57:13

在1500的PLC中用STL编程时,产生了关于累加器的一个疑问。

如果使用L指令连续加载两个值,然后再进行加法操作,那么ACCU1中就存储了刚刚L加载的两个值,然后再将刚刚加载的两个值进行加法操作。

程序示例:

L 100

L 20

+I  

结果ACUU1中存的值为120.

  1. 那么ACCU1作为一个32位的累加器,到底能存多少个值呢?

  2. 当每次向ACCU1中存新值的时候,原来ACCU1中的值就存放到了ACCU2中,那么当ACCU1继续存放新值,那么原来ACCU2中的值去哪了呢?ACCU2保存上一次ACCU1的值有何作用呢?


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

  
重要声明:

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

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

奇侠

经验值: 6776
发帖数: 1106
精华帖: 1
回复:西门子PLC中的ACCU1/2累加器


只看楼主 只看精华 1楼 2020-04-16 11:53:08

 ACCU1作为一个32位的累加器,一次只能存一个值,值的类型可以不同(浮点或整型等)


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:西门子PLC中的ACCU1/2累加器


只看楼主 只看精华 2楼 2020-04-16 12:06:50

1500已经不推荐使用STL,以及使用累加器的概念,保留这个只是为了兼容之前的程序。

L 指令将操作数 放入到ACC1,而原来ACC1中的值被保存到ACC2,原来ACC2中的值被覆盖。

后续的+I指令是将两个ACCU的值相加再保存到ACC1中。

你有没有注意到STL指令只能有一个操作数?而加减乘除等操作都是需要2个操作数的,所以用2个ACCU保存两个操作数。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 13937
发帖数: 2008
精华帖: 43
回复:西门子PLC中的ACCU1/2累加器


只看楼主 只看精华 3楼 2020-09-18 08:39:49

你需要了解 每个指令 对累加器或者 其它寄存器的影响:
L 指令,把当前值,移入累加器1,累加器1的值进入累加器2;
+I 指令 把ACCU1-L 和ACCU2-L2值相加 ,值放在ACCU1-L

L 100  //100 进入ACCU1,ACCU1的值进入ACCU2

L 20   //20 进入ACCU1,100进入ACCU2

+I  //ACCU1-L+ACCU2-L,同时值存入ACCU1-L



人生就像一场旅行!
以下网友喜欢您的帖子:

  
至圣

经验值: 43587
发帖数: 15780
精华帖: 61
回复:西门子PLC中的ACCU1/2累加器


只看楼主 只看精华 4楼 2020-09-18 11:59:30

用1500就不要考虑累加器了,lad,scl,fbd等都不需要考虑累加器了。stl才需要用到累加器。400中有4个累加器,累加器是堆栈形式的,后入先出。


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

  
至圣

经验值: 28599
发帖数: 10824
精华帖: 131
回复:西门子PLC中的ACCU1/2累加器
精华帖精华帖星级2级


只看楼主 只看精华 5楼 2020-09-19 17:07:43

在STL语言里, 所有的加减乘除等数学运算的本质都是两个累加器在进行运算。 

比如你要做A/B


其实是ACC2/ACC1


这就是需要2个累加器的原因。 


而A是如何进入ACC2的?需要先进入1, 再进入2



微信公众号:PLC标准化编程,ZHO6371995
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
西门子PLC中的ACCU1/2累加器
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。