首页 > 其他 > 详细

-1.#IND解决方式

时间:2020-07-20 12:28:51      阅读:77      评论:0      收藏:0      [点我收藏+]

  首先,-1.#IND出现的原因是程序在做除法时出现除数为0的情况。如图1

 

技术分享图片

                                                                       图1

  从图1可以看到,这里有三行数学运算的代码,除数分别是变量Rated_Power_SUM、Rated_Power,第

三行与第二行的除数相同,最后运算结果储存在变量Set_Power等变量中。众所周知,在做除法运算时,除数不

能为0,所以在这三行代码中存在一个问题:那就是当系统运行时,若这两个除数变量的值为0,则最后运算的结

果是有问题的,会出现图2中的情况:

                   技术分享图片

                                                                       图2

  从图2可以看出,第一行代码的运算结果所储存的变量Set_Power显示的值为-1.#IND。

  如果把此变量显示在WINCC界面中,会显示如图3:

                                                  技术分享图片

                                                                       图3

  从图3可以看出,在WINCC的运行界面中的输入输出域之中都显示有感叹号,代表着数据异常或者通讯异常。

原因就是运算时除数出现为0的情况,导致最后的结果数据异常。

  那么应该怎么解决这个问题呢?

  我们可以从程序上解决,怎么解决呢?小编已更改完毕,在这里直接上图,如图4:

 

技术分享图片

                                                                       图4

  从图4可以看出,程序在原来的基础上增加了IF判断语句,判断的是下一行代码中的除数变量的值,当除数

变量的值不为0时,才允许继续进行下面的运算;若除数变量的值为0,则跳过这一段代码。若代码中的除数直接

是一个常量,则只需注意这常量不能赋值为0。很简单吧?最后附上更改代码的效果图:

                    技术分享图片

                                                                       图5         

                                                   技术分享图片      

                                                                       图6     

  从图5可以看出,除数变量已经不再显示-1.#IND,而是显示数字0;而图6可以看出WINCC界面中对应的输

入输出域显示也已经正常,不再显示感叹号,这也是我们想要的效果。

  总结而言,当除数用的是变量时,需要注意该变量不能为0。

  欢迎各位大神点评指教。                                        

 

-1.#IND解决方式

原文:https://www.cnblogs.com/renjieyi/p/13344035.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!