Use System Objects in Feedback Loops
If your algorithm needs to process nondirect feedthrough data through the System object™, use the isInputDirectFeedthroughImpl
, outputImpl
, and updateImpl
methods. These methods
process nondirect feedthrough data through a System object.
Most System objects use direct feedthrough, where the object’s input is needed to
generate the output. For these direct feedthrough objects, the step
method calculates the output and updates the state values. For
nondirect feedthrough, however, the object’s output depends on internal states and not
directly on the inputs. The inputs, or a subset of the inputs, are used to update the
object states. For these objects, calculating the output is separated from updating the
state values. This enables you to use an object as a feedback element in a feedback
loop.
This example shows how to implement a delay object with nondirect feedthrough.
In MATLAB®, select New > System object > Basic.
Select Insert Method and implement the
outputImpl
andupdateImpl
methods.outputImpl
calculates outputs from states and/or inputs.updateImpl
updates state values from inputs.When implementing the
outputImpl
method, do not access the System object inputs for which the direct feedthrough flag is false.If the System object supports code generation and does not use propagation, Simulink® can automatically infer the direct feedthrough settings from the System object MATLAB code. However, if the System object does not support code generation, the default
isInputDirectFeedthroughImpl
method returns false (no direct feedthrough). In this case, override this method to specify nondirect feedthrough behavior.
The processing of the nondirect feedthrough changes the way that the software calls the System object methods within the context of the Simulink engine.