- ベストアンサー
VC++で位相進み補償を行うには?
現在C++を用いた制御を行っています.そこで,ある入力データに対して位相進み補償を行いたいと考えているのですがそのプログラム方法がわかりません. どなたか分かりやすく説明していただける方、もしくは詳しく記載されているサイト等ご存知でしたらお教え願えないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2 http://www32.atwiki.jp/slimebeth/pages/28.html よ >その起動時には、約50ms位な遅れがあり、またOSの状態で >変化します。(一度、起動すれば、後は問題ないと思います) 問題大ありだ。 USBはその仕組み上いくらでも遅れる可能性がある。 >USBのwaveInとwaveOutをそれぞけ入力と出力に使用し、 >入力信号を位相補償して、出力する方式となります。 USBにゃそんな信号はないし、やってることは「位相補償」じゃないぞ。「差動制御」だ。 しかも、質問者のいってることは「位相『進み』補償」だ。全く話になってない。 で本題。 No.1より >おっしゃる通り工業用機械にパソコンをコントローラとしてつなげて機械の制御を行っています. >しかし,時間遅れが大きく,この問題を解決するために位相進み補償を適用したいと考えています. まず、「時間遅れ」の原因を付きつめることが先です。 ・PCの処理による遅延 ・転送ラインの転送速度の問題 ・制御機器のコマンド受信から制御に移るまでの遅延 ・そのた要因 について分かっていなければ、そもそも補償を行う必要があるのかもわかりません。 極端な話、転送速度が遅い問題なら高速な回線に切り替えるだけで解決できる場合もあります。 また、仮に補償を行う場合、この「保障値」はどのように求めるおつもりでしょうか? 過去の「数十サンプリング」から求めるなどとした場合にも、厳密に「どれだけ遅れるのか」が把握できていないと算出することはできません。 その意味でも、「遅れる要因」の把握を行うことが重要です。
その他の回答 (2)
- shiggy17
- ベストアンサー率50% (1/2)
Windowsはreal_timeのOSではありません(W3.1はreal_timeのOS的でした) 通常、一つの方法として、USBを使用する方法がありますが、 その起動時には、約50ms位な遅れがあり、またOSの状態で 変化します。(一度、起動すれば、後は問題ないと思います) USBのwaveInとwaveOutをそれぞけ入力と出力に使用し、 入力信号を位相補償して、出力する方式となります。 約3KHz迄の信号に対しては、対応できると思います。 ほかのも、AD,DAモジュールを利用する方法がありますが、 制御理論も重要ですが、その前にどのようにすれば良いのか 例えば、給料を倍増するのはどうするか、自分で考えなければ なりません。 例えが、悪くお気に触ったら御免なさい。
- ROMIO_KUN
- ベストアンサー率19% (432/2249)
はて、示された書き方では質問の意味が多くの方から見て意味不明と感じます。 位相制御とは、何かの実験を行った結果を細工したいのでしょうか。 それとも何か工業用の機械にパソコンがコントローラーとしてつながっていて 何か微妙なタイミング制御をしたいのでしょうか。 それとも分かっていないのは私だけなのでしょうか。
補足
すみません.うまく説明できず申し訳ないです. おっしゃる通り工業用機械にパソコンをコントローラとしてつなげて機械の制御を行っています. しかし,時間遅れが大きく,この問題を解決するために位相進み補償を適用したいと考えています. そもそも,この方法が適用可能なのかどうかもよくわかっていないために的外れな質問をしているのかもしれません. どうかご教授おねがいします.