CANopenを理解しようとしているプログラマ
質問
-
CANインターフェイスカードはCOMポートとしてインストールされる可能性がありますか?
-
個別のフレームとして送信されるメッセージを分割するにはどうすればよいですか?受信した複数のフレームからのデータを1つのメッセージにまとめることはどうですか?これは有効な懸念事項ですか?
-
CANopenスタックとは何ですか?シリアルポートと通信するためのAPIをすでに持っている場合、CANopenスタックなしでプログラムにCANopenメッセージの読み取り/送信をさせることはできますか?私のプログラムは正確に何をしなければなりませんか?
-
ソフトウェアでオブジェクトディクショナリ(OD)を実装する理想的で正しい方法は何ですか?
(現在の状況:CANopenメッセージを解釈するJavaプログラムを作成する必要があります。特定の状況により、CANハードウェアを使用できません。)
解決
-
これはインターフェースカードに依存します。しかし、ほとんどの場合、それはCOMポートではありませんが、カードにアクセスするための関数をエクスポートしたDLLファイルを取得します(利用可能なほとんどのCANインターフェイスはUSBポート経由でPCに接続されます)。しかし、心配しないでください。公式の標準ではありませんが、これらのDLLファイルのほとんどは同じ機能を使用しているため、CANインターフェースを別のメーカーの別のメーカーと問題なく交換できます。
-
CANバスを介して大量のデータを送信することは非常にまれなので、複数のフレームに分割する必要があります。ただし、どうしても必要な場合は、自分で行う必要があります。
-
CANopenスタックは、使用する高レベルの機能を提供するライブラリです。 CANopenが必要とするすべて(ハートビートなど)を処理するので、自分で行う必要はありません。優れたスタックは、複数のフレームも処理します(2)。残念ながら、そのようなスタックは安価では入手できませんが、私見では価値があります。
-
ほとんどの実装では、ODを変更できるかどうかに応じて、ROMまたはRAMで構造体を使用します。ただし、優れたCANopenスタックも既にこれを処理します。
他のヒント
3)商用のCANopenスタックは確かに優れたアイデアですが、CANopenメッセージを使用せずにCANopenメッセージを読み取り/送信することも可能です。
アプリケーションの目的が何であるかはわかりません。しかし、おそらくCANopenスタックがなくても大丈夫な例は、すでにマスターノードとスレーブノードを備えたCANopenバスが機能していて、特定のメッセージを聞きたい場合です。別の例としては、使用するメッセージの小さく明確に定義されたセットで小さな構成またはテストユーティリティを作成する場合があります。そのような場合、本格的な商用CANopenスタックは非常に使いすぎになる可能性があります。