代码解读三 文件名“Ano_Pid.c”

本文解析了名为'Ano_Pid.c'的文件,该文件实现了基础的单级PID控制器。虽然代码中存在一些优化和难以理解的部分,但核心仍遵循PID的基本原理。分析方法是从模块入手,理解其整体结构。对于难以解读的细节,作者建议用经典PID公式替换,并通过ADT(抽象数据类型)将实现封装。有兴趣的读者可以对比优化效果,至少应达到相同的功能水平。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于PID这部分匿名代码里面有很多,此文件是最基础的即单级PID的实现,后面的关于速度和角速度环的串级PID及高度和高度速度环的串级PID都是以此为基础的,所以此文件内容务必搞懂。

/******************** (C) COPYRIGHT 2016 ANO Tech ***************************
 * 作者		 :匿名科创
 * 文件名  :ANO_PID.c
 * 描述    :PID函数
 * 官网    :www.anotc.com
 * 淘宝    :anotc.taobao.com
 * 技术Q群 :190169595
*****************************************************************************/
#include "Ano_Pid.h"
#include "Ano_Math.h"
#include "Ano_Filter.h"

/*

不难看出匿名使用的并不是大家推崇的增量式PID,而是位置式PID
至于为什么我也不是很清楚


简单列下关于位置式PID和增量式PID的公式

//位置式PID(匿名使用)
ux = kp * ex + ki * ex_sum + kd * (ex - ex_prior);



//增量式PID
dux = kp(ex - ex_prior) + ki * ex + kd * (ex - 2 * ex_prior + ex_prior_prior);

ux = dux + ux;


*/




float PID_calculate( 
										float dT_s,            				//周期(单位:秒)
										float in_ff,						//前馈值
										float expect,						//期望值(设定值)
										float feedback,						//反馈值()
										_PID_arg_st *pid_arg, 				//PID参数结构体
										_PID_val_st *pid_val,				//PID数据结构体
										fl
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值