| | | | | 程序方面实现SPWM信号的输出。一种是事先计算好,并转化成实际的定时器的计数值,存入控制器中。运行时直接调用。该方法不需要运算,可以节省很多控制器的资源。但是这样的话逆变的幅值就不可以调节。如果输入逆变器的直流电压是可以调节的话,那么通过调节直流电压的大小来调节逆变器输出的电压值,这种方案好像也可以。但是我还没有见过。
另一种方法就是程序中直接运算出SPWM的控制点。这就需要了解SPWM波的生成方法:
SPWM波的生成方法有自然采样、对称规则采样、不对称规则采样和平均对称规则采样,如下面第一张图。对称规则采样中生成的PWM脉宽较实际的正弦波于三角波自然橡胶的脉宽偏小,使变频电源的输出电压较低;而在不规则采样中,虽能更真实的反映自然采样,但会增加程序编写的复杂度和程序的运算量。所以,在实际应用中采用的平均对称规则采样。采样时刻设在三角波的谷底,以此时刻的正弦波数值为中心,确定PWM脉冲的前后沿。SPWM波信号占空比的计算方法,如下面第二张图。
如果控制芯片选用的是DSP的话,这点运算根本不在话下。以DSP28335为例,这块芯片的多级流水线使其数字处理能力很强,再加上IQ算法,使其直接运算出SPWM的控制点不会占用其太多的时间。
|
|
|
|
| | | | | | | | | IQmath 库是一系列高优化和高精度的数学函数集合,移植浮点运算到定点代码中运算,之后再转回浮点。因为运算浮点型数据要比运算定点型数据花费更多的时钟周期,所以可以提高程序的运算速度。谢谢支持!我把逆变这部分的程序写完就说说我对IQ算法一点见解吧!
|
|
|
|
|
|
|
|
|
|
|
|
| | | | | | | 这种可以做成上位机,每次只需要把自己参数输入进去,然后上位机形成几百个点就可以了。
|
|
|
|
|
|
| | | | | | | 您好,如果我使用DSP28335的EPWM产生SPWM波,是不是就是默认的自然采样的形式,是否可以配置为对称规则采样或者平均对称规则采样 |
|
|
| | | | | 根据前面的内容就可以写基本的SPWM的程序了。
工频逆变,频率是50Hz不变。首先要确定载波的频率,就是三角波的频率。为了便于观察,设定载波的频率为2k。因此,根据载波的频率,配置28335中的定时器中断频率为2k,PWM的周期为0.0005s。注意,在配置PWM时要把死区加上。这样在一个逆变的周期内会进40次定时器的中断,产生40个PWM。接下来就是如何计算每次PWM的占空比。根据2楼可以得出在20ms内,每个PWM的占空比 duty = a * sin(wr * td) 。
其中:
a:调制比
wr:2 * pi * f
pi:3.1415
f:50
下面两张图片是具体的程序:第一张图片是相关变量定义,第二张是定时器中断程序。
程序运行的结果:下面第一张图是全桥四个管子的PWM,第二张是半桥上下管的PWM,第三张是上下管PWM的死区。
这部分代码中,调制比 a 在程序运行中是不变的,所以这只是一个简单的开环能实现逆变的功能的程序。若要实现闭环就要对 a 加入PI调节,就可以实现希望输出的交流电压值。还有一点载波的频率这里设置为2k只是为了上面第一张图看的比较清楚些。实际中不可能用这么低的载波频率。
|
|
|
| | | | | | | 支持,昨天还在思考直流母线电压和交流逆变电压是啥关系呢 |
|
|
| | | | | | | | | 直流母线电压乘以调制比 就是你的交流电压的最大值,不是有效值。
|
|
|
| | | | | | | 你好。请问在程序中单极性和双极性调制时怎么体现出来的,是通过设置三角载波来体现的吗,应该是怎么设置的。
|
|
|
| | | | | | | | | 这种单极性很简单,主要是if和一个控制,就是下图这几条代码:
if判断是正弦的上半波还是下半波,控制另一组半桥输出高低点平。
|
|
|
| | | | | | | | | | | 我不太明白诶..就是三角波在调制波正半周期是正的,负半周期是负的得怎么体现出来。 你这里边的PWM_period 是指什么呢,是指TBPRD吗。
|
|
|
| | | | | | | | | | | | | 三角波在调制波正半周期是正的,负半周期是负的。正负不是输出了负的三角波,而是全桥不同的斜对管开关实现的。
PWM_period 是PWM的周期寄存器的值。这样可以直接用一个占空比乘以这个值,再付给PWM寄存器。比较方便,而且用占空比看也比较直观。
|
|
|
| | | | | | | | | | | | | | | 我还是没能理解...控制开关管这个弄明白了,但是配置CMPA这块还是没懂..
|
|
|
| | | | | | | | | | | | | | | | | 这是就是EPWM外设的配置了。如果你想发一个PWM,那第一点你要知道周期也就是PWM的频率,这个要配置EPwm2Regs.TBPRD = PWM_PERIOD1;PWM_PERIOD1是用宏定义定义的周期寄存器TBPRD 的值。第二点要让PWM的占空比可调,那么就要在你程序中配置EPwm2Regs.CMPA.half.CMPA=Duty*PWM_PERIOD1;其中Duty是占空比,PWM_PERIOD1是周期值,他两相乘得出的就是计数比较寄存器中的计数值。把它付给计数比较寄存器,就能发出对应占空比的PWM了 |
|
|
|
|
| | | | | | | | | 上面的程序是2K的中断,实际中用的是20K中断,没问题的,28335的运算蛮快的。
如果你觉得把程序烧到flash中后运行很慢的话,你可以把程序考到ram中运行,就快很多了。
|
|
|
| | | | | | | 为什么上面的程序PWM_period可以赋予负值? |
|
|
| | | | | | | | | PWM_period 不可以赋负值,它是一个无符号的整型数据。是周期寄存器的周期值。
|
|
|
| | | | | | | | | | | 请问楼主一下,Epwm2rRegs.cmpA=-sin_value[index]*pwm_PERIOD1,sin前的负号怎么理解啊,小白一个,楼主多担待
|
|
|
| | | | | | | | | | | | | 大家相互交流,相互学习!
注意下 if 判断的条件。有负号那个条件 else 是 sin_value[index] < 0 。意思是因为 sin_value[index] 小于0,在前面加个负号,把它变成正的。这么做是因为用的是全桥。
|
|
|
|
| | | | | | | 1、做spwm为啥不用28335自带的pwm中断。
2、实际中开关频率2000也是有的,大功率电力电子器件的开关频率一般都做的比较低,因为开关频率太高开关损耗大散热跟不上。
|
|
|
|
| | | | | | | 你好,闭环就能调节a值了吗,具体怎么实现的,想得到的电压是不是也有范围?
|
|
|
| | | | | | | | | 你好! 在13楼;想得到的电压是你设置的参考值。输出的电压波动,就看你PI参数的设置了。
|
|
|
| | | | | | | | | | | 你好,对这个不太懂,加入PID有什么作用?能加下QQ530663157 非常感谢
|
|
|
|
| | | | | | | 从2楼中的面积相似原理,可以得到SPWM的占空比应该是di=1/2*(1+a*sina(wr*td)),可是到这里了你为什么用di=a*sin(wr*td)?其中的1/2,1怎么没有了?
|
|
|
|
|
| | | | | | | | | | | | | 因为逆变用的是全桥,所以PWM只要对称发就可以了。
|
|
|
| | | | | | | 版主,9楼中图二的两个PWM波互补是怎么设置的?图三中的死区是怎么设置的?谢谢
|
|
|
| | | | | | | | | 互补的PWM在PWM引脚初始化的时候设置的,28335的寄存器有这个功能的。死区也是在那里设置的,可以设置死区的实践。
|
|
|
| | | | | | | 你这个占空比的计算公式里面,会出现0和1,这样的 0和1的占空比实际种怎么输出控制的呢,
|
|
|
| | | | | | | | | 有个调制比a,只要限制好调制比,就可以不输出占空比100%的PWM
|
|
|
| | | | | | | 您好,我在使用SPWM调制进行并网是电流出现了畸变,逆变器运行一段时间就会出现这个问题,但有时候又是正常的,这是因为我配置的原因吗,下面是我的并网电压与电流,其中紫色的是并网电流波形,而这个时候Id Iq是能够跟随给定值的,三相电压是对称的。
|
|
|
| | | | | | | 老师您好,我最近在测试一个单逆的开环程序。用的是单极性倍频调制,算法里调制波的配置方式是:
子程序
主程序
用的是ADC中断,采样频率25kHz;
V_WT 设置的是0.012566370614,也就是2*pi*50*4e-5,
最终逆变出来的结果是6.7Hz而非50Hz,如下图
ccs在线测试抓取了wt和mwave,都是50Hz,但是半桥中点输出的电压和逆变电压就是6.7Hz。
请问这是怎么回事?
|
|
|
| | | | | 本人对PID程序的一点见解
PID的数学形式:
将其离散化后,得到
写出u(k)和u(k-1)
用u(k)减去u(k-1),就可以得到位置式的PID形式
增量式的PID,是将位置式的PID做个移项
将位置式PID中的kd置0,就得到了位置式的PI
再将其转化为程序: PID变量定义部分
PID控制部分
结合之前SPWM程序,将PID程序加入后,形成闭环控制点SPWM
|
|
|
|
|
| | | | | | | | | | | 这个pi_str怎么指向那么多个值呃 ,这里不太懂
|
|
|
| | | | | | | | | | | | | pi_str只是指向了一个结构体,而这个结构体里有很多变量,所以就把把这些变量都带上了。
pi_str->Kp在上面代码里的意思就是PI_Struct_RMS这个结构体里的Kp
|
|
|
|
|
| | | | | | | 版主,能不能告诉我,你程序里面的T和Ti是什么,怎么确定的?谢谢
|
|
|
| | | | | | | | | T是采样周期,而且这个采样周期要和载波的周期(pwm的周期)一致。
Ti是PID参数Ki的一部分,在13层第一张图片中PID的数学公式中。Ti的确定要在实际中多去调试。
先调比例Kp,将Ti给一个很大的树,这样,这一项的影响就会很小。比例系数Kp一点点往上加,直到系统出现震荡,将这个值的80%付给比例系数Kp。然后再调积分项,将Ti从一个很大的数慢慢减小,直到出现震荡,将这个值的120%赋给Ti。
参数调节,每个人有每个人习惯的方法,调多了就有自己习惯的方法了。
还有一点,我不是版主
|
|
|
| | | | | | | | | | | 原来只是知道80%,这个120%还真是第一次看到,长知识。楼主加油
|
|
|
| | | | | | | | | | | | | 整定的对象不一样,如果是整定的Ki,那就应该是从0一点一点往上加,直到出现震荡,取80%给Ki。
|
|
|
| | | | | | | | | | | | | | | 楼主,磁感量跌落曲线的拟合你是利用查表还是用公式计算的?? |
|
|
| | | | | | | | | | | | | | | | | 抱歉!我不明白你说的"磁感量跌落曲线"指的是什么?可否解释下?
|
|
|
| | | | | | | | | | | | | | | | | | | 抱歉,没表达清楚,即电感磁导率百分比率与DC磁化力关系曲线。 |
|
|
| | | | | | | | | | | | | | | | | | | | | 这个很抱歉,你指的是逆变输出的滤波电感吗?我上面只是提了如何拟合SPWM.
|
|
|
|
|
|
|
|
| | | | | | | | | | | | | | | | | | | | | 好的,其实我的个人观点是,锁相环就是一个过零比较电路。而要实现锁相环的功能我认为的方法:
第一个:硬件上做过零比较电路,DSP开捕获外设,检测过零点。
第二个:DSP本身是要采集交流电压的信号,其实可以通过采到这些交流点算出过零点。
第一个可能出现的问题是,如果采到的交流信号没有经过滤波,后端直接加了一个单限的过零比较电路,在过零点这里很可能会发生震荡。
第二个可能的问题是,过零点的精度和你采样的频率相关。如果频率的计算也是这种方法的话,频率的精度也和采样频率相关。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | 能否加一下QQ,像你请教一下问题?我的QQ:2021605017
|
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | 检测为啥用过零比较器呢 ,,麻烦 比较器前面加个两个二极管反接 就好了 、
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | 这种方法我也见过,但是我还是比较喜欢双电源运放的过零比较,最好是双电源的滞回比较器。因为运放在单电源使用时不能真正的输出零伏,而双电源就不会这样。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | 如果是手动并网的话要怎么确定这个过零点,然后去合闸。
因为一个电网周期就20ms,怎么确定这个时刻呢。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | 你这是指电站的并网吧 ,我记得好像是有个仪表的显示相角差,然后手动合闸。这得是经验丰富的老师傅干的。
如果你想自己搞着玩的话,那你可以用两个表,一个显示电网电压相角,一个显示你逆变器的交流相角。然后观察到差接近零时合闸。
|
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 我个人的想法:并网继电器的闭合由外部按键控制。程序中依然检测电网电压过零点,并发对应SPWM波。显示屏显示出电网电压相角和SPWM波的相角,观察两者的差值,然后按下按键并网。
抱歉!我还是第一次见到这种方式并网。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 你的逆变器并网是怎么并的,能具体点告诉我吗,谢谢啦
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 不是手动并网。1、硬件锁相,上升沿触发程序中捕获中断; 2、程序控制SPWM从相角0度开始发;3、连续检测10个下降沿,判断下降沿时SPWM的相角是否为180度。4、在第11个上升沿捕获中断中闭合继电器,以小电流并网;5、缓起,提高电流达到参考并网电流。这是我自己想的。 |
|
|
| | | | | | | | | | | | | | | 大神,我有个问题啊,就是增量式PID与位置式的PID分别怎么调整呢,我的理解是增量式PID需要首先调整Ki,KP=0,然后系统出现震荡之后,取0.8*Ki值,然后再慢慢的增加Kp,直到系统稳定,位置式的PID,需要首先调整Kp,Ki=0,然后系统出现震荡之后,取0.8*Kp值,然后再慢慢的增加Ki,直到系统稳定,这样子理解是否正确?
|
|
|
| | | | | | | | | | | | | | | | | 我觉得增量式和位置式只是把PID的公式做了点变化。系数调整应该都差不多,不过具体我也没调过增量式的。
|
|
|
| | | | | | | | | | | 我每次都是试出来的,,,不会计算啊,,,我的函数写好了 就那个参数,,慢慢换呗
|
|
|
| | | | | | | | | | | | | PI参数的整定,按照那个口诀来慢慢调就好了。只是有时候一个东西做下来,要整定好几次。因为调试到不同阶段,系统运行的条件不一样。
不过我也见过有人算出来的参数,很准,和我整定出来的差不多。我还不清楚他是怎么算的 。
|
|
|
|
| | | | | | | | | | | | | | | | | 参数整定找最佳,从小到大顺序查先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢。微分时间应加长
理想曲线两个波,前高后低4比1
一看二调多分析,调节质量不会低
|
|
|
| | | | | | | 感觉你和我走过的路差不多,也是从把载波频率调小,验证SPWM开始的.....
|
|
|
|
| | | | | | | 我C语言不是太好,想请教一下,实际使用PI_Control(PI_Struct *pi_str)这个函数,里面参数是多少? 没看到指向PI_Struct_RMS的指针啊
|
|
|
| | | | | | | | | PI_Control(PI_Struct *pi_str)这个函数的参数是由传进去的结构体里的变量决定的,也就是PI_Struct_RMS结构体里的变量。
PI_Struct_RMS.calc(&PI_Struct_RMS);就是把PI_Struct_RMS这个结构体调给calc这个函数,
而这个函数是在#define PI_Struct_RMS_DEFAULTS {0, 0, 0.1, 0.0005, 0.00005, (void (*)(Uint32))PI_Control, 0, 0}这条语句中被赋予了PI_Control(PI_Struct *pi_str)这个函数。
|
|
|
| | | | | | | RMS_V_adc应该是均方根值吧,感觉又像瞬时值,楼主这代表的是什么值?
|
|
|
| | | | | | | | | 这个确实是均方根值,只不过这个值在以载波的频率在刷新。所以可以当做瞬时值来用。 |
|
|
| | | | | | | | | | | 载波2K的,你的RMS值刷新也要20ms才可以吧。
|
|
|
| | | | | | | | | | | | | 不是的,如果载波频率不是太高的话可以做到以采样频率刷新。如果载波频率很高的话,把求均方根的函数不要放到中断里,放到主循环里就可以了。刷新频率也不会比载波慢很多。如果计算有效值的周期是20ms的话,那计算方法要改改了。
|
|
|
|
| | | | | | | 楼主你好,能不能解释一下 u_k u_k1 e_k e_k1是什么意思呢?还有pi_syr->e_k1=pi_syr->e_k pi_syr->u_k1=pi_syr->u_k 是什么意思呢?
|
|
|
| | | | | | | | | u_k u_k1 e_k e_k1是什么意思呢?还有pi_syr->e_k1=pi_syr->e_k pi_syr->u_k1=pi_syr->u_k
e_k:是本次的误差,即参考值减去本次采样得到的值;
e_k1:是上一次的误差;
u_k:是本次位置式PI运算输出的结果;
u_k1:是上次位置式PI运算输出的结果,其实这里可以不需要u_k1,保留它是因为这个位置式的PI可以很容易的转化为增量式的PI,直接用u_k - u_k1,就是增量式PI;
pi_str->e_k1=pi_str->e_k:是把本次的误差e_k赋值给e_k1,保留到下次PI运算,因为PI运算输入需要两次的误差,即本次的和上次的误差;
pi_str->u_k1=pi_str->u_k :是把本次的PI运算结果u_k赋值给u_k1,对于位置式的PI并没有用到u_k1,只是作为保留项。
pi_str->e_k:指的是传入PI_Control函数的结构体里的e_k项,对于上面的程序就是指PI_Struct_RMS.e_k
|
|
|
| | | | | | | 楼主,为什么a>0.8,则a=0.8这句话怎么理解?
|
|
|
| | | | | | | 楼主,为什么a>0.8,则a=0.8这句话怎么理解? |
|
|
| | | | | | | | | 这句话本身的意思是限制调制比最大到0.8.实际目的是为了限制加在开关管上的占空比。防止其在一个周期内常开。
如果不加限制,当调制比达到1时。在正弦波的最大值和最小值处算出的占空比接近于100%
|
|
|
| | | | | | | 这个调节最终的目标是使uk=0吗,这样a是不是也等于零 ,又来打扰了
|
|
|
| | | | | | | | |
下面那条有红框和黄框的语句,红框里的u_k1是上一次的u_k值,黄框里的是本次PI计算的值。目标是使黄框里的值为零。
没关系,论坛本身就是交流的地方
|
|
|
|
|
| | | | | | | a=PI_Struct_RMS.u_k;
计算结果为什么就可以给a了呢?RMS_V_refer、RMS_V_adc是归一化的值吗?
|
|
|
|
|
| | | | | 关于IQmath
在大量浮点和正余弦运算时,使用Q格式可以大大加快定点DSP运算速度。因为DSP28335本身就是浮点型的DSP,具有FPU。所以IQmath的意义并不大。但是对于定点的DSP如2812,就可以很好的提高其运算浮点型数据的速度。
进行浮点乘除法计算时,需要利用函数_IQN()把浮点数先转化为长整型,IQmath计算全为整型计算,计算完成后,再利用_IQNtoF()函数将整型转化为浮点数,计算前后的转化过程计算实际为浮点乘法计算,浮点计算量较大时,定点DSP利用IQmath还是能节省很多时间的,虽然Q格式比直接浮点计算多了一些输入输出的数据转换,但是与庞大的算法相比还是可以忽略的。
DSP2812-IQmath应用手册-详细版.doc
(4.44 MB, 下载次数: 416)
|
|
|
|
|
|
|
|
|
|
|
| | | | | 版主 你为啥设置成10K,或者20K,讲一下,开关频率和逆变输出的LC中L也有关系呢, 他们之间的关系是什么呢?以及28335中TPBR的赋值,为啥赋值为这个,在PI环的时候最大多少呢,TPBR最大是多少呢,单极倍频中我不理解一加一减这块。 |
|
|
|
|
| | | | | | | | | | | EPWM的周期寄存器应该是TBPRD。它的值要和载波的周期一致,就好了。
|
|
|
| | | | | 讨论下自己想的逆变器并网的程序控制方法:
1、硬件锁相,上升沿触发程序中捕获中断; 2、程序控制SPWM从相角0度开始发;3、连续检测10个下降沿,判断下降沿时SPWM的相角是否为180度。4、在第11个上升沿捕获中断中闭合继电器,以小电流并网;5、缓起,提高电流达到参考并网电流。
|
|
|
| | | | | | | 缓启是参考电流一点一点往上加么?这个在程序上应该怎么实现?
|
|
|
| | | | | | | | | 对,就是把参考电流一点一点加上去,再加点判断就好了。
|
|
|
|
|
| | | | | | | | | | | | | u_k:是本次位置式PI运算输出的结果;
u_k1:是上次位置式PI运算输出的结果,
误差 是e_k和e_k1 |
|
|
|
| | | | | | | | | 这个不应该出现3阶,可以写一下两个传递函数,然后离散化的话,可以用后向差分 或者双线性。就会得到两个正交的波形。
利用这个锁相的话,就让Q轴趋近于0,然后PI计算再积分,就可以了。
|
|
|
|
| | | | | | | 因为PI的调节是实时的,而采样得到的值是PI输入的一部分,所以采样频率要和PI运算的频率一致,在我上面的程序里我的PI的调节的频率是和载波频率一致的,所以我的采样频率也要和载波频率一致。我这么弄是因为我有效值的运算频率和载波差不多。如果的你的PI运算频率是50HZ,那么,确切来说,你有效值的更新频率也要是50HZ,采样频率你可以自己定。
|
|
|
|
| | | | | | | | | 我的AD频率是实时采样,我的PI我也不知道时间,只要参数调试出来,能稳压就行啊
|
|
|
| | | | | | | | | | | 问个问题:你不知道你的AD的频率,那你是怎么算有电压电流有效值的呢? |
|
|
| | | | | | | | | | | | | AD的频率是多久一次更新采样结果的数据,但是电压电流的有效值是AD采样的结果,两个好像还是有区别吧,一个是结果,一个是多久一次。 |
|
|
|
| | | | | | | | | | | | | | | | | 恩 是的,我整个AD程序只需要乘一次,这样的比例,然后再更改系数就可以了。
|
|
|
| | | | | | | | | | | | | | | | | | | 那你是在硬件采样电路那端做了整流的电路,把交流变成直流,采直流就可以得到交流的有效值。很好的方法,省去了控制芯片的大量运算。
|
|
|
| | | | | | | | | | | | | | | | | | | | | 恩 是的。。在这里我AD不用进行大量的运行,有的人需要乘以2个系数,我的想法只需要一个系数完全够了,改天我把我的采集电路发个帖子给你看看。
|
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | 没事 没事,我当初也不知道,看到别人的,就借鉴过来了。
|
|
|
|
|
| | | | | | | | | | | 不管按照多高的频率采样,从采样到PI运算再到控制输出都会有延时。
采样最好不要低于载波的频率,否则控制有可能跟不上;采样频率高于载波频率,你对采样值的处理可以有多种方式,可做平均,可以取最大、最小。
|
|
|
| | | | | | | | | | | | | 您好,请问一下如果采样频率高于载波频率是不是只能用定时中断触发ADC采样,那PI运算频率和采样频率还是载波频率一致呢?谢谢
|
|
|
| | | | | 补充一种交流有效值的计算方法:该方法可以,以较高的频率更新有效值。变量定义部分
定时器中断中的程序
主循环中的程序
|
|
|
| | | | | | |
这里没看懂为啥是这样的,正常应该是RMS_V_sum +=RMS_V_adc * RMS_V_adc;请楼主解释一下,谢谢
|
|
|
| | | | | | | | | 这类似一个滑动的计算RMS_V_sum中是N点的平方和,如果把当前采样的平方和加上的话,就得减去上个周期中的采到的值的平方和。才能保证RMS_V_sum中一直是N个点的平方和
|
|
|
| | | | | 楼主电流控制器如果采用PR控制器,该怎样编程呢,我现在把控制器的传递函数离散化后得到差分方程就是不知道用这个差分方程怎样去编写DSP程序,还有就是软件怎样实现锁相(我做的是电压不平衡和畸变条件下的并网,拟采用二阶广义积分器构成正交信号发生器,然后提取正负序基波进行锁相)。现在都是程序这款遇见了问题不知道该怎样编写,希望楼主能够给一些指导意见,小弟不胜感激 |
|
|
| | | | | | | 既然是控制器,那么就有输入量和输出量,有参考值和被控量。个人认为你把差分方程离散话,写成代码是没有问题的。就像上面从pid的数学式子到离散化再到程序代码。对于你说的pr控制器,我之前并没有了解过。如果你可以分享些这方面的资料,我也很想了解下,非常感谢!
你说的锁相环,我前面提到的是硬件做过零比较电路,软件捕获。我不确定是否也这种方式。还是你想通过对采样的数据进行分析,提取出正序然后在算出相角?
|
|
|
| | | | | | | | | 楼主,我问个问题,一阶低通滤波器在数字滤波中,RC时间常数和采样周期T的关系,或者说RC时间常数与电网周期的关系应该怎么设置,就是设置这个T/(RC+T)
|
|
|
|
|
|
|
| | | | | | | | | 很荣幸读了您发的帖子。我接触电源这块时间还不是很多,了解的电源拓扑也不多。很抱歉!对于你的电路,我确实没有见过。
|
|
|
|
| | | | | XG27=~XG27;
LED-num++;
if(LED-num>1000){LED3=~LED3;LED-num=0};
这两句话什么意思啊?为什么大于1000呢?XG27代表什么啊?(LED-num代表什么啊?麻烦帮忙解答下啊,谢谢了,谢谢了 |
|
|
| | | | | | | XG27=~XG27; 定时器中断的频率为2K,这个是为了用示波器看 定时器的中断频率。
LED-num++;
if(LED-num>1000){LED3=~LED3;LED-num=0};
这两句,定时器中断的频率为2k,计1000个点,就是0.5s。系统板上有一个LED,这两句就是控制LED以1s的频率闪烁。
这3句基本上都是为了查看定时器中断的,只不过一个是通过示波器,一个是通过LED.
|
|
|
|
|
| | | | | 您好楼主,我在单片机上是查表实现spwm的,不知道怎么改变幅值,所以闭环不会做,我正在试控制直流侧电压从而改变交流幅值,实现闭环 |
|
|
| | | | | | | 你表中存的应该是PWM定时器计数值。改变幅值只要你把调制比和表中的数相乘就可以了。通过调节母线电压的幅值来调节逆变的输出,感觉不太好!
|
|
|
| | | | | | | | | 你这个里面的那个三角波和正弦波是用信号发生器产生的还是直接用个函数公式产生的,一直没有搞明白SPWM怎么产生,
|
|
|
| | | | | | | | | | | 直接DSP运算得出。2楼是计算原理;9楼是程序实现。
|
|
|
|
| | | | | 我看一些论文电压电流双闭环 这是怎么控制 楼主有研究吗 谢谢楼主 |
|
|
| | | | | | | 一般在电源这部分的电压电流闭环,多是电压外环电流内环。给定的电压值减去采样到的电压值,输入到电压环。电压环的输出减去采样到的电流,输入到电流环,电流环的输出就是PWM的占空比了。个人观点,双环的一个好处就是限制了瞬间电流的冲击。
|
|
|
| | | | | | | | | 楼主 您是三角波的顶点采样还是0点采样 采样完开始计算吗 ,还有对于双闭环控制电压比较完的误差值怎么可以和电流比较呀 他们的单位都不一样 谢谢楼主
|
|
|
| | | | | | | | | | | 不是采样三角波,而是直接计算就好了。
电压环的输出为什么不可以给电流环呢。如果不可以,电压电流双环又该怎样进行参数的传递呢。
|
|
|
| | | | | | | | | | | | | 楼主 做闭环控制不要采集输出的电压电流吗 您是什么时间采集电压电流的呀 是在一个周期的开始阶段还是周期的中间阶段,三角波的意思是pwm的载波 楼主用的是定时器定频率的 我是用pwm模块做的频率
|
|
|
| | | | | | | | | | | | | | | 电压电流的采样都是在一个周期的开始阶段,然后PI,最后输出PWM占空比。我是用的DSP的PWM的外设来输出PWM。用到定时器是因为,要改变PWM的占空比。
如果你在外部产生一个三角波,和正弦波进行比较,在给入控制芯片,这应该是硬件的SPWM。软件的话可以直接计算,不需要外部提供三角波;也可以把SPWM的点直接写到控制芯片里,直接调用就好了。
|
|
|
| | | | | | | | | | | | | | | | | 楼主为什么不在dsp中的pwm中断里改变占空比呀 这样实时性会不会变高
|
|
|
| | | | | | | | | | | | | | | | | | | 关于这点,也许是每个人有每个人的偏好吧!我个人觉得,在定时器中断中改变占空比比较好,而且容易控制逆变的相角。
你能在PWM中断中实现不是不可以!
|
|
|
| | | | | | | | | | | | | | | | | | | | | 楼主 这是在定时器中断中进行判断的吗 为什么td=0.00025+0.0005*index 0.00025怎么来的呀 case1完事了 case2 是调节什么的呢 楼主电流测的是哪块的 是电感上的电流吗 使用霍尔传感器测的的吗
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | 0.00025 是为了让PWM在每个周期的正中间。
case1是个简单的缓起,case2是正常运行,只要将case1中的参考值改成定值就可以了。
电流采样肯定是流经电感的电流。用的是霍尔。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | 楼主 case1是控制电流 那case2也是控制电流吗 还是控制电压
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | 并网的话,参考都是电流。
离网的话,参考都是电压。
如果离网的话case1和case的参考都改成电压。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 楼主 你上面写的RC和T的关系 有什么用呀 对程序有什么影响呀 最后 在程序中怎么实现呢 谢谢楼主
|
|
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 逆变的SPWM程序 没有用到 这个。104楼是用软件的方式实现硬件的低通滤波。程序中的参数和硬件一阶低通滤波中的 RC 和T 的关系。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 楼主 您控制部分 和功率部分是完全隔离的吗 如果是隔离的 电压电流反馈是怎么做的 我现在功率部分的地和控制部分的地是单点接地 但是母线电压一升高 pwm波就不干净 有时dsp还会死机 您一般是怎么处理的
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 必须要隔离啊!
采样用霍尔,或者交流也可以用互感器,都是隔离的。功率和控制的电是要全隔离的。
有的采样 使用运放的高阻差分电路来采样功率部分的电压信号,电流基本上直流都是霍尔,交流可以用互感器。
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 楼主 运放的高阻差分电路来采样功率部分的电压信号 这么采集是隔离吗 这不需要和功率部分共地吗 谢谢楼主的耐心解答
|
|
|
|
| | | | | | | | | | | | | | | | |
楼主,想问个离网的电流内环的问题。假如电压外环PI后的值给到电流内环参考,然后跟电感电流反馈值进行误差然后比例P,这个值输出能直接当占空比值吗?还是需要转化一下数据?
|
|
|
| | | | | | | | | | | | | | | | | | | 首先调节双环PI的时候,要先调电流内环的参数,再调电压外环的参数。当内环调整好后,调电压外环时,电压外环的输出就是电流内环的参考。不需要做占空比到电流/电压的映射,PI中的积分环节会自动帮你调整好,你只需要调好PI的参数就好了。 |
|
|
| | | | | | | | | | | | | | | | | | | | |
我的是单相的离网的,不是并网的。这种情况下单独调电流内环怎么调?这个时候电流环的给定是什么?反馈是电感电流采样。 然后再PI出来的也是调制比吗?输出占空比就是 调制比*sin(wr*td)吗?
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | 给定是你想要逆变器输出的电流大小(在有负载的情况下),反馈就是电感电流。但是调节的不是占空比,而是调制比,因为是SPWM。 |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | |
假如设置给定为电感电流峰峰值最大为30A,假如在空载情况下,反馈的电感电流为0. 这个情况下误差永远为最大。这没法调吧
|
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 电流环的给定是电压环的输出,如果是空载,电压环的输出应该也是0的.反馈就可能跟随给定了。
|
|
|
| | | | | 楼主真的无私,极好的帖子,学到了很多,这样的人在生活中一定也是很体面的,谢谢了。 |
|
|
|
| | | | | | | 如图所示,S1和S4开关一致,S2和S4开关一致,两路开关信号加死区互补。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| | | | | 建议你用倍频SPWM控制!开关管工作在20KHz频率的时候电感电容都是等效于40KHz的结果,相对之下效率高,体积小成本更低。我们做出来的结果逆变效率可以做到97.5%以上。充电电流超过100A;功率与逆变双向一样。5KW双向并机并网逆变器整机成本190美金以下,带一个7英寸LCD触控屏(可做远控)!
|
|
|
| | | | | 你好,老师。想跟您交流一下关于非隔离光伏并网逆变器,运行过程中如果出现了组件负极接地的情况,逆变器应该如何做保护,才能保证逆变器不损坏? |
|
|
| | | | | 这第一波知识就是入门普及啊,可惜我期末复习了很久,为自己默哀一分钟先 |
|
|
|
|
| | | | | | | | | 能不能把整个程序代码发出来,大家一起学习一下,现在刚开始接触DSP,用在UPS方案上面的,,
|
|
|
|
| | | | | 现在数字电源,是用C语言还是python还是汇编语言。逆变器和现在ACDC电源都用软件来做成数字电源,用什么芯片呀 |
|
|
|
| | | | | | | | | 我是初学没能不能具体帮忙举一块市面做大功率数字电源用的DSP芯片呀,感谢!
|
|
|
|
|
| | | | | | | | | | | | | TMS320F28335ZJZA
TMS320F28335PTPS
TMS320F28335PTPQ
我搜出三个型号有啥区别呀
|
|
|
|
|
|
|
| | | | | 看了几个小时,博主几年前就开始分享了,还一一做了答复,真赞!
帖子内容也很丰富。
想必博主做电源应该经验很丰富了吧?可以卖一套ACDC软硬件给我学习吗?谢谢
我想做储能交流方面的电源软件,目前做的时DCDC控制软件。 |
|
|
|
|
|
|
|
|