機能概要
利用可能な J1939 ソフトウェア パッケージは、ssJ1939-Full と ssJ1939-Light の 2 つです。 ssJ1939-Full は、標準のシングル フレームおよびマルチフレーム (トランスポート プロトコル) J1939 メッセージの受信と送信を処理します。 また、ssJ1939-Full は、ネットワーク管理層によって指定されたアドレス要求の調停を処理します。 ssJ1939-Light は、マルチフレーム メッセージに使用されるトランスポート プロトコルのサポートを除いて、ssJ1939-Full と同じです。
J1939 プロトコル スタックの詳細:
・ J1939-82準拠
・ MISRA C準拠
・ ANSI C ソースコード
・ RTOS の有無にかかわらず使用する
・ 8、16、32、または64ビットCPUで使用
・ 完全なユーザーリファレンスマニュアル
J1939の標準的な使い方:
・ Sending and receiving of messages
・ Message timeout monitoring
・ Message filtering
・ Request message processing
・ Diagnostic message processing
・ BAM and CM transport protocol processing
・ Static and arbitrary address claim
J1939のソースコード機能概要
J1939のソースコードでは、以下のようなJ1939の標準的な使用が可能です。
以下のようなJ1939の標準的な使い方ができます:
・ Sending and receiving of messages
・ Message timeout monitoring
・ Message filtering
・ Request message processing
・ Diagnostic message processing
・ BAM and CM transport protocol processing
・ Static and arbitrary address claim
1939 概要①
SAE J1939 は、コントローラー エリア ネットワーク (CAN) バス上で動作する高レベルの通信プロトコルです。 SAE J1939 は、車両上の電子制御ユニット (ECU) 間で情報 (エンジン RPM など) がどのように交換されるかを正確に規定しています。
データの優先順位、サイズ、スケーリング、オフセットを定義します。 たとえば、J1939 では、エンジン RPM のデフォルトの優先順位が 3、サイズが 16 ビット、解像度が 0.125 rpm/ビット、オフセットが 0 になるように指定しています。
この規格では、メッセージのタイムアウト、大きなメッセージの断片化と再組み立ての方法、ネットワーク速度、物理層、アプリケーションがネットワーク アドレスを取得する方法など、他の多くの側面も定義されています。
◆ CA
J1939 では、CA の頭字語はコントローラー アプリケーションを表し、特定の J1939 アドレスに関連付けられたハードウェアではなくソフトウェアのエンティティを表します。 単一のハードウェアである電子制御ユニットには、複数のコントローラ アプリケーションが含まれる場合があります。
たとえば、中央に配置された ECU には、「エンジン コントローラー」、「ターボチャージャー コントローラー」、および「クルーズ コントロール コントローラー」が含まれる可能性があります。 その場合、単一のハードウェアまたは物理ネットワーク ノード内に 3 つの CA が存在することになります。 物理的には 1 つのノードですが、論理的には 3 つのノードになります。 3 つの CA はすべて、独自の送信元アドレスと NAME フィールドを維持する必要があります。
◆ データリンク
SAE J1939 は、単純なデータリンク層を使用して情報を通信します。 29 ビット CAN 識別子にエンコードされるサブフィールドは合計 6 つあり、それらは以下に示されており、優先順位、拡張データ ページ、データ ページ、プロトコル フォーマット、プロトコル固有、およびソース アドレスです。
P(3ビット)、EDP( 1ビット)、 DP( 1ビット)、 PF(8ビット)、 PS (8ビット)、SA(8ビット)
P はメッセージの優先度です。EDP と DP は 4 つの異なるページを構成し、1 ページは ISO 15765-3 用に予約されています。 PF と PS はパラメータ グループ番号と宛先アドレスを定義し、SA はコントローラ アプリケーションの送信元アドレスです。 このエンコーディングの詳細については、SAE J1939-21 仕様書を参照してください。
◆ メッセージ
J1939 の中心となるのはパラメータ グループ番号 (PGN) です。これは、すべての J1939 メッセージに割り当てられる一意の番号です。 PGN は、メッセージとそのデータを識別するために機能します。 メッセージに単一のパラメータ (VIN など) が含まれる場合もありますが、通常、PGN にはパラメータのグループが含まれます。 標準には合計 8,672 の PGN があります。
メッセージの例として、PGN 61,444 を取り上げます。 これは、「電子エンジン コントローラー 1」メッセージを識別します。 仕様によれば、「EEC1」にはメッセージのデータ フィールドに 7 つの異なるパラメータが埋め込まれています。 エンジン RPM は、これら 7 つのパラメータのうちの 1 つです。
◆ メッセージのサイズ
J1939 には、3 バイト、8 バイト、可変長の 3 つの異なるメッセージ サイズがあります。 長さが 3 バイトのメッセージは 1 つだけあり、それがリクエスト メッセージ (PGN 59,904) です。
J1939 のメッセージの大部分は長さが 8 バイトです。 これにより、メッセージ数を減らしてネットワーク上のデータ量を最大化し、ネットワーク帯域幅をより効率的に使用できるようになります。
可変長メッセージとは、9 ~ 1,785 バイトの長さのメッセージです。 これらのメッセージは大きすぎて単一の CAN データ フレームに収まらないため、送信側で断片化し、受信側で再組み立てする必要があります。 このプロセスは、J1939-21 で規定されている J1939 のトランスポート プロトコルによって定義されます。
トランスポート プロトコル層は、BAM と CM という 2 つの異なるタイプのメッセージ フラグメンテーションを定義します。 これら 2 つのタイプにはいくつかの違いがありますが、主な違いは宛先アドレスです。 BAM はグローバル宛先アドレスを使用するため、すべての CA に送信されますが、CM は宛先固有です。 アドレス指定方式により、同時に送信できるのは 1 つの BAM のみですが、異なる宛先アドレスを使用する複数の CM は同時に送信できます。
BAM と CM のもう 1 つの違いは、メッセージの送信にかかる時間です。 BAM では、データ パケットの間隔は 50 ミリ秒以上、200 ミリ秒以下である必要があります。 CM を使用すると、データ フレームをできるだけ早く送信できます。
◆ BAM
BAM の頭字語は、Broadcast Announce Message の略で、トランスポート プロトコル層で使用される通信のタイプです。 BAM メッセージは、8 バイトを超えるサイズの情報をすべての J1939 CA に送信するために使用され、ハンドシェイクを必要としません。
BAM の最初のメッセージは、これから続くバイト数、これから続くデータ パケットの総数、および対応するデータの PGN を示します。 このヘッダー情報はすべて、トランスポート プロトコル接続管理 (TP.CM) フレームで送信され、データはトランスポート プロトコル データ転送 (TP.DT) フレームに含まれます。
1939 概要②
◆SPN
SAE J1939では、頭字語のSPNはSuspect Parameter Numberの略で、J1939パラメータのIDを表す。すべてのJ1939パラメータは、パラメータ定義時にSAE委員会によって割り当てられた19ビット幅の固有のSPNを持っています。
疑わしいパラメータ番号の主な目的は、障害が発生したときにパラメータを識別することです。すべての故障は、SPN と FMI フィールドによって識別されます。
PGN 65134 高分解能ホイール速度
・ 送信繰り返し:20ms
・ データ長:8
・ デフォルト優先度:2
・ パラメータグループ番号:65134
・ スタートポジション: 長さ パラメーネーム SPN
1-2 2 バイト 前軸左車輪速度 1592
3-4 2 バイト 前車軸、右車輪速度 1593
5-6 2 バイト 後輪軸左車輪速度 1594
7-8 2 バイト リアアクスル、右ホイール速度 1595
◆DTC
SAE J1939 では、頭字語の DTC は Diagnostic Trouble Code の略で、フォルトコードとしても知られ、故障したパラメータを識別する役割を果たします。DTC には、故障したパラメータのサスペクト・パラメータ番号(SPN)、故障の発生回数(OC)、故障の原因(FMI)が含まれます。
アクティブなDTCはDM1メッセージで送信され、非アクティブなDTC(つまり履歴)はDM2メッセージで送信されます。DM1およびDM2メッセージには複数のDTCが含まれることがあり、これはメッセージがトランスポートプロトコル(TP)を使用して送信される可能性があることを意味する。DM1とDM2メッセージはJ1939-73仕様で定義されています。
◆DTCの定義:
・ 疑わしいパラメータ番号(SPN) 19ビット
・ 故障モード識別子(FMI) 5ビット
・ 発生回数(OC) 7 ビット
・ SPN 変換方法(CM) 1 ビット
物理レイヤー
現在、J1939-11 と J1939-15 の 2 つの 250Kbps 物理層が定義されており、J1939-14 という 500Kbps 物理層が開発中である。
J1939-11では、最大バックボーン長40m、最大スタブ長1mのシールド付きツイストペア線を規定している。3ピンコネクタを使用し、最大30ノードまで使用可能。
J1939-15は、最大バックボーン長40m、最大スタブ長3mのシールドなしツイストペア線を規定する。2ピンコネクタを使用し、最大10ノードまで使用可能。
◆CANパラメータ
SAE J1939-11および-15は、ネットワーク・データ・レートを250Kbps、最小周期を3.998us、最大周期を4.002usと規定しています。CANネットワークでは、カスタム・サンプル・ポイントの設定も可能です。J1939の場合、サンプルポイントの設定値は最大87.5%です。ノードは87.5%を超えない範囲で、できるだけ近い値に設定する必要があります。CANペリフェラルでは、同期ジャンプ幅(SJW)を1から3まで設定することができます。SJWの値は、同期を取るためにノードのCANクロックにどれだけの時間を加算または減算できるかを決定します。J1939では、SJWは1つのみです。
シールド終端
シールドのあるネットワークでは、電気ノイズが最も少なく、中央に近い1つの場所で、シールドをグランドに直接接続する必要があります。
ノードは、直列の抵抗とコンデンサを介してシールドに接続する。抵抗は1Ω、コンデンサは0.68uFが望ましい。
◆クロックの公差
CANバスをベースとするJ1939は、CAN ISO 11898文書に記載されているものより、クロックの許容誤差がかなり厳しい。J1939-11とJ1939-15が0.05%のクロック公差を規定しているのに対して、CANは1.58%の公差を規定している。これらの厳しい公差のため、CANペリフェラルはPLL(Phase Lock Loop)やFLL(Frequency Locked Loop)逓倍器では駆動できないことが多い。
PLLとFLLは周波数を逓倍するために使用され、クロックジッターを発生させます。クロック・ジッターとは、クロック信号周期ごとのばらつきのことである。水晶振動子はPLL/FLL回路に比べてジッターが非常に小さい。このため、ジッターによってCANバスにエラーが発生する可能性があります。PLL/FLLのジッター量については、マイクロコントローラのデータシートを参照してください。
◆ネットワークの終端
すべてのSAE J1939ネットワークでは、バックボーンの両端に2つの抵抗が必要です。これらの抵抗は、ネットワークケーブルのインピーダンスとバランスを取り、電気的な反射を防ぎます。反射は可聴エコーのようなもので、減衰させないと高速動作の妨げになります。
SAE J1939-11 と J1939-15 では、終端抵抗は電子制御ユニットの中に入れるべきではないと規定されています。ECUの内部に抵抗を配置した場合、そのECUがネットワークから取り外されると、ネットワークは動作しなくなります。また、必要に応じてバックボーンを拡張することもできます。終端抵抗は、ネットワークの終端を密閉してキャップする役割を果たすケーブルプラグに配置されるべきである。終端抵抗器の抵抗値は、最小110Ω、標準120Ω、最大130Ωである。
◆プロトコルスタック
J1939プロトコルスタックとは何ですか?J1939プロトコルスタックは、OSI 7層モデルの適切な層を処理するソフトウェアライブラリです。J1939はレイヤー1(物理)、レイヤー2(データリンク)、レイヤー3(ネットワーク)、レイヤー4(トランスポート)、レイヤー7(アプリケーション)を規定している。
簡単に言うと、インバウンドデータ用のJ1939プロトコルスタックは、受信した生のCANフレームを変換して再組み立てし、完全で有効なJ1939メッセージをユーザーのアプリケーションに提示します。送信データの場合、J1939プロトコルスタックはユーザーのアプリケーションから完全なメッセージを受け取り、生のCANフレームを変換、断片化し、J1939ネットワークに送信します。
◆NAMEフィールド
J1939ネットワーク上のすべてのECUまたはCA(コントローラアプリケーション)には一意のNAMEがあります。NAMEフィールドは、J1939コントローラアプリケーションの識別とソースアドレスの取得という2つの目的で使用される。NAMEは64ビット幅で、以下のフィールドで構成される: NAMEは64ビット幅で、次のフィールドで構成される: 任意アドレス対応、業界グループ、車両システムインスタンス、車両システム、予約ビット、機能、機能インスタンス、ECUインスタンス、製造者コード、および識別番号。NAME フィールドは、各 CA に一意の ID を与える。ネットワーク上のノードは NAME フィールドを使用して互いを区別する。NAMEフィールドはノードの優先度を確立するため、ネットワーク管理にも不可欠である。NAMEは数値に変換され、アドレスを要求する際には数値の小さいものから優先度が高くなる。
ECUには複数のCAとNAMEフィールドを含めることができる。NAMEフィールドはPGN 60,928内で送信される。ネットワーク上のすべてのコントローラアプリケーション、およびすべてのサブネットワークは、一意のNAMEフィールドを持つ必要がある。
◆アドレスのクレーム
J1939では、車両ネットワークバス上のCA(電子制御ユニット)は、通信を可能にするために一意のソースアドレスを主張しなければならない。アドレス 0~128 は事前に割り当てられており、これらのアドレスを使用する CA は、電源投入後すぐに通信が許可される。しかし、将来のデバイスや機能を想定して、J1939には動的にアドレスを割り当てる方法が含まれている。新しいデバイスは、アドレス・クレーム・メッセージを送信することで、自身のアドレスをアナウンスしなければならない。
アドレス・クレーム・メッセージを送信することで、新しい(アドレスを持たない)デバイスは、それが想定しているアドレスを示すアドレス・クレームPGNを送信する。ネットワーク上のすべてのデバイスは、この新しくクレームされたアドレスを内部アドレステーブルと比較する。もしそのアドレスが(NAMEによって決定される)より高い優先順位を持つ デバイスによって既に使用されているなら、より高い優先順位のデバイスは Address Claimメッセージを送ることで競合を示す。優先順位の低いデバイスは即座にそのアドレスの使用を停止し、新しいアドレスを要求しなければならない。
◆SAEについて
SAE(Society of Automotive Engineers)は、航空宇宙、自動車、商用車業界のエンジニアと技術専門家の組織である。SAEの主な目的は技術規に依存した開発です: 例えば、SAE J2497、SAE J1939、SAE J1850、SAE J1587、SAE J1708などである。SAEは、世界的な自動車モビリティ産業の技術標準について、政府と企業が合意する場を提供している。一般に、これらの規格は推奨慣行に過ぎず、企業がこれを遵守する法的義務はない。しかし、政府が採用を義務付ける場合もあります(OBD2やSAE J1979など)。
SAE J1939文書を購入するには、SAEのオンラインストアでデジタルコンテンツ(PDF)を購入することをお勧めします。PDFは、特定のキーワードを検索する必要がある場合に非常に便利です。
◆J1939仕様
SAE J1939親ドキュメント
SAE J1939-11 物理層、250 Kbps
SAE J1939-13 基板外診断コネクター
SAE J1939-14 物理層、500 Kbps
SAE J1939-15 縮小物理レイヤ、250 Kbps
SAE J1939-17 CAN FD物理レイヤ500Kbps/2Mbps
SAE J1939-21 データリンク層
SAE J1939-22 CAN FDデータリンク層
SAE J1939-31 ネットワーク層
SAE J1939-71 車両アプリケーション層
SAE J1939-73 車両診断レイヤ
SAE J1939-74 アプリケーション - コンフィギュラブル・メッセージング
SAE J1939-75 アプリケーションレイヤ - 発電機セットおよび産業用
SAE J1939-81 ネットワーク管理
SAE J1939-82 コンプライアンス - トラックおよびバス
SAE J1939プロトコル説明