签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
在1500的PLC中用STL编程时,产生了关于累加器的一个疑问。
如果使用L指令连续加载两个值,然后再进行加法操作,那么ACCU1中就存储了刚刚L加载的两个值,然后再将刚刚加载的两个值进行加法操作。
程序示例:
L 100
L 20
+I
结果ACUU1中存的值为120.
那么ACCU1作为一个32位的累加器,到底能存多少个值呢?
当每次向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
ACCU1作为一个32位的累加器,一次只能存一个值,值的类型可以不同(浮点或整型等)
1500已经不推荐使用STL,以及使用累加器的概念,保留这个只是为了兼容之前的程序。
L 指令将操作数 放入到ACC1,而原来ACC1中的值被保存到ACC2,原来ACC2中的值被覆盖。
后续的+I指令是将两个ACCU的值相加再保存到ACC1中。
你有没有注意到STL指令只能有一个操作数?而加减乘除等操作都是需要2个操作数的,所以用2个ACCU保存两个操作数。
你需要了解 每个指令 对累加器或者 其它寄存器的影响: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
用1500就不要考虑累加器了,lad,scl,fbd等都不需要考虑累加器了。stl才需要用到累加器。400中有4个累加器,累加器是堆栈形式的,后入先出。
在STL语言里, 所有的加减乘除等数学运算的本质都是两个累加器在进行运算。
比如你要做A/B
其实是ACC2/ACC1
这就是需要2个累加器的原因。
而A是如何进入ACC2的?需要先进入1, 再进入2
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录