累加器有时也需要转换数据类型.docx

上传人:PIYPING 文档编号:11547025 上传时间:2021-08-23 格式:DOCX 页数:3 大小:93.25KB
返回 下载 相关 举报
累加器有时也需要转换数据类型.docx_第1页
第1页 / 共3页
累加器有时也需要转换数据类型.docx_第2页
第2页 / 共3页
累加器有时也需要转换数据类型.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《累加器有时也需要转换数据类型.docx》由会员分享,可在线阅读,更多相关《累加器有时也需要转换数据类型.docx(3页珍藏版)》请在三一文库上搜索。

1、累加器有时也需要转换数据类型众所周知,S7-200的累加器可以象V存储器那样使用。它可以存储8位、16位和32位的数据,而且不用进行数据转换就可以变换数据类型,用来保存运算的中间结果特别方便。这里的“不用进行数据转换就可以变换数据类型”是有条件的,即累加器所存数据不能超出它已定义(刚存入)的数据类型的长度。否则,在运行程序时会出错。试验程序如下所述。下面这段程序是用模拟电位器POT0的SMB28代替模拟量输入AIW0,以方便在办公室调试程序,目的是SMB28乘125,得到一个0至32000(实际是31875)的整数,很明显SMB28送入AC0后,AC0即被定义成字节,用MUL_I指令让AC0再

2、乘125并存入AC0,MUL_I中AC0数据类型已不是字节,而是整数,按“不用进行数据转换就可以变换数据类型”的说法是合理的。编译、下载均成功。在实际运行时问题来了,在SMB28等于0、1和2时运行正常,只要大于2,程序就报警,实际上这时的AC0的值已大于一个字节。由此可见上图中三个AC0的数据类型都是字节,只是在MUL_I指令中把它作为名义上的整数类型,一旦超出字节范围就会出错。下面程序是用SMB28乘5,更能看出问题所在。当SMB28=48时,运行正常。当SMB28=54时,AC0=270255,运行出错。 为了解决问题,在原程序中插入B_I指令,把字节AC0转换成整数AC0,即可正常运行。 当然,如果用VW10替换原程序的AC0作为中间变量,程序就能正常运行。也更简单,程序如下: 此文是本人在做PID控制中总结出来的,关于累加器应用的一个注意事项。希望大家参与讨论。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1