How to bound discrete integrator outputs
4 次查看(过去 30 天)
显示 更早的评论
Hi all
I am working on a simulation model which eventually needs to get deployed on actual hardware in production. One thing that now worries me is the outputs of some discrete integrator blocks. As an example, I have a discrete integrator that receives rotational speed in rad/s as an input, and provides rotational angle as an output in rad. Afterwards, I use a simple modulus block to bound this angle output between 0 and 2*pi.
The concern I am having, is that the output of the discrete integrator block will build up indefinitely, while it actually just needs to overflow to 0 when it reaches the 2*pi bound. In simulation, the discrete integrator's output data type is a double, so it is allowed to become very large, but since this is going into production hardware I would like to limit variable sizes if possible.
What I have tried is to set 0 and 2*pi as saturation limits, then output the saturation port and feed it back into the external reset port.

This provides me the functionality, but it seems to give a delay each time it executes. I have compared a regular discrete integrator, by inserting the output angle into a cosine and count how many times the cosine goes up and down, and over 3000 cycles, the implementation of the screenshot above has done 27 cycles less...
Does anyone have a suggestion for bounding the output of a discrete integrator, without any delay?
Thanks much!
Jonas
0 个评论
采纳的回答
Fangjun Jiang
2019-5-10
When the saturation happends, it should not reset to zero. It should reset to "Value-2*pi".
Don't enable "Limit output" at this "Discrete-time Integrator" block. Instead, Use a Sum block to calculate the difference "Value-2*pi". Compare the difference, if it is great than zero, trig the re-set of the "Discrete-time Integrator" block. Specify the "Initial condition source" as "external" and feed the difference.
4 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 General Applications 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


