首页 > 其他分享 >基于模糊pid的两路交错boost变换器Simulink仿真及代码自动生成(下)F280025实物测试部分

基于模糊pid的两路交错boost变换器Simulink仿真及代码自动生成(下)F280025实物测试部分

时间:2024-08-11 11:50:16浏览次数:5  
标签:代码生成 Simulink PID pid 电路 boost 变换器 F280025

简介:设计两路交错BOOST变换电路,搭建Simulink仿真模型,并设计控制算法(常规PID与模糊控制PID)。基于德州仪器TMS320F280025单片机使用Matlab Code Generation Tools进行编程与实物测试。
电气系统建模与实践课程设计 福州大学 自动化系 黄宸贞 2024/3/28

指导教师:蔡逢煌 陈丹

软件环境:
Matlab R2023b
Simulink 23.2
TI controlSUITE 3.4.9
Code Composer Studio 12.2.0.00009
TI C2000Ware 4_03_00_00

硬件环境:
AMD Ryzen 9 8945HS(仿真模型)
C2000 TMS320F280025C(代码生成模型)

测试目标:输入9V,实现9~18V升压功能。

测试实物:
可重构全桥变换器主板
可重构全桥变换器主板
单片机控制板
单片机控制板

上、电路仿真部分

见前一篇博客
基于模糊pid的两路交错boost变换器Simulink仿真及代码自动生成(上)电路仿真部分

下、代码生成实物测试部分

4. 环境配置与实物测试

*4.1安装硬件支持包

因为f280025是2021年发布的一款mcu,故只支持使用2021年以后的Matlab版本进行自动生成代码开发。使用前需要安装C2000硬件支持包,通过如下链接下载C2000硬件支持包:

C2000硬件支持包

下载完成后双击进行安装与配置。(需要登录MathWorks账号)

在这里插入图片描述

*Matlab R2023内置了C2000附加功能包,可略过该步骤。

*4.2配置硬件支持包

在C2000硬件支持包安装完成的提示窗口点击“立即设置”。也可在“管理附加功能”页面找到该硬件支持包进行配置。

在这里插入图片描述

*Matlab R2023后打开硬件设置页面的方式为:在Matlab命令行窗口输入“c2000setup”并回车。

在出现的硬件设置窗口内勾选TI F28002x系列MCUs。(其他系列可根据自身需要一并选择)。
在这里插入图片描述

安装代码生成工具,建议自动安装,如果选择手动安装,后续按要求输入并验证安装路径即可。
在这里插入图片描述

安装德州仪器公司的软件开发环境,如果未检测到下列所需软件,Download处会给出推荐版本的下载安装链接。也可自行提前安装,安装的软件Version高于推荐版本即可(Download处会提示“Upgrade not required”)。如果电脑中已经安装了所需软件,但版本老旧无法使用,无需卸载原有软件,直接安装新版本即可,两版本可共存。
在这里插入图片描述

验证前述安装的各项软件的路径。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如出现如下警报,仅代表软件版本未经测试,可忽略该警报直接进入下一步。(但仍建议使用推荐版本)
在这里插入图片描述
在这里插入图片描述

配置完成。

在这里插入图片描述

4.3代码生成模型配置

打开Simulink,创建空白模型,在库浏览器中打开Embedded Coder Support Package for Texas Instruments C2000-F28002x或C2000 Microcontroller Blockset-F28002x,即可使用对应单片机功能的模块。
在这里插入图片描述

打开模型设置-硬件实现,选择Hardware board为TI F28002x,设备供应商与设备类型会自动更改为德州仪器与C2000。展开Target hardware resources详细信息,选择Device Name为F280025C。在这里插入图片描述

打开模型设置-求解器,选择求解器类型为定步长、离散。展开求解器详细信息,输入步长为1e-6。(部分电脑在该步长下无法烧录程序,可将步长改为1e-5)
在这里插入图片描述

打开模型设置-代码生成-优化,选择可重用子系统输出的传递方式为结构体引用。
在这里插入图片描述

打开模型设置-代码生成-报告,勾选“创建代码生成报告”与“自动打开报告”。
在这里插入图片描述

完成后,Simulink的顶部Dock会增加一栏“HARDWARE”。
在这里插入图片描述

使用GPIO DO模块,选择引脚为GPIO24或GPIO32,与输入的脉冲信号连接。
在这里插入图片描述

在这里插入图片描述

检查单片机控制板的R97处是否短接,此处未短接的单片机控制板无法烧录程序(图为已使用0欧电阻短接)。
在这里插入图片描述

将下载器与单片机控制板正确连接,控制板LED1处发出蓝色灯光。
在这里插入图片描述

点击“编译、部署和启动”。等待代码生成、编译并烧录后,弹出代码生成报告,控制板LED2处闪烁(因为使用了脉冲信号使LED2对应IO高低电平交替)。说明模型配置正确,代码成功生成并烧录成功,可进行下一步开发。

在这里插入图片描述

在这里插入图片描述

4.4开环控制代码生成模型

硬件电路由开关管Q1、Q2、Q3、Q4构成全桥,其中Q1/Q3构成一组半桥,Q2/Q4组构成另一组半桥,驱动信号Q1G/Q3G,Q2G/Q4G分别由DSP发出的PWM1A/PWM1B和PWM2A/PWM2B信号经驱动电路进行功率放大后生成。即由 PWM1A信号控制Q1的开关动作,由 PWM1B 信号控制Q3的开关动作,由PWM2A信号控制Q2的开关动作,由PWM2B信号控制Q4的开关动作。

选取ePWM模块(注意为F28002x/003x/001x),双击模块进入配置。

在这里插入图片描述

打开General详情页,选择Module为ePWM1。

输入Timer period为适合的PWM计数周期,此处以1200为例。因前文电路仿真使用等腰三角形作为载波波形,故将Counting mode设为增减计数模式(在计数器比较点与动作设置正确的前提下,使用其他计数模式同样可行)。

在这里插入图片描述

打开ePWMB(buck电路为ePWMA)详情页,将ePWM1B的动作设置为ZERO置位,CAU复位,CAD置位,PRD复位。

在这里插入图片描述

打开Counter Compare详情页,选择Specify CMPA via类型为输入端口,CMPA initial value初始化值为0,可见ePWM模块的外观多了一项输入。

在这里插入图片描述

在这里插入图片描述

将需要的占空比乘以Timer period后接入WA(以boost电路升压至18V为例,占空比为0.5)。
在这里插入图片描述

该桥式变换器电路中,左右半桥分别由1颗EG3012S进行驱动,其中上管单片机信号接入HIN,下管单片机信号接入LIN,HO驱动上管门极、LO驱动下管门极。
在这里插入图片描述
根据DCDC变换器的原理,全桥电路的上管(Q1、Q2)在boost电路中充当二极管,全桥电路的下管(Q3、Q4)在buck电路中充当二极管。上管与下管不能同时开通。可参考以下方法使上管关断(buck电路为下管关断)或使上下管互补(其实MOS驱动芯片EG3012S自带闭锁功能保护,上下两路本就无法同时使能)。

方法1:打开ePWMA详情页(buck电路为ePWMB),取消使能ePWMA。并将ePWMA对应的引脚置0(参考原理图寻找PWM模块对应引脚)。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

打开Deadband unit详情页,勾选ePWMB(buck电路为ePWMA)死区生效,选择FED为ePWMxB(buck电路为ePWMxA),死区值为100(根据PWM的计数周期选择合适的死区值)。

在这里插入图片描述

此时烧录程序,将单片机控制板插入全桥变换器主板,将示波器两个通道的探针分别勾在Q1P与Q3P测试点。可见Q3P对应通道出现方波,Q1P对应通道无电平(buck电路现象相反)。

在这里插入图片描述

方法2:打开ePWMA详情页(buck电路为ePWMB),将其动作设置为与ePWMB互补。
在这里插入图片描述
在这里插入图片描述

打开Deadband unit详情页,勾选ePWMA与ePWMB死区生效,选择Deadband polarity为Active high complementary(AHC)。死区值为100(根据PWM的计数周期选择合适的死区值)。

在这里插入图片描述

此时烧录程序,将单片机控制板插入全桥变换器主板,将示波器两个通道的探针分别勾在Q1P与Q3P测试点。可见两通道出现互补方波。

在这里插入图片描述

此时已完成对开关管Q1与Q3的设置,对照上述设置方式依葫芦画瓢,设置开关管Q2与Q4(ePWM2模块)并连接输入。

在这里插入图片描述

完成ePWM2模块的参数设置后,因交错电路的两相需具有相位差,还需对ePWM2进行移相。

当ePWM1的时基计数到PRD时发出同步脉冲,此时,ePWM2接收到同步脉冲后将相位寄存器TBPHS中的值加载到时基计数器TBCTR中。也就是说,当ePWM1计数至PRD时,ePWM2此时从TBPHS寄存器中的值开始计数。因此,ePWM1和ePWM2实现了移相,改变TBPHS寄存器中的值可以改变移相控制的移相角。

打开ePWM1的General详情页,展开Synchronization output(SYNCO),勾选Enable the counter equals to zero (CTR=ZERO) event to set the SYNCO signal。选择Peripheral synchronization event (PWMSYNCSEL)为Counter equals to periods(CTR=PRD),在计时器为PRD时发出同步信号。
在这里插入图片描述

打开ePWM2的General详情页,选择Synchronization action为Set counter to phase value specifid via dialog。此时下方会新增Counting direction after phase synchronization与Phase offset value (TBPHS)两个配置项,将Counting direction after phase synchronization设为Count down after sync,将Phase offset value (TBPHS)设为Timer period的一半(前文以1200为例,故此处为600)。

在这里插入图片描述

此时烧录程序,将示波器两个通道的探针分别勾在Q3P与Q4P测试点,负端夹于GND测试点,可见两通道的波形相同,相位相差180。

将直流电源接入电路输入端,将示波器两个通道的探针分别勾在Q3G与Q4G测试点,负端夹于Q3S与Q4S测试点。(测试buck电路时,不可使用非隔离探头负端同时接于Q1S与Q2S测试点,否则会造成两片驱动悬浮地短路)。可见Q3P与Q4P的波形经驱动放大功率后控制开关管Q3、Q4门极,将电压表接于电路输出端,测得电压经boost电路升压至16.78V,符合电路仿真结果(须注意驱动芯片是否成功将G端PWM幅值放大至11V以上,否则无法控制开关管门极)。

在这里插入图片描述

4.5经典PID控制代码生成模型

参照开环方法配置ePWM模块,将模块输入WA由固定占空比改为PID控制器,PID控制器参数同上文电路仿真。

PID的输出还需进行限幅,经电路仿真测试与实物测试,该boost电路在占空比超过0.8后易失效,可将限幅上限设定于0.7~0.8间。

在这里插入图片描述

在这里插入图片描述

PID控制器使用反馈进行调节,boost电路使用Vin端子作为输出,对其进行采样作为反馈。

在这里插入图片描述

由电路原理图可知,Vin端子采样电路对应ADC引脚为A15,并可计算电压实际值与采样电路转换后的电压值之间关系。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

则ADC输出值转换为实际电压值的关系式为:V=ADCResult*3.3/4096/0.05916。如图所示设置Simulink模型。

在这里插入图片描述

模型设置完成后烧录程序并接入9V直流电源,依照前述方法测试Q3P、Q4P、Q3G、Q4G等各处波形,并使用电压表测量电路输出。测得电压经boost电路升压至17.59V,符合电路仿真结果。

在这里插入图片描述

4.6模糊PID控制代码生成模型

将经典PID控制模型中的PID模块改为电路仿真中已打包好Fuzzy_pid子系统,重复前述测试。测得电压经boost电路升压至18.16V,符合电路仿真结果。

在这里插入图片描述
在这里插入图片描述

4.7结论

通过上述仿真与实物测试,可认为使用模糊PID控制的交错boost变换器具有更加优异的性能。

5. 其他重要问题

5.1 Boost电路的输入端滤波电容

需要自行在输入端并联大于1000uF的电容。
在这里插入图片描述

5.2 Buck电路的采样方法

全桥变换器主板Vout端具有差分采样与直接采样两种采样方式,差分采样是为DCAC电路采用,DCDC电路应使用直接采样,ADC通道选择A11或A5。

在这里插入图片描述

在这里插入图片描述

5.3 CCS调试方法

烧录程序至单片机控制板后,在诊断查看器中找到Open project in Code Composer Studio超链接并点击。

在这里插入图片描述

在CCS中打开工程后,重新编译并烧录程序。

在这里插入图片描述

随后在debug界面,将所需实时调试的结构体添加至Expressions,即可在程序运行过程中实时查看(Simulink自动生成工程的函数接口可于代码生成报告中查看)。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.4同时测量上下管波形

当运行过程中需要同时测量上下管(以Q2与Q4为例)驱动波形时,不能同时使用非隔离探头测量,非隔离探头的负端在示波器侧是短接一起的,会造成上管的S极和下管的S极在示波器侧短路,损坏MOSFET。此时下管使用非隔离探头,上管应使用隔离探头。即用非隔离探头的负端接Q4S,正端接Q4G,然后再用隔离探头的负端接Q2S,正端接Q2G,便可同时测量出Q2和Q4的驱动波形。

在这里插入图片描述

5.5全桥电路共地

使用全桥变换器电路板前,应使用跳线帽将5、6、7、8脚短接,使电路两端共地。

在这里插入图片描述

5.6工作路径

使用Matlab Code Generation Tools时,所有路径(包括MATLAB的安装路径、Simulink模型保存路径、Ti开发环境安装路径)均不得包括空格(老版本MATLAB不能识别空格的遗留问题,会导致某些场合下MATLAB解析的路径错误或无法解析)与中文。

Simulink模型的保存路径还应添加至MATLAB工作路径中。
在这里插入图片描述

相关链接

TMS320F280025C数据表、产品信息和支持 | 德州仪器
EG3012S 60V半桥驱动芯片 | EGmicro
MOS管KIA3510A替代IRF540N-KIA3510A中文资料 原厂免费送样-KIA MOS管 | KIAIC
Embedded Coder Support Package for Texas Instruments C2000 Processors | MathWorks
C2000Ware 软件开发套件(SDK) | 德州仪器
Code Composer Studio™ IDE配置、编译器和调试器 | 德州仪器
ControlSUITE驱动程序和库 | 德州仪器

参考文献

[1] 蔡逢煌,王武,江加辉. 微控制器原理及应用——基于TI C2000实时微控制器[M]. 北京:机械工业出版社, 2022.

[2] 王兆安,刘进军. 电力电子技术(第5版)[M]. 北京: 机械工业出版社, 2021.

[3] 刘金琨. 先进PID控制MATLAB仿真[M]. 北京:电子工业出版社, 2016.

[4] 邓孝祥,刘钰,张伟杰.双闭环BOOST变换器系统模糊PID控制[J].黑龙江电力,2021,43(03):246-250.DOI:10.13625.

[5] CSDN@h(z)h.交错式升压DC-DC转换器(boost).[EB/OL].(2023-03-03)[2024-03-14]. https://blog.csdn.net/apple_51729737/article/details/129326020.

[6] 倪刚,金辉宇,兰维瑶. 基于Ziegler-Nichols规则的一阶线性自抗扰控制参数整定[C]//中国自动化学会控制理论专业委员会(Technical Committee on Control Theory, Chinese Association of Automation),中国自动化学会(Chinese Association of Automation),中国系统工程学会(Systems Engineering Society of China).第三十九届中国控制会议论文集(7).2020:5.DOI:10.26914/c.cnkihy.2020.039671.

[7] 李晓丹. 模糊PID控制器的设计研究[D].天津大学,2006.

标签:代码生成,Simulink,PID,pid,电路,boost,变换器,F280025
From: https://www.cnblogs.com/DiscreteWind/p/18353219

相关文章

  • 基于智能电网系统的PQ并网控制器simulink建模与仿真
    1.课题概述       在simulink中,通过建模实现智能电网系统的PQ并网控制器,仿真输出PQ控制器的控制输出,以及智能电网的三相电压电流的收敛输出。 2.系统仿真结果     3.核心程序与模型版本:MATLAB2022a 0005 4.系统原理简介      介绍了基......
  • System has not been booted with systemd as init system (PID 1). Can't operate on
    昨天为了安装mariadb,不小心可能安装了sysinit的东西,在启动gogs服务时报了这个错'Systemhasnotbeenbootedwithsystemdasinitsystem(PID1).Can'toperate'找到了解决方案:我的理解是这样的linux系统大致有两种管理服务的方式,一种是sysinit一种是systemctl ......
  • MSPM0G3057学习记录(二)电机PID闭环控制
    目录一、PID原理讲解  1.比例增益(Proportional): 2.  积分时间(Integral): 3.  微分时间(Derivative):二、PID控制原理图三、位置式PID公式  四、参考代码(一)五、参考代码(二) 一、PID原理讲解          PID(Proportional-Integral-Derivative)闭环控......
  • 什么是PID/PID算法
    什么是PID?一、PID的基本概念PID控制算法通过计算误差(即系统输出与期望值之间的差值),并基于该误差进行比例、积分和微分运算,来调整系统的控制输入,以实现快速、准确的控制。PID控制因其结构简单、稳定性好、工作可靠、调整方便等特点,成为工业控制中的主要技术之一。详情了解视频pi......
  • 【变压器的短路试验】变压器的短路试验是通过将二次侧短路,并向一次侧施加额定电流来进
       ......
  • 基于dq0变换的三相并联有源电力滤波器研究(Simulink仿真实现)
     ......
  • 基于simulink的分布式发电系统自动重合闸的建模与仿真分析
    1.课题概述      在配电系统中,80%-90%的故障都是瞬时故障。发生故障时,线路被保护迅速断开,随即重合闸。当分布式电源接入配电网后,线路发生故障后重合闸,此时分布式电源没有跳离线路,这将产生两种潜在威胁,即非同期重合闸和故障点电弧重燃。      非同期重合闸:当线路......
  • 常见的PID的算法及代码示例
    常见的PID的算法及代码示例PID(比例-积分-微分)算法是控制系统中常用的一种反馈控制算法,它通过计算误差的比例、积分和微分来调整控制输入,以达到预定的控制目标。以下是一些常见的PID算法及代码示例:一、常见的PID算法位置式PID算法位置式PID算法直接计算控制量的绝对值,每次输......
  • 什么是PID?
    什么是PID?一、PID的基本概念PID控制算法通过计算误差(即系统输出与期望值之间的差值),并基于该误差进行比例、积分和微分运算,来调整系统的控制输入,以实现快速、准确的控制。PID控制因其结构简单、稳定性好、工作可靠、调整方便等特点,成为工业控制中的主要技术之一。详情了解视频pi......
  • 使用PasteSpider实现类似Jenkins的功能,让你的2G服务器也可以飞起
    或许你接触过Jenkins,在我理解就是拉取源码,然后构建成镜像,最后启动容器!但是这个功能对于小内存的服务器来说就是奢望了!今天介绍一个新版本,把你这个遗憾弥补下!在PasteSpider中,也是支持拉取源码,然后编译发布的!!!以下案例使用svn作为源码管理如果你使用git作为源码管理,道理差不多......