This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 如何使用 PID 控制库

Guru**** 2535150 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/605382/how-to-use-pid-control-library

Thread 中讨论的其他器件:controlSUITEC2000WARE

我想了解如何实现可用的 PID 库。 我已附上文件:e2e.ti.com/.../pi.h

是否有文档可以理解其用途?

PID 的输出是什么? 它是否会在数量上? 以及多少位格式? 或者它是否在最大和最小范围内?

我正在使用 F28069器件

请提供实施 PID 所需的帮助。 我想使用 PID 控制来处理可调斜升和斜降速率。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ravi、

    此代码是 DMC 库的一部分、并记录在附件中。  如果您在默认位置安装了 controlSUITE、则完整文档将位于:
    C:\ti\controlSUITE\libs\app_libs\motor_control\math_blocks\v4.3\~Docs

    代码使用 IQ 格式数据(请参阅 IQmath 库)、因此用户可以在 IQmathLib.h 头文件中调节数字范围和精度。  默认格式为 Q24:即24位精度和8位范围。  

    输出饱和至用户定义的 Umax 和 Umin 限值、在 PI C 结构中定义。 在 FOC 电机控制的背景下、PI 控制器通常用于闭合两个内部电流控制环路。  在这种情况下、每个控制器的输出将是旋转基准框电压。  

    外部速度或位置环路可能是 PID 控制器、您可以在同一个库中找到该控制器的示例。 正如您提到的可调上升和下降速率、我认为这就是您的意思。  PID 实现可在同一文档的第95 - 93页上找到。  它的结构和实现与 PI 控制器类似。  在 FOC 中 、它的输出通常是一个 q 帧基准电流。

    由于您使用的是浮点器件、您可能想知道 C2000Ware 中有一个更新的控制函数库(DCL)、您可以在以下位置下载该库:
    http://www.ti.com/tool/c2000ware

    我不确定这在多大程度上解答了您的问题、因此如果有任何不清楚的地方、请回帖。

    此致、

    Richard

    e2e.ti.com/.../PI-section-from-DMC-MATH_5F00_v13.1.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    主席先生,

    我想首先实现 PI 控制、然后尝试使用 PI 进行斜坡控制。

    对于我附加的 PI 库、为了进行初始化、我使用了:

    pi_controller closed_loop = pi_controller_defaults;

    Closed_loop.Ref =设定点;
    Closed_loop.FBK =参数_至_BE_Controlled;
    pi_macro (closed_loop);  

    为了进行调优、我使用了:closure_loop.Kp 和 closure_loop.Ki 值的限制为:closure_loop.Umax =_IQ (1)和 closed_loop.Umin =_IQ (-1)

    但是 、调试窗口中的 Closed_loop.out 值不会出现在浮点中、它始终是整数值、并且还会超过 Umax 和 Umin 范围。

    请帮助理解。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Ravi、

    除非在 IQmathLib.h 文件中将 MATH_TYPE 定义设置为 FLOAT_MATH、否则所有 IQ 变量都将显示为整数。 您使用的是浮点器件、因此您可以根据需要进行编译、但由于 Closed_loop.out 在观察窗口中显示为整数、我认为您已将其设置为 IQ_Math。

    此外、在 IQmathLib.h 中、检查 global_Q 设置是什么。 必须与观察窗口的 Q 值相匹配或数字不会对齐。 在 CCS 的表达式窗口中、右键单击 closed_loop.out 变量的 Type 列、并设置 Q 值以匹配 global_Q 选择。 然后、您应该看到正确的数字。

    此致、

    Richard