復雜產品通常涉及機械、控制、電子、液壓、氣動和軟件等多學科領域,其設計過程需要進行仿真,以滿足對成本、質量、性能等的要求。目前各個學科和領域都已經有了比較成熟的仿真軟件,但大部分仿真軟件僅適用於本學科領域,並在模型表述中采用自己專門的格式,而復雜產品的整體性能需要多個領域仿真軟件的協同仿真,需要在多個仿真軟件間進行大量的數據交換,並進行系統層面上的建模,單領域仿真建模工具很難滿足要求。Modelica語言就是在這一背景下推出的一種面向對象的非因果關系的仿真建模語言。它的目的是為動態系統建立一種標准的基於方程模型的仿真語言,使得仿真建模與具體的仿真工具分離,實現仿真建模的標准化。
用Modelica語言建模可以采用兩種方式,一種是使用圖形建模工具,通過拖放模型庫中的標准部件、繪制部件間的連接、給出部件的參數,來建立系統的模型組成。另一種方式是用Modelica語言的文本方式。
求解方程時不需考慮信號的傳輸方向,因此不必像其他仿真軟件那樣分析模塊間的因果關系,大大降低了建模的難度,這與Simulink不同,Simulink本質上是一種賦值運算,由其方框圖描述的系統是因果的

下面是一個RLC 電路圖,要仿真電阻兩端電壓隨時間變化的暫態過程。

OpenModelica是一個開源的基於Modelica語言的建模和仿真環境,用於工業界和學術界研究。長期由非贏利組織Open Source Modelica Consortium (OSMC) 開發。在OpenModelica中新建一個類,命名為RLC1,在庫中選擇Electrical/Basic/Analog中的電容、電阻、電感以及大地模塊和Source中的恆定電壓源模塊,將其拖入組件視圖中,設定好參數后,將其連接。


設置仿真時間為1s,然后開始仿真,輸出曲線如下圖所示。

以電阻兩端電壓Uo作為輸出,根據電阻、電容、電感的特性和基爾霍夫電壓定律,可以列出系統的2階微分方程:

$$LC\frac{d^2u_0}{dt^2}+\frac{L}{R} \frac{du_0}{dt}+u_0=u_i$$
則系統傳遞函數為:
$$\frac{U_o(s)}{U_i(s)}=\frac{1}{LCs^2+\frac{L}{R} s+1}$$
在MATLAB/Simulink中仿真二階系統的階躍響應

可以得到相同的結果:

參考:
