このQ&Aは役に立ちましたか?
エンコーダの信号が途切れる
2023/10/20 19:22
- MATLABのsimulinkでエンコーダの信号をグラフ表示するプログラムを作成したが、必ず0.3秒後に信号が途切れる(A相、B相とも0Vになる)。
- エンコーダへの入力電圧やADボードに問題はない。
- 他の信号は正常に取り込めるため、原因はMATLABやPC、ボード以外にある可能性がある。
エンコーダの信号が(A相、B相とも)途切れる
2021/05/29 16:55
MATLABのsimulinkで、エンコーダーからの信号をADボードを介してPCに入力してその信号をグラフ表示させるプログラムを作成したのですが、プログラムを実行すると、必ず0.3秒後あたりで0.05秒ほどエンコーダからの入力信号が途切れます(A相、B相とも0Vになる)。
エンコーダの回転数(モーターの回転数)を変えてもプログラム実行後0.3秒あたりで必ず途切れます。エンコーダへの入力電圧が途切れているのかなと思い、その電圧値を計測したのですが、問題ありませんでした。
ボードもしくはMATLABがおかしいのかと思い、エンコーダの信号を取り込んでいたボード端子に、別の信号を入力して同じことをやったら、信号は途切れず問題なく取り込めていました。なので、ボードやMATLAB、PCには問題ないように思いました。
なので、エンコーダに問題があるはずなのですが、一つ不可解なのは、必ずSimuinkプログラムを実行後"約0.3秒後"という同じ時間に信号が途切れるため、エンコーダに問題があるなら、そうなるはずがないと思います。エンコーダへの入力電圧は、simulinkプログラムとは独立した外部電源から入力しています。
となると、やはりMATLABかPCもしくはボードが原因なのかなと思うのですが、しかし、エンコーダ以外の信号は正常に取り込めています。エンコーダを繋いでいた(ADボードの)チャンネルに他の信号を入力しても問題なく取り込めています。
原因は何が考えられるでしょうか?
回答 (2件中 1~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
エンコーダ読み込みプログラムの直前にタイマを入れてみる
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。