CanFestival86 Library

CanFestival86は、86Duino Oneボードで独自のCANポートを使用して実行されるCanFestivalのX86ポーティングバージョンです。

CanFestivalは、Canopen CIA DS-301標準のコア通信システムを処理するオープンソースCanopenスタックであり、CIA DS-302構成マネージャーやCIA DS-305 LSSなどの重要な実装も含まれています。
これは、非常に多くのプラットフォームをサポートし、PC環境または一般的な組み込みシステムで実行できます。現在、CanFestival86ライブラリを介してDMP X86/DOSプラットフォームで実行できます。

元のコード

元のCanFestival86コードは、GitHubページにダウンロードできます。

組み込みのmaster_nodeとslave_nodeサンプルコードは、canfestivalコアの操作プロセスを示しています。
詳細なCanFestval Libraryのインストール、ライン接続、Master_Node、Slave_Nodeの例については、CanFestival86の例の実行を参照してください

CanFestival86カテゴリ

CanFestival86カテゴリは、CanFestivalのいくつかの重要な関数ラッパーを提供します。これは、ユーザーが使用するのに便利なため、数行のコードでCanFestivalマスターまたはスレーブノードを実行できます。

– bool begin(co_data *node_data、unsigned long baudrate);
バスとタイマーを開始し、canfestivalノードデータ構造にバインドします。

– bool set86nodeid(uns8 nodeid);
ノードCanopen node-idを設定します。

– bool set86state(e_nodestate状態);
NODE CANOPEN NMTステートマシンを設定します。

– void setverbose(bool is_verbose);
シリアルモニターにCanFestivalコアメッセージを出力するかどうかを設定します。
メッセージを出力するには、is_verboseをtrueに設定します。

– void dumpruntimeinfo();
setverbose()関数を介してis_verboseをTrueに設定すると、dumpruntimeinfo()でloop()でコアメッセージを印刷することができます。

– sdowrite(uns8 nodeid、uns16 index、uns8 subindex、uns32サイズ、void *data、uns32 timeout_ms = 1000);
これはブロッキングSDOダウンロード機能であり、データをSDOサーバーのODに書き込んでいることを要求します。ブロッキングSDOWRITEは、SDOリクエストを送信した後、サーバーが応答またはタイムアウトするまでブロックし、待機します。
使用するためにこの関数をコールバック関数に配置しないでください。そうしないと、渡されるSDOの結果を読み取ることができません(これは、多くのコールバック関数が割り込みで呼び出され、その時点で他の割り込み信号がブロックされているためです)。

– bool sdowriteasync(uns8 nodeid、uns16 index、uns8 subindex、uns32 size、void *data、sdocallback_t callback =&sdowritedefaultcallback);
これは非同期SDOダウンロード機能であり、SDOクライアントがSDOサーバーのODにデータを書き込むことを要求します。非同期sdowriteasync関数はどこでも使用できますが、1コールバック関数を実装する必要があります。これは、SDO通信が完了したときに呼び出しを提供し、SDO通信結果の判断と処理を内部的に実装します。
CanFestival86 LIBは、プリセットコールバック関数sdowritedefaultCallback()を提供します。この場合、関数は通信結果を判断し、占有された転送ラインを解放します。ユーザーは、独自にカスタム関数を実装するプリセットコールバックを使用できます。

– bool sdoread(uns8 nodeid、uns16 index、uns8 subindex、uns32 *size、void *data、uns32 timeout_ms = 1000);
これは、SDOクライアントがSDOサーバーにODデータを読み取るように要求するブロッキングSDOアップロード機能です。 SDOリクエストを送信した後、サーバーが応答またはタイムアウトするまでブロックして待機します。
サイズパラメーターのデータバッファーのスペースサイズを事前に提供してください。また、関数呼び出し後に返されるサイズサイズは実際のデータのサイズです。
使用するためにこの関数をコールバック関数に配置しないでください。そうしないと、渡されるSDOの結果を読み取ることができません(これは、多くのコールバック関数が割り込みで呼び出され、その時点で他の割り込み信号がブロックされているためです)。

– bool sdoreadasync(uns8 nodeid、uns16 index、uns8 subindex、sdocallback_t callback);
これは、SDOクライアントがSDOサーバーにODデータを読み取るように要求する非同期SDOアップロード機能です。非同期sdoreadasync関数はどこでも使用できますが、1コールバック関数を実装する必要があります。これは、SDO通信が完了したときに呼び出しを提供し、SDO通信結果の判断と処理を内部的に実装します。
canfestival86 libは、ユーザーが特定のデータを保存して読み取るためにコールバック自体を記述する必要があるため、sdoreadasyncのプリセットコールバック関数を提供しません。
Sdoreadasync()は、CanFestivalが提供する関数の実装とデータ構造が現在この機能を設計していないため、データを保存するためのアドレス情報を転送するためのパラメーターを設計しません。コールバックのストレージ場所を自分で指定するか、代わりにブロッキングsdoread()関数を使用してください。

使用の制限

CanFestival86関数ライブラリは、操作中に86Duino内部MCMタイマーを使用するため、タイムロン関数ライブラリなど、同じMCMタイマーを使用する他の機能と同時に動作することはできません。


 

関数ライブラリリファレンスメインページ

86Duinoリファレンスのテキストは、Creative Commons Attribution-Sharealike 3.0ライセンスの下でライセンスされています。参照内のコードサンプルはパブリックドメインにリリースされます。