[Simulink] chart内でカウントアップを記述する方法
3 views (last 30 days)
Show older comments
takaka
on 24 May 2024
Commented: Toshinobu Shintai
on 31 May 2024
Simulinkの"chart"(ステートマシン)内で、カウントアップを記述するにはどのようにすればよいでしょうか。
具体的には添付の図の通り、遷移の際にパラメータ"cnt"の値を"1"だけ増やす処理をどのように記載すればよいか教えていただきたいです。
図の状況で実行すると、
「タイプの不一致: embedded.fi {ufix4} ~= embedded.fi {ufix5}.」
というエラーが発生します。いま"cnt"はfixdt(0,4,0)型としているため、1を加算することで5bit幅に増加する可能性があるという理解ですが、その場合は5bit目を切り捨てる処理で構いません。
ご確認お願い致します。
0 Comments
Accepted Answer
Toshinobu Shintai
on 29 May 2024
Edited: Toshinobu Shintai
on 29 May 2024
固定小数点のデータ型は、fimathというオブジェクトを使って詳細にカスタマイズできます。
例えば、以下のようにすると、おっしゃっていることができると考えています。(MATLABコマンドの場合)
%%
F = fimath("ProductMode", 'SpecifyPrecision', ...
"ProductWordLength", 4, ...
"ProductFractionLength", 0, ...
"SumMode", 'SpecifyPrecision', ...
"SumWordLength", 4, ...
"SumFractionLength", 0);
%%
cnt = fi(0, 0, 4, 0);
ONE = fi(1, 0, 4, 0);
cnt.fimath = F;
ONE.fimath = F;
%%
cnt = cnt + ONE
これをChartブロックの中で行う場合、fimathの定義をChartのプロパティインスペクターで指定する必要があります。
これにより、変数cntがfixdt(0,4,0)を維持できるかと思います。
1という数字の型指定については、上記のMATLABコマンドのように、fixdt(0,4,0)の1を意味する定数値を定義する方が手っ取り早いです。
4 Comments
Toshinobu Shintai
on 31 May 2024
「cnt_numout」のサイズを-1ではなく、明確に1に設定してみてはどうでしょうか。
私のモデルでは、ここの指定を-1にすると、別のエラーですが、
型、実数/複素数のいずれかがモデル エクスプローラーで指定されていません。また、チャート内のこの変数には値が完全に代入されていません。これを修正するには、次のいずれかを行います。
が出ました。
More Answers (0)
See Also
Categories
Find more on ビッグ データの処理 in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!