制御モジュール電圧(OBDモード01 PID 42から)とバッテリー電圧は同じですか?そうでない場合、それらの間の関係は何ですか?車内でバッテリー電圧が最大14 Vになる可能性があるのに、(OBDモード01 PID 42からの)制御モジュール電圧の最大値が65.535 Vであるのはなぜですか?
制御モジュール電圧(OBDモード01 PID 42から)とバッテリー電圧は同じですか?そうでない場合、それらの間の関係は何ですか?車内でバッテリー電圧が最大14 Vになる可能性があるのに、(OBDモード01 PID 42からの)制御モジュール電圧の最大値が65.535 Vであるのはなぜですか?
回答:
車両にフラックスコンデンサーが装備されていない限り、バッテリー両端の 65 Vは少なすぎます。私の知る限り、大型トラックでさえその電圧をかけません。
65535は、最大の符号なし16ビット整数です。
見てみるとOBD-II SAE J1979に従ってOBD-II PIDで使用する式があるように見えwikiページ:
( A * 256 + B ) / 1000
Aは最初の2バイト、Bは次の2バイトです。AとBが両方とも255(バイナリでは11111111)の場合、最大可能電圧、65.535 Vが得られます
この結果がシミュレータからのものである場合、私はそこに責任をピン留めします。これが実際の車両からの信号である場合は、ECUの短絡をチェックします(ただし、わかりません)。異常な電圧の可能性としてそれを除外するために正しいアドレスをポーリングしていることを確認してください。
制御モジュール電圧は、ECUに供給される電圧です。バッテリーの電圧ではありませんが、通常、車両の走行中は十分に近い電圧です。
私が見ているのは、コンピューターが機能する方法の成果物にすぎないと思います。あなたが与える数はそれに小数が挿入されたちょうど65535です。これはコンピュータにとって特別な数値です。これは、16ビット(2バイト)の整数で保持できる最大値です。つまり、簡単に言えば、使用することに決めたコンピューター変数のために、その特定の測定に対して返すことができる最大値です。これはプログラミングの問題です-彼らは65ボルトを測定することを期待していません。これが正または負の値である可能性がある場合、最大値は32,767になることがあります。
あなたが多く見るかもしれないもう一つの数は255です。これは8ビット(シングルバイト)の符号なし数の最大値です。値が正または負の場合、最大値は127です。
エンジンが作動しているとき、電圧はオルタネーター/電圧レギュレーターの出力(バッテリー充電電圧でもあります)を追跡する必要があります。エンジンが作動していないときは、バッテリー電圧を追跡します。
電圧範囲が広い理由を推測することしかできません。未調整のオルタネーター出力は48Vを超える可能性があるため、有用な診断データとなる可能性があります。または、値の範囲が必要な範囲を超えているのは、デジタルエンコーディングのアーチファクトにすぎない場合もあります。
コントロールモジュール電圧は、バッテリー電圧からバッテリーとECU間の配線の電圧降下を差し引いたものです。65535は完全な16ビットレジスタです。ECUはおそらく整数で動作しますが(計算はより高速です)、OBDの計算の最終出力を「浮動小数点」または「実数」形式(小数点を使用できる数値)に変換します。
最大値が65535、6553.5、または655.35ではない理由は、小数点を左から2桁に配置することで、計算の整数段階で最大の精度が得られ、小数点の左側に十分な場所があり、すべての可能性のある値を表示できるためです。これにより、ECUは整数で小数点以下3桁まで機能します。おそらくバッテリー電圧にとってそれは重要ではありませんが、私はそれが原則だと思います。
65535未満の最大値を人為的に適用する機能はなかったかもしれませんが、たとえそれを行う利点がなかったとしても。