Version 1.2
2010/03/15
Application Note AN-JON-1-701
Restrictions Public
Document
Abstract
このアプリケーションノートでは、
maxon motor 社の CANopen 対応モータ コントロール デバイ
ス“EPOS”を、Vector 社の CANsetter を用いて制御する手順を解説しています。実デバイス
の基本動作や、
CANopen プロトコルの基本概念を理解することを目的としています。
目次
1.0
概要...3
2.0
CANsetter でコンフィギュレーション データを作成 ...4
2.1
<Topology> Window にノードを配置 ...4
2.2
EPOS の初期化 (共通部分)...4
2.3
EPOS の初期化 (Profile Position Mode) ...5
2.4
デフォルト
Receive PDO の確認と設定変更 ...5
2.5
デフォルト
Transmit PDO の確認と設定変更 ...6
2.6
PDO List による PDO Linking の確認 ...6
2.7
Error Control サービスの設定 ...6
2.8
CANsetter の CAN 通信速度設定 ...7
2.9
CANsetter プロジェクトを保存...7
3.0
ハードウェアの設定
...7
3.1
EPOS のハードウェア・リファレンスに従って設定する ...7
3.2
電源、
CAN バスを準備...7
3.3
CANalyzer で使用する CAN I/F の通信速度を設定...7
4.0
デバイスの
Boot-Up ...8
4.1
CANalyzer 測定スタート ...8
4.2
EPOS 電源 ON...8
4.3
CANsetter コネクト ...8
5.0
CANsetter からのコンフィギュレーションとデバイスのスタート...8
5.1
コンフィギュレーション
...8
5.2
コンフィギュレーション結果の確認
...9
5.3
デバイススタート
...9
6.0
PDO による制御...9
7.0
Object Dictionary の操作による直接制御...10
7.1
回転速度の変更
...10
7.2
動作制御の変更...10
8.0
CANopen プロトコルの基本動作確認 ...10
8.1
SYNC Object による PDO 送信 ...10
8.2
Error Control プロトコルの変更...11
8.3
Emergency Object ...11
1.0 概要
このアプリケーションノートでは、maxon motor 社のモータ コントロール デバイス”EPOS”を、CANopen プロトコルに則って制御する手
順の一例を解説しています。EPOS でモータを動かすまでの手順を段階的に解説していますが、使用するソフトウェアおよびハードウェ
アの操作や設定に関しては、必要に応じて各製品のマニュアル等をご参照ください。また、CANopen プロトコル自体は解説していませ んので、プロトコルの基本知識や用語に関しては、CiA の CANopen 規格書またはベクターの関連資料等をご参照下さい。
使用環境:
maxon motor 社 EPOS 24/5 およびエンコーダ付きモータ (EPOS の EDS は、maxon motor の EPOS_UserInterface ソフトウェアで 生成しますので、本書で取り上げているものと異なる場合があります)、Vector 社 CANalyzer .CANopen (CANsetter 同梱) および PC 用CAN インターフェイス (CANcardXL など)
CANalyzer option CANopen が動作する Windows®搭載 PC。 ネットワークの概要:
CANopen ネットワークの構成は、EPOS, CANalyzer .CANopen, CANsetter の 3 ノードになります。
CANopen ネットワークに必須の NMT-Master は、CANsetter または CANalyzer .CANopen が代役になります。 CAN 通信速度 (Baud rate) は 1Mbps です。
【EPOS およびモータ】
モータ自体のチューニングは、maxon motor の EPOS_UserInterface ソフトウェアを使用して個別に実施してください。
EPOS によるモータ制御は、「Position Profile Mode」を使用します。 【CANalyzer .CANopen 】
特にNode-ID は定義しません
バス上に流れるCANopen メッセージの解析を行います。
CANopen 規格の SDO 通信を用いて、デバイスの Object Dictionary を直接 Read/Write する制御を行います。 CANalyzer の CAPL, Interactive Generator Block, Log/Replay 機能などを使い PDO でのデバイス制御を行います。 【CANsetter】 CANsetter の Node-ID は、デフォルトの 0x7F を利用します。 実ネットワーク構築前のEPOS コンフィギュレーションデータを作成します。 実デバイスの設定データ (DCF) をダウンロードする CANopen コンフィギュレータの役割を担います。 実デバイスにNMT メッセージを送って動作を開始させる NMT マスターの役割を担います。 図1: EPOS とベクター社ソフトウェアの相関 EDS DCF
CANalyzer.CANopen
CANsetter
EPOS
参考資料:
マクソンジャパン株式会社のアプリケーションノート EPOS Position Controller “デバイス・プログラミング”
各EPOS 用の”ハードウェア・リファレンス”
2.0 CANsetter でコンフィギュレーション データを作成
市販されているCANopen デバイスは、エンドユーザまたはシステム設計者が自分の設計するネットワークシステムの要件に応じてカス
タマイズ (コンフィギュレート) して利用します。
ここでは、CANopen 用デバイス コンフィギュレーション ソフトである CANsetter を使い、EPOS を「Profile Position Mode」で利用するた めの初期設定情報をオフラインで作成します。
2.1 <Topology>
Window にノードを配置
<Topology> Window に新規ノードを作成します。 今回は、EPOS のみです。 <Node Configuration>ダイアログで、Node-ID=0x10, EPOS の EDS を指定します。
EPOS の製品写真 (bmp 画像) も入手していれば、ファイルを指定してください (画像は必須ではありません)。
図2: CANsetter の設定画面 <Topology> <Node Configuration>
2.2 EPOS の初期化 (共通部分)
<Device Access> ダイアログの <Object Dictionary> タブで、該当するオブジェクトの初期値を変更してください。
各項目の詳細は、maxon motor の Application Note 「EPOS Position Controller”デバイス・プログラミング”」の「P3:はじめに」に従っ てください。
※RS-232C/CAN の Bit rate は設定不要です。
※モータ仕様による部分の初期値は、maxon motor の EPOS_UserInterface アプリケーションを利用してください。
2.3 EPOS の初期化 (Profile Position Mode)
<Object Dictionary> タブで、「P4:Profile Position Mode」に従い、該当するオブジェクトの初期値を変更してください。 設定箇所は「Object Name: Controlword (Shutdown)」までです。
※「Profile Position Mode」以外についても、Application Note の該当ページに従って初期値を設定してください。
2.4 デフォルト Receive PDO の確認と設定変更
<Object Dictionary>タブで、以下の初期値を確認します。
RPDO Communication Parameter (Index: 0x1400 ~ Sub-index あり) RPDO Mapping Parameter (Index: 0x1600 ~ Sub-index あり)
Communication Parameter Sub-index:0x01”COB-ID”の先頭ビットが`1’であれば Invalid です。
下記のような表を作成すると確認しやすいでしょう。表中の赤字部分はObject Dictionary のエントリです。 Mapping Parameter COB-ID 0 1 2 3 4 5 6 7 0x1400-01 0x1600-01 RPDO 0 0x80000200
+ Node-ID Velocity Mode Setting Value
0x1401-01 0x1601-01 0x1601-02
RPDO
1 0x80000300
+ Node-ID Control Word Target Velocity
0x1402-01 0x1602-01 0x1602-02
RPDO
2 0x80000400
+ Node-ID Control Word Modes of Operation
表1: RPDO のマッピング パラメータ (1)
「Profile Position Mode」、「Position Mode」の場合、Mapped Object として以下の設定を必要とします。 0x607A: Target Position
0x6040: Controlword
必要なパラメータを受信させるように変更を加えます。以下はその例です。
RPDO 0 と 2 を有効化し、Velocity Mode Setting Value を Target Position に変更します。 CANsetter では Communication Parameter の変更を、Symbolic に扱うことができます。
Mapping Parameter
COB-ID 0 1 2 3 4 5 6 7
0x1400-01 0x1600-01
RPDO
0 0x200
+ Node-ID Target Position
0x1401-01 0x1601-01 0x1601-02
RPDO
1 0x80000300
+ Node-ID Control Word Target Velocity
0x1402-01 0x1602-01 0x1602-02
RPDO
2 0x400
+ Node-ID Control Word Modes of Operation
表2: RPDO のマッピング パラメータ (2) 注意:
この章では、CANsetter を利用して、EDS から DCF (Device Configuration File) を作成することを主眼にしています。ですので、実機
のEPOS はまだ何も操作していません。
あくまでも机上で設定情報を予め作成しているにすぎませんし、CANsetter は、こういった目的のツールでもあります。
実際にCANopen デバイスを対象として PDO (送信側も受信側も) の Communication Parameter と Mapping Parameter を書き換え る場合には、いくつかのルールがあります。
• Operational 状態 (PDO でやりとりをしている最中) では、これらのパラメータを変更できない。できるものもあります。 • Communication Parameter の COB-ID を変更する際は、まず同じエントリの Valid フラグを一旦 “Invalid”に設定する。 • Mapping Parameter を変更する場合は、Sub-index 0x00 の”number of mapped objects”を一旦 0x00 に設定する。
2.5 デフォルト Transmit PDO の確認と設定変更
受信側と同様に、以下の初期値を確認します。
TPDO Communication Parameter (Index: 0x1800 ~ Sub-index あり) TPDO Mapping Parameter (Index: 0x1A00 ~ Sub-index あり)
送信側は、Transmission Type (Index: 0x1A0X Sub-index 0x02) が重要です。
Mapping Parameter COB-ID TT 0 1 2 3 4 5 6 7 0x1800-01 0x1A00-01 0x1A00-02 TPDO 0 0x80000180 + Node-ID 255
Velocity Actual Value Position Actual Value
0x1801-01 0x1A01-01 0x1A01-02 0x1A01-03
TPDO
1 0x80000280
+ Node-ID
255
Current Actual Value Analog Input -1 Analog Input -2
0x1802-01 0x1A02-01 0x1A02-02
TPDO
2 0x80000380
+ Node-ID
255
Status Word Modes of Operation Display
表3: TPDO のマッピング パラメータ (1)
「Profile Position Mode」、「Position Mode」の場合、Mapped Object として以下の設定を必要とします。 0x6064: Position Actual Value
0x6041: Status Word
これらの情報を得るため、TPDO 0 と 2 を有効化します。
また、現在位置情報を定期的に報告させるように、”Position Actual Value”を含む PDO の Communication Parameter の以下の項目 も変更します。
0x1800-0x02: TPDO0 の Transmission Type = 254 (Manufacture Specific Event (次の Event Timer) に従います) 0x1800-0x05: TPDO0 の Event Timer = 100ms
0x1802-0x02: TPDO2 の Transmission Type = 1 (SYNC object×1 をトリガとします)
Mapping Parameter COB-ID TT 0 1 2 3 4 5 6 7 0x1800-01 0x1A00-01 0x1A00-02 TPDO 0 0x180 + Node-ID 254
Velocity Actual Value Position Actual Value
0x1801-01 0x1A01-01 0x1A01-02 0x1A01-03
TPDO
1 0x80000280
+ Node-ID
255
Current Actual Value Analog Input -1 Analog Input -2
0x1802-01 0x1A02-01 0x1A02-02
TPDO
2 0x380
+ Node-ID
1
Status Word Modes of Operation Display
表4: TPDO のマッピング パラメータ (2)
2.6 PDO
List による PDO Linking の確認
CANsetter の PDO List で、PDO 送受信関係 (Linking) を確認します。
上記手順2.4、2.5 で変更した内容が反映されているか確認してください。
※PDO の送信イベント (Communication Parameter による) および、扱う Process Data のリスト (Mapping Parameter による) は、 CANopen ネットワーク コンフィギュレータの ProCANopen の場合、送受信オブジェクト同士をマウスで結びつける <Graphic
Connection> 機能を利用して行うことができます。 今回の場合、EPOS×1 の通信相手としての CANalyzer は厳密には CANopen デバ イスをエミュレートしていないので、直接EPOS の Object Dictionary を CANsetter で書き換える方法を採っています。
2.7 Error
Control サービスの設定
EPOS は、ノードステータス知らせるために”Guarding”と”Heartbeat”をサポートしています。ここでは、リクエストが不要な”Heartbeat”を 採用します。
後述するCANalyzer. CANopen の機能、<CO Scanner> は、この情報を監視してノード ステータスを更新します。 今回は 1000msec.(1 秒)とします。
Heartbeat Consumer は、特に用意していません。CANalyzer の <CO Scanner> で確認できますので、Heartbeat Consumer の代用 とします。
2.8 CANsetter の CAN 通信速度設定
メニュー <Options> → <Settings...> で、<Settings> ダイアログを表示します。ここでは”Baud rate”を 1000kbps に設定してください。
図4: CANsetter の通信速度設定
2.9 CANsetter プロジェクトを保存
保存することで、自動的にCAN メッセージデータベース”PRJDB.dbc”が作成されます。このメッセージデータベースは、ベクター社のツ
ールで利用できます。
同時に、EPOS 用 DCF (Device Configuration File) も生成されます。
3.0 ハードウェアの設定
3.1 EPOS のハードウェア・リファレンスに従って設定する
使用するEPOS に応じて、maxon motor から提供されるハードウェア・リファレンスを参照してください。
CAN Bit rate (Baud rate): 1000kbps Node-ID: 0x10
3.2 電源、CAN バスを準備
CAN 終端抵抗に注意が必要です。maxon motor からは、EPOS に直接接続するタイプが提供されています。
ベクターからは、両端にD-sub 9 ピンの抵抗 (120Ω×2) を内蔵したケーブルが提供されています。
3.3 CANalyzer で使用する CAN I/F の通信速度を設定
メニュー <設定> → <ハードウェア設定> で、<ハードウェア設定> ダイアログを表示します。 “CAN 1” または “CAN 2”どちらか一方 の”CANopen settings” (CANopen オプションがインストールされている場合) から “1000kBit/sec”を選択します。<OK> ボタンでダイア
ログを閉じる際に一方のCAN ポートについても同様な設定を行ってください。
CAN メッセージデータベースは、メニュー<ファイル> → <データベースを関連づけ...>で、 CANsetter で生成された”PRJDB.dbc”を割り 当てます。
図5: CANalyzer の通信速度設定
4.0 デバイスの Boot-Up
電源および、終端抵抗を含めてCAN バスの接続を確認した後、ブートアップを行います。 手順は以下のとおりです。4.1 CANalyzer 測定スタート
<PF9> キー押下または、<カミナリ> アイコンをクリックすると CANalyzer の計測がスタートします。 図6: CANalyzer メニューバーのカミナリアイコン4.2 EPOS 電源 ON
CANalyzer <トレース> Window に Boot-up メッセージ
<CO Scanner> にも Boot-up、その後 “Pre-operational”状態に遷移します。
4.3 CANsetter コネクト
メニュー <Network> → <Connect>
CANsetter 右下の <CAN コネクタ>アイコンが、接続状態に変ります (右図参照)。 →
CANalyzer <トレース> Window に “Dynamic SDO”のメッセージが表示されます (SDO Manager を探しています)。 <CO Scanner> に “Boot-up”メッセージが表示されます。
※CANsetter は Node-ID を持っていますが、デバイスではないので”Pre-operational”には遷移しません。
ここまでで、電源とCAN の物理的な接続/通信速度、EPOS が CANopen デバイスとして動作できていることが確認できます。
5.0 CANsetter からのコンフィギュレーションとデバイスのスタート
2.0 章で予め作成したコンフィギュレーションデータ (DCF に格納されています) を、実デバイス (EPOS) にダウンロードすることで、カス タマイズ結果を反映させます。手順は以下のとおりです。
5.1 コンフィギュレーション
図7: CANsetter のメニューバーアイコン
CANalyzer の <トレース> Window に、 各デバイスに対する SDO 通信の状況が表示されます。
5.2 コンフィギュレーション結果の確認
CANsetter の <Device Access> ダイアログで、2.0 章で作成した設定値が実デバイスに書き込まれているか確認できます。
5.3 デバイススタート
CANsetter の <カミナリ> アイコン (Start All Nodes)でデバイスの動作を開始できます (Operational に遷移させます)。 CANalyzer <トレース> Window に NMT メッセージ“Start All Nodes”が表示されます。
<CO Scanner> の EPOS が“Operational”状態に遷移したことを確認できます。
CANalyzer <トレース> Window に 表 4 の TPDO0 (COB-ID: 0x0210) が表示されます。
このTPDO は、100ms 周期で送信され、データバイト 4~7 に“Position Actual Value” (現在位置) が格納されています。 EPOS の Object 0x6040: Controlword は、0x0006 の”shutdown”状態であるので、モータを手で動かすことが可能になっていま す。
ここでモータを手で回転させると、TPDO で送られてくる”Position Actual Value”が回転させた位置に応じて変化することも確認でき
ます。
6.0 PDO による制御
2.0 章で設定変更し、5.0 章でコンフィギュレーションされた結果、PDO による EPOS の基本制御は以下のようになっています。 PDO による制御なので、EPOS が”Operational”状態でのみ有効です。 表 2 を参照してください。
次の位置情報の指示 (EPOS にとっては、RPDO)
PDO0 : COB-ID (CAN メッセージ ID) = 0x200 + Node-ID = 0x210 : Data Byte0~3 (Target Position) = “位置情報”
与えた位置までの動作させるトリガ
PDO2 : COB-ID = 0x400 + Node-ID = 0x410
: Data Byte 0、1 (Controlword) = “制御コマンド” ※下記“Controlword の例”参照
Data Byre 2 (Modes of Operation) = 0x01 「Profile Position Mode」 ※モード情報を常に書き込む Controlword の例 ※詳細は CiA DS-402 を参照 0x0006 : Shutdown 0x0007 : Disable 0x000B :QuickStop 0x000F : Enable 0x001F : Absolute Positioning
0x003F : Absolute Positioning Start Immediately 0x007F : Relative Positioning
0x005F : Relative Positioning Start Immediately
CANalyzer からの PDO 送信で制御する手順 (Interactive Generator Block による) の例を以下に示します。
制御自体は、「Profile Position Mode」の場合、”位置情報の指定” → “動作開始”を繰り返すだけです。
Place all nodes in pre-operational state Start all network nodes in operational state Executes Download
IG では、CAN メッセージデータベース中に該当する上記 PDO を選択し、同じ周期で周期送信するように設定すると、位置情報を変化さ せて動かすことができます。
位置情報の変化は、RPDO0 (0x210) の”Target Position”を IG の <波形生成> 機能を利用して、変化させます。
図8: IG のシグナル波形生成
動作トリガになるRPDO2 は、”Controlword”に 0x001F (Absolute Positioning) を設定し、”Modes of Operation”に 0x01 を設定します。 送信周期は、100ms 程度。 動作速度は、1 章の③で設定した Object 0x6081:Profile Velocity によります。
次の位置指定と回転速度によっては、RPDO2 の送信周期内で移動できない場合があることに注意してください。
7.0 Object Dictionary の操作による直接制御
この直接制御は、CANopen デバイスが Object Dictionary の値に基づいて動作していることを確認することが目的です。実際のシステ
ム運用時のデバイス制御において、SDO による制御を推奨するものではありません。
7.1 回転速度の変更
6.0 の<Interactive Generator Block>による制御を動作させたまま、モータの回転速度を変化させます。
CANsetter がコネクト状態になっていることを確認し、<Device Access> ダイアログで、Object 0x6081:Profile Velocity を変更します。
7.2 動作制御の変更
EPOS は、モータの動作制御のためのパラメータを Object Dictionary 内の Manufacturer Specific 領域に用意しています。 ※ここで言う、”Manufacturer Specific 領域”とは、Object Dictionary のエントリ 0x2000 番台ではなく、
DS-402 内で定義されている領域を指します。 0x60FB : Position Control Parameter Set
Sub-Index 0x05 : acceleration feed forward factor (加速度フィード・フォワード)
エントリの詳細は、maxon motor「EPOS Firmware Specification」 (英) の Object Dictionary の解説を参照してください。
制御の仕組みについては、Application Node「フィード・フォワード位置制御」 (和) を参照してください。
CANsetter の <Device Access> ダイアログで、Object 0x60FB-0x05:acceleration feed forward factor を変更することで、指定位置 での停止動作が変化します。
8.0 CANopen プロトコルの基本動作確認
モータ制御とは直接関係ありませんが、CANopen プロトコルで規定されている動作 (通信) の変更を試します。
8.1 SYNC
Object による PDO 送信
2.5 で定義した TPDO2 は、SYNC Object を送信トリガとしています。
CANalyzer の <Interactive Generator Block> で、SYNC Object (COB-ID: 0x080) を周期送信 (例えば 100ms 周期) とすることで、 EPOS から SYNC Object に同期した PDO が送信されることを確認できます。
8.2 Error
Control プロトコルの変更
2.7 では、Error Control プロトコルを Heartbeat としました。これを、Guarding に変更します。 Guarding に必要な設定は、以下のとおりです。
0x100C : Guard Time (msec 単位で指定) 0x100D : Life Time Factor
Guarding を採用する際、NMT スレーブ デバイス (状態を監視されるデバイス) では、Guard リクエストの周期送信を監視する必要があ ります。 この監視時間(= Guard Time × Life Time Factor)を、上記のエントリで指定します。
Guard Time > 0 に設定すると Guarding が適用されます。
なおこの場合、Object 0x1017:Producer Heartbeat Time を 0 にする必要があります。 CANopen 規格では、Guarding と Heartbeat は排他選択となっているためです。
NMT スレーブデバイス側は、上記の設定で Guarding 採用デバイスとなり、NMT マスタデバイスからの Guarding リクエストを待つこと になります。今回は、CANalyzer の <Interactive Generator Block> を利用して Guarding リクエストを送信します。
Node-ID 0x10 への Guarding リクエストは、COB-ID:0x710 (0x700 + Node-ID) で DLC=2 (Guarding レスポンスのデータ長) 、フレー ム=Remote で、周期送信させます。この時の周期は、スレーブデバイス側の Guard Time より短い周期で設定します。
8.3 Emergency
Object
EPOS は、Emergency Object の機能も実装しています。
最も簡単な確認方法をしては、CANalyzer で測定中に EPOS の電源を切ることです。EPOS はその際、パワーダウンを知らせる
EMCY Object を送信しますので、EMCY Object (COB-ID:0x080 + Node-ID = 0x090) が、CANalyzer の <トレース> Window で確認 できます。
9.0 関連資料
maxon motor Application Note
EPOS Position Controller “デバイス・プログラミング”
各EPOS 用の “ハードウェア・リファレンス”
Vector Application Note
AN-JON-1-001 はじめての CANopen AN-JON-1-1100 Introduction to CANopen