複数のUKFブロックの使用方法。

3 views (last 30 days)
Yudai Tanimura
Yudai Tanimura on 9 Nov 2021
Edited: Yudai Tanimura on 3 Feb 2022
質問事項:複数のUKFブロックを同時に使用する方法を教えてください。
背景:下記URLを参考に、UKFブロックを用いて直列電池中の電池一つ一つのSOC推定プログラムを構築中。
電池ごとにパラメータが異なるため、状態方程式等は電池ごとに設定。UKFブロックは電池ごとに設置。
問題:下記エラーが出る。
Data Store Memory のタグ 'x 'は、ブロック 'calc_batt/batt_2/SOC_KF/UKF_SOC/DataStoreMemory - x' とブロック 'calc_batt/batt_1/SOC_KF/UKF_SOC/DataStoreMemory - x' で使われています

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 9 Nov 2021
おっしゃるように複数のUKFブロックを以下のように作った所、問題なく実行できました。
「Unscented Kalman Filter」ブロックをコピーし、「Simulink Function - State Transition Function」と「Simulink Function - Measurement Function」もコピーして、コピーしたそれぞれのSimulink Functionの関数名を「Unscented Kalman Filter」ブロックのブロックパラメータに指定する。(以下の画像を参照)
この方法で問題ありませんでしょうか。
  4 Comments
Yudai Tanimura
Yudai Tanimura on 9 Nov 2021
Edited: Yudai Tanimura on 10 Nov 2021
Simulink FunctionブロックとUKFブロックは同じモデルファイルにあり、コピーと関数名変更以外は実施していません。
また、1つ目の回答と同様に同一フォルダにコピーした場合、および参考ファイルからUKFブロックをコピーし関数名を変更した場合、いずれも同一エラーが発生しました。
ですので、Simulink Functionブロックが原因であることは確定しました。
Yudai Tanimura
Yudai Tanimura on 3 Feb 2022
Edited: Yudai Tanimura on 3 Feb 2022
エラーが発生する2つのUKFブロックは、同一モデルファイルに存在します。関係性は、同一ディレクトリ内でコピーして変数変更したものです。マスク内を確認すると、Data Store Memoryのデータ名はコピー元と同じxでした。この方法は、最初の回答と同様かと思いますが、現状エラーは解消しません。
UKFブロックをコピーした場合に、Data Store Memoryのタグ重複エラーが発生する場合としない場合の違いが出現する点について、ご教示いただけますと幸いです。

Sign in to comment.

Categories

Find more on プログラムによるモデル編集 in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!