-1.#IND解决方式

  首先,-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。

  欢迎各位大神点评指教。                                        

 

posted @ 2020-07-20 11:35  renjieyi  阅读(4082)  评论(0编辑  收藏  举报