OBD 車両データ

互換性のある Bluetooth アダプターを介して、車両が提供する RPM、冷却水温度、油温、燃料、その他のパラメーターを読み取ります。この記事では、測定条件、パラメータ設定、データ更新、測定値を計測器やトリップで使用する際のルールについて説明します。

車両パラメータと読み取り結果

OBD は、車両コントローラーによって提供されるデータを読み取るために使用されます。 ECU とも呼ばれる車両コントローラーは、エンジン、トランスミッション、その他のシステムを担当します。 CapDrive はアダプターを通じてこれらのコントローラーにリクエストを送信し、受信したデータを読み取り値に変換します。

アプリにおける「パラメータ」とは、エンジン回転数(RPM)や冷却水温度、ステータスなど、読み取って表示するデータのことです。読み取りリクエスト、変換式、単位が保持されます。数値パラメーターは、数値、進行状況、または曲線に使用できます。ステータス パラメータは、テキスト マッピングを通じて D、P などとして表示できます。

たとえば、冷却水温度パラメータは、リクエスト 0105 を使用してデータ バイト A を取得し、A - 40 に従って変換することで取得できます。返されたバイトの 10 進数値が 123 の場合、結果は 83 °C になります。使用可能な読み取り値を取得するには、接続方法、リクエスト定義、および変換ルールが正しくなければなりません。

車両がサポートするパラメータは、モデル、年式、電源システム、およびコントローラーの状態によって異なります。車両によって実際に提供される値のみを読み取ることができ、名前や単位を変更しても車両自体のデータ能力は向上しません。

サポート範囲と利用条件

車両の OBD 接続には、ELM327 命令をサポートする CapDrive Plus、Bluetooth Low Energy (BLE) アダプター、および iPhone の Bluetooth 権限が必要です。クラシック Bluetooth アダプターと Wi-Fi アダプターは現在サポートされていません。

アダプターが車両の OBD インターフェイスに接続され、車両の必要に応じて電源がオンになった後でのみ、アプリは車両と通信できます。特定のパラメータでは、コントローラの電源が入っている、エンジンが作動している、対応するシステムが動作しているなど、車両が特定の状態にあることが必要です。アダプターの名前に「Bluetooth」が含まれているだけでは、アダプターが BLE および指令に準拠していることは証明されません。

OBD の読み取り値、最初に旅を始める必要はありません は、パラメーター リストまたはパラメーター エディターで表示およびテストできます。携帯電話によるトリップが開始されたかどうかは、車両が冷却液の温度、速度 (RPM)、およびその他のパラメーターを返すかどうかを決定するものではありません。

CapDrive は、16 進サービス 01、21、22 の読み取りリクエストの構成をサポートしています。通常の使用では、車両に適合するプリセットを使用できます。特定のリクエストアドレスと式は、プリセットまたは車両パラメータ定義の影響を受けます。

接続とデバイスの管理

エントリ: その他 (…) → 車両OBD接続。 デバイス ページには近くのアダプターと保存されたデバイスが表示され、アダプターのパラメーター構成はデバイス設定に保存されます。

初回接続と再接続

初めて接続するとき、アプリは Bluetooth 通信を確立し、アダプターを初期化し、車両プロトコルを識別し、サポートされている標準パラメーターを報告するために車両にクエリを実行します。成功すると、初期化可能な標準パラメータがデバイス リストに追加されます。標準パラメータが現状の値を持っているかどうかは、実際の読み取り結果によって異なります。

既存のデバイスが再接続すると、変更されたパラメータやアクティブにクリアされたリストを含む元の設定が引き続き使用されます。パラメータを削除した後、再接続してもパラメータは再度追加されません。補足的な測定値が必要な場合は、プリセットまたは新しいパラメータをインポートできます。

現在のデータソース

「現在のデバイス」とは、CapDrive に車両データを提供しているアダプターを指します。現在のデータ ソースとして使用できるデバイスは一度に 1 つだけです。各デバイスのパラメータと設定は個別に保存されます。別のデバイスに切り替える場合、前のデバイスのパラメータ参照は自動的には使用されません。

切断しても構成は保持されます。 デバイスを無視 はデバイスの構成とキャッシュを削除します。パラメータを移行する必要がある場合は、設定をエクスポートしてターゲット デバイスにインポートできます。カスタマイズされた機器の場合は、ターゲットデバイスのパラメータを再選択する必要があります。

パラメータのプリセットと設定ファイル

デフォルトは、すでに書き込まれたパラメータ読み取り設定のセットであるため、項目ごとにリクエストや式を入力する必要はありません。標準 OBD-II プリセットは標準パラメータを提供し、車両モデル プリセットは対応する車両モデルのパラメータ定義を提供します。モデルプリセットを選択するときは、モデル年式と電源バージョンを確認する必要があります。

指定したデバイスにインポートする

デバイスパラメータリストの一番下から設定ライブラリを開きます。アプリでダウンロードすると、デバイスのインポート インターフェイスが表示されます。ブラウザを通じて JSON ファイルをダウンロードすると、デバイス設定メニューで 設定を読み込む を選択できます。

インポート リストはデフォルトではオフになっており、明示的に選択されたパラメータのみが保存されます。まず名前と現在の読み方を確認し、次に右側の歯車から構成を確認できます。インポート インターフェイスを閉じても、未確認の下書きは保存されません。

重複と構成の更新

すでに同じ読み取り方法、デコード規則、出力単位を持つパラメータは重複としてマークされ、元のパラメータ識別子が引き続き使用されます。表示名を変更するだけでは、同じパラメータが新しい読み取り項目にはなりません。

リクエストでは、同じ応答で 2 つの温度など、複数のパラメータを指定できます。同じ名前が別のコントローラーや別の式から来ている場合もあるため、名前だけでは重複を判断できません。リクエストまたはデコード ルールが変更された項目は新しいパラメータとしてインポートされ、名前だけで古い項目が上書きされることはありません。

別のアダプタにインポートされると、ターゲット デバイス独自のパラメータ参照が確立されます。カスタム インストルメンテーションでは、入力バインディング内のターゲット デバイスの対応するパラメーターを再選択する必要があります。入力識別子を変更しないでください。コードを変更する必要はありません。

ファイルの制約

構成では JSON が使用され、形式識別子は capdrive.obd で、必要なアプリのバージョンは appVersion です。現在のアプリのバージョン番号はエクスポート時に書き込まれます。バージョンが不足している場合は、アップグレードするように求められます。 1 つのファイルには最大 5 つの MiB を含めることができ、最大 3,000 のパラメータを含めることができます。このファイルには読み取り設定が保存されますが、デバイスの Bluetooth 接続は含まれておらず、ターゲット車両ですべての項目が読み取り可能であることも保証されません。

OBD プリセット

パラメータの設定とデコード

パラメータの右側にある歯車を使用してエディタを開きます。以下、「車両から何を読み取るか→どのように変換するか→どのように妥当性を判断するか」の順にフィールドを説明します。 読み取りテスト は、エディターの現在の構成を使用して結果を確認します。 「保存」をクリックすると、変更内容がデバイスの保存された構成になります。

名前と更新頻度

この名前は車両パラメータを識別するために使用されます。内部識別子はアプリによって自動的に管理され、パラメーター エディターに入力されず、PID も要求されません。エクスポートされたプリセットには、デバイスのネイティブ識別子が含まれません。計器スクリプトは、独自に定義された入力識別子を使用し、入力バインディングを通じて車両パラメーターを選択します。

読み取り間隔(秒) は秒単位で入力され、範囲は 0.3–99999 です。たとえば、1 秒は、ターゲット クエリ間隔が 1 秒であることを意味します。実際の更新は、車両の応答、その他のリクエスト、および現在の読み取り要件にも影響されます。パラメータリストの表示項目、機器の選択、およびトリップデータの使用により、読み取り要件が作成されます。パラメータをインポートするだけでは、リスト全体が常に固定頻度でポーリングされるわけではありません。同じリクエストを共有するパラメータはレスポンスで再利用できます。

設定をリクエストする

分野 意味と記入方法
仕える 16 進数を使用したリクエストのカテゴリ。たとえば、0105 に対して要求されたサービスは 01 です。
PID このサービスのデータ項目番号。たとえば、0105 の PID は 05 です。 01 と 21 は 2 桁の PID を使用し、22 は 4 桁の PID を使用します。
リクエストCAN ID リクエストを受信する車両コントローラーのアドレス。空白のままにすると、プロトコルは機能アドレス指定を使用します。一致するデフォルトは通常、元のアドレスを保持する必要があります。
CAN ID フィルタリングへの応答 複数のコントローラーがデータを返すときに間違ったソースが選択されることを避けるために、どのコントローラーの応答が使用されるかを指定します。
拡張宛先アドレス、拡張受信アドレス 追加の通信アドレス設定を必要とする車両プロトコルで使用するための設定。
応答タイムアウトパラメータ アダプターによって使用される 16 進数のタイムアウト構成 (秒単位ではありません)。読み取り間隔とは異なる設定です。
カスタムCANフロー制御 対応する車両によって定義されている、特定のフロー制御構成を必要とするリクエストに使用されます。

変換式、バイトオーダー、単位

車両の応答は通常、データ バイトです。 A は最初のデータ バイトを表し、B は 2 番目のデータ バイトを表し、以降も同様にプロトコル ヘッダーを除きます。数式は、算術演算、ビット単位の演算、比較、論理演算、および条件式をサポートします。これは、任意の JavaScript 関数を呼び出すことができるスクリプトではありません。

たとえば、冷却水温度には A - 40 が使用されます。標準エンジン速度 (RPM) は (A * 256 + B) / 4 を使用します。 A = 26、B = 248 の場合、後者は 1726 rpm を取得します。パラメータの式は、リクエストによって返されるバイトの意味と一致している必要があります。

エンディアンネスは、マルチバイト フィールドの解釈方法を決定します。ビッグ エンディアンでは上位バイトが最初に配置され、リトル エンディアンでは下位バイトが最初に配置されます。アプリは設定された処理順序の後に数式を実行します。数式は再度バイトを繰り返し交換しないでください。

計算結果の単位と表示単位を区別する必要があります。カスタム単位名を変更するとラベルが変更されるだけで、式の値は変更されません。既存の標準物理量に対して互換性のある表示単位を選択すると、アプリで対応する変換を実行できます。変換が繰り返されないように、数式で使用されている元の単位を確認してください。

読み取り条件と有効範囲

構成 実際の効果
応答バイトの最小数 バイトが欠落している場合に計算が続行されないように、不十分な長さの戻り値を除外します。
読み取り条件 条件は、A != 0 などの生の応答バイトで評価されます。この読み取り値は、結果がゼロである場合、バイトが欠落している場合、または計算が失敗した場合には利用できません。
最小値、最大値 数値結果をクランプします。たとえば、有効範囲が 0 ~ 100 に設定されている場合、120 は 100 として表示されます。最大値は最小値より大きい必要があります。最小値が設定されていない場合は、ゼロとして扱われます。最小値を設定するだけでは、振幅は個別に制限されません。
実効下限値、実効上限値 無効な結果は、境界自体と同様に除外されます。たとえば、上限が 100 の場合、100 以上の結果は取得できません。

応答は、デコードされる前に長さと読み取り条件のチェックを通過します。まずデジタル結果が制限され、次に有効な上限と下限がチェックされます。有限値が取得できない場合、読み取り値は出力されません。読み取り条件では、バイトオーダー変換前の生の応答が使用されます。

テキストマッピング

テキスト マッピングでは、式によって取得された値がテキストとして表示されます (1 → D など)。キーは小数と負の数値をサポートしており、一意の有限値である必要があります。 1.5 と 1.50 は同じ項目を表します。リテラルは空の文字列にすることができます。

マッピングがヒットすると、対応する文字列が返されます。ヒットしなかった場合、一致しない場合は元の数値を返す がオンの場合は数値が返され、オフの場合は null が返されます。この一致しない設定は、マッピングが存在する場合に適用されます。ヒットしたテキストはデジタル クリッピングを実行し続けません。

したがって、同じパラメータが数値、​​テキスト、または null 値を返す可能性があり、インストルメンテーション コードはパラメータの実際の型を処理する必要があります。 「一部の値は表示できるが、他の値が消えてしまう」という状況が発生した場合は、マッピングが一致しているか、設定が一致していないかを確認する必要があります。

保存とエラーメッセージ

無効な構成にはフィールドと理由が示され、修正後に保存またはテストされます。サービス 01 および 21 の PID は 2 桁の 16 進数、22 は 4 桁です。 CAN ID は 3 桁または 8 桁で、拡張アドレスとタイムアウト パラメータは 2 桁です。読み取り間隔は 0.3–99999 秒、最小応答バイト数は 0–4096 の整数、計算式と読み取り条件はそれぞれ最大 1,024 UTF-8 バイトです。値は制限する必要があり、最小値は最大値を超えることはできず、有効な下限は有効な上限よりも小さくなければなりません。テキスト マッピング キーを繰り返すことはできません。

トリップデータの差し替え

走行データを置換 は、指定された OBD パラメーターを使用してベース読み取りを行います。たとえば、車両速度パラメータを「速度」として指定すると、基本速度フィールド、関連する内蔵ゲージ、および走行記録でこの車両の測定値を使用できます。

代替ターゲットには、速度、縦方向 G、横方向 G、ピッチ、ロールが含まれます。速度には km/h または mph、加速度には g または m/s²、角度には度またはラジアンを受け入れます。アプリはターゲットの必要に応じて単位を変換します。

置換するには、パラメータに適切な数値、単位、範囲を指定する必要があります。テキスト マッピングを含むパラメータはストロークの置換には使用できません。設定範囲外の元の結果も拒否され、制限後の制限値は有効なストローク測定とみなされません。

有効な OBD 読み取り値がある場合は、このソースを使用します。測定値が見つからない、期限切れ、または無効な場合は、モバイル データにフォールバックします。モバイル ソースも利用できない場合、この基本読み取り値は空の​​ままである可​​能性があります。通常のパラメータインポートでは、置換対象が自動的に指定されません。

冷却液温度、回転速度 (RPM) などのパラメータはカスタム計測器で個別に表示でき、ストローク置換を設定せずにそれらの OBD 参照を直接使用できます。

カスタム機器へのアクセス

メーター設定 → 入力の割り当て の横にある歯車をクリックして パラメータ設定 と入力し、OBD データ 入力 (たとえば、識別子 coolant) を追加します。入力バインディングに戻り、[デバイス] で [冷却温度] パラメーターを選択します。スクリプトは $data.current.coolant を読み取ります。車両パラメータの UUID をコードに書き込む必要はありません。

読み取りには、value と unit ({ value: 83, unit: '°C' } など) が含まれます。値とテキストの対応付けは文字列を返す場合もあります。数値の書式設定の前に型を確認する必要があります。バインドされていない場合、入力全体は null になります。バインドされているが一時的に読み取りがない場合、value は null であり、unit が依然として構成単位を取得します。

他の人の作品をインポートしたり、アダプターを変更した後は、既存の入力を再バインドして、コードを引き続き使用します。予期された型がヒントに使用され、車両の戻り値はキャストされません。プレビューはアナログ入力を使用しており、実車データを確認する際には現在のデバイスと読み取りテストを確認する必要があります。

楽器データ

データの有効性と障害の診断

読み取りステータス

接続が有効である、応答が受信される、読み取りが有効であるという 3 つの異なる条件があります。応答では、長さが不十分、読み取り条件が満たされていない、式が無効である、またはテキスト マッピングのミスにより、使用可能な値が生成されない可能性があります。

実行時の読み取り値には有効期限があります。切断、読み取り失敗、またはデータの有効期限切れの後、機器およびトリップの交換では、古い値を現在の有効なデータとして引き続き使用しないでください。パラメーター リストには、有効なライブ出力と等しくない、デモンストレーションの目的で最後に成功した読み取り値を保持できます。現在のリクエスト結果は 読み取りテスト を使用して確認できます。

ゼロは有効な値であり、NULL 値は現在利用可能な測定値がないことを意味します。テキスト マップ内の空の文字列は、一致したテキストの結果であり、欠測値とは異なります。

障害レベルによる位置の特定

パフォーマンス 対応検査範囲
デバイスを検出できません アダプター電源、BLE タイプ、iPhone Bluetooth およびアプリ許可。
Bluetoothは接続されていますが、初期化に失敗しました アダプターコマンドのサポート、車両通信ステータス、プロトコル識別。
パラメータリストが空です 現在のデバイスの保存された構成、最初の機能クエリの結果、およびリストがアクティブにクリアされているかどうか。再接続しても、削除されたアイテムは自動的には復元されません。
単一パラメータの有効な読み取り値がありません クエリアドレスとPID、応答の長さ、読み取り条件、デコード式、範囲およびテキストマッピング。
値は存在しますが、意味または単位が異常です。 適用車種、バイトオーダー、式、単位が一致しているかどうかをあらかじめ設定しております。
リストには古い値が表示され、メーターには値がありません 現在の読み取りの有効期限が切れているか、読み取りに失敗したか。リスト表示キャッシュはリアルタイム データが有効であることを意味するものではありません。
有効な測定値はありますが、カスタム メーターが表示されません 現在のデバイス、選択されたパラメータ、式、およびコードによる数値、リテラル、および null 値の処理。
旅程の変更は有効になりませんでした 置換対象、パラメータ値の種類、単位と範囲の互換性、読み出しの有効性。

問題のフィードバックには、接続の問題、構成の問題、表示の問題を区別するために次の情報を含めることができます。

  • モデル、年、電源バージョン、アダプターのモデル。
  • 現在のデバイス、プリセット、パラメータの名前。
  • テスト読み取り結果または特定のエラー。
  • すべてのパラメータに影響するのか、個々のパラメータに影響するのか、また問題がパラメータ リスト、トリップ交換、またはカスタム機器で発生するのかどうか。

関連資料