打印
[XMC™]

请问增量PID和位置PID,官方有没有一些比较权威的代码?

[复制链接]
1985|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
请问增量PID和位置PID,官方有没有一些比较权威的代码?

使用特权

评论回复
沙发
jf101| | 2024-3-28 19:12 | 只看该作者
这个建议楼主查看一下官方确认一下

使用特权

评论回复
板凳
星辰大海不退缩| | 2024-3-29 08:42 | 只看该作者
涉及具体的算法了,还是得自己找相关资料

使用特权

评论回复
地板
IFX_OwenSu| | 2024-3-29 10:09 | 只看该作者
您好,
  可以参考以下链接中的方案:
  https://bbs.21ic.com/icview-3368574-1-1.html
  参考文档及相关代码进行学习。但其中核心算法部分是封装起来的,所以并不是所有的都能看到。希望这能帮到您。

BR,
Owen

使用特权

评论回复
5
alxd| | 2024-3-29 11:09 | 只看该作者
那你直接去官方找一找呗

使用特权

评论回复
6
Candic12e| | 2024-3-29 11:12 | 只看该作者
一些专业的控制器厂商网站上提供了PID控制算法的实现代码,这些代码通常是针对他们的硬件平台和产品进行优化的。您可以查找一些知名的控制器厂商,如TI、STMicroelectronics、Microchip等,浏览他们的网站或开发者社区,寻找相关的代码资源

使用特权

评论回复
7
wangjiahao88|  楼主 | 2024-3-29 11:13 | 只看该作者
IFX_OwenSu 发表于 2024-3-29 10:09
您好,
  可以参考以下链接中的方案:
  https://bbs.21ic.com/icview-3368574-1-1.html

感谢指点!我看一下!

使用特权

评论回复
8
Betty1299| | 2024-3-29 12:11 | 只看该作者
其实也没有啥权威的,都是需要自己调的

使用特权

评论回复
9
Betty996| | 2024-3-29 13:15 | 只看该作者
你找找呗,一般来说官方源码应该还是有的吧

使用特权

评论回复
10
Carmen7| | 2024-3-29 14:18 | 只看该作者
直接选择官方的代码就好了

使用特权

评论回复
11
Estelle1999| | 2024-3-29 15:20 | 只看该作者
其实权不权威好用就行吧,纠结这个干啥

使用特权

评论回复
12
Alina艾| | 2024-3-29 16:22 | 只看该作者
增量PID和位置PID是常用的PID控制算法的两种形式。官方并没有特定的权威代码,但是在开源社区和一些专业的控制器厂商网站上可以找到一些可靠的PID控制算法的实现代码

使用特权

评论回复
13
Charlene沙| | 2024-3-29 17:26 | 只看该作者
GitHub是一个开源代码托管平台,您可以在上面搜索PID控制算法的实现代码。许多开源项目和个人开发者都在GitHub上分享了他们的PID控制算法实现。您可以使用关键词如 "PID control"、"PID algorithm" 进行搜索

使用特权

评论回复
14
Emily999| | 2024-3-30 09:32 | 只看该作者
PID控制算法的实现也需要根据具体的应用场景和系统要求进行调整和优化的,所以不存在权威之说吧

使用特权

评论回复
15
IFXNaZhang| | 2024-5-15 11:44 | 只看该作者
可以在英飞凌官网搜索Servo Motor Speed Control Firmware,找到如下

可以参考其中 s03_module下的pid_regulator.c文件

使用特权

评论回复
16
l63t89| | 2024-6-30 23:06 | 只看该作者
可以在STM32CubeMX中创建新项目时,选择合适的硬件资源,并查找相关的示例代码。

使用特权

评论回复
17
fengm| | 2024-7-12 10:04 | 只看该作者
#include <stdio.h>
#include <stdlib.h>

typedef struct {
    float Kp;      // 比例增益
    float Ki;      // 积分增益
    float Kd;      // 微分增益
    float error;   // 当前误差
    float prev_error; // 上一次误差
    float integral; // 积分项
} PID;

void init_PID(PID *pid, float kp, float ki, float kd) {
    pid->Kp = kp;
    pid->Ki = ki;
    pid->Kd = kd;
    pid->error = 0;
    pid->prev_error = 0;
    pid->integral = 0;
}

float update_PID_position(PID *pid, float setpoint, float feedback) {
    float error = setpoint - feedback;
   
    pid->integral += pid->Ki * error;
    float derivative = pid->Kd * (error - pid->prev_error);
   
    pid->prev_error = error;
   
    return pid->Kp * error + pid->integral + derivative;
}

使用特权

评论回复
18
wangjiahao88|  楼主 | 2024-7-12 10:10 | 只看该作者
IFXNaZhang 发表于 2024-5-15 11:44
可以在英飞凌官网搜索Servo Motor Speed Control Firmware,找到如下

可以参考其中s03_module下的pid_regu ...

感谢指导!这是我遇到的最nice的厂家技术支援!

使用特权

评论回复
19
jimmhu| | 2024-7-12 10:49 | 只看该作者
没有提供一个统一的、适用于所有场景的“权威”代码。

使用特权

评论回复
20
ingramward| | 2024-7-12 15:57 | 只看该作者
经典的控制理论教科书,如《自动控制原理》等,会详细介绍PID控制器的设计和实现。这些书籍通常提供了丰富的理论背景和实例分析。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

473

主题

7517

帖子

30

粉丝