【1】
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