首页 > 其他分享 >仿真-2

仿真-2

时间:2023-03-18 17:11:42浏览次数:41  
标签:仿真 Vout double StepCount PID sample error

【1】

系统来源:https://www.bilibili.com/video/BV1934y1Z73n/?spm_id_from=333.788&vd_source=08be4a3fa623b037a59b24fd3f20aced

算法来源:https://www.bilibili.com/video/BV1pJ411g7YZ/?spm_id_from=333.337.search-card.all.click&vd_source=08be4a3fa623b037a59b24fd3f20aced

 

 C Block 作用:输出采样回来,进行纯代码分析与控制,输出一个方波(占空比),控制开关,实现电路控制

【1-1】

#include <String.h>

int g_nInputNodes=0;
int g_nOutputNodes=0;
int StepCount=0;
int Step100K=0;


double Kp_V=1; //定义电压环参数
double Ki_V=0.001;

double Kp_I=0.002; //定义电流环参数
double Ki_I=0.000004;

double Vref=20; //PID相关定义
double Iref;
double Vout_sample; //电压采样量
double Vout_error; //电压误差
double I_sample;
double I_error;
double V_integral;
double I_integral;
double PID_voltage;
double PID_current;
double PID_out;

double Vin_sample; //采样 检测
double Vin_detect;

 【1-1-1】电压外环与电流内环

 

 【1-2】

 1  StepCount++;
 2  Step100K++;
 3 
 4 //Vin_sample=in[0];  //端口设置
 5 Vout_sample=in[1];
 6 //Vin_detect=in[2];
 7 //I_sample=in[3];
 8 
9 if(Step100K=10) //控制频率(环路的计算频率),相等于计数,最终得到一个需要调节的量PID_out 10 { Step100K=0; 11   Vout_error=Vref-Vout_sample; //PID算法,参考值-反馈值 = 误差值
12   V_integral+=Vout_error;    //误差累积
13   PID_voltage=Kp_V*Vout_error+Ki_V*V_integral;  //计算PID调节量,比例系数*误差值+积分系数*累计误差
14   PID_out=PID_voltage;
                  //使占空比不超过%75 15   if(PID_voltage<0) 16 { 17 PID_out=0; 18 } 19   if(PID_voltage>40) 20 { 21 PID_out=30; 22 }
23 } 24 25 26 if(StepCount>40) //逻辑算法,如何利用上一part计算出的PID_out 27 { 28   StepCount=0; 29 } 30 31 if(StepCount<=PID_out) 32 { 33 out[1]=1; //有 34 out[0]=0; 35 } 36 else 37 { 38 out[1]=0; //没有 39 out[0]=0; 40 } 41

 【1-3】假设要用到yanhai-1里面,应该怎么接

【1-3-1】MOS管

 

 但是波形不同不能硬套

【2】可变电阻:带分接头的电阻

 

 

 

 

 

 感觉没有太大用,我直接用Resistor改电阻值不是一样的吗?可变电阻的Tap一样需要手动设置啊

【3】增益与损耗相等?

 

 【4】与【Robust wireless power transfer using a nonlinear parity-time-symmetric circuit】相对比

 

标签:仿真,Vout,double,StepCount,PID,sample,error
From: https://www.cnblogs.com/woyaobiye/p/17228233.html

相关文章