|
| | | | | | | 感谢楼主的对比实验,C语音模块可大大简化硬件仿真图,使复杂的硬件图简化很多。
|
|
|
|
|
| | | | | | | | | 我用的是这个版本 PSIM Professional Version 9.0.3.400
|
|
|
|
|
|
|
| | | | | | | | | if(Time_20KHz==50) 这个是什么意思,我把他改了为何结果不对了
|
|
|
| | | | | | | | | | | 你把他改成什么了,如果改为60,也是对的,只是延迟多一些
|
|
|
|
|
| | | | | | | | | | | | | 仿真步长设置的是1u,意思也就是每50us实际执行一次PI计算 |
|
|
|
|
| | | | | | | | | | | | | | | 问一下,这个跟三角波的频率有关吗? 版主为何这么取
|
|
|
|
|
|
|
| | | | | | | 这是你自己根据项目的精度(现在开关频率基本在几十K左右)决定的
|
|
|
|
|
|
|
|
|
|
| | | | | 版主要是多点转化的步骤就太完美了,比直接上结果图要好 |
|
|
|
|
|
|
|
| | | | | | | 没有,我用的PSIM版本比较低,还不能搭建DSP的仿真。 |
|
|
| | | | | | | | | 是的,一直找不到高版本的PSIM破解版,前几天搞破解还把现有的PSIM搞坏了
|
|
|
|
|
|
|
|
|
|
|
|
| | | | | 不错,学习了,感谢。楼主如果有更多的关于C-block的应用,能否分享出来,万分感谢。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| | | | | | | | | 那不是AD原理图,那是PSIM仿真软件的工程文件,下载个PSIM9.03就可以打开 |
|
|
|
|
| | | | | if(Time_20KHz==50) 这个语句是什么意思呢? |
|
|
|
|
|
|
| | | | | | | | | | | | | | | 步长是1u,即1M的频率,1M/20K=50,说明采样50次
|
|
|
|
|
|
|
| | | | | 这仿真文件里面怎么只有几张截图?里面有一个AD的文件,打开怎么是空的?
|
|
|
| | | | | 您好,我想请教您一下,您在《(PSIM仿真)简单图解,如何将硬件PID调试转换为C语言程序代码 》一文中,里面的C程序
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控制采样频率
PWM_PID+=( PID_K1 * PID_Error_0- PID_K2 * PID_Error_1 );
这几行程序表达了什么意思呢?我读不懂,请您赐教,不胜感激。
|
|
|
| | | | | | | 这里几行应该只是个例子,实际模型中Kp=0.05 T=0.001 那么Ki=Kp/T=50
|
|
|
| | | | | | | | | 我的意思没表达清楚,再说一下以免误解,如图中Ki应该写成Ti更加利于学习,根据增量式PI公式就是这样的,通常Ki用来表示积分系数,Ti指的是积分时间常数 |
|
|
|
|
|
|
|
|
|
|
|
| | | | | | | Vref=in[0];
V1=in[1];
为啥C 模块输入端在赋值右边呢
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| | | | | PWM=(Boost_u_PID)/U_bat/fs 请问这个怎么理解? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| | | | | | | Elements\Other\Function Blocks 加载C模块 C Block
|
|
|
|
| | | | | 很有用,对于正在做PI双闭环控制的很有用处,如果代码能有更多注释就更好了,琢磨那个采样50次还是花了一些时间 |
|
|
| | | | | | | 改把参数后输出电压也会变化?按匝比计算输出电压应该38左右,为什么设定12 |
|
|
|
|
|
|
|
|
| | | | | | | 楼主你好,请问你psim仿真软件方面的知识是从哪里学的?哪些书哪些网站?
|
|
|
|
|
|
|
|
|
|
| | | | | 666666666666666666666666666666
|
|
|
|
|
|
|
|
| | | | | 对于一个新手菜鸟来说,有Boost升压变换器控制完整的仿真实例吗?如果是多通道交错C代码可以适用吗
|
|
|
| | | | | 刚开始学习,好多东西还不会。自己试着把楼主的C语言模块替换成了简单C语言模块,代码也重新写了。仿真波形和原来的一模一样,但是我的Kp和Ki的参数是试出来的。具体的计算方法还没学会。
- // x1 Êä³öÖµVo x2 ²Î¿¼µçѹvref
- double Kp = 0.05;
- double Ki = 0.00005;
- double Up = 0;
- static double Ui = 0;
- double Uo = 0;
- double err = 0;
- double value_limit(double value,double max,double min)
- {
- if(value > max)
- value = max;
- if(value < min)
- value = min;
-
- return value;
- }
- err = x2 - x1;
- Up = err * Kp;
- Ui = Ui + err * Ki;
- Ui = value_limit(Ui,1,0); //´ËÐдúÂë¿ÉÒÔÓÐЧ·ÀÖ¹²Î¿¼µçѹ²¨¶¯¹ý´óµ¼ÖÂÊä³öʧ¿Ø
- Uo = Up + Ui;
- Uo = value_limit(Uo,1,0);
- y1 = Uo;
复制代码
|
|
|
|
| | | | | | | 其实代码可以这样来写:
PID_Error_1 += PID_Error_0; //存储历史偏差值 积分
PID_Error_0 = Vref-V1; //偏差计算(比例)
PWM_PID+=( PID_Ks * PID_Error_1+ PID_Kp * PID_Error_0 );
|
|
|
|
|
|
|
|
|
|
|
|
| | | | | MATLAB自带这个功能,电路打好了后可以直接输出嵌入式代码,相对方便很多。 |
|
|
|
|
|
|
|
|
|
|
|
|
|