AD与DA转换及数字PID调节器算法的研究实验报告Word文件下载.docx
《AD与DA转换及数字PID调节器算法的研究实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《AD与DA转换及数字PID调节器算法的研究实验报告Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
二、实验设备
1.THBDC-1型控制理论·
计算机控制技术实验平台
2.PCI-1711数据采集卡一块
3.PC机1台(安装软件“VC++”及“THJK_Server”)
三、实验原理
1.数据采集卡
PCI-1711是输入功能强大的低成本多功能PCI总线卡。
特点:
16路单端模拟量输入
12位A/D转换器,采样速率可达100KHz
每个输入通道的增益可编程
自动通道/增益扫描
卡上1K采样FIFO缓冲器
2路12位模拟量输出(仅PCI-1711)
16路数字量输入及16路数字量输出
可编程触发器/定时器
图1-1PCI-1711卡管脚图
2.AD/DA转换原理
该卡在进行A/D转换实验时,输入电压与二进制的对应关系为:
-10~10V对应为0~4095(A/D转换精度为12位)。
输入
A/D数据编码
正满度
111111111111
正满度-1LSB
111111111110
中间值(零点)
011111111111
负满度+1LSB
000000000001
负满度
000000000000
D/A通道输出范围为0~10V。
四、实验步骤
1、仔细阅读“PCI-1711数据采集卡驱动函数说明.doc”文档。
2、将实验台上的“阶跃信号发生器”的输出端通过导线与PCI-1711数据采集接口的AD1通道输入端相连,同时将PCI-1711数据采集接口的AD1通道通过导线与实验平台上的交直流数字电压表(选取直流档)的输入端相连;
3、打开ADDA实验VC++程序文件夹,打开.dsw工程文件,添加缺少的main函数(主程序),编程实现以下功能:
在运行程序后的DOS界面上应显示AD第一通道输入值,同时并显示出转换后对应的以十进制存放的二进制码,并将其转换为二进制码;
在程序中使用输出函数通过DA1通道输出一个0~10V的电压(PCI-1711卡无法输出负电压),然后使用THBDC-1型实验平台上的直流数字电压表进行测量,并确认输出值是否正确。
五、实验记录
1.系统main函数如下:
voidmain()//主程序
{
init_1711();
for(;
;
)
{
ADinput(0);
//读取AD1通道的电压值
printf("
AD1通道输入值:
%.3f\n"
fVoltage);
ADbinaryIn(0);
//读取AD1通道的二进制电压值
AD1通道的二进制值为(以十进制数存放):
%d\n"
bin);
//-10V~10V对应为(0~4095)
//AD数据转换为二进制
char*temp=newchar[NUM+1];
Convert(bin,temp,NUM);
//十进制数转换为二进制数的转换函数
AD1通道数据转换为二进制为:
%s\n"
temp);
deletetemp;
DAoutput(0,3.2);
//从DA1通道输出3.2V的电压值
printf("
DA1通道输出值:
ptAOVoltageOut.OutputValue);
DABinaryout(1,4095);
ptAOBinaryOut.BinData);
\n"
);
Sleep(1000);
}
expexit();
}
2.程序的主要函数:
voidConvert(USHORTdata,char*temp,longDim);
//十进制数转换为二进制数
voidErrorHandler(DWORDdwErrCde);
//通过错误代码来获取相应的错误信息函数
voidErrorStop(long*,DWORD);
//出错处理函数
boolinit_1711();
//初始化设备
voidexpexit();
//关闭设备
floatADinput(unsignedcharchan);
//模拟量输入函数
boolDAoutput(unsignedcharchan,floatDAdata);
//模拟量输出函数
USHORTADbinaryIn(unsignedcharchan);
//模拟量输入函数(二进制形式)
3.由于是验证性实验,以下为我们记录的两组数据:
①A/D转换
通过改变滑动变阻器的阻值,改变AD1输入端输入电压的大小,用电压表测出实际输入的电压值,并记录通过A/D转换计算机采集的十进制与二进制值,程序运行结果见下表中,在变化过程中实际输入与计算机采集的数据的对应关系如表:
直流电压表(v)
程序运行后DOS界面显示结果
AD1通道输入值
AD1通道数据转化为十进制
AD1通道数据转化为二进制码
0.00
0.000
2047
011111111111
5.00
4.982
3068
101111111100
10.00
9.985
4092
111111111100
-5.00
-4.932
1037
010*********
程序将外界输入电压通过A/D转换得到与原输入值大致相等的电压,输入电压与二进制的对应关系为:
-10~10V对应为0~4095,采用“除二取余”法计算相应的二进制码,验证发现结果是比较准确的,误差较小。
②D/A转换
在程序中多次改变输出电压的大小(通过改变主程序中DAoutput(0,x)中的函数),利用电压表测量实际DA1输出的电压值,运行程序后,得到的具体的D/A转换的对应关系如表:
程序设定值(V)
电压表输出电压值(V)
2.5
2.50
3.0
3.00
由表中数据可以看出,DA1通道的输出电压值与程序中设定的值十分接近(相等),在误差允许的范围内认为输出值正确。
六、实验总结
1.此次实验比较简单,通过简单地连线验证实验结果的正确性,由实验结果可以看出程序可以将外界输入电压通过A/D以及D/A转换,得到与原输入值大致相等的电压。
2.输入电压与二进制的对应关系为:
-10~10V对应为0~4095(程序设定A/D转换精度为12位),相当于每1V对应十进制为204.8;
通过“除二取余”法,假定data为待转换数据,temp为转化后数据,Dim为转换精度,通过循环:
for(inti=0;
i<
Dim;
i++)
temp[Dim-1-i]=data%2+48;
//(程序中加48是将二进制数转换为ASCII码)
data/=2;
temp[Dim]='
\0'
将十进制数转化为二进制码。
第二部分实验二数字PID调节器算法的研究
3、掌握PID控制器的编程方法;
4、了解闭环控制系统的概念与控制方法;
5、熟悉定时器及显示界面的使用方法;
1.THBDC-1型控制理论·
1.被控对象的模拟与计算机闭环控制系统的构成,
图2-1计算机控制系统原理框图
图中信号的离散化通过PCI-1711数据采集卡的采样开关来实现。
2.常规PID控制算法
常规PID控制位置式算法为
,当计算机等外部环境发生变化时,U(k)会产生大幅度的变化,这对很多执行对象来说,这种冲击是不能接受的。
所以,工程上常用增量式控制算法。
其增量形式为:
式中Kp---比例系数
Ki=
积分系数,T采样周期
Kd=
微分系数
本实验就是采用的PID增量式算法。
根据被控对象和环境等不同,还可以采用积分分离PID算法,智能PID算法,微分先行等多种形式的PID控制算法。
图中信号的离散化是由数据采集卡的采样开关来实现。
3.数字PID控制器的参数整定
在模拟控制系统中,参数整定的方法较多,常用的实验整定法有:
临界比例度法、阶跃响应曲线法、试凑法等。
我们控制器参数的整定也可采用类似的方法,如扩充的临界比例度法、扩充的阶跃响应曲线法、试凑法等。
针对本实验的二阶线性系统对象,建议用衰减曲线法:
《自动控制原理》田玉平二版316页。
4.程序流程图:
1、仔细阅读“PCI-1711数据采集卡驱动函数说明.doc”和“THJK-Server软件使用说明.doc”文档,掌握PCI-1711数据采集卡的数据输入输出方法和THJK-Server软件(及相关函数)的使用方法。
2、模拟电路接线图如下所示:
图2-2二阶被控对象与计算机连接图
图中R1=510K,R2=510K,R3=100K,R4=200K,C1=1uF,C2=10uF。
DA1,AD1,AD2,是PCI-1711实验面板的接口
3、用导线将二阶模拟系统的输入端连接到PCI-1711数据采集卡的“DA1”输出端,系统的输出端与数据采集卡的“AD1”输入端相连;
4、用导线将+5V直流电源输出端连接到PCI-1711数据采集卡的“AD2”输入端,作为阶跃触发使用,阶跃幅度由软件设定。
初始时,+5V电源开关处于“关”状态;
5、打开数字PID实验文件夹下.dsw工程文件,源程序中缺少PID算法程序。
请同学用增量式算法编写PID控制程序。
6、源程序编译通过后,先启动“THJK_Server”图形显示软件,再执行程序代码,在显示界面出现的曲线并稳定后(初始化后),把+5V电源打到“开”状态,观测系统的阶跃响应曲线。
在实验结束后,在键盘上按下“e”和“Enter(回车键)”键,程序退出。
7、用衰减曲线法反复调试PID参数,选择适当的PID参数后,重复第5步骤,直到得到满意的阶跃响应曲线为止并截图。
1.编写PID数字控制器的C++程序(增量式算法)。
//PID算法函数:
pid[0]=P;
pid[1]=I;
pid[2]=D
doublePID(doubleei,double*pid,doubleTs)
{staticdoubleex=0,ey=0;
staticdoubleq0=0;
staticdoubleq1=0;
staticdoubleq2=0;
staticdoubleop=0;
q0=pid[0]*(ei-ex);
//比例项
if(pid[1]==0)
q1=0;
else
q1=pid[0]*Ts*ei/pid[1];
//当前积分项
q2=pid[0]*pid[2]*(ei-2*ex+ey)/Ts;
//微分项
ey=ex;
ex=ei;
op=op+q0+q1+q2;
returnop;
}
程序对PID参数的设置进行编程,采用的是增量式算法
2.无PID调节时,得到的阶跃响应曲线:
图1无PID调节时阶跃响应曲线
此时设定P=1,I=0,D=0,传递函数为:
,可以看到无PID时,阶跃响应的响应时间较长,且有较大的稳态误差。
3.绘制二阶被控对象在采用数字控制器后的阶跃曲线
(1)利用“衰减曲线法”,先采用比例控制,使k从0逐渐增加
K
5
7
7.5
8
衰减振荡比
8.50
4.25
4.00
2.62
直到系统出现如图所示4:
1的衰减振荡:
记录此时的Kr=7.5,I=10000,并测出此时的振荡周期Pr=1.67
(2)将其代入公式:
Kp=0.85Kr=6.375,Ti=0.5Pr=0.835,Td=0,得PI控制的阶跃响应曲线:
图2PI调节时阶跃响应曲线
由实验曲线可知,阶跃响应有所改善,但对于积分调节,具有积分作用的PI调节器,只要被调量和给定值之间有误差,其输出就会不停的变化。
由于某种原因,误差一时无法消除,调节器就要不停的校正这个误差,结果很容易造成积分饱和,严重时还会导致处理器溢出。
因此实际应用中必须采取一定的改进措施避免出现积分饱和现象,如积分分离、遇限消弱积分、停止饱和积分、反馈抑制积分饱和等。
(3)将其代入公式:
Kp=1.25Kr=9.375,Ti=0.3Pr=0.501,Td=0.1Pr=0.167,得PID控制的阶跃响应曲线:
图3较好的PID参数时的阶跃响应曲线
从图中可以看出,此时的阶跃响应超调量较小,且响应时间较短,PID调节比较理想。
(4)分析采样周期Ts对系统阶跃响应的影响
①当Ts=50ms时,阶跃响应曲线如图4所示:
②当Ts=80ms时,阶跃响应曲线如图5所示:
③当Ts=150ms时,阶跃响应曲线如图6所示:
与T=100ms相比,适当减小或增大采样周期,调节时间会增加,虽然不是最理想的PID参数,但是系统有稳定的输出,且系统的阶跃响应与模拟系统的输出响应基本吻合。
继续增大采样周期,由于不满足香农定理,系统响应会出现严重失真,系统的输出不能稳定。
6、实验总结
1、PID控制器中的比例环节Kp,调整系统的开环增益,提高系统的稳态精度,加快响应速度。
但是Kp过大会使系统超调量过大,稳定性减弱。
积分环节Ki可以使系统输出无静差,但是系统稳定性下降,响应速度变慢,微分环节可以加快系统的响应速度。
在低频段,主要是PI控制规律起作用,提高了系统的型别,消除或减小了稳态误差;
在中高频段主要是PD控制规律起作用,增大截止频率和相角裕度,提高了响应时间。
PID控制调节可以增大系统的瞬态和稳态性能。
2、在对象模型确知时,由于在工业系统中对象很复杂,一般不能用解析的方法得到较为准确的模型,因此,可以通过系统的动态响应调整PID控制参数。
这类方法一般采用阶跃或脉冲等信号激励被控对象,根据被控对象的过渡过程响应曲线来获得系统的瞬态性能。
用衰减曲线法来确定P、I、D的参数,其步骤是先采用比例控制,即将Kp从0逐渐增加,直到系统出现4:
1的衰减(衰减比定义为第一次超调和第二次超调之比),记下此时增益值Kr,Kp=1.25Kr=,Ti=0.3Pr,Td=0.1Pr。
3、由对比实验可以看出,在计算机速度允许的情况下,采样周期Ts较小时,调节品质好,系统响应越接近于连续系统的阶跃响应输出;
采样周期Ts过长时,系统控制精度不好,甚至采样信号无法恢复为原模拟信号,抗干扰能力下降,系统出现振荡。
4、增量式控制算法与位置式控制算法相比具有以下优点:
①由于控制增量一般很小,故可对其进行限幅,限制或禁止故障时的输出,从而缩小机器故障时影响范围。
②由于增量式控制时阀位与步进电机转角对应,故手动-自动切换时冲击小。
③控制增量的确定仅与最近几次的采样值有关,容易通过加权处理以获得较好的控制效果。