技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 技成百科 > 关于累加器的问题

关于累加器的问题

刘玉蓉 发布于2014-09-18 17:19 1 0 标签:

请问累加器记录的是32位吗?我用条指令将P##TABLE送给累加器1,第二条指令将累加器1中的数据传送到AR1,当#TABLE为DB4.DBW6时,累加器2 ACCU 2为4,累加器1 ACCU1为84000030,见图。参数类型pointer不是6个字节吗?为何通过这个程序试验得到的结果是累加器2记录的是Byte0和Byte1,而累加器1记录的是Byte2 Byte3 Byte4 Byte5.当超过32位的数值传给累加器的时候,累加器应如何记录,当小于32位的数值的时候累加器又应该如何记录。我想说的是我的#TABLE数据类型是pointer,见图,所以应该是6个字节。为何累加器1得到的是Byte2 Byte3 Byte4 Byte5的数值,累加器2得到的是Byte0和Byte1的数据。而不是累加器1得到的是Byte4 Byte5,累加器2得到的是Byte0 Byte1 Byte2 Byte3的数据呢?


图片说明: 1,累加器  

佳答案

对于FC的类型为Pointer的参数,在块调用时先通过累加器把Pointer类型数据的6个字节转移到V区(上一层程序的本地数据,如果是OB1调用的这个FC,那么就是处于OB1的L区),所以你看到累加器1的内容是后4个字节的区域地址,累加器2的内容是前两个字节的DB号,你的断点设置在条语句,程序执行到断点时,条语句还没有被执行,累加器的值和后面的代码没有关系,L  P##TABEL这条语句是把变量TABEL的地址装载到累加器1,如果里监控后面的,就可以发现这个地址的区域代码是87,也就是V区,这个参数的6个字节的值就被放在这个地址开始的6个字节。
累加器是32位的不可能装载超过32位的数据。
至于你后面说的
“为何累加器1得到的是Byte2 Byte3 Byte4 Byte5的数值,累加器2得到的是Byte0和Byte1的数据。而不是累加器1得到的是Byte4 Byte5,累加器2得到的是Byte0 Byte1 Byte2 Byte3的数据呢?”
这个只有软件的开发者知道的为什么这么做,这个不是我们需要关心的,因为只是累加器在块调用时被系统使用了,其值我们不会用到,主要是程序在断点处的语句并没有被执行,你可能没注意到而产生误解。

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签