How to create a sawtooth signal inside an S-function ?

10 views (last 30 days)
Hi,
I'm working with C-MEX S-function (C code). I was wondering if it is possible to create a sawtooth signal inside a C-coded S-function and see the signal with the Simulink scope. If it is possible, how to do it ?
Thanks for your help

Accepted Answer

TAB
TAB on 10 Sep 2012
Edited: TAB on 10 Sep 2012
A simple demonstration:
  1. Drag a S-function builder block in the model.
  2. Configure S-function having only 1 output (y[0]). No input, No discrete state, No continuous state.
  3. In the output function write code given below
  4. Build the S-function and run the model.
y0[0] = y0[0]+1;
if(y0[0]>UPPER_LIMIT)
{
y0[0] = 0;
}

More Answers (1)

Alice
Alice on 14 Sep 2012
Is it possible to do the same signal inside an S-function without having an output port ? The signal would be compared to the input signal.
  3 Comments
Alice
Alice on 17 Sep 2012
It won't exactly be an output signal. Actually, the sawtooth signal would be created inside the S-function to stay in the block and each point would be compared to the points of the input signal. The output would be the display of on/off leds ont the board I have.
TAB
TAB on 17 Sep 2012
In your S-function builder block
  • 1 output (y[0]) for LED,
  • 1 input (u[0]) for comparing
  • 1 discrete state (xD[0]) for storing Ramp value
  • No continuous state.
In your S-function builder Discrete update field
xD[0] = xD[0] + 1;
if(xD[0]>=UPPER_LIMIT)
{
xD[0] = 0;
}
In your S-function builder Outputs field
if(xD[0]>=u0[0])
{
y0[0] = 1; /*LED ON*/
}
else
{
y0[0] = 0; /*LED OFF*/
}
Please go through the s-function document.

Sign in to comment.

Categories

Find more on Simulink in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!