仕様書の詳細は、SAE(SAE英語サイト) から購入できます。
J1939は、以下のサブスタンダードで構成されています:
バスの物理的プロパティ:
このドキュメントは、診断目的のための標準コネクタを定義しています。記載されているコネクタは、Deutsch HD10-9-1939、9ピンの丸型コネクタです。
このドキュメントは、CANフレーム(29ビット識別子、PGNなど)とトランスポートプロトコル機能の使用を定義し、J1939 busネットワーク上で8バイトより長いメッセージをどのように伝送するかを定義しています。
J1939メッセージは、識別子と8つのデータバイトで構成されるPDU(Protocol Data Unit)にまとめられます。1バイトより大きい数値データは、最下位バイト(LSB)から順に送信されます。J1939では、CAN 2.0Bの拡張識別子(29ビット)を使用しています。CANの識別子は、プライオリティ(3ビット)、予約(1ビット)、データページ(1ビット)、PDUフォーマット(1バイト)、PDU固有(1バイト)、ソースアドレス(1バイト)で構成されています。
PDUには2種類のフォーマットがあります。PDU1フォーマットは、特定の宛先アドレスを指定してメッセージを送信する場合に使用します。PDU2フォーマットは、ブロードキャストでのみ送信できます。識別子の中のPDUフォーマットバイトがメッセージフォーマットを決定します。PDUフォーマットバイトが240(0xF0)未満の場合、フォーマットはPDU1であり、239より大きい場合はPDU2フォーマットとなります。
また、このJ1939ドキュメントでは、コマンド、リクエスト、ブロードキャスト/レスポンス、Acknowledgment、グループファンクションの5種類のメッセージタイプについて説明しています。
トランスポートプロトコルは、8バイトよりも長いメッセージを送信するための機能を提供しますが、これらのメッセージは1つのCANフレームに収まりません。J1939において、これらのメッセージは、各パケットに順序、順番番号が付けられた7バイトのパケットに分割されます。セグメント化されたメッセージの通信を処理するために特別なConnection Management (CM)メッセージがあります。これらのメッセージの例としては、RTS(Request to Send)、CTS(Clear to Send)、BAM(Broadcast Announce Message)があります。セグメント化されたメッセージは、特定のデバイスに送信することもブロードキャストとして送信することもできます。CMメッセージは、送信者と受信者の間の仮想的なコネクションとハンドシェイク手順を提供します。送信者は、セグメント化されたメッセージの送信を要求し、受信者はその時点で受信可能なセグメント数を応答します。セグメント化されたメッセージは、送信者と受信者の間でハンドシェイクを行わずにブロードキャストとしても送信できます。
このドキュメントは、J1939ネットワークの異なるセグメント間の相互通信に必要なサービスと機能について説明しています。セグメントは、同じ信号を"seeing"するECUによって区切られるサブネットワークにすることができます。J1939/31では、セグメント間のネットワーク相互接続のための機能を提供するリピータ(転送)、ブリッジ(転送とフィルタリング)、ルータ(転送、フィルタ、アドレス変換)、ゲートウェイ(転送、フィルタ、アドレス変換、メッセージの再パッケージ化)の4つのECUタイプが記述されています。
このドキュメントでは、メッセージフレームにグループ化され、PGNが与えられる"standard"パラメータについて説明および定義します。このドキュメントは、年に4回ほど更新され、新しいstandardパラメータとメッセージが追加されます。
本ドキュメントにおいて1、2、4バイトの異なる長さのパラメータが定義されています。パラメータの最上位バイト値が0xFEの場合はエラー、0xFFの場合は、そのパラメータが使用できないことを示します。また、ドキュメントでは、パラメータの長さや物理的特性に応じて適切なスケーリング、リミット、オフセットを推奨しています。
パラメータの記述は、名前と表す値の説明(パラメータ値を得るために使用するための測定方法など)から始まります。そして次の情報でパラメータの内容を説明します:
各パラメータグループには、Nameの後に以下の情報が記述されています:
送信繰り返し率(時間間隔または要求に応じて)
内部メッセージのほとんどは、特定の宛先アドレスを持たないブロードキャストとして送信されます。
J1939 DBCファイルに特化した説明は「J1939およびDBC fileの概要」をご覧ください。
このドキュメントは、診断および校正データにアクセスするための機能およびメッセージを定義しています。あらかじめ定義された診断メッセージ(DM)は、以下のように使用されます:
このドキュメントの新しいバージョンには、診断トラブルコード(DTC)の解釈に関する追加情報が含まれています。DTCは、J1587から引き継がれた32ビットの識別子で、4つの要素で構成されている。DTCは、J1587から引き継がれた32ビットの識別子であり、4つのエレメント(Suspect Parameter Number (SPN)、Failure Mode Identifier (FMI)、Occurrence Count (OC)、SPN Conversion Method)で構成されています。DTCは、ソースアドレスと共にコンポーネントまたはサブシステムを識別します。
このドキュメントでは、ECU Nameの内容と、そのNameを使用してECUがアドレッシングを要求する方法について説明しています。Nameは、64ビット(8バイト)の長さの数字で、すべてのECUに固有のIDを提供します。Nameには主に2つの目的があります:
J1939/81のドキュメントには、アドレス要求プロセスの仕組みが記述されています。この目的のためにドキュメントで定義されているメッセージには基本的に3つのタイプがあります。
アドレスの調停を行う場合、Nameは、8バイトの数値として扱われ、値が小さいほどプライオリティが高くなくなります。