CANメッセージで受信したデータが327.67を超えると、-327.68に反転します。なぜこのようなことが起こるのでしょうか?
このようにオーバーフローする理由は、それが16ビットの符号付き数値だからです。Dashのすべてのチャンネルは符号付きなので、正しく動作させるには32ビット数値に強制的に変換する必要があります。これを行う方法は、CANメッセージ内でチャンネルがどこに位置しているかによって異なります。添付の画像には、「Fuel Used」チャンネルがどこに位置しているかに応じて、オフセット、長さ、マスク、除数の設定例を示しています。
注意すべき点として、チャンネルがバイト0に位置している場合、正しい除数を得るために高度な数式を使用する必要があります。この場合、除数は65536である必要がありますが、CANテンプレートの除数パラメータの最大値は32767です。
除数が必要な理由は、マスクがビットシフトではなくチャンネルに対する「AND」として機能するためです。
受信するチャンネルが符号付きかどうかに応じて、符号付き/符号なしのチェックボックスも正しく選択する必要があります。
コメント
0件のコメント
サインインしてコメントを残してください。