MATLABを外部モジュールとするリアルタイム計測プログラム


[目的]  光プローブの共振の変化から試料プローブ間距離をnmオーダで制御する。光プローブ振動の振幅と位相をコンピューターで読み取りそれをリアルタイムで処理しCole-Cole Plot等のグラフを作る。
 プログラムの構成としてグラフ表示部(Matlab)と計測プログラムを分離し、並列処理を行う。


 まず、Matlabから測定要求を出します。さらにメールスロットにより計測プログラムに測定要求を送ります。そこで測定プログラムは、プローブの振動状態(資料との距離)や光学測定を行います。計測されたデータをメールスロットによりMEX−Fileに戻しmxArray構造への変換を行います。これは、送られてきたデータはこのままではMatlabは読みこめないのでMatlabがデータを読み込める形に変換するということです。その変換されたデータをMatlabに送りグラフ表示を行います。
画像をクリックすると、拡大画像が新しいウインドウに表示されます。





画像をクリックすると、拡大画像が新しいウインドウに表示されます。
 これはMatlabの実行画面です。プローブを試料に近づけていったときそれに伴う共振の変化が見られます。





 リアルタイムで制御するためにグラフ表示の高速化を行いました。通常Matlabでは以下のようなプログラムをCommandWindow上でコマンドとして打ち込み1行ずつ実行されます。それをあらかじめ○○.mとして保存しておくとM-Fileと呼ばれるファイルになります。M-Fileは関数として呼び出す事が出来ます。さらにM-Fileの中からM-Fileを呼び出したり、M-Fileから外部のプログラム(C言語など)を呼び出す事が出来ます。このプログラムはデータを100個づつ読みこみ交互に表示していくものです。軸やポジションなどを固定せずに実行するとグラフをプロットするたびに自動設定を行います。よってグラフ表示の時間が非常に長くなります。そこで、Position(グラフを書く位置とサイズ)、XLim・XTickLabel(X軸の固定) 、YLim・YTickLabel(Y軸の固定)、replacechildren(軸を固定したまま中身を書きなおす)などを設定しておくとグラフ表示の高速化をする事が出来ました。
画像をクリックすると、拡大画像が新しいウインドウに表示されます。





画像をクリックすると、拡大画像が新しいウインドウに表示されます。
 MEX-Fileを使うとM-FileからCやFortranなどのプログラムを呼び出す事が出来ます。これはその一例として○○.DLL(MEX-File)を呼び出しsinの計算を行うものです。
 まずM-FileからMEX-Fileを呼び出しCの値を渡します。そこでsinの計算を行い、再びM-Fileに値を戻します。そこでグラフ表示を行います。これを繰り返すと図のようなsin Plotが完成します。実際はsinの計算のところに計測プログラムを書きます。





 現在データの流れと致しまして、MatlabよりMEX-Fileを呼び出しデータを変換した後それを戻しグラフ表示を行う部分と、データ変換用DLLから測定要求を出し計測プログラムがプローブの振動状態や光学測定を行った後測定データを戻す部分は完成しています。
画像をクリックすると、拡大画像が新しいウインドウに表示されます。