2012-11-26 63 views
3
建模滑塊元件

流變模型通常生成使用三個(或四個)基本元件,分別是:Modelica的 - 在OpenModelica

  • 彈簧(存在於Modelica.Mechanics.Translational.Components例如)。它的公式是f = c * (s_rel - s_rel0);

  • 阻尼(緩衝器)(也存在於Modelica.Mechanics.Translational.Components)。它的公式是f = d * v_rel;的線性減震器,一個可以很容易地修改模型的非線性阻尼器:f = d * v_rel^(1/n);

  • 滑塊,不存在(據我所知)在這個庫...這是方程式是abs(f)< = flim。不幸的是,我真的不明白我怎麼能寫出相應的Modelica模型...

我覺得這樣的模式應該擴展Modelica.Mechanics.Translational.Interfaces.PartialCompliant,但問題是,(flange_bflange_a之間測得的力)f應當它比flim ... 如果滑塊延伸PartialCompliant更大隻能修改,這意味着它已經按照公式flange_b.f = f;flange_a.f = -f; 添加公式f = if abs(f)>flim then sign(f)*flim else f;給我一個錯誤「的新型的獨立子集已不平衡的數方程和變量「,我真的無法解釋,即使我明白,如果abs(f)<=flim,公式f = f也沒用......

事實上,滑動部件不產生新的力量(就像春天呢,這取決於在其應變上,或者就像阻尼器那樣,取決於其應變率)。該力是滑塊元素的輸入,該元素有時會被修改(當此力大於元素允許的限制時)。這就是爲什麼我不明白我是否應該將此力定義爲輸入或輸出....

如果您有任何建議,我將不勝感激!謝謝

在前兩個評論之後,我決定添加一張照片,我希望能夠幫助你理解我試圖建模的行爲。 Different rheological elements 在左側,可以看到用於開發流變模型的四個要素:

  • 一個:所述彈簧
  • B:線性減振器(緩衝器)
  • C:非線性阻尼器
  • d:滑塊

在右邊,你可以看到我試圖重現行爲:a和b是兩個協會與彈簧和c和d分別是預期的應力/應變曲線。我試圖對同樣的行爲建模,除了我正在用力而不是壓力來思考。正如我在對Marco的回答的評論中所說的,曲線a提醒我二極管的行爲:

  • 如果施加在部件上的力小於滑動極限,則兩個凸緣之間沒有相對位移
  • 如果力變得大於滑動限值時,由系統發送的力等於限制且有凸緣
+0

在圖a的串聯連接中。在右側,滑塊,彈簧和力源的切割力相等。如果力源的力值超過「flim」值,則無法解決問題。良好的數字在這一點上必須失敗並指出問題。如果你想使它工作,你需要一些東西吞噬滑塊上的多餘力量。這可能是一個慣性力與滑塊(或彈簧)右端相連的質量塊。這樣就形成了一個朝向大慣性系統的力量旁路,其中滑塊也是固定的。 – Tobias

回答

1

幾個因素之間的相對位移: - 該力不是輸入和既不是輸出,但它只是添加到組件中以便定義的關係力如何在部件的兩個平移凸緣之間傳播。在處理非因果連接時,我認爲最好考慮一下組件的自由度,而不是輸入和輸出。在這種情況下,您有兩個連接器,並且獨立地在兩個框架中的哪一個框架上您將收到有關力的信息,您實現的公式將定義該信息將如何傳播到另一個框架。 - 我測試了這一點:

model slider 
    extends 
    Modelica.Mechanics.Translational.Interfaces.PartialCompliantWithRelativeStates; 
    parameter Real flim = 1; 
equation 
    f = if abs(f)>flim then sign(f)*flim else f; 
end slider; 

上Dymola的和它的作品。這是正確的modelica代碼,所以它應該也在OpenModelica中工作,我想不出它應該被看作是不平衡數學模型的原因。

我希望這有助於

馬爾科

+1

感謝Marco,你說得對,用這段代碼,我能夠模擬我的模型,這取決於我使用的是什麼樣的源(目前我可以給模型提供位移,但不是用力),以及我認爲這是問題所在。我認爲我的模型應該以某種方式表現爲二極管:如果施加的力小於允許的極限,則兩個法蘭之間沒有相對位移 - 當施加的力變得大於極限時,力傳輸到另一個法蘭等於這個極限,並且法蘭之間有一個相對位移 – bennhatton

2

我不能肯定,但我懷疑你真正想在這裏模式是庫侖摩擦力(即恆定的力量,一貫反對的方向運動)。如果是這樣,Modelica標準庫中已經有一個名爲MassWithStopAndFriction的組件,它可以模擬(以及其他幾種摩擦)。皺紋是它與慣性捆綁在一起。

如果您不想要慣性效應,可以將可能將設置爲零。我懷疑這可能會導致一個奇點。 可能可能會避免奇點的一種方法是「評估」參數(至少這是在命令行中將Evaluate平板設置爲true時,在Dymola中調用的參數)。沒有承諾這是否會起作用,因爲這種簡化是否可以妥善處理,取決於模型和工具。

如果庫倫摩擦是你想要的,而你真的不想慣性,並且上面的方法不起作用,那麼讓我知道,我想我可以創建一個簡單的模型來工作(只要你不'沒有慣性)。

+1

嗨邁克爾,非常感謝,其實你是對的!我在考慮將通常爲壓力定義的行爲轉化爲強制性的行爲,而我沒有設法這樣想,但是,是的,這只是「庫倫摩擦」! 你對第二點也是正確的:我不想要慣性,即使使用'm = 0'和'註解(Evaluate = true)',我也沒有設法做出正確的工作。我會試着看看定義「MassWithStopAndFriction」的代碼,看看我能否改寫類似但沒有慣性的東西,然後我會通知你。 – bennhatton

+0

再次嗨!自從我發佈最後一條消息已經很長時間了,但去年年底我一直很忙碌......不幸的是,我沒有設法模擬沒有慣性的摩擦。如果你有任何想法,我會大大的感謝你的幫助。 – bennhatton