Why do I receive incorrect results when I use the Derivative block in Simulink?

조회 수: 27 (최근 30일)
I implemented a PID controller using a Derivative block, but the output of the closed-loop system does not match the expected results, which were computed using the closed-loop transfer function.

채택된 답변

MathWorks Support Team
MathWorks Support Team 2009년 9월 14일
The Derivative block is not equivalent to the ideal s-domain derivative, i.e. "s". The main reason for this is that a pure derivative is not causal, i.e., it needs to know future inputs to tell its value at the present time. The Derivative block outputs the value (u[t]-u[t-dt])/dt where "dt" is the last time step taken by the ODE solver. When using variable-step solvers, this is only faintly related to "h(s)=s". This is why the simulated results do not match the closed-loop transfer function results.
To work around this issue, implement an approximate derivative via a high-pass filter of the form "s/(1+a*s)", where "a" is small compared to the dominant time constant of the plant. This will not only eliminate time-domain discrepancies, but also ensure that the PID controller can be implemented.
A PID block that uses an approximate derivative is implemented in Simulink and can be found in the Additional Linear section of Simulink Extras library.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 General Applications에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by