Simulink ADD block keeps returning 255

3 ビュー (過去 30 日間)
Byron Piper
Byron Piper 2022 年 12 月 11 日
回答済み: Andy Bartlett 2022 年 12 月 13 日
So I have two inputs 'Pre-State' and 'Pre-Status'. The values going into the ADD block are '1' and '0' respectively, yet for some reason the ADD block keeps returning 255.
The ADD block is setup so that 'Pre-Status' is subtracting 'Pre-State'. So in theory, the output should be -1. Yet it keeps giving 255 for some reason.
  1 件のコメント
Fangjun Jiang
Fangjun Jiang 2022 年 12 月 12 日
Some settings are not right. You have to show it. I guess it is the data type of the output and the saturation flag.

サインインしてコメントする。

回答 (1 件)

Andy Bartlett
Andy Bartlett 2022 年 12 月 13 日
My guess is that Sum block's output data type is uint8, and the block is configured to wrap on integer overflows.
So the output would be module 2^8 of the "ideal output result".
idealOutput = -1
idealOutput = -1
actualOutput = mod(idealOutput, 256)
actualOutput = 255
We could also test this theory with Fixed-Point Designer fi objects.
nt = numerictype('uint8')
nt = DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 0
fiOutput = fi( idealOutput, nt, 'OverflowAction', 'Wrap', 'RoundingMethod', 'Floor')
fiOutput =
255 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 8 FractionLength: 0 RoundingMethod: Floor OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision

カテゴリ

Help Center および File ExchangeSources についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by