05-25-2017 08:01 AM
初めて投稿させていただきます。
simulinkにて作成したモデルをコンパイルしてdllファイルを作成し、Labviewにてdllファイルを呼び出してシミュレーションを行おうとしています。
作成したモデルは入力をそのまま出力する簡単なものなのですが、Labviewで実行しても出力される数値がどんな入力に対しても0を返してきます。
モデル作成時に入力数や出力数を変更するとLabviewの入出力数もそれに応じて変化するのですが、数値は変わらず0を返すような状態です。
なお、コンパイルの設定はタイプを固定ステップ、ソルバーをdiscrete、終了時間をinf、システムターゲットファイルをNIVeriStand.tlcとしました。
よろしくお願いします。
解決済! 解決策の投稿を見る。
05-28-2017 10:02 PM
プログラムは問題なさそうなのですが、モデルはInportとOutportがただつながっているようなものなのでしょうか?モデルのスクリーンショットなどありますか?
05-29-2017 12:36 AM
こんにちは。
返信ありがとうございます。
添付したようにアウトプット1はインプットをそのまま返し、アウトプット2はインプットに200を足し算するといったプログラムになっています。
05-29-2017 04:23 AM
モデルもいたって問題なさそうですね。
LabVIEWのサンプルプログラムにMIT Inport and Outport.viがあります。このサンプルでコンパイルしたDLLを動かすことはできますか?私も試してみたいのでコンパイルなさったDLLをZIPにしていただくことはできますか?
05-29-2017 05:23 AM
MIT Inport and Output.viとは添付したスクリーンショットのようなプログラムなのでしょうか?
試しにDLLを動かしてみたのですが駄目でした。
コンパイルしたDLLを添付したのでお手数ですが試してみてください。
05-30-2017 12:48 AM
MIT Inport and Outport.viはまさに添付していただいたVIのようなものです。モデルありがとうございました。試してみましたが私の環境でも確かに0しか出力されませんでした。Simulinkでコンパイルをしているときに何かエラーなどは出ていませんでしたでしょうか?
05-30-2017 01:04 AM
そうですか…
Simulinkコンパイル時からLabVIEW実行時に至るまで一貫してエラーが起こることはありませんでした。
自分でもいろいろ試してみた結果、
・MATLAB2013a
・LabVIEW2015
・VeriStand2015
の組み合わせではDLLが正常に動作しました。ちなみに
・MATLAB2015a
・LabVIEW2015
・VeriStand2015
の組み合わせではうまく動作しませんでした。
原因がはっきりしないので釈然としません。
05-30-2017 03:11 AM
バージョンで考えられることは、Simulink、LabVIEW、VeriStandの互換性ですが、この資料を見る限りここはクリアしているようです。
http://digital.ni.com/public.nsf/allkb/1A2A50154767B94C862580D40062151A
あとはSimulinkがサポートしているコンパイラのバージョン互換ですが、ぱっと見た限りあまり問題なさそうだと思いますがいかがでしょうか。
05-30-2017 04:02 AM
知り合いの方は
・MATLAB2015a
・LabVIEW2015
・VeriStand2015
でしっかり動作していたので互換性の問題ではないようです。
Microsoft Windows SDK7.1を使用してますので、コンパイラの問題でもなさそうです。
いままでVeriStand2015をEドライブにインストールしていたのを今回はCドライブにインストールしたところ、CドライブにインストールしてあったMATLAB2013aでは正常に動作し、EドライブにインストールしてあったMATLAB2015aでは動作しませんでした。
VeriStandのインストール先をCドライブにしなければならないなどのルール(もしくはMATLABのインストール先と同一のドライブにしなければならないなど)があるのでしょうか。
05-30-2017 07:44 PM
VeriStandはどうかわかりませんが、LabVIEWだとCドライブ以外にインストールするとうまく動作しないことがありました。
今回のような現象を防ぐためにはすべてのソフトウェアをCドライブにインストールするほうがよいのかもしれません。