ADD指令问题

我的西门子1500程序里写了一段累加计数的程序,就是每一个信号上升沿加0.01,怎么加到262144就不再累加了,是怎么回事啊。ADD指令达到加上限了吗?

最佳答案

从你的表述看,内部计数是使用real(32位浮点数),加到一个大数后(262144),就进入到所谓的浮点数陷阱了。原因就是262144用浮点数表示后,其最小的有效位已经大于0.01了,导致后续累加数据不变。
请参考浮点数的国际标准。
可以在内部采用DINT数据格式,每次加1,输出结果=DINT*0.01。这样最大可以加到21474836.47
若还不够,可以采用64位的数据格式(Lint)。另外,使用64位双精度浮点数(Lreal),也可以延长进入陷阱的时间。S7-1500已经支持64位的数据了。
另外,用浮点数做累加,本身是一个不严谨的做法,这涉及到大数量级差的浮点数相加,从算法原理上,就是一个可能产生大误差的计算过程。

提问者对于答案的评价:
谢谢!答案非常满意!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc165557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月10日 下午12:19
下一篇 2017年6月10日

相关推荐

  • S7-1500 哪些模块具有诊断功能

    如果一个模块具有诊断能力,并且已为它启用了诊断中断,那么当它检测出其诊断状态发生变化时,它将发送一个诊断中断请求到CPU。我想知道S7-1500中哪些模块有诊断功能。 最佳答案 请…

    SIMATIC S7-1500 2017年6月5日
  • 博途V14精智屏软件包下载

    电脑里装了博途V13的精智屏软件包,现在装了V14,V14的设备里没有精智面板,谁能提供个V14精智屏软件包的下载地址?另外在西门子网站下载的“”WinCC Profes…

    SIMATIC S7-1500 2017年5月31日
  • 在博途中,怎样设置和更改PLC的ID地址

    我组态了硬件,在组态时,未设置PLC的ID地址,现在四台PLC通过以太网通讯,在调用读写块时,发现找不到各个PLC的ID地址,在博途软件中怎样设置和更改PLC的ID地址 最佳答案 …

    SIMATIC S7-1500 2017年6月3日
  • 请问s7-1500中的1515T CPU能带多少个PN V90?

    请问s7-1500中的1515T CPU最多能带多少个PN V90? 最佳答案 30,但CPU负荷很大,发送周期不能2ms. 提问者对于答案的评价:谢谢 专家置…

    SIMATIC S7-1500 2017年6月4日
  • TIA V13 安装剩余2分钟就不动了

    TIA V13 安装剩余2分钟就不动了,到底怎么回事 最佳答案 有报错么?传上画面看看!如果没有报错,可能由于你电脑系统中安装有其它西门子软件,比如STEP7(…

    SIMATIC S7-1500 2017年6月11日
  • s7-1500温度模块1路热电阻占用多少个通道

    s7-1500温度模块,如果接热电阻信号,一路热电阻需要占用2个通道吗 最佳答案 连接热电阻是的。参考,手册,https://cache.industry.siemens.com/…

    SIMATIC S7-1500 2017年5月31日
  • 设置系统时钟有几种方法?

    设置系统时钟有几种方法? 最佳答案 2种方法 :1.使用时钟同步服务器同步。2.通过程序调用系统时钟设定指令设置。 提问者对于答案的评价:补充:1、在1500CPU&nb…

    SIMATIC S7-1500 2017年6月8日
  • 博图无法解压安装

    窗口显示“正在解压软件包”就是不解压安装怎么办 最佳答案 待所有压缩包解压完成后,按照以下网址提供方法安装http://www.ad.siemens.com.cn/Service/…

    SIMATIC S7-1500 2017年6月10日
  • vb与cpu1517进行通讯

    想通过vb程序访问西门子1517将1517的数据通过vb存储到数据库,因为数据存储的间隔时10ms通过opc方式访问满足不了,vb的程序怎么编写,西门plc需要怎么设置 问题补充:…

    SIMATIC S7-1500 2017年6月1日
  • OPN

    我使用OPN指令打开一个全局数据块,编译之后结果显示“指令“OPN”和“OPNDI”只适用于具有一般访问的块”,请问这是为什么啊? 最佳答案 要保证这个块存在。db块建立时选择默认…

    SIMATIC S7-1500 2017年6月13日