• 締切済み

MATLAB/simulinkでのD/A変換の仕方

現在MATLABで制御の勉強をしている大学生です。 今、デジタル制御について勉強しているのですが、MATLAB/simulinkを使いながら進めています。 MATLAB/simulinkでのD/A変換のやり方がわからなくて質問いたしました。 通常のアナログ制御の場合、 入力 → コントローラー → プラント → 出力 で多分、設計されると思うのですが、 デジタル制御の場合、 入力 → A/D変換器 → コントローラー → D/A変換器 → プラント → 出力 という流れになると聞きました。 A/D変換器はゼロ次ホールドを行うブロックがsimulinkにあったのでそれを使えばいいと思うのですが、D/A変換器を行ってくれるブロックが見当たりません。 探し方が悪いのでしょうか。。。 もしご存知であればD/A変換に相当するブロックを教えてください。 無ければ、s-functionか何かでのD/A変換のやり方を教えて頂けると助かります。 よろしくお願いします。

みんなの回答

回答No.1

D/A変換そのままスルーで良いのでは? それが全帯域通過のD/A変換になっていると思いますが。 それともfixed point使っているのかな? この場合でもGainブロックで*1とかしてアナログと見なしてよいと思います。 少し滑らかにしたいのならアップサンプリングしてフィルタリングかな。 アップサンプリングが必要かどうかは場合によりますが・・・。 他にはΔΣのD/Aを自分で作るとか・・・。 つまり、どんな帯域のD/Aにしたいかで変わります。

関連するQ&A

  • MATLABでサーボモータを制御する方法

    私は今現在、独学でMATLABを勉強しています。 参考書を見ながらいくつかのMファイルやsimulinkのモデルなどを今までつくってきました。 そこでシミュレーションだけではなく、実際に実機を動かしてみたくなり、たまたま持っていたサーボモータを動かしてみようと思い立ちました。しかし、思い立ったは良いものの、実際にMATLABからの制御入力をサーボモータに伝達する方法がわかりません。多分RS232Cを経由して送るとは思うんですが、実際にsimulink上でどのように構成すれば良いのか教えていただきたいです。D/A変換の仕方もちょっとよくわかりません。 マイコンはPICの16F648Aです。 とりあえず、細かい制御は考えないでただMATLABで動かしてみたいだけです。教えてくれる方がいましたらよろしくお願いします。

  • A/D変換、D/A変換の分解能について

    A/D変換、D/A変換の分解能についてお伺いしたいことがあります。 例えば、あるA/D変換器の分解能が8bitで、出力が±10Vである場合には、 入力のアナログ信号が、20V/2^8 = 0.078125 V 変化すると出力が1段階反応することになる、 つまり分解能が0.078125Vってことですよね?違ってたらすいません。 私がわからないのは、D/A変換器の分解能についてなんです。 D/A変換器の分解能ってのはどういう考え方なのですか? D/Aですから、元のデジタル信号をアナログに変換するわけで、 その分解能が8bitとか書いてある場合にはどういう考え方するのでしょう? 教えてください。

  • SimulinkのCoulomb model

    Matlab simulinkのCoulomb&Visous Frictionというブロックパラメータがあるのですが、 このパラメータの意味が分かりません。 解説には以下のように書いてあるのですが、デフォルトパラメータが [1 3 2 0] 粘性係数(ゲイン) 1 とあるのですが、この意味が良く分からないのです。 解説は以下にあるのですが、摩擦係数がどこに入るのかとか、粘性係数がどこに入るのかとか判りません。この関数は単に係数だけで前段でゲインで入れるならそうしますが、ピンと来ません。 ご存知の方いらっしゃいましたら、お手数ですがお教え願えないでしょうか?よろしくお願いいたします。 ********************************** Coulomb and Viscous Friction ブロックは、クーロン (静的) 摩擦と粘性 (動的) 摩擦のモデルを作成します。ブロックは、零点では不連続性を、それ以外では線形ゲインのモデルを作成します。 ブロック出力は、以下に対する MATLAB® の結果に一致します。 y = sign(x) .* (Gain .* abs(x) + Offset) ここで、y は出力、x は入力、Gain は非ゼロの入力値の信号ゲインであり、Offset はクーロン摩擦です。 ブロックは 1 つの入力を受け入れ、1 つの出力を生成します。入力は、要素に実数および複素数をもつスカラー、ベクトルまたは行列にできます。 http://www.mathworks.co.jp/jp/help/simulink/slref/coulombandviscousfriction.html

  • MATLAB/SIMULINK化学プロセス制御実装

    MATLAB / SIMULINKを用いて、 化学ベンチプロセスの制御系を、 自分で手作業で実装することは可能でしょうか? 具体的行いたい制御は、 PCV制御(圧力計とバルブ開閉)、流量制御(ドラムAに20L移液したらバルブ閉とする。)、TCV制御(ジャケット付きドラムの内温を設定した温度になるようにジャケット側スチーム圧力コントロール弁を開閉する。)等です。   また、参考となるような教科書等ございましたら、ご紹介いただけますと幸いです。

  • ADC0808でA/D変換器を製作

    ADC0808でA/D変換器を作り、それをH8マイコンボードに繋げ制御するのですが、ADC0808のSTRAT,ALE,EOCに何を入力(出力)すればいいか全く分かりません。また制御する際のプログラムも教えていただけると有り難いです。それではよろしくお願いします!

  • 交直変換器のdqベクトル制御について

    交直変換器のdqベクトル制御をMATLAB/Simulinkで行いたいと思っているのですがどのようにやれば良いですか? よろしくお願いいたします。

  • 社会人だがMatlabを個人用に使いたい。

    現在メーカーの技術者ですが、制御工学を独学しています。 制御工学に関する市販書はMatlab/Simulinkの使用を前提としているものが多いので、私も自宅のPCでこれらを使いたいと考えています。 しかし、正規版は、数十万円もするので個人で買うにキツイです。 また、学生であればstudent版を安価で購入できるのですが、社会人の場合それができません。 機能限定があってもいいので、Matlab/Simulinkと同等の計算ができるソフト(サードパーティ製?)はないでしょうか?

  • Simulinkでデータの受け渡し

    現在、Simulinkを使って電気回路を含むようなモデルをつくっています。 Simulinkのブロック間のデータの受け渡しでこんな事ができないかを教えていただきたいです。 やりたい事 ・データタイプだけでなく、電圧や電流などの単位(VやIやΩなど)を設定して、 違う単位のブロックでデータを受け渡すとエラーが出るようにしたい。 →例えば、電圧[V]を出力するブロックと、電流[A]を出力するブロックがあり、データタイプは、同じdouble型。  電圧→電流とデータを受け渡そうとしたときに、エラーが出てほしい。 この説明でわかりますでしょうか。

  • Matlabで作成したmファイルをC言語に自動変換することは可能ですか?

    大学の研究室で使っているmatlabの機能にC言語のソースを自動生成 する機能があると先生に伺ったのですが、 常識的に考えてそんな便利なことができるとは思えません。 実際に下記に示すtoolboxで自分が作ったmファイルからC言語のソースを、ある程度自動生成することは可能でしょうか? Matlab 2008 b windows-x64版 Matlab 7.7 Simulink 7.2 Image processing toolbox Signal processing toolbox Real time workshop SimulinkとReal time workshopを一度も使ったことが無いので 少し調べて良く判らない点がありました。 Realtimeworkshopでは、Simulinkで生成したブロック線図のみC言語で出 力できるものであり、mファイルからの変換はできないのでしょうか?

  • A/D変換

    以前A/D、D/Aについて質問したのですが、今度はICの使い方がわかりません。 今使っているものはADC08831の8ピンのものです。  ̄CSにはlow、Vref,Vccには5V、クロックには外部から300kHZを入力しています。 この状態で正弦波入力をいれると、ディジタル信号が出力されるのでしょうか?? わかる方、回答のほうよろしくおねがいします!

専門家に質問してみよう