xxxxxx 毕业设计(论文)
软件设计
3、SPWM程序设计如图3.7-SPWM程序设计流程图:
1
xxxxxx 毕业设计(论文)
软件设计
图 3.8 为 C8051F120 单片机输出 的SPWM波
形,输出频率为50HZ。在做SPWM数据表的
时候没有处理好是,出来的波形就不对、
或者有毛刺!
对于所取的SPWM数据的个数直接关系到输
出波形是否平滑的效果。
图3.8-SPWM波形图
3.2.4
PID程序算法设计
1、PID原理介绍:
由模拟PID控制器的控制规律为:
)(
tu
)(
teK
p
1
T
I
t
0
)(
te
dt
T
D
)(
tde
dt
u
o
(3.1)
可知数字PID控制器是一种采样控制,对积分项和微分项必须进行离散化处理。其方法为:
以T 作为采样周期,k 作为采样序号,则离散采样时间kT 对应着连续时间 t,用求和的
形式代替积分,用增量的形式代替微分,可作如下近似变换:
t
kT
)(
te
t
0
)(
tde
dt
dt
k
T
0
j
)
(
kTe
(
jTe
)
[(
ke
T
k
T
,...)3,2,1,0(
k
j
])1
T
e
e
0
j
k
k
e
T
1
(3.2)
为了表示方便,将类似于e(kT)简化成 ek 形式,则离散的PID表达式如下:
或
u
k
[
eK
P
k
T
T
1
u
k
eK
kP
K
I
k
j
0
e
j
T
D
T
(
e
k
e
k
1
])
u
o
k
j
0
e
j
(
eK
D
k
e
k
1
])
u
o
(3.3)
(3.4)
式中:k ——采样信号,k=0,1,2,…
u k ——第k 次采样时刻的计算机输出值
e k ——第k 次采样时刻输入的偏差值
e k −1 ——第k-1 次采样时刻输入的偏差值
2
xxxxxx 毕业设计(论文)
软件设计
K I ——积分系数,
K
I
TK
P
T
I
KD ——微分系数,
K
D
TK
DP
T
(注:积分时间TI即为累积多少次/个T)
u 0 ——开始进行PID 控制时的原始初值(注:应为前一次的给定值)
如果采样周期取得足够小,则以上近似计算可获得足够精确的结果,离散控制过程
与连续控制过程十分接近。
如果只需要计算控制量的增量Δuk ,可以使用增量式PID 控制算法。由式(3.3)
可得控制器在第 k-1 个采样时刻的输出值为:
u
k
1
[
eK
P
k
1
T
T
1
k
1
j
0
e
j
T
D
T
(
e
k
1
e
k
2
])
u
o
(3.5)
将(3.2.5)与(3.2.7)相减,就可以得到增量式PID 控制算法公式为:
u
k
u
k
u
k
1
[
eK
P
k
e
k
1
e
k
T
D
T
(
e
k
2
e
k
1
e
k
2
)]
T
T
1
TK
D
T
P
K
P
1(
T
T
1
T
D
T
)
e
k
K
P
21(
T
D
T
)
e
k
1
e
k
2
Ae
k
Be
k
1
Ce
k
2
(3.6)
KA
1(
P
T
T
1
T
D
T
),
B
K
P
21(
T
T
D
),
TKC
D
T
P
式中
由式(3.6)可以看出,如果计算机控制系统采用恒定的采样周期T,一旦确定了A、B、C,
只要用前后3次测量值的偏差,就可以由式(3.6)求出控制增量。
2、AD采集模块设计
由于PID需要电压采样参数来调整,求误差信号!因此设计一个AD模块作为电压信号
的采集是非常有必要的!
1)、C8051F120单片机ADC0子系统简介
C8051F120 单 片 机 的 ADC0 子 系 统 包 括 一 个 9 通 道 的 可 编 程 模 拟 多 路 选 择 器
(AMUX0) ,一个可编程增益放大器(PGA0)和一个 100ksps、12 位分辨率的逐次逼近
寄存器型 ADC,ADC 中集成了跟踪保持电路和可编程窗口检测器 。AMUX0、PGA0、数据
转换方式及窗口检测器都可用软件操作对应的特殊功能寄存器来控制。
2)、ADC启动转换、跟踪方式与建立时间需求
(1)、启动转换:有4 种转换启动方式,由ADC0CN中的ADC0 启动转换方式位(AD0CM1,
AD0CM0)的状态决定。转换触发源有: 向 ADC0CN 的 AD0BUSY 位写 1;
定时器 3 溢出(即定时的连续转换);外部 ADC 转换启动信号的上升沿,CNVSTR0;定
3
xxxxxx 毕业设计(论文)
软件设计
时器2 溢出(即定时的连续转换)四种。
(2)、跟踪方式:寄存器ADC0CN 中的AD0TM位控制ADC0的跟踪保持方式。在缺省状态,
除了转换期间之外ADC0输入被连续跟踪。
(3)、建立时间需求:当ADC0输入配置发生改变时(AMUX或PGA 的选择发生变化) ,
在进行一次精确的转换之前需要有一个最小的跟踪时间。该跟踪时间由 ADC0 模拟多路
器的电阻、ADC0 采样电容、外部信号源阻抗及所要求的转换精度决定。
3)、数字滤波算法
为实现AD数据有效、可靠性增强,需要把采集的AD数据做一定的处理。通常的数字
滤波方法有:普通平均法、去除最大最小平均法、滑动数据滤波法、异常数据排除法。
由于本系统是实时控制系统,需要对数据进行实时采集。因此本系统采用数字滑动
滤波方法实现对数据的剔除,保证数据的有效性、可靠性、可行性。
4)、程序流程图
由于AD数据采集需要配置一些寄存器:采用差分输入方式还是单端输入方式、配置
内部基准还是外部基准电压实现,所以,C8051F120需要配置一些寄存器,下面主要介绍
主要寄存器如何进行配置、初始化与程序设计:
AMUX0配置寄存器AMX0CF:分别对模拟输入通道7-0设置为差分输入对,软件语句为
AMX0CF = (ADC0_CHANNEL67_DIF_NSIG << 3) | (ADC0_CHANNEL45_DIF_NSIG << 2)
| (ADC0_CHANNEL23_DIF_NSIG << 1) | ADC0_CHANNEL01_DIF_NSIG;
ADC0配置寄存器ADC0CF:对ADC0 SAR 转换时钟周期控制位、ADC0 内部放大器增益
(PGA)进行配置;放大器增益可设置为0.5\1\2\4\8\16,ADC0 SAR时钟为
软件语句实现为
ADC0CF = (((uint8)(ClkSource / 2 / CLK_SAR0)) << 3) | (ADC0_GAIN1 & 0x07);
ADC0控制寄存器:主要对使能、标志、跟踪方式、启动方式、数据对齐方式操作;
软件实现语句为:
ADC0CN = 0x80 | ADC0_DAT_ALIGN_LEFT_NRIGHT | (ADC0StartMode << 2);
//ADC0使能、寄存器数据右对齐、定时器3 溢出启动ADC0 转换
4
xxxxxx 毕业设计(论文)
软件设计
图3.9-AD初始化与采集程序流程图
图3.9为AD采集的初始化程序流程图,设置AD采集为外部电压基准、单端输入方式、
采集时序;采集流程图主要实现AD数据的读取与AD数据的处理等。
需要通过AD采集电路采集电压,实现闭环SPWM控制,使输出电压稳定于220V;若带
5
xxxxxx 毕业设计(论文)
软件设计
不同负载时会出现输出电压需要调节一段时间才能让电压稳定于220V,此时就需要加入
一定的控制算法(PID控制算法),因此AD采集也为实现控制算法作准备的。
不论光伏发电系统是独立运行还是并网运行,都需要AD采集电压、电流信号来计算其功
率、计算效率。通过图3.9-AD初始化与采集程序流程图编写相应的AD采集程序,实现电
压电流的采集。
3、PID程序设计流程
由于本系统是一个惯性系统(即滞后系统),惯性系统的调节时间比较长,若带不
同负载,需要的调节时间便不同,因此调节动态响应过程,需要加入一定的控制算法,
使系统变为二级系统,缩短调节时间的同时又能满足稳定性的要求。因此本系统采用典
型的数字PID算法实现,在PID程序设计中最大的难度在于调试PID参数,即A、B、C这三
个参数,一般先调比例、后积分、最后再调微分参数。
3.2.5 并网实现算法
图3.10-PID程序设计流程图
6
xxxxxx 毕业设计(论文)
软件设计
本文采用调频和调相分开进行,首先实现输出和输入的频率一致同时也有一定程度
的调相,然后再考虑调相,最终实现频率和相位的一致。,大体思想是当检测到输入频率
高于(低于)正常规定范围时,按照一定步长逐渐增大(减小)PWM周期计时器值,直到
输出频率在允许范围内。同样,调节相位也是按照同样方式进行,当发现相位超前则调
整查表顺序使输出滞后一定相位,反之使输出超前一定相位,这种方法可以计算出最大
的锁相时间,所以就可以根据所要求的参数来确定最小相位调节幅度,并且最终锁相的
稳态误差就是一个相位的基本调节单位。这种实现方法简单、直观、实现方便、稳态误
差较小且可以控制。
图3.11-并网程序设计流程图
从流程图看到,第一步首先判断频率是否超限,如果超限则输出稳定的正弦波。第
二步根据所得到的误差大小,采取相应的措施调整下一个周期计数器值。当频率满足要
求以后,第三步就可以进行调相,如前所述在本文软件设计中,基准是一个正弦表格,
因此调相只需要改变读表指针即可(本文中P为基准指针变量)。如果发现捕获到逆变器
的输出电流波形超前于市电,那么只需要把P值减小一定值就相当于把基准往后移相了,
7
xxxxxx 毕业设计(论文)
软件设计
目前采用的正弦表是360个点代表360°,每次中断移动一次,目前程序是每次移动1°,
从流程图中看到,第一步首先判断频率是否超限,如果超限则输出稳定的正弦波。第二
步根据所得到的误差大小,采取相应的措施调整下一个周期计数器值。当频率满足
要求以后,第三步就可以进行调相,如前所述在本文软件设计中,基准是一个正弦表格,
因此调相只需要改变读表指针即可(基准指针变量)。如果发现捕获到逆变器的输出电流
波形超前于市电,那么只需要把P值减小一定值就相当于把基准往后移相了,目前采用的
正弦表是360个点代表360°,每次中断移动一次,目前程序是每次移动1°,由于正弦表
的数据多少限制正弦表的精度,因此周期值的偏差在小于1°以内是不调节的,同样输出
电流波形落后于市电,那么只需要把值增大一定值就相当于把基准往前移相了,这样最
终就可以实现锁相。其中第二步频率调节的基本思想是:电网电压的频率变化范围一般
在48Hz-52Hz之间,事先可以设定并网电流的频率为50Hz。SPWM载波频率为18KHz,改变
该载波频率将导致并网输出电流频率的改变,所以不断调整载波频率(即调整波载波周
期寄存器的值)可以实现输出电流频率和电网电压频率一致。该控制过程是依赖两个中
断完成的其一是载波周期定时器中断,另一是捕获中断。前者不断地从一个正弦数据表
格中依次循环读出表格数据,每次中断读出一个表格数据,而在后者的每次捕获中断中
检查当前由载波周期定时器中断读出的表格数据所对应的电角度。
3.2.6 控制系统软件抗干扰措施
在控制系统软件设计中也采取了抗干扰措施,软件抗干扰措施包括:
1、在程序开始运行初期,对所有的输入/输出端口进行初始化设置,避免其处于不
确定或错误状态,以免对一些控制出现勿动作。比如母线电压侧软控开关的控制、DC-DC
升压PWM输出端口、DC-AC输出IO口的初始态要先初始化,以免出现直通等现象,烧坏某
些元器件。
2、对于反馈的模拟信号进行都进行了数字滤波,并根据实验情况对数字滤波的参数
进行了优化。比如AD采集的数据经过平滑滤波,使得数据具有有效性、可靠性等,让控
制系统能够高效运行!
3、对于数字量输入信号采用软件消抖措施,防止由于输入信号尖峰、毛刺的影响产
生误动作。如系统的独立运行还是并网运行,需要人为的切换!我们在按键切换的时候
就需要软件消抖处理,以免出现误动作。
8