那么该怎么修改我的代码来引入增量式控制器以解决我的问题
时间: 2023-12-16 17:05:16 浏览: 19
要修改您的代码以引入增量式控制器,您需要做以下几个步骤:
1. 在函数的开头定义一个静态变量,用于存储上一次的输出值。例如,您可以添加以下代码:
```c
static float Last_Turn = 0;
```
2. 在计算转向控制量(Turn)之前,计算当前误差与上一次误差的差值,得到误差变化率。您可以添加以下代码:
```c
float Error_Delta = Keep_Bias - Last_Keep_bias;
```
3. 根据误差变化率来调整输出增量。您可以根据实际需求和系统响应特性来调整增量的计算方式。例如,您可以使用以下公式:
```c
float Increment = KP * (Keep_Bias - Last_Keep_bias) + KD * Error_Delta;
```
4. 将输出增量与上一次的输出值相加,得到本次的输出值。同时,对输出值进行限幅处理,确保其在允许范围内。您可以添加以下代码:
```c
Turn += Increment;
if (Turn > Turn_limiting) Turn = Turn_limiting;
if (Turn < -Turn_limiting) Turn = -Turn_limiting;
```
5. 更新上一次的偏差和输出值。您可以添加以下代码:
```c
Last_Keep_bias = Keep_Bias;
Last_Turn = Turn;
```
6. 最后,将更新后的输出值赋值给Vz,即转向控制PWM。您可以添加以下代码:
```c
Vz = Turn;
```
通过以上修改,您的代码将引入增量式控制器来调整角度。增量式控制器可以根据误差变化率动态调整输出值,从而更好地处理小误差情况。请根据实际需求和系统响应特性,调整增量计算的系数和限幅范围,以达到理想的控制效果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)