基本概念
在數字計算機仿真中,當輸入信號直接取決於輸出信號,同時輸出信號也直接取決於輸入信號時,由於數字計算的時序性,而出現的由於沒有輸入無法計算輸出,沒有輸出也無法得到輸入的“ 死鎖環” ,稱之為代數環。
輸出中的一部分反饋到輸入,或者說,輸入直接決定於輸出,這是反饋迴路的共同特點。代數環是一種特殊的反饋迴路,它的特殊之處就在於除了輸入直接決定於輸出外,輸出還直接決定於輸入,在這裡, “直接”二字很重要,它體現了代數環的實質,仿真計算中的“死鎖”就是由此產生的。
產生條件
如前所述,代數環是一種反饋迴路,但並非所有的反饋迴路都是代數環。代數環存在的充分必要條件是:存在一個閉合路徑,該閉合路徑中的每一個模組都是直通模組。所謂直通,指的是模組輸入中的一部分直接到達輸出。SimuLink的模組庫中提供的很多模組都是直通模組。
消除方法
代數環對應於一定的數學模型的形式(即隱函式的形式) ,如果能夠將原始的數學模型進行等價變換,得到顯函式形式,則按顯函式實現仿真模型,就可以消除代數環。
簡單的解決方式是在代數環迴路中增加一個memory模組(加memory模組的目的,相當於離散系統中加一個delay模組的功能是一樣的是為了避免具有代數環的模組,都在同一時刻有輸出,產生錯誤,讓各模組輸出的時間有一個延時,有前後順序,達到遵循仿真原理的要求,進而能輸出結果),或者增加一個微量延遲環(如1/(0.0001s+1)),最好放在輸出回傳時這個位置,這樣,由於時間的差異,會使仿真順利進行。
Simulink提供了一些專門手段來拆解代數環,例如代數約束模組(Algebraic Constraint),積分模組(以及離散積分模組)的狀態輸出端等。這些手段可以解決一些特定的代數環問題。下面舉一個利用積分模組的狀態輸出端的例子。
從積分模組的輸人連線埠到輸出連線埠是非直通的,但從積分模組的初始值輸人連線埠到輸出連線埠,以及從復位輸人連線埠到輸出連線埠卻都是直通的。因此,如果從積分模組的輸出連線埠引出的信號再經過一些直通模組後又反饋到積分模組的初始值輸人連線埠或者復位輸人連線埠,則構成一個代數環。為了解決這個問題,Simulink專門為積分模組設計了一個狀態連線埠(state port),其輸出與輸出連線埠完全相同,僅在內部計算的時序上有細微區別,而無論是從積分模組的初始值輸人連線埠還是從復位輸人連線埠到狀態連線埠都是非直通的。因此,當出現上述的代數環問題時,可以從積分模組的狀態連線埠引出信號。這樣,代數環就被拆解了。