How to set slower time sample for a subsystem inside of another periodic atomic subsystem

2 views (last 30 days)
How can I set a time sample of 1ms for a subsystem 'A' inside of another periodic atomic subsystem 'B' running at 1us?
I do have a Simulink Coder generated S-function that runs at sample rate of 1ms and I cannot edit it. That S-function have to be inside of a subsystem that runs at sample rate of 100us and cannot remove the S-function from that subsystem or modify its time sample. It is not a problem to have the s-function running slower than the parent subsystem, but I cannot make it work. Can sameone help?

Answers (1)

Fangjun Jiang
Fangjun Jiang on 18 Nov 2019
Put the S-function inside a Triggered Subsystem, which is set to be triggered by Function Call. Use a Function Call Generator to generate the call at every 1ms.
  2 Comments
CLEBER ALBERT
CLEBER ALBERT on 18 Nov 2019
It gives the following error:
'block1ms' has sample time 0.001. Only constant (inf) or inherited (-1) sample times are allowed in triggered subsystem 'block100us'.
Component:Simulink | Category:Blockerror
Fangjun Jiang
Fangjun Jiang on 19 Nov 2019
Edited: Fangjun Jiang on 19 Nov 2019
If the sample time of the S-function is fixed in its source code (not a good practice though), then you don't need to put it inside a subsystem that is triggered every 1ms. You can put it anywhere. It will run every 1ms. You just need to resolve all the rate transition issues.
Any block inside a triggered subsystem can not have a specified sample time. The sample time can either be -1 (which means to inherit from the trigger) or inf (means constant).

Sign in to comment.

Categories

Find more on Schedule Model Components in Help Center and File Exchange

Products


Release

R2016b

Community Treasure Hunt

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

Start Hunting!