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?