(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024077393
(43)【公開日】2024-06-07
(54)【発明の名称】波形測定器
(51)【国際特許分類】
H04L 43/12 20220101AFI20240531BHJP
H04L 12/28 20060101ALI20240531BHJP
【FI】
H04L43/12
H04L12/28 200Z
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022189469
(22)【出願日】2022-11-28
(71)【出願人】
【識別番号】000006507
【氏名又は名称】横河電機株式会社
(71)【出願人】
【識別番号】596157780
【氏名又は名称】横河計測株式会社
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【弁護士】
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100169823
【弁理士】
【氏名又は名称】吉澤 雄郎
(74)【代理人】
【識別番号】230128026
【弁護士】
【氏名又は名称】駒木 寛隆
(72)【発明者】
【氏名】中山 悦郎
【テーマコード(参考)】
5K033
【Fターム(参考)】
5K033AA03
5K033AA04
5K033BA06
5K033DA13
5K033DB12
5K033DB20
5K033EA07
(57)【要約】
【課題】データを分割して複数のフレームにより転送するプロトコルが用いられた場合であっても、より小さな容量のメモリにより、転送データから所望の位置のビット列を取得することが可能とする。
【解決手段】フレームを受信可能な波形測定器は、複数のビットからなる対象データを転送するための複数のフレームを受信する通信部と、前記複数のフレームに含まれる第1フレームを保持する第1メモリと、前記第1フレームの次のフレームである第2フレームを保持する第2メモリと、制御部と、を備え、前記制御部は、抽出対象のビット列の前記対象データにおける位置を特定する第1特定情報を取得し、前記第1特定情報に基づき、前記ビット列の、前記複数のフレームにおける位置を特定する第2特定情報を取得し、前記第2特定情報に基づき、前記第1メモリ及び前記第2メモリから、前記ビット列を読み出し、読み出した前記ビット列を第3メモリに保持させる。
【選択図】
図6
【特許請求の範囲】
【請求項1】
フレームを受信可能な波形測定器であって、
複数のビットからなる対象データを転送するための複数のフレームを受信する通信部と、
前記複数のフレームに含まれる第1フレームを保持する第1メモリと、
前記第1フレームの次のフレームである第2フレームを保持する第2メモリと、
制御部と、
を備え、
前記制御部は、
抽出対象のビット列の前記対象データにおける位置を特定する第1特定情報を取得し、
前記第1特定情報に基づき、前記ビット列の、前記複数のフレームにおける位置を特定する第2特定情報を取得し、
前記第2特定情報に基づき、前記第1メモリ及び前記第2メモリから、前記ビット列を読み出し、
読み出した前記ビット列を第3メモリに保持させる、
波形測定器。
【請求項2】
前記制御部は、
前記通信部が受信した前記フレームにおける予め定められたビット位置の値が第1の値と一致する場合に、トランスポートプロトコルによるデータ転送が開始したと判定し、
トランスポートプロトコルによるデータ転送が開始したと判定した場合に、前記トランスポートプロトコルによるデータ転送であることを示すステータス値をレジスタに保持させる、
請求項1に記載の波形測定器。
【請求項3】
前記制御部は、
前記通信部が前記フレームを受信した場合に、前記レジスタに保持されている前記ステータス値が前記トランスポートプロトコルによるデータ転送であることを示すときは、前記第1特定情報に基づき前記第2特定情報を取得するとともに、当該第2特定情報に基づき前記第1メモリ及び前記第2メモリから、前記ビット列を読み出す、請求項2に記載の波形測定器。
【請求項4】
前記制御部は、
前記通信部が前記フレームを受信した場合に、前記レジスタに保持されている前記ステータス値が前記トランスポートプロトコルによるデータ転送であることを示さないときは、第1特定情報に基づき、前記第2メモリから前記ビット列を読み出す、請求項2に記載の波形測定器。
【請求項5】
前記制御部は、
前記通信部が受信した前記フレームにおける予め定められたビット位置の値が第2の値と一致する場合に、トランスポートプロトコルによるデータ転送が終了したと判定し、
トランスポートプロトコルによるデータ転送が終了したと判定した場合に、前記トランスポートプロトコルによるデータ転送ではないことを示すステータス値をレジスタに保持させる、
請求項2に記載の波形測定器。
【請求項6】
前記制御部は、
前記第1特定情報として、前記ビット列の前記対象データにおける抽出開始位置及び抽出ビット長を取得し、
前記第2特定情報として、フレームのシーケンス番号及び抽出開始物理位置を取得する、
請求項1に記載の波形測定器。
【請求項7】
前記制御部は、前記通信部が受信した前記フレームに記載された送信元アドレス、及び、宛先アドレスがあらかじめ定められた値に一致する場合に、前記第1特定情報に基づき前記第2特定情報を取得するとともに、当該第2特定情報に基づき前記第1メモリ及び前記第2メモリから、前記ビット列を読み出す、請求項1に記載の波形測定器。
【請求項8】
前記制御部は、前記第3メモリに保持された前記ビット列により示されるデータの波形を表示部に表示させる、請求項1に記載の波形測定器。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、波形測定器に関する。
【背景技術】
【0002】
波形測定器は、被測定信号を測定し、その波形の解析及び表示等を行う装置である。例えば、デジタルオシロスコープは、このような波形測定器に当たる。波形測定器には、シリアルバス上を流れるシリアルデータを測定し、測定したシリアルデータを通信プロトコルに基づき解析して、シリアルデータをビット又はビット列にデコードするものも知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、従来の波形測定器は、例えば、SAE(Society of Automotive Engineers) J1939のように、データを分割して複数のフレームにより転送するプロトコルが用いられた場合、転送データから所望の位置のビット列を取得するには大容量のメモリを必要としていた。
【0005】
本開示は、データを分割して複数のフレームにより転送するプロトコルが用いられた場合であっても、より小さな容量のメモリにより、転送データから所望の位置のビット列を取得することが可能な波形測定器を提供することを目的とする。
【課題を解決するための手段】
【0006】
幾つかの実施形態に係る波形測定器は、
(1)フレームを受信可能な波形測定器であって、
複数のビットからなる対象データを転送するための複数のフレームを受信する通信部と、
前記複数のフレームに含まれる第1フレームを保持する第1メモリと、
前記第1フレームの次のフレームである第2フレームを保持する第2メモリと、
制御部と、
を備え、
前記制御部は、
抽出対象のビット列の前記対象データにおける位置を特定する第1特定情報を取得し、
前記第1特定情報に基づき、前記ビット列の、前記複数のフレームにおける位置を特定する第2特定情報を取得し、
前記第2特定情報に基づき、前記第1メモリ及び前記第2メモリから、前記ビット列を読み出し、
読み出した前記ビット列を第3メモリに保持させる。
【0007】
このように、波形測定器は、第1特定情報に基づき第2特定情報を取得し、第2特定情報に基づき第1メモリ及び第2メモリからビット列を読み出す構成にしたことで、第1メモリ及び第2メモリはいずれもせいぜい1フレーム分の情報を保持できればよい。したがって、データを分割して複数のフレームにより転送するプロトコルが用いられた場合であっても、より小さな容量のメモリにより、転送データから所望の位置のビット列を取得することが可能である。
【0008】
(2)(1)の波形測定器において、前記制御部は、
前記通信部が受信した前記フレームにおける予め定められたビット位置の値が第1の値と一致する場合に、トランスポートプロトコルによるデータ転送が開始したと判定し、
トランスポートプロトコルによるデータ転送が開始したと判定した場合に、前記トランスポートプロトコルによるデータ転送であることを示すステータス値をレジスタに保持させる。
【0009】
このように、波形測定器は、トランスポートプロトコルによるデータ転送が開始したと判定して、トランスポートプロトコルによるデータ転送であることを示すステータス値をレジスタに保持させる。したがって、波形測定器がさらにフレームを受信した場合は、ステータス値を参照することで、そのフレームがトランスポートプロトコルに基づき転送されたものであるかどうかを容易に判定することができる。
【0010】
(3)(2)の波形測定器において、前記制御部は、前記通信部が前記フレームを受信した場合に、前記レジスタに保持されている前記ステータス値が前記トランスポートプロトコルによるデータ転送であることを示すときは、前記第1特定情報に基づき前記第2特定情報を取得するとともに、当該第2特定情報に基づき前記第1メモリ及び前記第2メモリから、前記ビット列を読み出す。
【0011】
このように、波形測定器は、トランスポートプロトコルによるデータ転送である場合に、第1特定情報に基づき取得された第2特定情報に基づき、第1メモリ及び第2メモリからビット列を読み出すため、トランスポートプロトコルのデータフォーマットに応じて、的確にビット列を取得することができる。
【0012】
(4)(2)又は(3)の波形測定器において、前記制御部は、前記通信部が前記フレームを受信した場合に、前記レジスタに保持されている前記ステータス値が前記トランスポートプロトコルによるデータ転送であることを示さないときは、第1特定情報に基づき、前記第2メモリから前記ビット列を読み出す。
【0013】
このように、波形測定器は、トランスポートプロトコルによるデータ転送ではない場合に、第1特定情報に基づき第2メモリからビット列を読み出すため、トランスポートプロトコルに当たらないプロトコルのデータフォーマットに応じて、的確にビット列を取得することができる。
【0014】
(5)(2)から(4)のいずれかの波形測定器において、前記制御部は、
前記通信部が受信した前記フレームにおける予め定められたビット位置の値が第2の値と一致する場合に、トランスポートプロトコルによるデータ転送が終了したと判定し、
トランスポートプロトコルによるデータ転送が終了したと判定した場合に、前記トランスポートプロトコルによるデータ転送ではないことを示すステータス値をレジスタに保持させる。
【0015】
このように、波形測定器は、トランスポートプロトコルによるデータ転送が終了したと判定すると、トランスポートプロトコルによるデータ転送ではないことを示すステータス値をレジスタに保持させる。したがって、波形測定器がさらにフレームを受信した場合は、ステータス値を参照することで、そのフレームがトランスポートプロトコルに基づかずに転送されたものであることを容易に判定することができる。
【0016】
(6)(1)から(5)のいずれかの波形測定器において、前記制御部は、
前記第1特定情報として、前記ビット列の前記対象データにおける抽出開始位置及び抽出ビット長を取得し、
前記第2特定情報として、フレームのシーケンス番号及び抽出開始物理位置を取得する。
【0017】
このように、波形測定器は、ビット列の前記対象データにおける抽出開始位置及び抽出ビット長に基づき、フレームのシーケンス番号及び抽出開始物理位置を取得するため、対象データが複数のフレームにより転送された場合であっても、所望のビット列を的確に取得することができる。
【0018】
(7)(1)から(6)のいずれかの波形測定器において、前記制御部は、前記通信部が受信した前記フレームに記載された送信元アドレス、及び、宛先アドレスがあらかじめ定められた値に一致する場合に、前記第1特定情報に基づき前記第2特定情報を取得するとともに、当該第2特定情報に基づき前記第1メモリ及び前記第2メモリから、前記ビット列を読み出す。
【0019】
このように、波形測定器は、送信元アドレス、及び、宛先アドレスが一致する場合に、ビット列を読み出すため、特定のノード間で通信されたフレームに着目して、ビット列を解析することが可能である。
【0020】
(8)(1)から(7)のいずれかの波形測定器において、前記制御部は、前記第3メモリに保持された前記ビット列により示されるデータの波形を表示部に表示させる。
【0021】
このように、波形測定器は、フレームから抽出したデータの波形を表示するため、ユーザは、着目しているデータの波形を認識することが可能である。
【発明の効果】
【0022】
本開示の一実施形態によれば、データを分割して複数のフレームにより転送するプロトコルが用いられた場合であっても、より小さな容量のメモリにより、転送データから所望の位置のビット列を取得することが可能となる。
【図面の簡単な説明】
【0023】
【
図1】比較例に係る波形測定器の構成を示すブロック図である。
【
図2】
図1の波形測定器の動作を模式的に説明する図である。
【
図3】
図1の波形測定器の動作を模式的に説明する図である。
【
図4】
図1の波形測定器の動作を模式的に説明する図である。
【
図5】本開示の一実施形態に係る波形測定システムの構成例を示すブロック図である。
【
図6】
図5の波形測定器の構成例を示すブロック図である。
【
図7】
図6の設定値保持部が保持する設定値の一例を示す図である。
【
図8】
図5の波形測定器の動作例を模式的に説明する図である。
【
図9】
図5の波形測定器の動作例を模式的に説明する図である。
【
図10A】
図5の波形測定器の動作例を模式的に説明する図である。
【
図10B】
図5の波形測定器の動作例を模式的に説明する図である。
【
図10C】
図5の波形測定器の動作例を模式的に説明する図である。
【
図11A】
図5の波形測定器の動作例を模式的に説明する図である。
【
図11B】
図5の波形測定器の動作例を模式的に説明する図である。
【
図12】
図5の波形測定器の動作例を示すフローチャートである。
【
図13】
図12のTPコマンド解析処理の一例を示すフローチャートである。
【
図14】
図5の波形測定器の動作例を示すフローチャートである。
【発明を実施するための形態】
【0024】
<比較例>
図1は、比較例に係る波形測定器9の構成を示すブロック図である。波形測定器9は、SAE J1939(SAE J1939規格書参照)の通信フレームの中から、予め設定したPGN(Parameter Group Number)のデータフィールドの予め設定した位置からデータを抽出(データ切り出し)し、トレンド波形として記録する。SAE J1939は、物理層及びデータリンク層においてCAN(Controller Area Network)通信(ISO11898規格書参照)に基づき通信する、トランスポート層の通信プロトコルである。
図1に示すように、比較例に係る波形測定器9は、フレーム解析部901、ID比較部902、データ抽出部903、データ保持部904、出力コントローラ905、サンプルタイミング発生部906、メモリコントローラ907、メモリ908、読出部909、波形作成部910、及び、表示部911を備える。
【0025】
フレーム解析部901は、解析対象のCAN通信のフレーム信号(CANフレーム)を入力する。フレーム解析部901は、CAN通信規格に従って、CANフレームを解析し、ビットスタッフィング処理、及び、CRC(Cyclic Redundancy Check)エラー判断等を行う。フレーム解析部901は、CANフレームからID(識別情報)及びデータフィールドを取り出す。
【0026】
ID比較部902は、予め設定されたID(比較ID)と、フレーム解析部901においてCANフレームから取り出したIDを比較する。IDが一致した場合、データ抽出部903は、CANフレームから取り出したデータフィールドから、必要部分のデータを抽出し、抽出したデータをデータ保持部904に保持させる。
【0027】
サンプルタイミング発生部906は、データの記録を行うための一定周期のタイミングにサンプリング信号を出力コントローラ905へ出力する。出力コントローラ905は、サンプルタイミング発生部906からのサンプリング信号を受けると、データ保持部904に保持されているデータを読み出し、読み出したデータをメモリコントローラ907へ送る。
【0028】
メモリコントローラ907は、出力コントローラ905から送られたデータを、メモリ908に格納する。読出部909は、メモリ908に格納されたデータを、適宜読み出す。波形作成部910は、読出部909が読み出したデータを波形データに変換し、表示部911に表示させる。
【0029】
図2~
図4は、
図1の波形測定器9の動作を模式的に説明する図である。
図2は、ID比較部902及びデータ抽出部903によるデータ抽出動作を示している。ID比較部902には、複数の比較IDが予め設定されている。複数の比較IDの各々には、入力されたCANフレームのデータフィールドからデータ(ビット列)を抽出する位置である抽出開始位置が予め定義されている。抽出開始位置は、例えば、抽出対象のデータがデータフィールドにおいて開始するビット位置により規定される。
【0030】
フレーム解析部901にCANフレームが入力されると、ID比較部902は、フレーム解析部901がCANフレームから取り出したIDと、順次、予め設定されている各比較IDとを比較する。CANフレームのIDと比較IDのいずれかとが一致した場合、データ抽出部903は、CANフレームのデータフィールドの、その比較IDについて定義されている抽出開始位置から、予め定められたビット長のデータを抽出する。
【0031】
すなわち、ID比較部902は、CANフレームが入力されると、そのCANフレームのIDと複数の予め設定された比較IDとを比較する。比較IDのいずれかが一致すると、データ抽出部903は、その比較IDに対応する抽出開始位置からデータ抽出する。データ保持部904は、抽出されたデータをチャネルデータとして保持する。各チャネル(CH)によって、比較IDは異なっていても、同じでもよい。比較IDが同じでも、抽出開始位置又は抽出ビット長が異なれば、波形測定器9は、データフィールド中の異なるビット位置からデータを別々に抽出して、記録することができる。
【0032】
図3は、J1939通信規格のトランスポートプロトコルによるデータ転送例を示している。J1939通信規格においても、
図2を参照して説明した通信と同様に、通信装置は、IDとデータを含むフレームによりデータ転送を行う。データの受信側は、ID値を認識することにより、データの意味を知り、解析することが可能である。さらに、J1939通信規格では、トランスポートプロトコルを使用して、複数のデータフィールドを使用して、データを分割転送することができる。
図3は、トランスポートプロトコルによりデータを分割して転送する例を示している。トランスポートプロトコルによれば、最大1785バイトのデータを分割転送することができる。
【0033】
J1939のトランスポートプロトコルを使用したデータ転送の場合、データが複数のデータフィールドに渡るため、
図2のデータ抽出のように、IDと抽出開始位置を規定するだけでは、データに含まれる所望のビット列を抽出することができない。また、トランスポートプロトコルでは、トランスポートプロトコルのためのハンドシェークためのフレーム、及び、シーケンス番号等がデータフィールド中に含まれるため、これらを解析及び削除しないと、任意位置のデータを抽出し記録することができない。
【0034】
一連のトランスポートプロトコルのフレームから、データのみを取り出して、
図4のように、データのみを並べ直して連結し、連結したデータ列から必要な部分を抽出することも考えられる。
図4は、それぞれ7バイトの4つのデータを連結し、3つ目のデータに含まれるDATA16の開始ビット位置120(=8ビット×(16-1))から開始するビット長16(2バイト)のビット列501を抽出する例を示している。
【0035】
このような手法の場合、波形測定器9は、連結したデータを保持するためのメモリを必要とする。前述のように、J1939のトランスポートプロトコルにより転送可能なデータの最大データ長は1785バイトであるため、最大データ長に対応するためデータを並べ直すためには1トランスポートプロトコル当たり1785バイト相当のバッファメモリが必要となる。複数のトランスポートプロトコルが並列的に同時に動作することを考慮すると、解析可能チャネル数分のバッファメモリを用意する必要がある。したがって、このような手法を実装するには、波形測定器9が、大容量のバッファメモリを備える必要がある。組み込み用途、又は、FPGA(Field Programmable Gate Array)により波形測定器9を構成する場合、メモリ容量が大きくなり、コストが嵩んでしまう。また、対象データに参照すべきビット列が複数個存在する場合、その個数だけ、対象データを保存可能なバッファメモリが必要となるため、さらに必要なメモリ容量が大きくなってしまう。
【0036】
波形測定器においては、ある特定のデータに着目し、その値が時間と共にどのように変化するかを記録することが重要となる。例えば、トランスポートプロトコルで転送されるデータの特定バイト部分が、被測定装置の挙動を表す特定のパラメータ(例えば、温度、回転数等)を示すから、そのパラメータを抽出して、時間トレンドとして表示することが重要となる。このような観測対象のパラメータは、例えば、数バイト(例えば、4バイト)等の大きさとなることが一般的である。したがって、このような特定のパラメータを抽出してトレンド記録するような場合、トランスポートプロトコルで転送されるデータすべてを並べ直すための大容量のバッファメモリを設けても、観測に不要な部分も取り込むことになり、無駄な構成となる。
【0037】
本開示は、J1939のトランスポートプロトコルのように、データを分割して複数のフレームにより転送するプロトコルが用いられた場合であっても、より小さな容量のメモリにより、転送データから所望の位置のビット列を取得可能とすることを目的とする。
【0038】
<実施形態>
以下、本開示の一実施形態について、図面を参照して説明する。各図面中、同一の構成又は機能を有する部分には、同一の符号を付している。本実施形態の説明において、同一の部分については、重複する説明を適宜省略又は簡略化する場合がある。
【0039】
(波形測定システム)
図5は、本開示の一実施形態に係る波形測定システム1の構成例を示すブロック図である。波形測定システム1は、例えば、自動車、農業機械、又は、船舶等の産業機器に設けられたセンサ及び電子制御ユニット(ECU:Electronic Control Unit)等を含む複数のノード間において通信されるデータの波形を測定する。ここで、センサは、例えば、エンジン、変速機、及び、ブレーキ等の各装置の動作及び環境等に関する物理量を計測する。
【0040】
波形測定システム1は、波形測定器10、及び、複数のノード50(50a,50b,50c)を備える。波形測定器10、及び、複数のノード50(50a,50b,50c)は、例えば、シリアル通信線等を含むネットワーク6により、互いに通信可能に接続される。以下、複数のノード50(50a,50b,50c)は、ネットワーク6を介してCANプロトコル上のJ1939によりシリアル通信を行う例を説明する。
【0041】
ノード50aは、例えば自動車のエンジン温度を電気信号のデータとして測定するセンサである。ノード50bは、例えば自動車のエンジン回転数を電気信号のデータとして測定するセンサである。ノード50a,50bは、データを測定すると、通信プロトコルに従ってフレームを生成し、ネットワーク6を介してノード50cへ出力する。
【0042】
ノード50cは、例えば、自動車のECUである。ノード50cは、ネットワーク6を介してノード50a,50bの各々から、フレームを受信する。ノード50cは、取得したフレームから、データを取得する。ノード50cは、取得したデータに基づいて、自動車のエンジン等を制御する。
【0043】
波形測定器10は、ノード50a,50bとノード50cとの間の通信をモニターし、予め定められたデータの波形を表示する。波形測定器10は、ネットワーク6に電気的に接続される。波形測定器10には、ネットワーク6を流れる各フレームが入力される。
【0044】
上記のような構成において、あるノード(例えば、ノード50a)から他のノード(例えば、ノード50c)へCANフレームのデータフィールドの大きさである8バイト(64ビット)を上回る大きさのデータを送信する場合を考える。例えば、ノード50aは、J1939のトランスポートプロトコルに基づき、8バイトを超える大きさの対象データをノード50cへ送信する。このような場合、ノード50aは、対象データを分割して、複数のCANフレームにより転送する。波形測定器10は、このような複数のビットからなる対象データを転送するための複数のCANフレームを受信する。このような対象データの中には、波形測定器10において注目している、例えば、エンジン温度又はエンジン回転数等の物理量の値を示すビット列が含まれる。波形測定器10は、このような抽出対象のビット列の対象データ全体における位置を、複数のCANフレームにおける位置に変換し、その変換された位置に基づき抽出対象のビット列を取得する。したがって、波形測定器10は、対象データ全体を保持するためのメモリを備えなくても、CANフレームを保持するのに必要なメモリを備えるだけで、転送データから所望のビット列を取得することが可能である。
【0045】
(波形測定器)
図6は、
図5の波形測定器10の構成例を示すブロック図である。波形測定器10は、SAE J1939の通信フレームの中から、予め設定したPGNのデータフィールドの予め設定した位置からビット列を抽出(データ切り出し)し、トレンド波形として記録する。波形測定器10は、通信部100、制御部200、記憶部300、及び、表示制御部400を備える。通信部100は、フレーム解析部11を備える。制御部200は、ID比較部13、データチェック部14、データ抽出部15、設定値演算部20、出力コントローラ21、メモリコントローラ22、及び、サンプルタイミング発生部27を備える。記憶部300は、データバッファ12、データ保持部16、ステータスレジスタ17、データバッファ18、設定値保持部19、及び、メモリ23を備える。表示制御部400は、読出部24、波形作成部25、及び、表示部26を備える。
【0046】
フレーム解析部11は、解析対象のCAN信号のフレーム信号(CANフレーム)を入力する。フレーム解析部11が受信するCANフレームには、複数のビットからなる対象データを転送するための複数のフレームが含まれる。フレーム解析部11は、CAN通信規格に従って、CANフレームを解析し、ビットスタッフィング処理、及び、CRCエラー判定等を行う。フレーム解析部11は、CANフレームからCAN ID及びデータフィールドを取り出す。
図3及び
図9に示すように、J1939通信プロトコルでは一つのCANフレームは、29ビットの拡張IDと、最大8バイトのデータフィールドを含む。データバッファ12(第2メモリ)は、フレーム解析部11がCANフレームから取り出した、CAN ID及びデータフィールドを保持する。J1939通信プロトコルからのデータを抽出する場合、データバッファ12の大きさは、29ビット+64ビット(8バイト)=93ビットである。
【0047】
設定値演算部20は、フレームに関するCAN ID、PGN及び、抽出対象のビット列の対象データにおける位置を特定する情報(データ抽出位置。例えば、抽出開始位置及び抽出ビット長)等が含まれる。設定値保持部19に保持される値の詳細については、
図7を参照して後述する。
【0048】
ID比較部13は、データバッファ12に保持されたCANフレームのCAN IDと、予め設定値保持部19に設定されたCAN IDとを比較する。データチェック部14は、データバッファ12に保持されたCANフレームのデータフィールドと、予め設定値保持部19に設定された値とを比較する。比較の詳細は後述する。
【0049】
ステータスレジスタ17は、ID比較部13での比較結果とデータチェック部14での比較結果を取得する。ステータスレジスタ17は、処理中のCANフレームがJ1939通信のトランスポートプロトコルに基づくフレームであるか否かを示すステータス値を保持する。ステータスレジスタ17は、ID比較部13からの結果と、データチェック部14からの結果に基づいて、ステータス値を操作する。例えば、ステータスレジスタ17は、ID比較部13からの結果と、データチェック部14からの結果から、J1939通信に対して、解析対象となるトランスポートプロトコル通信が開始された(以下、リンクが確立されたと称する場合がある。)と判定した場合、ステータス値を「1」に設定する。ステータスレジスタ17は、トランスポートプロトコル通信が終了したと判定した場合、ステータス値を「0」に設定する。ステータスレジスタ17は、ステータス値の初期値として「0」を有してもよい。
【0050】
データバッファ18(第1メモリ)は、データバッファ12に保持されたCANフレームのデータフィールドを参照し、ステータスレジスタ17に設定されているステータス値に基づいて、CANフレーム中のデータの最後の4バイトを保持する。データバッファ18は、ステータスレジスタ17のステータス値が「1」の場合、すなわち、トランスポートプロトコルによるデータ転送が行われている場合、1つ前のCANフレームのデータフィールドの後半4バイトのビット列を保持する。この場合、データバッファ18の大きさは、32ビット(4バイト)である。
【0051】
設定値演算部20は、ステータスレジスタ17に設定されているステータス値が「1」の場合、すなわち、入力されたCANフレームがトランスポートプロトコルによるデータ転送であるか否かを判定する。トランスポートプロトコルの場合、設定値演算部20は、設定値保持部19に設定されたデータ抽出位置を、演算により、複数のフレームにおける位置の情報(抽出位置情報)に変換する。すなわち、トランスポートプロトコルの場合、設定値演算部20は、抽出対象のビット列の、対象データにおける位置を特定する情報に基づき、抽出位置情報を取得する。設定値演算部20は、ビット列の複数のフレームにおける位置を特定する情報をデータ抽出部15へ出力する。
【0052】
データ抽出部15は、設定値演算部20から入力された抽出位置情報に基づいて、データバッファ12に保持されたデータ、及び、データバッファ18に保持されたデータから、ビット列を抽出し、データ保持部16(第3メモリ)に保持する。
【0053】
サンプルタイミング発生部27は、データの記録を行うための一定周期のタイミングにサンプリング信号を出力コントローラ21へ出力する。出力コントローラ21は、サンプルタイミング発生部27からのサンプリング信号を受けると、データ保持部16に保持されているデータを読み出し、読み出したデータをメモリコントローラ22へ送る。
【0054】
メモリコントローラ22は、出力コントローラ21から送られたデータを、メモリ23に格納する。読出部24は、メモリ23に格納されたデータを、適宜読み出す。波形作成部25は、読出部24が読み出したデータを波形データに変換し、表示部26に表示させる。
【0055】
図6に例示した波形測定器10の各構成は、それぞれ別のハードウェアにより実現してもよいし、あるいは、複数の構成要素を同一のハードウェアにより実現してもよい。例えば、制御部200は、一つ又は複数の、汎用又は専用のプロセッサにより実現してもよい。また、例えば、通信部100(フレーム解析部11)と制御部200の一部の構成要素を同一のハードウェアで実現してもよい。波形測定器10の少なくとも一部の構成要素は、プロセッサがプログラムを実行することにより実現してもよい。
【0056】
(ビット列抽出処理)
次に、波形測定器10が、CANフレームから、所望のビット列を抽出して、データ保持部16へ保存する動作の詳細について以下に説明する。以下、説明を簡略化するため、抽出するビット列が1つの場合の例について説明する。すなわち、設定値保持部19には、1つの設定値パターンが設定されており、CANフレームから設定値に適合する1つのビット列を抽出する場合の例について説明する。換言すると、記録するチャネルが1チャネルだけの場合の例について説明する。
【0057】
図7は、
図6の設定値保持部19が保持する設定値の一例を示す図である。設定値保持部19には、
図7のように、以下の一連のデータが予め設定される。
・ID値:CAN ID(29ビット)。波形測定器10は、トランスポートプロトコルに当たらないフレームのうち、CAN ID値がこの値と一致したフレームから、ビット列の抽出を行う。
・SA(Source Address)値:送信側ノード(例えば、ノード50a)のアドレス(送信元アドレス、8ビット)。波形測定器10は、トランスポートプロトコルにより転送されたCANフレームの発信者(Originator)の特定に使用する。
図3及び
図9に示すように、SA値は、CAN IDに含まれる。
・DA(Destination Address)値:宛先側ノード(例えば、ノード50c)のアドレス(宛先アドレス、8ビット)。波形測定器10は、トランスポートプロトコルにより転送されたCANフレームの応答者(Responder)の特定に使用する。
図3及び
図9に示すように、DA値は、CAN IDに含まれる。
・PGN値:SAE J1939において用いられるパラメータグループを特定する値(18ビット)。波形測定器10は、トランスポートプロトコルにより転送されたCANフレームのPGNの特定に使用する。
図3及び
図9に示すように、J1939のTP.CM_RTS及びTP.CM_CTSにおいて、PGN値は、CANフレームのデータフィールドの6バイト目から8バイト目に記載される。PGN値は、例えば、物理量を測定する対象となる部品(例えば、エンジン、ハンドル、又は速度計等)ごとに異なる値が設定されるようにしてもよい。
・抽出開始位置:対象データにおいて抽出対象のビット列が開始するビット位置(14ビット)。例えば、
図4では、ビット位置511は、抽出開始位置に対応する。対象データは、CANフレームのデータフィールドにより転送される。
・抽出ビット長:抽出対象のビット列のビット長。例えば、
図4では、ビット長16ビット(2バイト)は、抽出ビット長に対応する。以下、抽出ビット長が32ビット(4バイト)以下の値である場合の例を説明する。
【0058】
設定値保持部19のID値は、トランスポートプロトコル以外により転送されるCANフレームの解析に使用される。SA値、DA値、及び、PGN値は、トランスポートプロトコルにより転送されるCANフレームの解析に使用される。抽出開始位置、及び、抽出ビット長は、通信プロトコルの種類にかかわらず使用される。
図3及び
図9に示したように、J1939トランスポートプロトコルでは、トランスポートプロトコルで使われるフレームのCAN IDのビット23-16の値が、236d又は235dに定まっている。トランスポートプロトコルによる通信を開始又は終了する際に送受信されるCANフレームであるTP.CM_RTS、TP.CM_CTS、及び、TP.CM_EndOfMsgACKのCAN IDのビット23-16の値は、236dである。トランスポートプロトコルによりデータを送受信されるCANフレームであるTP.DTのCAN IDのビット23-16の値は、235dである。そこで、ID比較部13は、このビット23-16の値を解析することで、トランスポートプロトコルのフレームか否かを判定する。なお、236d、235d等のdは10進数を示す。
【0059】
後述するように、TP.CM_RTSのデータフィールドのTP.CM_RTSのデータフィールドの1バイト目は16dである。TP.CM_CTSのデータフィールドの1バイト目は17dである。そこで、設定値保持部19は、これらの値も設定値として保持してもよい。
【0060】
図8及び
図9は、
図5の波形測定器10の動作例を模式的に説明する図である。
図8は、入力されたCANフレームがトランスポートプロトコルでない場合の動作を示している。力されたCANフレームがトランスポートプロトコルでない場合、CAN IDのビット23-16の値は、トランスポートプロトコル特有の値、すなわち、236d又は235d以外の値となる。
【0061】
波形測定器10は、設定値保持部19のID値と、CANフレームのCAN IDの値をID比較部13で比較し、一致する場合、解析すべきフレームと判定する。CAN IDのビット23-16の値が236d又は235dである場合、波形測定器10は、入力されたCANフレームはトランスポートプロトコルにより転送されたフレームとして動作する。トランスポートプロトコルでない場合、ステータスレジスタ17に設定されたステータス値は「0」のままである。そこで、設定値演算部20は、設定値保持部19の抽出開始位置及び抽出ビット長をそのままデータ抽出部15へ出力する。データ抽出部15は、入力されたCANフレームのCAN IDが設定値保持部19のID値が一致した場合、設定値演算部20から出された抽出開始位置及び抽出ビット長をもとに、CANフレームのデータフィールドからビット列を抽出する。
図8は、抽出開始位置が16d、抽出ビット長が16ビットの例を示している。このような場合、データ抽出部15は、3バイト目及び4バイト目のビット列(d3,d4)を抽出し、データ保持部16に保持させる。
【0062】
図9は、トランスポートプロトコルでデータ転送されたCANフレームから、必要部分のビット列を抽出する場合の動作を示している。
図9は、トランスポートプロトコルを用いて、28バイトのデータ(a1,b1,・・・,g1,a2,b2,・・・,g2,・・・,a4,b4,・・・,g4)を転送する場合例を示す。
【0063】
トランスポートプロトコルでは、トランスポートプロトコルで通信を行う最初に、送信元である発信者(Originator)は、TP.CM_RTSを発行する(521)。TP.CM_RTSを受信すると、受信側である応答者(Responder)は、TP.CM_CTSを返す(522)。TP.CM_CTS(522)のCAN IDにおいて、ビット23-16は、236dである。ビット15-8は、発信者の固有アドレスを示すDA2である。ビット7-0は、応答者の固有アドレスを示すSA2である。以下、例えば、発信者の固有アドレスを1とし、応答者の固有アドレスを2とする。
【0064】
フレーム解析部11がTP.CM_CTS(522)のCANフレームを受信すると、ID比較部13は、CAN IDのビット23-16部分が、236dであるか否かを判定する。CAN IDのビット23-16部分が236dである場合、データチェック部14は、データフィールドの1バイト目が17dであるか否かを判定する。ここで、TP.CM_RTSのデータフィールドの1バイト目は16dである。TP.CM_CTSのデータフィールドの1バイト目は17dである。そこで、波形測定器10は、データフィールドの1バイト目が17dである場合、入力されたCANフレームはTP.CM_CTSのCANフレームであると判定する。さらに、ID比較部13は、TP.CM_CTSのCANフレームのCAN ID部のDA2、SA2(例:1、2)が、設定値保持部19に予め設定されたSA1、DA1(例:1、2、設定値保持部19のSA値、DA値)といずれも同一であるか否かを判定する。CAN ID部のDA2、SA2が同一であると判定された場合、データチェック部14は、入力されたCANフレームの6バイト目から8バイト目が、設定値保持部19に予め設定されたPGN1(設定値保持部19のPGN値)と同一であるか否かを判定する。TP.CM_CTSのCANフレーム内のCAN ID及びPGNの値が、設定値保持部19に予め設定された値と同一であると判定された場合、ステータスレジスタ17は、解析対象となるトランスポートプロトコルのリンクが張られたと判定し、ステータス値を「1」に設定する。
【0065】
なお、TP.CM_RTS(521)の通信では、データフィールドの1バイト目が、16dである。そのため、ID比較部13においてCAN IDのビット23-16部分が236dであることを判定しても、データチェック部14は、そのCANフレームはTP.CM_RTSと判定し、何も処理を行わない。
【0066】
次に、TP.DT(523)の通信を受信すると、ID比較部13では、CAN IDのビット23-16部分が、235dとなることを判定し、CAN IDのビット15-8のDA1、ビット7-0のSA1と、設定値保持部19に予め設定されたDA1、SA1(設定値保持部19のc. b.)が同じであると判定した場合、解析対象となるトランスポートプロトコルのTP.DTであると判定する。
【0067】
解析対象となるトランスポートプロトコルのTP.DTであると判定した場合、データ抽出部15は、設定値保持部19に予め設定された抽出位置から設定値演算部20で演算された情報に従ってデータフィールドからビット列の抽出を行う。ビット列の抽出の詳細については、別途説明する。なお、
図3及び
図9に示すように、TP.DTフレームのデータフィールドの1バイト目は、TP.DTフレームの通し番号であるシーケンス番号(シーケンスNO.)が記載される。TP.DTフレームのデータフィールドの2バイト目~8バイト目は転送対象のデータである対象データが記載される。
【0068】
TP.DTであると判定した場合、波形測定器10は、データ抽出処理と並行して、TP.DTフレームのデータフィールド部分の最後の4バイト部分(5バイト目~8バイト目)をデータバッファ18に保存する。
図9においては、TP.DTの通信(523)の後に、ビット列d1、e1、f1、g1が、データバッファ18に保存される。
【0069】
TP.DT(524)を受信した場合も同様に、波形測定器10は、CAN IDのビット23-16が、235dであること、及び、DA1、SA1が設定値と一致するか否かを判定する。これらが一致した場合、波形測定器10は、データフィールド部分の最後の4バイトのビット列d2、e2、f2、g2を、データバッファ18に保存する。ここで、データバッファ18は、ビット列d2、e2、f2、g2で上書きされ、1回前のビット列d1、e1、f1、g1は消去される。
【0070】
トランスポートプロトコルによるデータ転送の途中でTP.CM_CTS(525)を受信した場合、波形測定器10は、ID比較部13とデータチェック部14により、そのフレームがTP.CM_CTSであると判定するが、特に処理は行わない。
【0071】
TP.DT(526,527)を受信した場合も同様に、波形測定器10は、CAN IDのビット23-16が、235dであること、及び、DA1、SA1が設定値と一致するか否かを判定する。これらが設定値と一致した場合、波形測定器10は、データフィールド部分の最後の4バイトをデータバッファ18に保存する。
【0072】
TP.CM_EndOfMsgACK(528)を受信した場合、波形測定器10は、ID比較部13において、CAN IDのビット23-16が236dであること、及び、DA2、SA2が設定値保持部19に予め設定されたSA1、DA1と同じであることを確認する。さらに、波形測定器10は、データチェック部14において、データ部の1バイト目が、19dであることを確認する。TP.CM_EndOfMsgACKは、解析対象となるトランスポートプロトコルによるデータ転送が、終了したことを示すコマンドである。波形測定器10は、TP.CM_EndOfMsgACKを受けて、ステータスレジスタ17のステータス値を「0」にクリアする。
【0073】
【0074】
図10Aは、設定値保持部19に予め設定された抽出開始位置が16dで、16ビット(2バイト)長のビット列を抽出する場合を示す。TP.DTのデータフィールドの1バイト目は、TP.DTのシーケンス番号を示すので、ビット位置16dは、シーケンス番号を示す最初のバイトデータを省いた3バイト目、すなわち、物理位置24dに相当する。そこで、データ抽出部15は、物理位置24dを抽出開始位置として、抽出ビット長M16ビットの2バイト分のビット列(
図10A斜線部分)を抽出する。
【0075】
図10Bは、抽出開始位置が、72dで、32ビット(4バイト)長のビット列を抽出する場合を示す。抽出開始位置が72dの場合、データ抽出部15は、シーケンス番号が2であるデータフィールドの3バイト目、すなわち、物理位置24dから4バイト分のビット列を抽出する(
図10B斜線部分)。
【0076】
このように、トランスポートプロトコルでのデータ通信では、対象データの分割、及び、シーケンス番号の挿入により、CANフレームのデータフィールドから実際にデータの抽出開始する物理位置は、設定値保持部19に予め設定された抽出開始位置からずれる。
そこで、波形測定器10は、設定値保持部19に保持された抽出開始位置を、TP.DTのデータフィールドの1バイト目のシーケンス番号、及び、CANフレームのデータフィールドにおける抽出開始位置に補正する。設定値演算部20は、このような抽出開始位置の補正を行う。
【0077】
J1939のトランスポートプロトコルによるデータ転送においては、抽出するビット列が、2つのフレームにまたがる場合もある。
図10Cは、抽出対象のビット列が2つのフレームにまたがる場合の例を示している。具体的には、
図10Cは、設定値保持部19に予め設定された抽出開始位置が40dで、抽出ビット長が32ビットである場合の例を示す。抽出するビット列が、2つのフレームに渡る場合、データ抽出部15は1つ前の転送データの後半4バイトを保持するデータバッファ18からビット列を読み出し、現在のデータと結合してデータを抽出する(
図10C斜線部分)。ここでも、設定値演算部20は、抽出開始する物理位置を演算する。データ抽出部15は、設定値演算部20により取得された物理位置からデータ抽出を行う。
【0078】
次に、設定値演算部20が、設定値保持部19に保持されている抽出開始位置N及び抽出ビット長Mに基づき、CANフレームのシーケンス番号S及びフレームにおける抽出開始物理位置Pを取得する処理について説明する。以下、TP.DTフレームのデータフィールドの先頭バイトに記載されるシーケンス番号は、1、2、3、・・・と付与される場合の例を説明する。
【0079】
まず、設定値演算部20は、次の式(1)(2)によりR、Kを取得する。
R=(抽出開始位置N%(7×8)) ・・・(1)
K=R+抽出ビット長M ・・・(2)
ここで、%は、剰余(除算の余り)を計算する演算子である。
【0080】
次に、設定値演算部20は、Kの値に基づき、以下のように場合分けして、シーケンス番号S及び抽出開始物理位置Pを取得する。
ア.Kの値が56以下の場合
データフィールドからビット列を抽出するTP.DTフレームのシーケンス番号Sは、
S=(抽出開始位置N/(7×8))の整数部+1 ・・・(3)
となる。そのTP.DPフレームのデータフィールドにおける抽出開始物理位置Pは、
P=R+8 ・・・(4)
となる。
イ.Kの値が56よりも大きい場合
データフィールドからビット列を抽出するTP.DTフレームのシーケンス番号Sは、
S=(抽出開始位置N/(7×8))の整数部+2 ・・・(5)
となる。そのTP.DPフレームのデータフィールドにおける抽出開始物理位置Pは、
P=R-56 ・・・(6)
となる。ただし、(6)により算出されたPがマイナスの場合、データ抽出部15は、データバッファ18からのビット列の読出しを行う。
【0081】
このように、Kの値が56よりも大きい場合、波形測定器10は、ビット列の抽出を開始するTP.DTのシーケンス番号Sを、Kの値が56以下の場合よりも1だけ増分し、データバッファ18から1回前のTP.DTの転送データに含まれるビット列を取得する。また、データバッファ18のデータを利用する場合、抽出開始物理位置Pはマイナスの値で表される。
【0082】
例えば、
図10A~
図10Cの例においてシーケンス番号S及び抽出開始物理位置Pを算出すると、次のようになる。
(1)
図10A(N=16,M=16)
R=16%56=16
K=16+16=32
Kの値は56以下であるから、場合分けはアである。したがって、シーケンス番号S及び抽出開始物理位置Pは次のように算出される。
S=(16/56)+1=1
P=16+8=24
(2)
図10B(N=72,M=32)
R=72%56=16
K=16+32=48
Kの値は56以下であるから、場合分けはアである。したがって、シーケンス番号S及び抽出開始物理位置Pは次のように算出される。
S=(72/56)+1=2
P=16+8=24
(3)
図10C(N=40,M=32)
R=40%56=40
K=40+32=72
Kの値は56よりも大きいから、場合分けはイである。したがって、シーケンス番号S及び抽出開始物理位置Pは次のように算出される。
S=(40/56)+2=2
P=40-56=-16
【0083】
J1939のトランスポートプロトコルによるデータ通信の場合、ステータスレジスタ17のステータス値は「1」になる。したがって、設定値演算部20は、ステータスレジスタ17のステータス値が「1」の場合に上記の演算を行う。ステータス値が「0」の場合、トランスポートプロトコルによるデータ通信ではないので、設定値演算部20は、設定値保持部19に保持された値をそのままデータ抽出部15へ出力する。
【0084】
データ抽出部15は、ステータスレジスタ17のステータス値が「1」の場合、トランスポートプロトコルによるデータ通信として判定し、TP.DTの転送データの1バイト目をシーケンス番号として参照する。データ抽出部15は、設定値演算部20から出力されたシーケンス番号SとTP.DTの転送データの1バイト目が一致した場合に、データ抽出を行う。
【0085】
上記のように、波形測定器10は、CANフレームのCANID、並びに、データフィールドの先頭ビット及びPGN等に基づき、受信したCANフレームがTP.CM_CTSであるか否かを判定する。TP.CM_CTSであると判定された場合、波形測定器10は、ステータスレジスタ17のステータス値を「1」に設定する。波形測定器10は、CANフレームのデータフィールドからビット列を抽出する際、ステータスレジスタ17のステータス値を参照してJ1939のトランスポートプロトコルによるデータ転送か否かを自動的に判定する。トランスポートプロトコルによるデータ転送の場合、波形測定器10は、設定値保持部19の抽出開始位置N及び抽出ビット長Mに基づき、シーケンス番号S及び抽出開始物理位置Pを取得して、ビット列を抽出する。トランスポートプロトコルによるデータ転送でない場合、波形測定器10は、設定値保持部19の抽出開始位置N及び抽出ビット長Mをそのまま利用して、ビット列を抽出する。したがって、波形測定器10によれば、トランスポートプロトコルによる転送か否かを予め設定することなく、抽出開始位置を自動的に決定することができる。
【0086】
図11A及び
図11Bを参照して、自動判別の例を説明する。
図11A及び
図11Bはいずれも、抽出開始位置Nは48d、抽出ビット長M16ビットの例を示している。
図11Aはトランスポートプロトコルによるデータ転送が行われた例を示している。トランスポートプロトコルであるので、ステータスレジスタ17のステータス値は「1」である。この場合、設定値演算部20は、上述の演算式によって、実際の抽出開始位置を算出する。すなわち、N=48,M=16であるから、R,Kは次のように算出される。
R=48%56=48
K=48+16=64
Kの値は56よりも大きいから、場合分けはイである。したがって、シーケンス番号S及び抽出開始物理位置Pは次のように算出される。
S=(48/56)+2=2
P=48-56=-16
したがって、データ抽出部15は、データバッファ18の1バイトと、データバッファ12に保持されているシーケンス番号2のデータの1バイト目のビット列を連結して抽出する。
【0087】
図11Bの場合は、ステータスレジスタ17の値は「0」である。そこで、設定値の値(抽出開始位置N48d、抽出ビット長M16ビット)がそのままデータ抽出部15に渡され、データ抽出部15は、データバッファ12からビット列を抽出する。
【0088】
データバッファ18の大きさは、抽出するデータの最大ビット長分が必要である。
図10A~
図11Bの例では、最大抽出ビット長は、4バイト(32ビット)となる。したがって、データバッファ18の大きさは、4バイトである。
【0089】
(動作例)
図12は、
図5の波形測定器10の動作例を示すフローチャートである。
図13は、
図12のTPコマンド解析処理の一例を示すフローチャートである。
図12及び
図13を参照して説明する波形測定器10の動作は波形測定器10の波形測定方法の一つに相当してもよい。
図12及び
図13の各ステップの動作は、波形測定器10の制御部200による制御に基づき実行されてもよい。
図12の処理は、波形測定器10がCANフレームのパケットを受信するたびに実行される。
【0090】
ステップS1において、制御部200は、通信部100によりCANフレームを入力する。
【0091】
ステップS2において、制御部200は、ステップS1で入力したCANフレームを解析し、CAN ID及びデータフィールドを取り出す。
【0092】
ステップS3において、制御部200は、ステップS2で取り出したCAN ID及びデータフィールドに基づき、ステップS1で受信したCANフレームがJ1939のトランスポートプロトコル(TP)のコマンドに当たるか否かを判定する。具体的には、制御部200は、CAN IDのビット23-16の値が、236d又は235dである場合、CANフレームはトランスポートプロトコルのコマンドに当たると判定してもよい。制御部200は、トランスポートプロトコルのコマンドに当たる場合(ステップS3でYES)はステップS6へ進み、そうでない場合(ステップS3でNO)はステップS4へ進む。ステップS4以下において、制御部200は、トランスポートプロトコルに当たらない通常のCANフレームを対象とした処理を行う。
【0093】
ステップS4において、制御部200は、ステップS2で取り出したCAN IDが、設定値保持部19に保持された設定値のCAN IDと一致するか否かを判定する。制御部200は、一致する場合(ステップS4でYES)はステップS5へ進み、そうでない場合(ステップS4でNO)はフローチャートの処理を終了する。
【0094】
ステップS5において、制御部200は、設定値保持部19に保持された設定値に従い、ステップS2で取り出したデータフィールドからビット列を抽出する。具体的には、制御部200は、データバッファ12に格納されたデータフィールドから、抽出開始位置N及び抽出ビット長Mのビット列を抽出する。ステップS5の処理を終えると、制御部200は、フローチャートの処理を終了する。
【0095】
ステップS6において、制御部200は、トランスポートプロトコルのコマンドを解析するTPコマンド解析処理を実行する。TPコマンド解析処理の詳細は、
図13を参照して後述する。TPコマンド解析処理を終えると、制御部200は、フローチャートの処理を終了する。
【0096】
図13のステップS11において、制御部200は、入力されたCANフレームがTP.CM_CTSであるか否かを判定する。具体的には、制御部200は、CAN IDのビット23-16の値が236dであり、かつ、データフィールドの1バイト目の値が17dの場合、TP.CM_CTSであると判定する。制御部200は、TP.CM_CTSの場合(ステップS11でYES)はステップS12へ進み、そうでない場合(ステップS11でNO)はステップS14へ進む。
【0097】
ステップS12において、制御部200は、CANフレームのSA、DA、及び、PGNが、設定値保持部19のSA、DA、及び、PGNと一致するか否かを判定する。制御部200は、一致する場合(ステップS12でYES)はステップS13へ進み、そうでない場合(ステップS12でNO)はTPコマンド解析処理を終了する。
【0098】
ステップS13において、制御部200は、ステータスレジスタ17のステータス値を「1」に設定する。そして、制御部200は、TPコマンド解析処理を終了する。
【0099】
ステップS14において、制御部200は、入力されたCANフレームがTP.DTであるか否かを判定する。具体的には、制御部200は、CAN IDのビット23-16の値が235dの場合、TP.DTであると判定する。制御部200は、TP.DTの場合(ステップS14でYES)はステップS15へ進み、そうでない場合(ステップS14でNO)はステップS21へ進む。
【0100】
ステップS15において、制御部200は、CANフレームのSA及びDAが、設定値保持部19のSA及びDAと一致するか否かを判定する。制御部200は、一致する場合(ステップS15でYES)はステップS16へ進み、そうでない場合(ステップS16でNO)はTPコマンド解析処理を終了する。
【0101】
ステップS16において、制御部200は、ステータスレジスタ17のステータス値が「1」であるか否かを判定する。制御部200は、ステータス値が「1」である場合(ステップS16でYES)はステップS17へ進み、そうでない場合(ステップS16でNO)はTPコマンド解析処理を終了する。
【0102】
ステップS17において、制御部200は、設定値保持部19に保持されている抽出開始位置N及び抽出ビット長Mに基づき、CANフレームのシーケンス番号S及び抽出開始物理位置Pを決定する。シーケンス番号S及び抽出開始物理位置Pの決定手順の詳細は前述のとおりである。
【0103】
ステップS18において、制御部200は、CANフレームのシーケンス番号が、ステップS17で決定されたシーケンス番号Sと一致するか否かを判定する。制御部200は、一致する場合(ステップS18でYES)はステップS19へ進み、そうでない場合(ステップS18でNO)はTPコマンド解析処理を終了する。
【0104】
ステップS19において、制御部200は、データバッファ12,18における抽出開始物理位置Pから抽出ビット長Mのビット列を読み出し、データ保持部16に保持する。
【0105】
ステップS20において、制御部200は、データバッファ12の後半4バイト(32ビット)のビット列により、データバッファ18のビット列を上書きする。そして、制御部200は、TPコマンド解析処理を終了する。
【0106】
ステップS21において、制御部200は、入力されたCANフレームがTP.CM_EndOfMsgACKであるか否かを判定する。具体的には、制御部200は、CAN IDのビット23-16の値が236dであり、かつ、データフィールドの先頭バイトが19dである場合、TP.CM_EndOfMsgACKであると判定する。制御部200は、TP.CM_EndOfMsgACKの場合(ステップS21でYES)はステップS22へ進み、そうでない場合(ステップS21でNO)はTPコマンド解析処理を終了する。
【0107】
ステップS22において、制御部200は、CANフレームのSA、DA、及び、PGNが、設定値保持部19のSA、DA、及び、PGNと一致するか否かを判定する。制御部200は、一致する場合(ステップS22でYES)はステップS23へ進み、そうでない場合(ステップS22でNO)はTPコマンド解析処理を終了する。
【0108】
ステップS23において、制御部200は、ステータスレジスタ17のステータス値を「0」に設定する。そして、制御部200は、TPコマンド解析処理を終了する。
【0109】
以上のように、フレームを受信可能な波形測定器10は、通信部100、データバッファ18、データバッファ12、及び、制御部200を備える。通信部100は、複数のビットからなる対象データを転送するための複数のフレームを受信する。データバッファ18は、複数のフレームに含まれる第1フレームを保持する。データバッファ12は、第1フレームの次のフレームである第2フレームを保持する。制御部200は、抽出対象のビット列の対象データにおける位置を特定する第1特定情報(例えば、抽出開始位置N及び抽出ビット長M)を取得する。制御部200は、第1特定情報に基づき、ビット列の、複数のフレームにおける位置を特定する第2特定情報(例えば、シーケンス番号S及び抽出開始物理位置P)を取得する。制御部200は、第2特定情報に基づき、データバッファ12,18から、ビット列を読み出し、読み出したビット列をデータ保持部16に保持させる。
【0110】
このように、波形測定器10は、第1特定情報に基づき第2特定情報を取得し、第2特定情報に基づき、データバッファ12,18からビット列を読み出すため、データバッファ12,18はいずれもせいぜい1フレーム分の情報を保持できればよい。したがって、波形測定器10によれば、データを分割して複数のフレームにより転送するプロトコルが用いられた場合であっても、より小さな容量のメモリにより、転送データから所望の位置のビット列を取得することが可能である。
【0111】
なお、本実施形態では、CANフレームを利用するJ1939のトランスポートプロトコルが使用される例を説明したが、波形測定器10は、大きなデータを複数のフレームに分割して転送する任意のプロトコルに対して適用することが可能である。また、本実施形態では、設定値保持部19に一つの設定値を保持する場合の例を説明したが、設定値保持部19は複数の設定値を保持してもよい。この場合、波形測定器10は、入力されたフレームごとに、設定値保持部19で保持されている各設定値の各々と比較し、設定値に適合するフレームについて、設定値ごとに解析を行い、設定値に適合する複数のデータを一つのフレームから抽出してもよい。この場合、波形測定器10は、設定値の個数だけ、データバッファ18を備える必要がある。また、本実施形態では、第1特定情報が抽出開始位置N及び抽出ビット長Mである例を説明したが、第1特定情報の形式はこれに限られない。例えば、第1特定情報は、抽出開始位置及び抽出終了位置としてもよい。また、本実施形態では、第2特定情報が、シーケンス番号S及び抽出開始物理位置Pである例を説明したが、第2特定情報の形式はこれに限られない。例えば、第2特定情報は、シーケンス番号及び抽出終了物理位置としてもよい。
【0112】
また、制御部200は、通信部100が受信したフレームにおける予め定められたビット位置の値が第1の値(例えば、CAN IDの23-16が236d、データフィールドの1バイト目が17d)と一致する場合に、トランスポートプロトコルによるデータ転送が開始したと判定してもよい。制御部200は、トランスポートプロトコルによるデータ転送が開始したと判定した場合に、トランスポートプロトコルによるデータ転送であることを示すステータス値(例えば、「1」)をステータスレジスタ17に保持させてもよい。このように、波形測定器10は、トランスポートプロトコルによるデータ転送が開始したと判定して、トランスポートプロトコルによるデータ転送であることを示すステータス値をステータスレジスタ17に保持させる。したがって、波形測定器10がさらにフレームを受信した場合は、ステータス値を参照することで、そのフレームがトランスポートプロトコルに基づき転送されたものであるかどうかを容易に判定することができる。
【0113】
また、制御部200は、通信部100がフレームを受信した場合に、ステータスレジスタ17に保持されているステータス値がトランスポートプロトコルによるデータ転送であることを示すときは、第1特定情報に基づき第2特定情報を取得して、第2特定情報に基づきデータバッファ12,18から、ビット列を読み出してもよい。このように、波形測定器10は、トランスポートプロトコルによるデータ転送である場合に、第1特定情報に基づき取得された第2特定情報に基づき、データバッファ12,18からビット列を読み出すため、トランスポートプロトコルのデータフォーマットに応じて、的確にビット列を取得することができる。
【0114】
また、制御部200は、通信部100がフレームを受信した場合に、ステータスレジスタ17に保持されているステータス値がトランスポートプロトコルによるデータ転送であることを示さない(例えば、ステータス値が「0」)ときは、第1特定情報に基づき、データバッファ12からビット列を読み出してもよい。このように、波形測定器10は、トランスポートプロトコルによるデータ転送ではない場合に、第1特定情報に基づきデータバッファ12からビット列を読み出すため、トランスポートプロトコルに当たらないプロトコルのデータフォーマットに応じて、的確にビット列を取得することができる。
【0115】
また、制御部200は、通信部100が受信したフレームにおける予め定められたビット位置の値が第2の値(例えば、CAN IDの23-16が236d、データフィールドの1バイト目が19d)と一致する場合に、トランスポートプロトコルによるデータ転送が終了したと判定してもよい。制御部200は、トランスポートプロトコルによるデータ転送が終了したと判定した場合に、トランスポートプロトコルによるデータ転送ではないことを示すステータス値(例えば、「0」)をレジスタに保持させてもよい。このように、波形測定器10は、トランスポートプロトコルによるデータ転送が終了したと判定すると、トランスポートプロトコルによるデータ転送ではないことを示すステータス値をステータスレジスタ17に保持させる。したがって、波形測定器10がさらにフレームを受信した場合は、ステータス値を参照することで、そのフレームがトランスポートプロトコルに基づかずに転送されたものであることを容易に判定することができる。
【0116】
また、制御部200は、第1特定情報として、ビット列の対象データにおける抽出開始位置及び抽出ビット長を取得してもよい。制御部200は、第2特定情報として、フレームのシーケンス番号及び抽出開始物理位置を取得してもよい。このように、波形測定器10は、ビット列の前記対象データにおける抽出開始位置及び抽出ビット長に基づき、フレームのシーケンス番号及び抽出開始物理位置を取得するため、対象データが複数のフレームにより転送された場合であっても、所望のビット列を的確に取得することができる。
【0117】
また、制御部200は、通信部100が受信したフレームに記載された送信元アドレス、及び、宛先アドレスがあらかじめ定められた値に一致する場合に、第1特定情報に基づき第2特定情報を取得するとともに、その第2特定情報に基づきデータバッファ12,18から、ビット列を読み出してもよい。このように、波形測定器10は、送信元アドレス、及び、宛先アドレスが一致する場合に、ビット列を読み出すため、特定のノード間で通信されたフレームに着目して、ビット列を解析することが可能である。
【0118】
また、制御部200は、データ保持部16に保持されたビット列により示されるデータの波形を表示部26に表示させてもよい。このように、波形測定器10は、フレームから抽出したデータの波形を表示するため、ユーザは、着目しているデータの波形を認識することが可能である。
【0119】
以上のように、本実施形態に係る波形測定器10によれば、J1939トランスポートプロトコルで通信したデータを、少ないバッファ容量で解析可能とすることができる。また、波形測定器10は、トランスポートプロトコルのリンクが確立されたことを管理するステータスレジスタ17を設けることにより、トランスポートプロトコルでのデータ通信を自動認識することができる。さらに、波形測定器10は、トランスポートプロトコルによるデータ転送がなされた場合に、設定値演算部20によりデータ抽出位置を自動的に補正するため、トランスポートプロトコルであるか否かを特に意識せずに、設定値保持部19にデータ抽出位置を設定することができる。
【0120】
(その他の実施形態)
前述の説明において、データ解析を行うための一組の設定値が設定値保持部19に設定されている場合を説明したが、設定値保持部19は、解析を行うPGN、抽出開始位置及び抽出ビット長の複数の組を保持してもよい。その上で、波形測定器10は、入力されたCANフレームに対し、各設定値に基づく処理を行い、データ抽出を行ってもよい。このような処理を順次実行することにより、波形測定器10は、CAN通信上の複数のパラメータを、時系列に記録していくことができる。例えば、対象データのある部分にはエンジンの回転数のデータが記録され、別の部分にはエンジンの温度のデータが記録されている場合がある。このような場合、波形測定器10は、エンジンの回転数のデータ及び温度のデータを取得し、解析したり、表示部26に波形を表示させたりすることができる。
【0121】
このような処理を実現するために、例えば、波形測定器10は、設定値保持部19、ステータスレジスタ17、データバッファ18、及びデータ保持部16を、解析する回数分の個数だけ備える構造としてもよい。このような構造を備える波形測定器10は、一つのCANフレームの入力に対して、順次、設定値保持部19から設定値を読み出し、処理を繰り返す。このような波形測定器10の動作について
図14を参照して説明する。
【0122】
図14は、
図5の波形測定器10の動作例を示すフローチャートである。
図14を参照して説明する波形測定器10の動作は波形測定器10の波形測定方法の一つに相当してもよい。
図14の各ステップの動作は、波形測定器10の制御部200による制御に基づき実行されてもよい。
図12の処理は、波形測定器10がCANフレームのパケットを受信するたびに実行される。
【0123】
ステップS31において、制御部200は、通信部100によりCANフレームを入力する。
【0124】
ステップS32において、制御部200は、処理対象の設定値保持部19から設定値を読み出す。
【0125】
ステップS33において、制御部200は、ステップS31で入力したCANフレームを解析し、CAN ID及びデータフィールドを取り出す。
【0126】
ステップS34において、制御部200は、ステップS33で取り出したCAN ID及びデータフィールドに基づき、ステップS31で受信したCANフレームがJ1939のトランスポートプロトコル(TP)のコマンドに当たるか否かを判定する。ステップS34は、
図12のステップS3と同様に実行することができる。制御部200は、トランスポートプロトコルのコマンドに当たる場合(ステップS34でYES)はステップS37へ進み、そうでない場合(ステップS34でNO)はステップS35へ進む。ステップS35以下において、制御部200は、トランスポートプロトコルに当たらない通常のCANフレームを対象とした処理を行う。
【0127】
ステップS35において、制御部200は、ステップS33で取り出したCAN IDが、ステップS32で読み出した設定値のCAN IDと一致するか否かを判定する。制御部200は、一致する場合(ステップS35でYES)はステップS36へ進み、そうでない場合(ステップS35でNO)はステップS38へ進む。
【0128】
ステップS36において、制御部200は、ステップS32で読み出した設定値に従い、ステップS33で取り出したデータフィールドからビット列を抽出する。ステップS36の処理は、
図12のステップS6と同様に実行することができる。ステップS36の処理を終えると、制御部200は、ステップS38へ進む。
【0129】
ステップS37において、制御部200は、トランスポートプロトコルのコマンドを解析するTPコマンド解析処理を実行する。TPコマンド解析処理の詳細は、
図13を参照して前述したとおりである。TPコマンド解析処理を終えると、制御部200は、ステップS38へ進む。
【0130】
ステップS38において、制御部200は、全ての設定値についてステップS32~ステップS37の処理を終えたか否かを判定する。制御部200は、全ての設定値について処理済みの場合(ステップS38でYES)はフローチャートの処理を終了し、そうでない場合(ステップS38でNO)はステップS32へ戻って、未処理の設定値について処理を継続する。
【0131】
このように、制御部200は、複数の設定値が設定されている場合に、入力されたフレームについて、各フレームに基づきデータ抽出等の処理を行う。したがって、注目すべきビット列が対象データに複数含まれる場合であっても、波形測定器10は、各ビット列を抽出して、解析及び表示等を行うことが可能である。
【0132】
なお、
図14は、波形測定器10は、各設定値について、ステップS32~ステップS37の処理を順に行う例を示しているが、このような処理に限られない。例えば、波形測定器10が、設定値保持部19、ステータスレジスタ17、データバッファ18、及びデータ保持部16を、解析する回数分の個数だけ備える場合、各設定値について、ステップS32~ステップS37の処理を並列的に実行するようにしてもよい。このような構成によれば、データ抽出及び解析に関する処理を高速に実行することが可能である。
【0133】
以上のように、波形測定器10は、観測したい予め設定したPGNのデータフィールド長が7バイト以内での転送か、データフィールド長が7バイトを超えるトランスポートプロトコルによるマルチフレーム転送かを自動で判定する。さらに、波形測定器10は、小規模な搭載メモリでデータフィールドの中から予め設定したデータ位置からビット列を抽出することができる。
【0134】
具体的には、J1939トランスポートプロトコルで分割転送されるデータの任意の位置からデータを抽出して記録可能な波形測定器10は、トランスポートプロトコルで転送されるデータの場合、トランスポートプロトコルの全データをバッファリングすることなく、トランスポートプロトコルで1回前に転送されたデータフィールドの後半部分のデータを記憶するデータバッファ18を備える。これにより、波形測定器10は、任意の位置からデータを抽出することが可能である。よって、最小限のメモリ構成で、所望の位置のビット抽出を行うことができるため、メモリコストを低減することが可能である。
【0135】
また、波形測定器10は、トランスポートプロトコルによるデータ転送か、トランスポートプロトコルによらない転送かを自動で判別する機能を有する。これにより、波形測定器10は、解析対象となるデータの転送が、トランスポートプロトコルか否かの設定を予め行わなくても、データ抽出を行うことができる。このような機能により、設定値保持部19に設定すべき設定値の個数を減らすことができ、回路規模を小さくすることができるとともに、ユーザの設定項目を減らすことができる。
【0136】
波形測定器10は、CAN通信のCANフレームから特定データを抽出して記録する場合において、トランスポートプロトコルの解析記録対象となるコマンドを解析する機能を備える。波形測定器10は、トランスポートプロトコルのリンクが確立されたか否かを示す、ステータスレジスタ17を備える。波形測定器10は、ステータスレジスタ17が保持するステータス値により、解析対象となるデータの転送が、トランスポートプロトコルによるか否かを判定し、トランスポートプロトコルによるデータ通信であれば、データ抽出位置を演算により自動的に補正する。波形測定器10は、補正した抽出位置からデータの抽出を行い、記録及び表示等を行うことができる。
【0137】
本開示は上述の実施形態に限定されるものではない。例えば、ブロック図に記載の複数のブロックは統合されてもよいし、又は1つのブロックは分割されてもよい。フローチャートに記載の複数のステップは、記述に従って時系列に実行する代わりに、各ステップを実行する装置の処理能力に応じて、又は必要に応じて、並列的に又は異なる順序で実行されてもよい。その他、本開示の趣旨を逸脱しない範囲での変更が可能である。
【符号の説明】
【0138】
1 波形測定システム
6 ネットワーク
10 波形測定器
11 フレーム解析部
12 データバッファ
13 ID比較部
14 データチェック部
15 データ抽出部
16 データ保持部
17 ステータスレジスタ
18 データバッファ
19 設定値保持部
20 設定値演算部
21 出力コントローラ
22 メモリコントローラ
23 メモリ
24 読出部
25 波形作成部
26 表示部
27 サンプルタイミング発生部
50 ノード
90 波形測定器
100 通信部
200 制御部
300 記憶部
400 表示制御部
901 フレーム解析部
902 ID比較部
903 データ抽出部
904 データ保持部
905 出力コントローラ
906 サンプルタイミング発生部
907 メモリコントローラ
908 メモリ
909 読出部
910 波形作成部
911 表示部