CANopen 入門 — CiA 301 / 302 / 402 と機器開発の進め方
CANopen は、CAN の物理層・データリンク層の上に、オブジェクトディクショナリ(OD)という共通のデータモデルを載せた産業用ネットワーク規格です。メーカーが異なる機器でも、同じ手順で設定・監視・制御できることが最大の利点です。ここでは、機器を CANopen 対応にする際に最初に理解しておくべき構造を説明します。
目次
オブジェクトディクショナリが中心にある
CANopen 機器は、自分が持つすべてのパラメータ・プロセス値・状態をインデックス(16bit)とサブインデックス(8bit)で番地付けされた表として公開します。これが OD です。
通信も設定も診断も、すべて「OD のどのエントリを読み書きするか」に還元されます。この一点を押さえると、以下の通信サービスの役割が整理しやすくなります。
3つの通信サービス(PDO・SDO・NMT)
PDO(Process Data Object)は、周期的またはイベント駆動でプロセスデータを送る仕組みです。あらかじめ「どの OD エントリを、CAN フレームの何バイト目に載せるか」をマッピングしておき、実行時はデータだけを送ります。最大8バイト、確認応答なし。制御ループはこれを使います。
SDO(Service Data Object)は、OD の任意のエントリを確認応答つきで読み書きする仕組みです。8バイトを超えるデータも分割転送できます。設定・診断に使いますが、1回のやり取りに往復が必要なため、周期的なデータ取得には向きません。
NMT(Network Management)は、ノードの状態(Initialising / Pre-operational / Operational / Stopped)を遷移させる仕組みです。Operational にならないと PDO は流れません。立ち上げでつまずく原因の多くはここにあります。
CiA の主な仕様
CiA 301:通信プロファイル。OD の構造、PDO/SDO/NMT、ハートビート、エマージェンシーメッセージ、SYNC など、CANopen の基本がすべてここにあります。
CiA 302:追加機能。NMT マスタ、ネットワークブート(構成マネージャによる設定配信)、Flying Master によるマスタ冗長化(302-2)、CANopen 経由のプログラム更新(302-3)、多階層ネットワーク(302-7)などを規定します。
CiA 402:モーション制御のデバイスプロファイル。サーボ・ステッピング・インバータのステートマシンと運転モードを標準化しています。
CiA 304:安全関連通信(SRDO)。CiA 309:TCP/IP など他ネットワークとのインタフェース。
自社機器がどこまで必要かは、「スレーブとして動けばよいのか」「マスタを実装するのか」「モーション制御か汎用 I/O か」「安全機能を担うか」で決まります。
EDS / XDD / DCF の関係
EDS(Electronic Data Sheet)は、機器が何をできるかを記述したファイルです。XML 形式にしたものが XDD です。機器メーカーが提供します。
DCF(Device Configuration File)は、そのネットワークで実際にどう設定したかを保存したものです。構成ツールが EDS を読み込み、設定値を入れて DCF として書き出す、という関係になります。
この3つの関係を理解しないまま進めると、「手元のツールでは動くが、構成マネージャ経由の起動では動かない」という切り分けの難しい問題に当たります。
機器開発で最初に決めること
① マスタかスレーブか(両方必要か) ② 使用するデバイスプロファイル(汎用 I/O か CiA 402 か) ③ PDO の点数と更新周期 ④ 必要な追加機能(SRDO、MPDO、Bootloader、Flying Master 等) ⑤ ビットレートとノード ID の割り当て方式(固定か LSS か) ⑥ EDS の提供方法。
これらが決まれば、スタックをソースから移植するか、CANopen 対応モジュールを実装するか、外付けゲートウェイで後付けするか、という実装方式の判断もできます。
立ち上げ時の切り分け手順
実機がつながらないときは、次の順に確認するのが定石です。
ビットレートとノード ID の一致 → NMT で Pre-operational に入るか → SDO で OD が読めるか → PDO マッピングが期待どおりか → ハートビート/ノードガーディングの設定 → SYNC の周期。
上流でつまずいているのに下流を疑うと時間を失います。順序を守ってください。
よくある質問
- CANopen と CAN は何が違いますか?
- CAN はフレームをどう送るかを決めた規格で、中身の意味は決めていません。CANopen は、その上にオブジェクトディクショナリという共通のデータモデルと、PDO/SDO/NMT という通信サービスを載せた上位層です。「メーカーが違っても同じ手順で扱える」という価値は、この上位層があって初めて生まれます。
- 既存機器を CANopen 対応にする方法は?
- 3通りあります。自社 MCU にスタックをソースから移植する、CANopen 機能を持つモジュール/チップを実装する、外付けゲートウェイで後付けする。開発工数・BOM コスト・量産数量・将来の仕様変更のしやすさで最適解が変わります。
- 導入を相談できますか?
- はい。デバイスプロファイル、PDO 点数、必要なアドオン、対象MCU、想定数量をお知らせいただければ、構成のご提案と概算をご回答します。スタックの移植・立ち上げの受託も承ります。
関連する製品カテゴリ・ソリューション
- ミドルウェア/プロトコルスタック(製品カテゴリ)
- 車載・産業ネットワーク機器/ゲートウェイ(製品カテゴリ)
- コンパイラ・IDE・ビルド環境(製品カテゴリ)
- 産業ネットワーク(CANopen)機器開発(ソリューション)
- Windows リアルタイム制御・産業オートメーション(ソリューション)
ほかの技術ガイド
用語を確認する
構成のご相談
本ガイドの内容に沿ってご要件を整理いただければ、構成案と概算を早い段階でご回答します。部分的なご相談だけでも構いません。
