質問

  1. CANインターフェイスカードはCOMポートとしてインストールされる可能性がありますか?

  2. 個別のフレームとして送信されるメッセージを分割するにはどうすればよいですか?受信した複数のフレームからのデータを1つのメッセージにまとめることはどうですか?これは有効な懸念事項ですか?

  3. CANopenスタックとは何ですか?シリアルポートと通信するためのAPIをすでに持っている場合、CANopenスタックなしでプログラムにCANopenメッセージの読み取り/送信をさせることはできますか?私のプログラムは正確に何をしなければなりませんか?

  4. ソフトウェアでオブジェクトディクショナリ(OD)を実装する理想的で正しい方法は何ですか?

(現在の状況:CANopenメッセージを解釈するJavaプログラムを作成する必要があります。特定の状況により、CANハードウェアを使用できません。)

(これは先週 JavaとCANopenで投稿した一連のStack  Overflowの質問の続きです。)

役に立ちましたか?

解決

  1. これはインターフェースカードに依存します。しかし、ほとんどの場合、それはCOMポートではありませんが、カードにアクセスするための関数をエクスポートしたDLLファイルを取得します(利用可能なほとんどのCANインターフェイスはUSBポート経由でPCに接続されます)。しかし、心配しないでください。公式の標準ではありませんが、これらのDLLファイルのほとんどは同じ機能を使用しているため、CANインターフェースを別のメーカーの別のメーカーと問題なく交換できます。

  2. CANバスを介して大量のデータを送信することは非常にまれなので、複数のフレームに分割する必要があります。ただし、どうしても必要な場合は、自分で行う必要があります。

  3. CANopenスタックは、使用する高レベルの機能を提供するライブラリです。 CANopenが必要とするすべて(ハートビートなど)を処理するので、自分で行う必要はありません。優れたスタックは、複数のフレームも処理します(2)。残念ながら、そのようなスタックは安価では入手できませんが、私見では価値があります。

  4. ほとんどの実装では、ODを変更できるかどうかに応じて、ROMまたはRAMで構造体を使用します。ただし、優れたCANopenスタックも既にこれを処理します。

他のヒント

3)商用のCANopenスタックは確かに優れたアイデアですが、CANopenメッセージを使用せずにCANopenメッセージを読み取り/送信することも可能です。

アプリケーションの目的が何であるかはわかりません。しかし、おそらくCANopenスタックがなくても大丈夫な例は、すでにマスターノードとスレーブノードを備えたCANopenバスが機能していて、特定のメッセージを聞きたい場合です。別の例としては、使用するメッセージの小さく明確に定義されたセットで小さな構成またはテストユーティリティを作成する場合があります。そのような場合、本格的な商用CANopenスタックは非常に使いすぎになる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top