• 締切済み
  • すぐに回答を!

エンコーダの信号が(A相、B相とも)途切れる

MATLABのsimulinkで、エンコーダーからの信号をADボードを介してPCに入力してその信号をグラフ表示させるプログラムを作成したのですが、プログラムを実行すると、必ず0.3秒後あたりで0.05秒ほどエンコーダからの入力信号が途切れます(A相、B相とも0Vになる)。 エンコーダの回転数(モーターの回転数)を変えてもプログラム実行後0.3秒あたりで必ず途切れます。エンコーダへの入力電圧が途切れているのかなと思い、その電圧値を計測したのですが、問題ありませんでした。 ボードもしくはMATLABがおかしいのかと思い、エンコーダの信号を取り込んでいたボード端子に、別の信号を入力して同じことをやったら、信号は途切れず問題なく取り込めていました。なので、ボードやMATLAB、PCには問題ないように思いました。 なので、エンコーダに問題があるはずなのですが、一つ不可解なのは、必ずSimuinkプログラムを実行後"約0.3秒後"という同じ時間に信号が途切れるため、エンコーダに問題があるなら、そうなるはずがないと思います。エンコーダへの入力電圧は、simulinkプログラムとは独立した外部電源から入力しています。 となると、やはりMATLABかPCもしくはボードが原因なのかなと思うのですが、しかし、エンコーダ以外の信号は正常に取り込めています。エンコーダを繋いでいた(ADボードの)チャンネルに他の信号を入力しても問題なく取り込めています。 原因は何が考えられるでしょうか?

共感・応援の気持ちを伝えよう!

みんなの回答

  • 回答No.2

MATLAB 入門 プログラミングとスクリプト https://jp.mathworks.com/help/matlab/learn_matlab/scripts.html スクリプトと関数 https://jp.mathworks.com/help/matlab/learn_matlab/scripts-and-functions.html よーするに、スクリプト言語ってのはインタプリタなんで https://www.otsuka-shokai.co.jp/words/interpreter.html プログラムコードを1行づつ順番に実行してる >必ずSimuinkプログラムを実行後"約0.3秒後" 0.3秒後にエンコーダボードのイニシャライズしてると憶測できる >別の信号を入力して同じことをやったら、信号は途切れず問題なく取り込めていました。 同じボードにエンコーダ以外の、例えば押し釦スイッチとかにした場合って事なら ボードのデフォルト設定が押し釦入力に設定してあったならイニシャライズ不要 従って、信号の途切れは無くとも不思議はない 90度位相差エンコーダ入力ってのは実はかなり大変な事やってる エンコーダ入力専用ボードならともかくとして https://www.contec.com/jp/products-services/daq-control/pc-helper/pci-card/cnt32-4mt(lpci)/feature/ 汎用DIボードとかを流用してるとソフト負荷は大きい https://www.contec.com/jp/products-services/daq-control/pc-helper/pcie-card/dio-1616e-lpe/price/ なので、イニシャライズに時間が掛かっても不思議ではない モーションコントロールボードも物によってはイニシャライズに時間が掛かったっりする https://www.contec.com/jp/products-services/daq-control/pc-helper/pci-card/smc-4df2-pci/feature/ で、イニシャライズだとしてそれを確認する手段 0.3秒より短くするのはほぼ無理でしょうけど、長くするのは比較的簡単 所謂、ダミーループでタイマ作って https://jp.mathworks.com/help/matlab/learn_matlab/flow-control.html エンコーダ読み込みプログラムの直前にタイマを入れてみる

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • q4330
  • ベストアンサー率27% (766/2783)

・信号をグラフ表示させるプログラム 症状からするとこのプログラムに原因がありそうです。 プログラムが起動した時に何かを初期化するなどの処理に時間を取られ信号の入手に欠落が生じてるのではないでしょうか?

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Matlab/SimulinkのChirp信号について

    Matlab/SimulinkのChirp信号について Matlab/SimulinkのChirp信号について教えてください。このChirp信号は時間と共に周波数が増加するものですが、20秒間で0.1~10Hzになるように設定した場合、時間と周波数の関係はどのようになるのでしょうか?周波数が一定に比例して増えていくのでしょうか?ちょっとピンときません。時間軸で段々増えていく状態を周波数で置き換えたいのです。よろしければお教えください。

  • ロータリエンコーダの使い方について

    ロータリエンコーダの使い方について 現在,研究でdsPICとロータリエンコーダを用いてモータの回転数を制御しようとしています。 しかしながら,ロータリエンコーダの信号線をdsPICのどのピンに接続すればいいかわからず困っています.どなたかご存知の方がいらっしゃいましたら教えていただけないでしょうか?よろしくお願いします.

  • アナログ信号の計測系に関する質問です。

    以下の場合、信号の大きさや周波数特性などに関して考えるべき項目 と問題となる点にはどのようなものがありますか?簡単にご説明をお願いします。 ・入力信号の電圧と帯域幅、 ・サンプリング周波数、 ・AD変換器が縦続接続されているとき

  • リアルタイム制御用のパソコンについて

    パソコンからAD/DAボードを介して、(MATLAB_Simulinkで組んだプログラムで)モータを制御(サンプル時間:1ms)しようと思っており、現在、それ用のパソコンの購入を検討しています。 このような用途の場合、ノートパソコンでも大丈夫なのでしょうか? 基本的には、使用するパソコンが、AD/DAボードの取説に記載の要求スペックを満たしていれば、問題なく動作するのでしょうか?

  • インクリメンタルエンコーダの不具合について

    研究にインクリメンタルエンコーダを用いているのですが 回転速度に依存して出力されるパルス数が異なるという 不具合が生じています。 例えば、使用しているエンコーダは2000P/R なのですが、手で試しに回してみると 1回転で遅い速度だと1パルス 速い速度だと500パルスくらいになります。 もっと速いと1回転3000パルスくらいになります。 手で回しているので速度は曖昧ですが 速ければ速いほどパルス数は多いです。 カウント方法としてはDSPに内蔵されているCNTボードに よってカウントしてるのですが、他のエンコーダについても 使用しているのでDSPの故障は考えられないと思っています。 メーカーに聞いたのですがそのような不具合は考えられない と言われました。 このような不具合を生じたことがある方はいらっしゃいますか? またこのような症状は何が考えられますか? よろしくお願いします。

  • ロータリーエンコーダの出力信号について

    ロータリーエンコーダのカタログをみると、その出力信号が、TTL、HTL、ラインドライバ、オープンコレクタ、電圧出力と、いろいろありますが、これらの違い、特徴がよくわかりません。 また、私が購入したロータリーエンコーダ(ハイデンハイン社製 ERN1020)は、TTL方式なのですが、推奨としてボードにつなげる前に、差動ラインレシーバを組み込みなさいと書いてあります。 TTLとラインドライバは同じ意味なのでしょうか?差動ラインレシーバにつなげないと、正確にパルスが読み取れないのでしょうか? どなたかご教授お願いします。 http://www.heidenhain.co.jp/index.php?WCMSGroup_785_194=487&WCMSGroup_2523_194=785&WCMSGroup_2509_194=2523&WCMSGroup_487_194=855&WCMSArticle_Template_45_11891=HeidenhainProduktDB&op=catview&search=category&CS_UID=18264

  • 【画像処理】ラインセンサカメラの同期信号について

    コンベヤ上を流れてくるワークをラインセンサカメラを用いて、PCで画像処理を行い、ある種の良品・不良品判定を実施したいと考えています。 そこで色々と調べていたら、画像入力ボードへタイミング信号以外にエンコーダ信号(同期信号)が必要らしいのですが、これは必ず必要なのでしょうか? コンベヤの速度は可変せず、一定速とします。 エンコーダがコンベヤに無く、出来れば取り付けたくありません。 尚、エリアセンサカメラは対象外です。 画像入力ボードへのエンコーダ信号は必ず必要なのか、また、とくに必要ない場合はどうしたらよいのかご教示ください。

  • 交流電源からの信号を,AD変換したいのです.

    交流安定化電源から,実効値で45V,60Hz,0.17Aの信号を出力しています.この信号を入力インピーダンス1MΩ以上,入力レンジ±10VのAD変換器に入力したいのですが,位相遅れがでないように,実行値だけを落とす良い方法は無いでしょうか?また,交流電圧を直流電圧に変換するにはどのようにすればいいのでしょうか? 助けてください.よろしくお願い致します.

  • モーターとエンコーダーを用いた位置制御について

    モータの回転をエンコーダで読ませ、エンコーダのパルス数を参考にPID制御をしようとしています。 パルスのカウント値をプロセス変量として使う際、カウント値を出力する電圧量に変換するにはどうしたらよいでしょうか? お手数ですが、ご教授願います。

  • A/D変換ボードについてです

    信号をPCに取り込むA/D変換ボードを探しております。PCに信号を取り込んでMATLABとLabVIEWで解析するつもりです。どちらのソフトでも使えて、USB対応のものでいいものはないでしょうか。 取り込む信号は生体の心電波形です。PCに信号を取り込んでノイズをフィルタリングしてから解析したいと思っております。