CANopen診断
この章では、CANopenプロトコルによって提供される診断オプションについて説明します。
CANopen州
CANopenネットワークは、NMTマスター(ネットワーク管理)とNMTスレーブで構成されています。この場合、NMTマスターはすべてのデバイスを制御し、それらの通信状態を変更できます。 CANopenデバイスは、次の4つの状態のいずれかになります。

初期化:スイッチをオンにした後、ノードはこの状態を通過します。このとき、デバイスアプリケーションとデバイス通信(ビットレートとノードアドレス)が初期化されます。その後、ノードは独立して「動作前」状態に切り替わります。
運用前:ノードとの通信はSDOを介して可能です。ただし、ノードはPDO通信を実行できません。
動作可能:CANopenノードは完全に動作可能です。プロセスデータを個別に送受信できます。
停止:ノードはネットワークから完全に分離されています。 SDOまたはPDO通信はできません。ノードは、対応するネットワークコマンド(例:ノードの開始)によってのみ、別のネットワーク状態に変更できます。
エラーレジスタ
CiA 301によると、各CANopenデバイスにはエラーレジスタ(オブジェクト16#1001)があります。このレジスタはSDOを介して読み取ることができ、エラーが発生した場合はエラーに関する追加情報を提供します。
エラーレジスタにはビット0(一般的なエラー)のみが必要です。他のビットはオプションであり、すべてのスレーブによって設定されるわけではありません。デバイスがエラーを検出するとすぐに、このオブジェクトの少なくともビット0が設定されます。
少し | 説明 |
---|---|
0 | 一般的なエラー |
1 | 電流 |
2 | 電圧 |
3 | 温度 |
4 | 通信エラー(オーバーランエラー状態) |
5 | デバイスプロファイル固有 |
6 | 予約済み(常に0) |
7 | メーカー固有 |
緊急および事前定義されたエラーフィールド(EMCY)
CANopenは、エラーを示すためにオプションの緊急(EMCY)プロトコルを定義します。緊急事態は、CAN-ID 16#80 + NODE-IDで設定された事前定義された接続に従って送信されるCANメッセージです。
テレグラムの構造は次のとおりです。

緊急メッセージの長さは常に8バイトです。それぞれの緊急エラーコード(EEC)は、最初の2バイトで送信されます。この後に、エラーレジスタ0x1011(ER:エラーレジスタ)の現在の値と5つの製造元固有のバイト(MEF:製造元固有のエラーフィールド)が続きます。
エラーコードのそれぞれの解釈は、製造元のマニュアルから取得する必要があります。緊急プロトコルはすべてのスレーブでサポートされているわけではなく、CANopenマネージャーで適宜構成する必要があります。
発生した緊急事態の履歴(エラー履歴)は、SDOを介してオブジェクト16#1003から読み取ることができます。ここで、サブインデックス0には保存されたエラーの数が含まれ、次のサブオブジェクトには送信された緊急事態のデータ内容が含まれます。
詳細については、以下を参照してください。 事前定義されたエラーフィールドとエラーレジスタ
監視メカニズム:ハートビートとノードガード
CANノードがメッセージを継続的に送信しない場合(サイクリックPDO)は、CANノードの監視が必要です。この目的のために、「ハートビート」と「ノードガード」のメカニズムが提供されており、これらを交互に使用することができます。
ノードガード:このプロトコルでは、メッセージ(CANリモートフレーム)がNMTマスターによって既存のCANopenスレーブに送信されます。スレーブは、特定の時間内にこれらのメッセージに応答する必要があります。応答がない場合、これはNMTマスターによって登録されます。 CANリモートフレームは一般的に回避する必要があるため、ハートビートによる監視が推奨されます。
ハートビート:ハートビートプロトコルはCANopenバージョン4.0でリリースされており、推奨される監視方法です。ここでは、各ノードが独立して周期的な間隔でメッセージを送信します。このメッセージは、ネットワーク内の他のサブスクライバーが監視できます。