MATLAB Answers

Call mex function in simulink/ s-function ?

조회 수: 37(최근 30일)
Hocine YAKOUBI 25 Jan 2018
댓글: Pierre LEPERCQ 4 May 2018
I have a SBG system (inertial navigation system) that we can not use with Matlab.
I created a mexw64 file that allows me to acquire the data of the sbg in real time. To do this I call the Function: [id, temps, ekf, imu, gyro, temp]=ellipseClientSMMatlab in Matlab, tell now everything is working.
I want to use those streaming data id, temps, ekf, imu, gyro, temp in Simulink, how can I do that? I tried to use S_Function Builder, in the Library I put my mex file: ellipseClientSMMatlab.mexw64, and I put in the outputs id, temps, ekf, imu, gyro, temp. I build, No error and I have three files, ellipseClientSMMatla.c, ellipseClientSMMatla_wrapper.c, ellipseClientSMMatlab.tlc.
I excute that in Simulink, but nothing in the outputs id, temps, ekf, imu, gyro, temp. In Matlab when I try to call my function, [id, temps, ekf, imu, gyro, temp]=ellipseClientSMMatlab. It gives me error. “MEX level2 S-function "ellipseClientSMMatlab" must be called with at least 4 right hand arguments”
Can someone help ? thank you so much PS : Sorry for my english dont write well.


Nick Sarnie
Nick Sarnie 1 Feb 2018
Hi Hocine,
It sounds like you used MATLAB Coder to generate a MEX for the MATLAB Function. If you want to use it in an S-Function, I recommend creating a DLL with MATLAB Coder instead. To do this, you can use the "-config:dll" option to the "codegen" command. Lets use an example MATLAB function named 'dlldemo', which takes two double input arguments:
>> codegen -config:dll dlldemo.m -args {1,2}
From here, you can go into the codegen/dll/dlldemo folder and copy the dlldemo.lib and dlldemo.dll file to your Simulink model directory.
Finally, add 'dlldemo.lib' and 'dlldemo.dll' to the Library tab of S-Function Builder under 'Library/Object/Source files', and call 'dlldemo' in the S-Function code.
  댓글 수: 3
Pierre LEPERCQ 4 May 2018
Hey Hocine!
I have a problem to get data from my SBG captor in Simulink. It looks like you found a solution to get them in real time... Can you tell me how have you done to create your ellipseClientSMMatlab.mexw64 and what you wrote in?
It would hep me a lot
PS : Sorry for my english, is not well too ^^'

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

Community Treasure Hunt

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

Start Hunting!

Translated by