Simulink Desktop Real-Timeの​​エクスターナルモー​ドを使用する際、外部 C/C++ コードを挿入する方法(外部として関数を宣言、S Function、C Caller、C Function)の違いを知りたい。

조회 수: 1 (최근 30일)
健吾 織田
健吾 織田 2022년 6월 28일
댓글: 健吾 織田 2022년 6월 29일
IMUセンサから読み取ったデータをSimulink Desktop Real-Timeエクスターナルモードを使いリアルタイム計測・アクチュエータを使った制御を行いたいです。
IMUセンサにはC++で書かれたサンプルコードファイル(.h,.cppファイルが20個程度の規模)があり、これをsimulinkに組み込むことを考えています。
調べた限りでは以下の3つの方法があるようですが、Simulink Desktop Real-Timeのエクスターナルモードで使用可能かどうかと、使い方の違い・メリットを教えていただきたいです。
・外部コードからmexファイル( MEX 関数)を作成し、MATLAB Functionの中で「外部として関数を宣言」して実行
 https://jp.mathworks.com/help/simulink/slref/coder.extrinsic.html
・外部コードからS Functionブロックを作成し実行
https://jp.mathworks.com/help/simulink/slref/legacy_code.html
・C Caller、C FunctionからSimulink で C コードを統合(Simulink Desktop Real-Timeで使えるか未確認)  
 https://jp.mathworks.com/help/simulink/integrate-external-c-algorithms-using-c-function-block.html
 https://jp.mathworks.com/help/simulink/slref/ccaller.html

채택된 답변

Toshinobu Shintai
Toshinobu Shintai 2022년 6월 29일
こちらで説明されているものが、Simulink Desktop Real-Time のエクスターナルモードの説明資料になります。エクスターナルモードは、モデルを Simulink Coder でコード生成し、コンパイラでビルドしてカーネルモードプロセスで実行します。
この時、例えばWindowsであれば、MinGW か Microsoft Visual C++ のコンパイラを使ってビルドを行うと思います。これらのコンパイラでビルドできるCコードであれば、S-Function、C Caller、C FunctionにてC言語のコードを呼び出すモデルをエクスターナルモードで実行することができます。
  댓글 수: 4
Toshinobu Shintai
Toshinobu Shintai 2022년 6월 29일
편집: Toshinobu Shintai 2022년 6월 29일
外部として関数を宣言「coder.extrinsic」はコード生成に対応していませんので、おそらく無理かと思います。
S-Function、C Caller、C Function は大丈夫です。
健吾 織田
健吾 織田 2022년 6월 29일
ご回答ありがとうございます。
承知しました。
S-Function、C Caller、C Functionを利用するようにします。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!