我对控制理论的了解有限。我在学校处理零极点和转移函数。我已经为DC / DC转换器实现了几种基于微处理器的控制方案。这两件事如何相互关联,我还想弄清楚,我很想知道。以反复试验为基础的设计是可行的,但我更希望对自己在做什么以及后果有更深入的了解。
答案应该集中在如何分析系统上,而不是在如何改进它上。就是说,如果您有改进系统的建议,并希望给出分析原因,那就太好了!只要改进是分析的第二要务。
对于这个问题,我的示例系统是:
- C1:1000uF
- C2:500uF
- L1:500 uH
- 开关频率:4 kHz
- R1:可变
- 输入电压:400伏
- 输出电压目标:500伏
- 输出电流限制:20安培
我正在尝试调节输出电压,而不超过输出电流限制。我具有电压和电流检测功能,这些电压和电流检测功能经过各个放大阶段,目前还没有进行分析,但确实包含一些滤波功能。随后是直接在A / D转换器上的100欧姆和1000 pF的RC低通滤波器。A / D采样率为12 kHz。该值通过最后64个采样的单极IIR移动平均滤波器。
之后,我有两个PI循环。首先,电压环路。以下是伪代码,其值缩放为伏特,毫安和纳秒。假设边界检查在其他地方正确实现。如果没有积分项,这些循环的结构将根据最大允许下垂定义P,然后定义积分项,以使最大积分器可以准确补偿该下垂。INTEGRAL_SPEED常数确定积分器加速的速度。(在我看来,这是确保P和我的收益始终保持适当平衡的一种合理方法,而不管我如何设置常数,但我愿意接受其他建议。)
#DEFINE VOLTAGE_DROOP 25
#DEFINE VOLTAGE_SETPOINT 500
#DEFINE MAX_CURRENT_SETPOINT 20000
voltage_error = VOLTAGE_SETPOINT - VOLTAGE_FEEDBACK
current_setpoint = MAX_CURRENT_SETPOINT * voltage_error/VOLTAGE_DROOP
#define VOLTAGE_INTEGRAL_SPEED 4
voltage_integral += voltage_error/VOLTAGE_INTEGRAL_SPEED
//insert bounds check here
current_setpoint += VOLTAGE_DROOP * voltage_integral/MAX_VOLTAGE_INTEGRAL
#DEFINE CURRENT_DROOP 1000
#DEFINE MAX_ON_TIME 50000
current_error = current_setpoint - current_feedback
pwm_on_time = MAX_ON_TIME * current_error/CURRENT_DROOP
#define CURRENT_INTEGRAL_SPEED 4
current_integral += current_error/CURRENT_INTEGRAL_SPEED
//insert bounds check here
pwm_on_time += CURRENT_DROOP * current_integral/MAX_CURRENT_INTEGRAL
所以我有一个带两个电容器的升压转换器,一个扼流圈,一个可变负载(可能是阶跃函数),带单极RC滤波器的反馈,一个A / D转换器,单极IIR数字滤波器和两个PI环路互相喂食。如何从控制理论的角度(极点,零点,传递函数等)分析这样的事情,尤其是正确选择我的控制回路参数?