# Simulink导数块与tf的PD超调不一致

> 原文链接：https://robotics.hellobike.com/pitfalls/2018-11-06-robotics-se-16569
> 频道：pitfalls | 更新日期：2018-11-06 | 标签：auto, stackexchange, control, matlab
> 核心摘要：PD控制器仿真中tf结果正确；需谨慎使用Simulink Derivative块，并可改用传递函数或滤波导数。

# Simulink导数块与tf的PD超调不一致

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Inconsistent results between Simulink derivative model and tf for PD controller](https://robotics.stackexchange.com/questions/16569/inconsistent-results-between-simulink-derivative-model-and-tf-for-pd-controller)（Robotics Stack Exchange #16569）

**状态**：已解决

## 问题

同一PD控制器在Simulink导数块模型与MATLAB `tf`/`stepinfo()`中结果不一致；`stepinfo()`给出超调`27.1141%`，与按设计期望的`20%`不符。

## 环境

Linux / ROS 机器人软件与控制通用开发环境

## 解决办法

1. 以`tf`闭环传递函数结果为准；该系统因PD控制器引入零点且无零极点相消，不是二阶系统，因此新系统超调约为`27%`。
2. 谨慎使用Simulink `Derivative`块：输入信号应在时间和幅值上连续，`t=0`处导数应较小，且噪声水平应低。
3. 若不满足条件，可重排方程避免导数块；或将导数并入串联传递函数，即分子乘以`s`；或用滤波导数`G(s)=s/(tau*s+1)`替代。

原问题作者：CroCo；采纳答案作者：CroCo。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #16569：Inconsistent results between Simulink derivative model and tf for PD controller](https://robotics.stackexchange.com/questions/16569/inconsistent-results-between-simulink-derivative-model-and-tf-for-pd-controller)