• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

(PSIM仿真)教你如何使用C-block

PSIM作为一款非常便捷的电力电子仿真软件,主要是得益于其丰富的功能模块,下面我主要讲解一下C-block模块的使用;

1、首先打开软件,新建文件,然后找到C-block模块;

2、C-Block模块功能介绍如下:

3、为什么要学习C-Block模块,我们举个列子,比如我们有三相正弦信号a\b\c,我们需要求取a\b\c三个信号的最大值与最小值之和的一半;o={min(a,b,c)+max(a,b,c)}/2;如果我们用硬件电路去搭建的话仿真图会比较复杂,这时候C-Block模块就体现出它的优势出来了;

运算结果如下:

从上面的应用你可能也开始意识到了C-Block的功能了,是的在我们做数字电源控制的时候,C-Block模块就可以进行编程,实现我们模块的数字控制;

下面我们通过一个简单的Buck电路,引入C-Block数字控制:

1、简单BUCK电路,电压环控制,输入50V,输出10V;

2、先搭接好电路,控制环路;

3、调用PID模块调试合适的PID参数(只用了P和I);

4、将调试好的参数转换成C语言;

//********************PID参数*********************//    

   double PWM_PID=0;

const double PID_K1=0.0525;    //k1=kp*(1+Ts/ki)

const double PID_K2=0.05;       //k2=kp    (Kp=0.05  Ki=1/1000  Ts=1/20000)  Ts控制采样频率

double PID_Error_0=0;double PID_Error_1 =0;

//*************************************************//

/***************输入量获取**************/

Vref=in[0];V1=in[1];

/*************比例积分运算**************/

PID_Error_1 = PID_Error_0;                     //存储当前偏差 

PID_Error_0 = Vref-V1;                                  //偏差计算(积分)            

 PWM_PID+=( PID_K1 *  PID_Error_0-  PID_K2 *  PID_Error_1 );

/***************PID输出限幅**************/

if(PWM_PID<0) PWM_PID=0;

if(PWM_PID>1)   PWM_PID=1;

out[0]= PWM_PID;

5、硬件模块和C语言控制效果对比;

BUCK 电路仿真.zip

全部回复(5)
正序查看
倒序查看
yujunice
LV.5
2
2021-09-20 16:38

多谢分享,值得收藏学习下!

0
回复
iszjt
LV.5
3
2021-09-27 11:05

请教一个问题,设置的步长是否可以理解出CPU的最小周期,对应CPU的频率?

0
回复
Richie_Li
LV.3
4
2021-09-29 09:02
@iszjt
请教一个问题,设置的步长是否可以理解出CPU的最小周期,对应CPU的频率?

是的,可以这么理解

0
回复
2022-01-31 17:02
@iszjt
请教一个问题,设置的步长是否可以理解出CPU的最小周期,对应CPU的频率?

步长应该是进行了离散化处理,仿真的步长越短越接近实际波形。CPU时钟是控制一个系统工作时序的。两个有本质上的区别吧?不知道说的对不。

0
回复
Jinkz
LV.1
6
2023-03-29 10:10

感谢分享

0
回复