0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

control suite如何安装

GReq_mcu168 来源:加油射频工程师 作者:加油射频工程师 2022-07-10 10:24 次阅读

今天给大家安利一下了。一般同学会去某度上搜,看到各种各样版本的PID示例,或者去GitHub上白嫖。

其实一些芯片公司会提供一些控制领域的解决方案了,这里面就会包括PID库。

比如ST的“ST Motor Control Sdk”,或者TI的C2000系列的control suite

不过目前TI官方对于control suite已经不再提供相应的更新,可以继续下载这个套件。

目前control suite已经更新为C2000WARE-MOTORCONTROL-SDK.

那本文主要介绍TI的control suite,这里面除了PID外有很多控制类算法,并且配置了丰富的文档。

如何安装?

进入ti的官网,输入control suite进行搜索,就可以找到相应的安装包。

45b42072-eed2-11ec-ba43-dac502259ad0.png

这里有离线安装包,和在线安装包。直接基于在线安装包进行操作即可。我们先下载安装包。

45cd40de-eed2-11ec-ba43-dac502259ad0.png

下面就是一路疯狂点击Next即可;

45d61312-eed2-11ec-ba43-dac502259ad0.png界面 145efba6a-eed2-11ec-ba43-dac502259ad0.png界面 24608ac0a-eed2-11ec-ba43-dac502259ad0.png界面 346184de0-eed2-11ec-ba43-dac502259ad0.png界面 4462706b4-eed2-11ec-ba43-dac502259ad0.png耐心等待4639364a-eed2-11ec-ba43-dac502259ad0.png安装成功

源码和文档

进入主界面,这里基本的例子都是基于TI的C2000系列的MCU进行开发的,具体如下图所示;

4654b14a-eed2-11ec-ba43-dac502259ad0.png主界面

进入主界面之后,我们可以看到左侧这边包含了软硬件文档,项目示例还有相应的文档。

46701552-eed2-11ec-ba43-dac502259ad0.png

其实我们要找的是基于C2000系列MCU的数学算法库,可以在下列列表中找到;

468d8074-eed2-11ec-ba43-dac502259ad0.png

当然也可以在安装目录C: icontrolSUITElibsapp_libsmotor_controlmath_blocksv4.2下面找到相应的PID算法;

46a9e764-eed2-11ec-ba43-dac502259ad0.png

至于如何使用这几个文件,这里也提供了相应的文档,在Docs中找到,

46bd5a42-eed2-11ec-ba43-dac502259ad0.png

例如pid_grando.h文件,这里介绍了对应的平台,当然是TI系列的MCU,并且依赖于IQMath库,其实这里我们做一些简单的改动,就可以移植到自己所需的平台上去了,具体源码如下:

/* =================================================================================

File name: PID_GRANDO.H

===================================================================================*/#ifndef __PID_H__#define __PID_H__typedef struct { _iq Ref; // Input: reference set-point

_iq Fbk; // Input: feedback

_iq Out; // Output: controller output

_iq c1; // Internal: derivative filter coefficient 1

_iq c2; // Internal: derivative filter coefficient 2

} PID_TERMINALS;

// note: c1 & c2 placed here to keep structure size under 8 wordstypedef struct { _iq Kr; // Parameter: reference set-point weighting

_iq Kp; // Parameter: proportional loop gain

_iq Ki; // Parameter: integral gain

_iq Kd; // Parameter: derivative gain

_iq Km; // Parameter: derivative weighting

_iq Umax; // Parameter: upper saturation limit

_iq Umin; // Parameter: lower saturation limit

} PID_PARAMETERS;

typedef struct { _iq up; // Data: proportional term

_iq ui; // Data: integral term

_iq ud; // Data: derivative term

_iq v1; // Data: pre-saturated controller output

_iq i1; // Data: integrator storage: ui(k-1)

_iq d1; // Data: differentiator storage: ud(k-1)

_iq d2; // Data: differentiator storage: d2(k-1)

_iq w1; // Data: saturation record: [u(k-1) - v(k-1)]

} PID_DATA;

typedef struct { PID_TERMINALS term;

PID_PARAMETERS param;

PID_DATA data;

} PID_CONTROLLER;

/*-----------------------------------------------------------------------------

Default initalisation values for the PID objects

-----------------------------------------------------------------------------*/

#define PID_TERM_DEFAULTS {

0,

0,

0,

0,

0

}#define PID_PARAM_DEFAULTS {

_IQ(1.0),

_IQ(1.0),

_IQ(0.0),

_IQ(0.0),

_IQ(1.0),

_IQ(1.0),

_IQ(-1.0)

}#define PID_DATA_DEFAULTS {

_IQ(0.0),

_IQ(0.0),

_IQ(0.0),

_IQ(0.0),

_IQ(0.0),

_IQ(0.0),

_IQ(0.0),

_IQ(1.0)

}/*------------------------------------------------------------------------------

PID Macro Definition

------------------------------------------------------------------------------*/#define PID_MACRO(v)

/* proportional term */

v.data.up = _IQmpy(v.param.Kr, v.term.Ref) - v.term.Fbk;

/* integral term */

v.data.ui = _IQmpy(v.param.Ki, _IQmpy(v.data.w1, (v.term.Ref - v.term.Fbk))) + v.data.i1;

v.data.i1 = v.data.ui;

/* derivative term */

v.data.d2 = _IQmpy(v.param.Kd, _IQmpy(v.term.c1, (_IQmpy(v.term.Ref, v.param.Km) - v.term.Fbk))) - v.data.d2;

v.data.ud = v.data.d2 + v.data.d1;

v.data.d1 = _IQmpy(v.data.ud, v.term.c2);

/* control output */

v.data.v1 = _IQmpy(v.param.Kp, (v.data.up + v.data.ui + v.data.ud));

v.term.Out= _IQsat(v.data.v1, v.param.Umax, v.param.Umin);

v.data.w1 = (v.term.Out == v.data.v1) ? _IQ(1.0) : _IQ(0.0);

#endif // __PID_H__

这里面不仅仅做了积分抗饱和,还有对微分环节的滤波处理,所以应用到项目中是没有问题的。

代码中需要了解Q格式的相关的知识,可以参考一下我的这篇文章《一文教你搞懂C语言的Q格式》 ;

另外,这个路径下的文档中,还提供了相应的Example,以及PID的信号流图,具体如下所示:

46ce3e52-eed2-11ec-ba43-dac502259ad0.png46ed5558-eed2-11ec-ba43-dac502259ad0.png

所以,整体来说,这个部分的源码以及资料都非常有参考价值,由于离线文件太大,后台回复【618】获取相应安装文件。

原文标题:分享一个直接用于项目开发的PID库!很好用!

文章出处:【微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17123

    浏览量

    350986
  • PID
    PID
    +关注

    关注

    35

    文章

    1472

    浏览量

    85479
  • 源码
    +关注

    关注

    8

    文章

    639

    浏览量

    29185

原文标题:分享一个直接用于项目开发的PID库!很好用!

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    《CST Studio Suite 2024 GPU加速计算指南》

    《GPU Computing Guide》是由Dassault Systèmes Deutschland GmbH发布的有关CST Studio Suite 2024的GPU计算指南。涵盖GPU计算
    发表于 12-16 14:25

    AMD Vivado Design Suite 2024.2全新推出

    AMD Vivado Design Suite 2024.2 全新推出,使用 AMD Versal Adaptive SoC 进行设计的重大改进。此版本为 AMD Versal 自适应 SoC
    的头像 发表于 11-22 13:54 237次阅读

    AMD Vivado Design Suite 2024.1全新推出

    AMD Vivado Design Suite 2024.1 可立即下载。最新版本支持全新 AMD MicroBlaze V 软核处理器,并针对 QoR 和 Dynamic Function
    的头像 发表于 09-18 09:41 492次阅读

    NI MAX里面识别到Keysight的GPIB卡

    的GPIB Cards,还需要安装Keysight的IO Libraries Suite。Keysight官网提供了两个软件安装包进行IO Libraries suite
    发表于 07-27 10:16

    P4 Suite for FPGA面市 P4 Suite for FPGA主要功能解析

              基本简介 P4 Suite for FPGA是一款 综合性工具套件, 可在数字网络的不同领域提供广泛功能,该套件能够以高达200 Gbps甚至更高的数据传输速率支持FPGA。这一
    的头像 发表于 07-25 14:55 973次阅读

    在Windows11上安装了EZ-USB Suite 1.3.5,但无法再闪存我的设备,为什么?

    你好,我最近在 Windows 11 上安装了 EZ-USB Suite 1.3.5,但无法再闪存我的设备。 我使用的是 CYUSB2024 设备。 我按照说明安装了 Windows 11
    发表于 07-05 06:55

    编译play_mp3_control遇到的疑问求解

    https://docs.espressif.com/projects/esp ... rt-project 我是按照这个文档进行的安装,到了 第 7步,在 配置 idf.py set-target
    发表于 06-19 07:22

    浅谈Pango_Design_Suite工具的安装

    联系了小眼睛FPGA官方客服,获取了基于PGX-Mini 4K开发板的SDK包,这里有包含了两个版本的Pango_Design_Suite安装文件,笔者
    发表于 05-30 00:43

    Motor Control Workbench打开原文件出现Open Failed的原因?

    ST Motor Control Workbench打开原文件出现Open Failed,重新安装ST Motor Control Workbench还是出现该问题,不知是何原因,哪位大侠帮忙解决一下。
    发表于 04-30 06:35

    ST Motor Control Workbench不能生成代码怎么解决?

    ST Motor Control Workbench不能生成代码
    发表于 04-15 06:09

    ST Motor Control Workbench生成代码时报\"Fatal Error\"怎么解决?

    使用ST Motor Control Workbench生成代码时,报如图错误,重新安装了Cube MX和ST Motor Control Workbench都不能解决
    发表于 04-12 07:41

    stm32 motor control workbench生成代码时,找不到STM32CUBEMX怎么解决?

    两个软件都安装在:D:Program Files (x86)STMicroelectronics, cubeMX版本是6.1.2 motor control WORKBENCH版本是5.4.5,也试过5.Y.1,在生成的最后一步,都提示找不到cubeMX。 请问怎么解决?
    发表于 03-28 07:48

    STM32CubeMX安装最新版本V6.9,Motor Control Workbench生成项目工程总是显示STM32CubeMX not found的原因?

    STM32CubeMX安装最新版本V6.9,但Motor Control Workbench生成项目工程,总是显示STM32CubeMX not found?
    发表于 03-14 07:28

    STM32 motor control workbench点击生成项目文件后界面一直无任何显示是为什么?

    安装目录都是英文,在两台电脑上都安装试过,STM32 motor control workbench版本5.4.6,STM32CUBEMX版本是6.4,点击生成项目文件后界面一直无任何显示。
    发表于 03-14 06:42

    EZ USB Suite支持的Jlink GDB Server版本有没有要求?

    我想问一下,这个EZ USB Suite支持的Jlink GDB Server的版本有没有要求? 我在segger官方找的jlink版本暂时只要V644a和V644b 这个问题该如何解决?
    发表于 02-29 07:44