CANopen (機械装備 / モーション)
CANopen は CAN バス上に構築された上位プロトコル (CiA 301) で、モーションコントローラ・サーボ・ロボット関節・計測器・車両補助システム など、精密 / 決定論的な通信が求められる分野で広く使われています。
本ゲートウェイは共通統合エンジンを通じて CANopen の読み取りに対応します。
PlantPulse は CAN バスを直接扱えません
PlantPulse Edge の H/W には CAN コントローラがありません。CANopen スレーブと通信するには、必ず CAN ↔ Ethernet ゲートウェイ が必要です。
| 推奨 H/W | 備考 |
|---|---|
| Anybus Communicator CAN | EtherNet/IP、Modbus TCP、PROFINET などへ変換 |
| Ixxat CAN@net NT | TCP socket ベースの raw / CANopen ルーティング |
| HMS Networks Ewon Cosy / Flexy + CAN extension | 遠隔地の統合 |
| Kvaser Ethercan | 開発 / デバッグ用 |
多くの統合現場では CAN → Modbus TCP / EtherNet/IP マッピング に変換し、PlantPulse には Modbus TCP / EtherNet/IP として登録するほうが簡単です。本ページは、ゲートウェイが CANopen をそのまま公開する場合のガイドです。
登録フォームの入力値
| 入力欄 | 記入内容 | 例 |
|---|---|---|
| IP アドレス | CAN ↔ Ethernet ゲートウェイの IP | 192.168.30.40 |
| ポート | ゲートウェイが公開する TCP ポート | (ベンダーごと、例 19227) |
| Node ID (node-id) | CANopen ノード番号 (1~127) | 5 |
| 応答タイムアウト | 応答待ち時間 (ms) | 2000 |
Node ID が要点
CANopen では同一バスに複数のスレーブが接続され、それぞれ Node ID で識別されます。スレーブごとに個別の接続として登録してください。
CANopen の基本概念 (簡易まとめ)
| 用語 | 意味 |
|---|---|
| Object Dictionary (OD) | デバイスの全データ項目をツリー形式で整理した表。インデックス (16-bit) + サブインデックス (8-bit) でアクセス |
| SDO (Service Data Object) | point-to-point の読み書き。PlantPulse が使用するモード。低速だが任意の項目にアクセス可能 |
| PDO (Process Data Object) | サイクリック / イベントベースの push。ゲートウェイが受信してキャッシュする場合が多い |
| NMT (Network Management) | ノードのステートマシン (Boot-up → Pre-operational → Operational → Stopped) |
| EDS / DCF | OD を定義したテキストファイル。ベンダーが提供 |
OD インデックスは標準領域 (0x1000~0x1FFF)、メーカー領域 (0x2000~)、標準デバイスプロファイル (0x6000~) に分かれます。
タグの PLC アドレス表記
OD 座標を <index>:<subindex> 形式で入力します。16 進・10 進のどちらでも可能です。
| 表記 | 意味 |
|---|---|
0x1000:0 | Device Type |
0x1018:1 | Identity → Vendor ID |
0x1018:2 | Identity → Product Code |
0x6000:01 | (DS-401 デジタル入力プロファイル) Digital Input 1 |
0x6041:0 | (DS-402 モーションプロファイル) Statusword |
0x6064:0 | (DS-402) Position Actual Value |
0x6077:0 | (DS-402) Torque Actual Value |
座標はデバイスの EDS ファイル、またはマニュアルの OD 表で確認します。無償ツールの CANopen Magic / CANeds / CANopenNode でスレーブを直接スキャンすることもできます。
データ形式のマッチング
| OD の値 | データ形式 | 形式補助 |
|---|---|---|
| BOOLEAN | Boolean | (空欄) |
| INTEGER8 / UNSIGNED8 | Integer | B |
| INTEGER16 / UNSIGNED16 | Integer | (空欄) |
| INTEGER32 / UNSIGNED32 | Integer | DW |
| REAL32 | Float | REAL |
| VISIBLE_STRING | String | STR[N] |
EDS ファイルの DataType 列をそのまま参照してマッチングすれば十分です。
よくある問題と対処
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| 「No reply / SDO timeout」 | ノードが Pre-operational または Stopped | NMT で Operational へ遷移 (ゲートウェイ / マスタ設定) |
| 一部のノードのみ無応答 | Node ID の重複、終端抵抗の欠落 | CAN ラインの両端に 120Ω 終端、ID 重複の点検 |
| 値がばらつく | bit-rate の不一致 | スレーブとゲートウェイのボーレートを一致させる (125k / 250k / 500k / 1M) |
| 通信はできるが意味が不明瞭 | ベンダー固有の OD 領域 (0x2000~) を使用中 | ベンダーマニュアル / EDS の項目説明を確認 |
| 「Heartbeat lost」 | マスタ未設定 | ゲートウェイをマスタに設定、または sync producer を有効化 |
次のステップ
- 高度な設定 — REST API の CANopen 例
- 大規模サイトでは PROFINET / EtherCAT への移行 事例が多くあります — 新規構築であれば検討する価値があります。