CoEオブジェクトディクショナリ

オブジェクトディクショナリとは

CoEに対応したEtherCATスレーブはCoEオブジェクトディクショナリと呼ぶパラメータのセットによって機能の設定や設定情報のモニタを行います。

オブジェクトディクショナリはオブジェクト (パラメータ) の集合です。オブジェクトには3種類あります。

    • 変数型: 1つのオブジェクトが1つの変数を表します。

    • 配列型: 1つのオブジェクト内に同じ変数型をもつ配列要素をもちます。

    • 構造体型: 1つのオブジェクト内にそれぞれ任意の変数型をもつ複数の変数をもちます。

オブジェクトの構造は以下のようになっています。

    • インデックス(Index) : オブジェクトにユニークに設定した16進数4桁の番号

    • サブインデックス(Subindex) : 配列型や構造体型のオブジェクトのメンバを指定する番号。0はメンバ内の最大のサブインデックス値。値は254まで。変数型の場合は無し

    • 名称(Name) : オブジェクトの名称

    • フラグ(Flags) : アクセス設定を表し、リードオンリー(RO)、リード&ライト(RW)、プロセスデータに割付可能(P) などがある

    • 値(Value) : オブジェクトの値

通常、CoEオブジェクトディクショナリの構成や既定値はスレーブのESIファイルに記述されています。記述が無い場合やESIファイルが無い場合はスレーブを接続して全オブジェクトを読み出せます。

オブジェクトディクショナリの構成

オブジェクトディクショナリには機能ごとにインデックスの範囲が決まっています。太字の部分がユーザによるスレーブの機能設定に関連する領域です。

オブジェクトのアップロード

EtherCATスレーブ内のオブジェクトを読み出すことをアップロードといい、読み出した値は「Online Data」と呼びます。一方、実ネットワークに接続せずに設定作業を行っている場合はESIファイルに定義された「Offline Data」と呼びます。

オブジェクトディクショナリは対象のスレーブデバイスを選択し、「CoE - Online」タブをクリックして表示します。

  • Update List: ボタンをクリックするとオブジェクトの値をスレーブからアップロードします。

  • Auto Update: チェックを入れると自動的かつ継続的にオブジェクトの値をアップロードします。

  • Online Data/Offline Data: 表示中のオブジェクトの値がスレーブから読み出したオンラインデータかESIファイル内のオフラインデータかを表示します。

ESIに全てのオブジェクトが記述されていない場合、表示されないオブジェクトが存在する可能性があります。この場合、上図の「Advanced」ボタンをクリックします。

「Online - via SDO Information」のラジオボタン、「All Objects」を選択し、「OK」をクリックすると、スレーブ内に実装されているオブジェクトの構成と値を全てアップロードします。

オブジェクトのダウンロード

EtherCATスレーブ内のオブジェクトに値を書き込むことをダウンロードといい、フラグに「W」が付いていれば値を書き換えられます。

オブジェクトには動作設定値などでPreOpではRW、SafeOp以上でROというように、スレーブのスレートマシンの状態によりフラグの内容が変化する場合があります。

書き換えたいオブジェクトを「CoE - Online」タブ内のオブジェクトリストから選択し、ダブルクリックします。

「Set Value Dialog」が表示されます。

この入力項目欄のうち、オブジェクトの変数型に適切なフォームを選択し、入力後「OK」ボタンをクリックするとダウンロードが完了します。

    • Dec: 10進数の整数

    • Hex: 16進数、先頭に「0x」を付加

    • Float: 浮動小数点表示

    • Bool: ブーリアン変数、0(FALSE), 1(TRUE)

    • Binary: 16進数列、1バイトごとにスペース区切り、リトルエンディアン表示 例) Hex: 0x1234, Binary: 34 12

オブジェクトの型が列挙型でESIファイル内に型定義がある場合、ドロップダウンメニューから値を選択できます。

    • Enum: 列挙型、ドロップダウンメニューで選択

ダウンロードが完了すると、リスト内の値が書き込み値に変化したことを確認します。

値が設定可能な範囲外である場合など、ダウンロードでエラーが発生する場合があります。エラーはTwinCAT 3 XAEの「Error List」に表示されます。

エラーメッセージの読み方は以下のとおりです。

    • 2013/11/22 10:49:32 259ms : エラーの発生した日時

    • Term 5 (EL3102) (1005) : エラーの発生したスレーブの名称とノードアドレス

    • CoE ('InitDown' 0x4065:00) : 実行コマンドの内容 (CoEオブジェクト0x4065:00に対してダウンロードの初期化コマンドを発行)

    • SDO Abort ('Value range of parameter exceeded (only for write access).', 0x06090030):

    • 実行結果とエラーコード (パラメータに設定可能な値の範囲外)

スタートアップコマンドの設定

不揮発性でないオブジェクトの値は電源を切ると失われ、電源オン時にスレーブアプリケーションが規定の値を設定します。また、オブジェクトが不揮発性であってもスレーブを交換したときにオブジェクトの値の再設定が必要となる場合があります。

いつでも設定どおりの動作ができるように、EtherCATマスタはスレーブに対してCoEスタートアップコマンドを発行し、自動的に値を設定します。

スタートアップコマンドが発行されるタイミングは、スレーブの状態遷移時です。状態遷移についてはEtherCATステートマシンのページを参照してください。

PS (PreOp→SafeOp) は周期プロセスデータ通信を開始し、スレーブが安全運転状態となることから、スタートアップコマンド送信のタイミングとしてよく使用します。

例えば、アナログ入力ターミナルにユーザが使用したいスケーリングのパラメータを設定するときなどに使用します。このコマンドを登録すると、電源を切ると設定が消えるようなスレーブや故障時にデバイスを交換した後でも、追加の設定をすることなくシステムを運用できます。

CoEのスタートアップコマンドを表示するにはスレーブを選択後、「Startup」タブを選択します。

下の例では、既にプロセスデータの構成に関する設定項目が自動的に登録されています。

    • New: スタートアップコマンドの追加

    • Delete: 選択したスタートアップコマンドの削除

    • Edit: 選択したスタートアップコマンドの編集

以下のようなスタートアップコマンドを追加する方法について説明します。

    • PreOp→SafeOpでコマンド発行

    • 変数型オブジェクト、インデックス 0x4065の値を 50Hz FIR (0) → 60Hz FIR (1) に変更

Startupタブで「New」ボタンをクリックします。「Edit CANopen Startup Entry」ダイアログがオープンします。

「P -> S」をチェックし、送信タイミングに PreOp→SafeOp を指定します。

画面下のリストを下の方にスクロールして「4065 Filter Settings」をダブルクリックします。

「Enum」のドロップダウンメニューから「60Hz FIR」を選択し、「OK」をクリックします。

「Edit CANopen Startup Entry」ダイアログの「OK」をクリックしてスタートアップコマンドを登録します。