modelica block 使ってみました

MBLOCK を使って \dot{y}(t)=-a y(t) のシミュレーションをしてみる。
パレット

ここでMBLOCK のパラメータは以下。

ブロックパラメータ

ブロックパラメータ


で、関数定義はつぎのようにしている。
関数定義

関数定義


y をブロックパラメータにすると y(start =1) のように初期値を書けない。
そこで、もうひとつの変数 y1 を使っている。この方法がスマートなのかどうかは分からない。

12件のフィードバック

  1. 小生、scilab5.4で上記の手順を追ったところ、コンソールにて以下のエラーになってしまい困っております。どうかお力を頂けないでしょうか?
    Main Modelica : /var/folders/n7/h8f7p4bj6kd8flgwxclkcr4c0000gn/T//SCI_TMP_330_hCiTy3/XX_im.mo

    Flat Modelica : /var/folders/n7/h8f7p4bj6kd8flgwxclkcr4c0000gn/T//SCI_TMP_330_hCiTy3/XX_imf.mo
    Simulation C code :/var/folders/n7/h8f7p4bj6kd8flgwxclkcr4c0000gn/T//SCI_TMP_330_hCiTy3/XX_im.c
    ローダファイルの生成
    Makefileの生成
    ilib_gen_Make: configure: Makefileを生成.

    !sorry compiling problem !
    ! !
    !mprintf: 入力引数 #1 の大きさが間違っています: !
    ! 文字列を指定してください. !

    xcos_simulate: ブロックパラメータを更新する際に
    エラーが発生しました.

    • ヴァージョンは scilab5.4 でしょうか?5.3.3 で試してみてください.
      xcos の modelica はまだあまり安定していないように思います.
      なお,私は文法エラーなら少しはわかりますが,内部エラーは力不足で全然わかりません.

  2. 小生5.3.3でOSがLIONでも使えるようにパッチをあてたつもりがさっぱりだったので、5.4が落ちていたのでダウンロードしたら使えたといういきさつです。

    なるほど、安定してないのですか。ヴァージョンも正式な公布ではないので、その説明だと納得です。

    うわさでは、正式に5.4がでるのも、もうすぐのようで、時に頼りたいと思います。

    適応制御のシミュレーションがしたいのですが、現在のところだとXcosを使わずにコマンド文で処理した方が楽かもしれないですね。

    Shuichiさん、ありがとうございました。

  3. 代わりに今、Windows7の方でダウンロードして見たいと思います。

  4. ウインドウズでやった結果が以下の通りにコンソールに表示されました。

    Main Modelica : C:\Users\TEMP\AppData\Local\Temp\SCI_TMP_2976_\X_im.mo

    Flat Modelica : C:\Users\TEMP\AppData\Local\Temp\SCI_TMP_2976_\X_imf.mo
    Simulation C code :C:\Users\TEMP\AppData\Local\Temp\SCI_TMP_2976_\X_im.c
    ローダファイルの生成
    Makefileの生成
    Makefile を実行中

    !sorry compiling problem !
    ! !
    !Fortran または C コンパイラが必要です。 !

    ???
    実行する環境が整ってないということでしょうか?

    • その通りです.
      Wndows だどフリーの、Vsual C++ のコンパイラをインストールすればOKです.

      • フリーのVisual Studio2010 ExpressのC++をインストールしたら、実行できました。有り難うございます。

  5. 以前お世話になってご無沙汰してます。
    小生、あれから目標である適応制御の一つであるLMSアルゴリズムをこのブロックで実装しようとしています。
    このPDFの資料を使って作ろうと考えているのですが

    クリックして21-09.pdfにアクセス

    ・scifuncブロックのほうを使った方がいいと思いますでしょうか?
    LMSアルゴリズムの場合、フィルター長や収束速度に関係する固定パラメータが有るので便利に変えれるようにModelicaのほうが良いかと思ったのです。
    ・あと、タイムステップごとに演算をしてほしいときにはこのPDFにも有るように
    if modulo(time,dt_obs) <= 1e-5 then 
    を入れるとどのブロックでもタイムステップごとに演算してくれると思いますが、あってますでしょうか?

    長文失礼しました。

    • scifunc のほうがかんたんだと思います.なお,scifunc でもパラメータを使用できます.
      タイムステップごとの演算は離散時間で演算すればよいと思います.

      • tがシミュレーション時間だと分かるのですが、initial discrete state を1にして離散時間にするのですか? そうしたらzとパラメータが出て来たのですが、調べてみるとz=1の一定値しか時間が変わっても変化しないのですが。
         離散時間の演算の方法はどのようにしたらいいのでしょうか?

      • Scilab デモの Xcos の Control Systems をご参照ください.

      •  カルマンフィルターだとデモをいじればいいのですが最終的にはLMSアルゴリズム以外にも、ニューラルネットワークを利用したセルフチューニングコントロールがしたいので・・・。
         scifuncでzをそのままの意味として解釈しても動かないので、何か別の方法でブロックが動くようにしてみたいと思います。

        何か、うまい方法があったら御教授願えますでしょうか。

        有り難うございます。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください