Simulink model not plotting my Sine

6 views (last 30 days)
Hi, I'm trying to build a simulink model working with S-function written in C. However, when I run the Simulink model, the scope is just a straight line, but it's suppose to be a sine wave. I used Legacy Code Toolbox to generate my S-function. My header file is just
int Sine_value(double amplitude, double vitesse_ang, double phase);
and my main file is
#include "Sine_value.h"
#include <math.h>
int Sine_value(double amplitude,
double vitesse_ang,
double phase,
)
{
int t[101];
int i;
int y0[101]
for (i = 0; i <= 100 ; i++) {
t[i] = i;
y0[i] = amplitude * sin(vitesse_ang * t[i] + phase);
}
return *y0;
}
To compile these file into the S-function, i used all these commands from the Legacy Code Toolbox :
def = legacy_code('initialize')
def.SFunctionName = 'S_function1'
def.OutputFcnSpec = 'y0 = Sine_value(double u1, double u2, double u3)'
def.HeaderFiles = {'Sine_value.h'}
def.SourceFiles = {'main.c'}
legacy_code('sfcn_cmex_generate', def)
legacy_code('compile', def)
I also attached all my files required.

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 30 Jun 2022
Edited: Fangjun Jiang on 30 Jun 2022
I understand this might be just an exercise to learn Legacy Code Toolbox and S-function, but there are a couple of things wrong
  1. I would think it would be wrong to specify the returned sine value to be an integer
  2. Once the s-function is compiled and built, it will be executed at every simulation step. With this in mind, you would need the C function just calculate one value, y=sin(x), and leave the rest to Simulink. Calculating the full cycle of sine wave in C makes it impossible to be used to build the s-function.
  4 Comments
Pierre-Olivier Desrosiers
Hi Fangjun, I had a last question. How do I call my time constant in my C function so my simulink model take the step time parameters to calculate the sine wave ?

Sign in to comment.

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!