抖音粉丝群1
『7x24小时有问必答』

累加器AC0、AC1、AC2、AC3的使用陷阱

编程时很多人习惯使用累加器作为中间变量,比如要把一个BYTE变量值赋给一个子程序的DINT输入参数,通常需要INT、DINT两个中间变量地址,先把BYTE转换成INT,再把INT转换成DINT。如果使用累加器,可以把BYTE变量值MOVE_B给AC0,然后AC0直接赋值给DINT参数。好处是显而易见的。
但是当项目调用了外部库功能子程序的时候,使用累加器就要注意了。
看下面一个例子:
编写一个简单的使用了AC0的子程序,然后生成库,供其它项目调用。
1.png
在另外一个项目中调用该库子程序,然后再添加一段使用AC0作为中间变量计算三个数和的程序
2.png
编译下载运行后发现,1+2+3的结果赋值给VW10变成了94,多了88,而这个值就是调用的外部库子程序赋值给AC0的值。
3.png

综上所述,在调用了不确定是否使用了累加器的外部库子程序的项目中,要避免自己使用的累加器值受到库程序的干扰。
上面程序可以改写成:
4.png
运行结果正确
5.png



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码