我想從更邏輯(或基於行爲)的角度而不是低級(電子)角度對Modelica(OpenModelica)中的一個非常簡單的嵌入式系統進行建模。對我來說主要的問題是,我以前從來沒有和Modelica一起工作過,而且我真的有困難去理解如何看待這些想法,並認爲它們是正確的。在Modelica中建模一個簡單的嵌入式系統
該系統應該是非常簡單的開始,它由一個通過總線與控制器連接的傳感器組成。系統的期望行爲應該是,傳感器定期生成值並通過中斷通知控制器。作爲回報的控制器應對該中斷作出反應並獲取該值。正如我已經提到的,這個例子的目的是首先掌握如何看待Modelica中的思想,並獲得一個初始(可能不是很有用)的工作示例,我可以迭代擴展到更復雜的工作示例。
這裏是我模仿到目前爲止系統:
傳感器型號:
model ES_Sensor
parameter Integer id = 1;
parameter Real frequency = 1.0;
Integer reg_temperature = 0;
ES_Interface interface;
algorithm
when sample(0, 1/frequency) then
reg_temperature := reg_temperature + 1;
interface.interrupt := 1;
end when;
when interface.address == id then
interface.data := reg_temperature;
end when;
end ES_Sensor;
接口連接器:
connector ES_Interface
flow Real dummy1;
flow Real dummy2;
flow Real dummy3;
Integer address = 0;
Integer data = 0;
Integer interrupt = 0;
end ES_Interface;
巴士模型:
model ES_Bus
ES_Interface master;
ES_Interface slave;
equation
master.data = slave.data;
master.address = slave.address;
master.interrupt = slave.interrupt;
end ES_Bus;
控制器型號:
model ES_Controller
ES_Interface interface1;
Integer reg_a = 0;
algorithm
when
interface1.interrupt == 1 then
interface1.interrupt := 0;
interface1.address := 1;
reg_a := interface1.data;
interface1.address := 0;
end when
end ES_Controller;
系統型號:
model Simple_System
ES_Sensor Sensor;
ES_Bus Bus;
equation
connect(Controller.interface1, Bus.master);
connect(Bus.slave, Sensor.interface);
end Simple_System;
如果我嘗試模擬 「Simple_System」 我基本上得到兩個錯誤。一個告訴我係統超過了規定(35個方程對26個變量),另一個說:「找到沒有時間相關變量的方程:Controller.interface1.interrupt = 0.0」。
第一個我明白,但我現在已經完全明白如何解決它。第二個我根本聽不懂。
任何幫助,將不勝感激!如果有人能夠至少推薦我一些有用的文獻,我也會很感激。
這對我來說很困惑。你基本上說,我的模型需要更多的方程,但錯誤信息清楚地說明了相反的情況。此外,我無法確定尚未由方程式描述的那些變量。我發現變量「Controller.reg_a」和「Sensor.reg_temperature」在公式部分中缺失,但根據我的理解,這些變量是「離散的」,因爲它們是Integer類型的,所以它們的值在事件之間保持不變。你能否給我舉個例子說明我可以添加到模型中的方程式? – Tru3m4n 2014-12-09 09:54:19