Skip to main content

CANopen診断

この章では、 CANopenプロトコルが提供する診断オプションについて説明します。

CANopenの状態

CANopenネットワークは、 NMTマスター(ネットワーク管理)とNMTスレーブで構成されます。この場合、NMTマスターはすべてのデバイスを制御し、それらの通信状態を変更できます。CANopenデバイスは、以下の4つの状態のいずれかになります。

_can_img_state.png

初期化:電源投入後、ノードはこの状態に移行します。このとき、デバイスアプリケーションとデバイス通信(ビットレートとノードアドレス)が初期化されます。その後、ノードは独立して「Pre-Operational(事前運用)」状態に切り替わります。

動作前: SDO経由でノードとの通信は可能です。ただし、ノードはPDO通信を実行できません。

Operational: CANopenノードは完全に動作可能です。プロセスデータを独立して送受信できます。

停止:ノードはネットワークから完全に分離されています。SDOまたはPDO通信は不可能です。ノードを別のネットワーク状態に遷移させるには、対応するネットワークコマンド(例:ノードの起動)が必要です。

エラーレジスタ

CiA 301 によれば、各CANopenデバイスにはエラーレジスタ(オブジェクト 16#1001)が存在します。このレジスタは SDO 経由で読み出すことができ、エラーが発生した場合にはエラーに関する追加情報を提供します。

エラーレジスタではビット0(一般エラー)のみが必須です。その他のビットはオプションであり、すべてのスレーブによってセットされるわけではありません。デバイスが何らかのエラーを検出すると、このオブジェクトの少なくともビット0がセットされます。

15. エラーレジスタ

少し

説明

0

一般的なエラー

1

現在

2

電圧

3

温度

4

通信エラー(オーバーランエラー状態)

5

デバイス プロファイル固有

6

予約済み(常に 0)

7

メーカー固有



緊急および定義済みエラーフィールド (EMCY)

CANopenは、エラーを通知するためのオプションの緊急(EMCY)プロトコルを定義しています。緊急とは、CAN-ID 16#80 + NODE-IDで設定された定義済み接続に従って送信されるCANメッセージです。

電報の構造は次のとおりです。

_can_img_emcy.png

緊急メッセージの長さは常に8バイトです。最初の2バイトで、対応する緊急エラーコード(EEC)が送信されます。その後に、エラーレジスタ0x1011(ER:エラーレジスタ)の現在の値と、メーカー固有の5バイト(MEF:メーカー固有のエラーフィールド)が続きます。

エラーコードの解釈については、製造元のマニュアルを参照してください。緊急プロトコルはすべてのスレーブでサポートされているわけではないため、 CANopen Managerで適切に設定する必要があります。

発生した緊急事態の履歴(エラー履歴)は、オブジェクト16#1003からSDO経由で読み取ることができます。ここで、サブインデックス0には保存されたエラーの数が格納され、それに続くサブオブジェクトには送信された緊急事態のデータ内容が含まれます。

詳細については、以下を参照してください。定義済みエラーフィールドとエラーレジスタ

監視メカニズム: ハートビートとノードガーディング

CANノードが継続的にメッセージを送信しない場合(サイクリックPDO)、監視が必要です。この目的のために、「ハートビート」と「ノードガーディング」というメカニズムが用意されており、これらを代替的に使用できます。

  • ノードガーディング:このプロトコルでは、NMTマスターから既存のCANopenスレーブにメッセージ(CANリモートフレーム)が送信されます。スレーブは指定された時間内にこれらのメッセージに応答する必要があります。応答がない場合、NMTマスターによってその旨が記録されます。CANリモートフレームは一般的に回避されるべきであるため、ハートビートによる監視が推奨されます。

  • ハートビート:ハートビートプロトコルはCANopenバージョン4.0でリリースされ、推奨される監視方法です。このプロトコルでは、各ノードが周期的にメッセージを送信します。このメッセージは、ネットワーク内の他の任意の加入者によって監視できます。