高専向けmyRIO組込開発コンテスト用コミュニティページ

返信
これは自由参加グループです。 グループメンバーとして参加し、投稿を開始するには、サインインして [グループへ参加] をクリックしてください。
Highlighted

待機関数の使い方

待機関数について質問です。

エンコーダの速度計算にも関連する話ですが、リアルタイムのディジタル処理では等間隔のサンプリングが必須になります。

そこで待機関数を使って時間管理をする必要があると思うのですが、

○ 「待機」ブロック

○ 「ミリ秒まで待機」ブロック

の2種類が用意されています。

ヘルプを見る限り、私の解釈では

「待機」ブロック ⇒ 繰り返しループの実行周期 = 処理(計算)時間 + 指定待機時間

「ミリ秒まで待機」ブロック ⇒ 繰り返しループの実行周期 = 処理(計算)時間 + (指定待機時間 - 処理(計算)時間)

と考えています。

2種類の待機ブロックの違いについて、このような解釈で合っていますでしょうか?

また、ミリ秒以下の時間管理(マイクロ秒オーダー)をする手段もありますでしょうか?

以上、よろしくお願いいたします。

0 件の賞賛
メッセージ1/5
5,641件の閲覧回数
4 件の返信

Re: 待機関数の使い方

こんにちは。

そこが気になるとはなかなか奥深く掘り下げているようですね。とても嬉しいことです。

>○ 「待機」ブロック

>○ 「ミリ秒まで待機」ブロック

正確には「ミリ秒倍数まで待機」です。なぜこんな細かいことと思ってしまうかもしれませんが、実はここがミソです。

この2つの関数の違いは言葉で説明するよりも下の画像をみると理解できると思います。

待機関数の比較.jpg

なぜミリ秒で指定かというと、PCのクロックがミリ秒設定だからです。

myRIOのようなターゲット側ではマイクロ秒とうの設定はできます。

似たような名前の関数がReal-Timeのパレットにありますので、そちらの関数を使えばマイクロ秒でも

設定できますよ。

real-time.png

0 件の賞賛
メッセージ2/5
4,263件の閲覧回数

Re: 待機関数の使い方

回答ありがとうございました。

大体理解できました。

つまり、OSのクロックに同期させるかどうか、が2つのブロックを使い分けるポイントというわけですね。

図中で120msにズレた場合は、計算が間に合わなかった場合と考えて良いでしょうか?

Real-Time 関数ブロックはまた試してみたいと思います。

0 件の賞賛
メッセージ3/5
4,263件の閲覧回数

Re: 待機関数の使い方

>図中で120msにズレた場合は、計算が間に合わなかった場合と考えて良いでしょうか?

120msは待機時間以上にループ内の処理がかかった

(例:演算に時間がかかった、データが100ms以内で来なかったetc)という場合ですね。

その時に2つの関数がどのように次のループ実行の際に働くかが異なるので、

自分はどのように動作させたいのかで使い分けてください。

0 件の賞賛
メッセージ4/5
4,263件の閲覧回数

Re: 待機関数の使い方

度々の回答ありがとうございました。

時間管理の仕方について、使い方を理解できました。

今後ともよろしくお願いします。

0 件の賞賛
メッセージ5/5
4,263件の閲覧回数
返信
これは自由参加グループです。 グループメンバーとして参加し、投稿を開始するには、サインインして [グループへ参加] をクリックしてください。