Borrar filtros
Borrar filtros

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

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

Respuesta aceptada

Toshinobu Shintai
Toshinobu Shintai el 29 de Mayo de 2024 a las 0:53
Editada: Toshinobu Shintai el 29 de Mayo de 2024 a las 0:54
固定小数点のデータ型は、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 comentarios
takaka
takaka el 31 de Mayo de 2024 a las 7:43
度々申し訳ございません。本件解決できておらず、ご確認いただけますと幸いです。
"ONE"をconstantとしても、やはりdouble型と認識されてしまいます。
Toshinobu Shintai
Toshinobu Shintai el 31 de Mayo de 2024 a las 10:01
「cnt_numout」のサイズを-1ではなく、明確に1に設定してみてはどうでしょうか。
私のモデルでは、ここの指定を-1にすると、別のエラーですが、
型、実数/複素数のいずれかがモデル エクスプローラーで指定されていません。また、チャート内のこの変数には値が完全に代入されていません。これを修正するには、次のいずれかを行います。
が出ました。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Simulink Function en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!