[Simulink] chart内でカウントアップを記述する方法

6 次查看(过去 30 天)
takaka
takaka 2024-5-24
Simulinkの"chart"(ステートマシン)内で、カウントアップを記述するにはどのようにすればよいでしょうか。
具体的には添付の図の通り、遷移の際にパラメータ"cnt"の値を"1"だけ増やす処理をどのように記載すればよいか教えていただきたいです。
図の状況で実行すると、
「タイプの不一致: embedded.fi {ufix4} ~= embedded.fi {ufix5}.」
というエラーが発生します。いま"cnt"はfixdt(0,4,0)型としているため、1を加算することで5bit幅に増加する可能性があるという理解ですが、その場合は5bit目を切り捨てる処理で構いません。
ご確認お願い致します。

采纳的回答

Toshinobu Shintai
Toshinobu Shintai 2024-5-29
编辑:Toshinobu Shintai 2024-5-29
固定小数点のデータ型は、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
cnt =
1 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 4 FractionLength: 0 RoundingMethod: Nearest OverflowAction: Saturate ProductMode: SpecifyPrecision ProductWordLength: 4 ProductFractionLength: 0 SumMode: SpecifyPrecision SumWordLength: 4 SumFractionLength: 0 CastBeforeSum: true
これをChartブロックの中で行う場合、fimathの定義をChartのプロパティインスペクターで指定する必要があります。
これにより、変数cntがfixdt(0,4,0)を維持できるかと思います。
1という数字の型指定については、上記のMATLABコマンドのように、fixdt(0,4,0)の1を意味する定数値を定義する方が手っ取り早いです。
  4 个评论
takaka
takaka 2024-5-31
度々申し訳ございません。本件解決できておらず、ご確認いただけますと幸いです。
"ONE"をconstantとしても、やはりdouble型と認識されてしまいます。
Toshinobu Shintai
Toshinobu Shintai 2024-5-31
「cnt_numout」のサイズを-1ではなく、明確に1に設定してみてはどうでしょうか。
私のモデルでは、ここの指定を-1にすると、別のエラーですが、
型、実数/複素数のいずれかがモデル エクスプローラーで指定されていません。また、チャート内のこの変数には値が完全に代入されていません。これを修正するには、次のいずれかを行います。
が出ました。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 ビッグ データの処理 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!