-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。

  歡迎各位大神點評指教。                                        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM