第一篇:数字PID控制器设计
数字PID控制器设计
设计任务:
设单位反馈系统的开环传递函数为:
设计数字PID控制器,使系统的稳态误差不大于0.1,超调量不大于20%,调节时间不大于0.5s。采用增量算法实现该PID控制器。
具体要求:
1.采用Matlab完成控制系统的建立、分析和模拟仿真,给出仿真结果。
2.设计报告内容包含数字PID控制器的设计步骤、Matlab仿真的性能曲线、采样周期T的选择、数字控制器脉冲传递函数和差分方程形式。
3.设计工作小结和心得体会。4.列出所查阅的参考资料。
数字PID控制器设计报告
一、设计目的 了解数字PID控制算法的实现;
掌握PID控制器参数对控制系统性能的影响;
能够运用MATLAB/Simulink 软件对控制系统进行正确建模并对模块进行正确的参数设置;
加深对理论知识的理解和掌握; 5 掌握计算机控制系统分析与设计方法。
二、设计要求
1采用增量算法实现该PID控制器。
2熟练掌握PID设计方法及MATLAB设计仿真。
三、设计任务
设单位反馈系统的开环传递函数为:
设计数字PID控制器,使系统的稳态误差不大于0.1,超调量不大于20%,调节时间不大于0.5s。采用增量算法实现该PID控制器。
四、设计原理
1.数字PID原理结构框图
2.增量式PID控制算法
ukKPekKIeiKDekek1i0
=u(k-1)+Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)] =u(k-1)+(Kp+Ki+Kd)e(k)-(Kp+2Kd)e(k-1)+Kde(k-2)所以Δu(k)=u(k)-u(k-1)
=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]
=(Kp+Ki+Kd)e(k)-(Kp+2Kd)e(k-1)+Kde(k-2)整理:
Δu(k)= Ae(k)-Be(k-1)+Ce(k-2)A= Kp+Ki+Kd
B=-(Kp+2Kd)C=Kd
五、Matlab仿真选择数字PID参数
(扩充临界比例度法/扩充响应曲线法 具体整定步骤)
利用扩充临界比例带法选择数字PID参数,扩充临界比例带法是以模拟PID调节器中使用的临界比例带法为基础的一种数字PID参数的整定方法。其整定步骤如下:; 1)选择合适的采样周期T;
2)在纯比例的作用下,给定输入阶跃变化时,逐渐加大比例作用Kp(即减小比例带),直至系统出现等幅震荡,记录比例增益Kc,及振荡周期Tc。Kc成 为临界振荡比例增益(对应的临界比例带),Tc成为临界振荡周期。
=1/150S^3+6/25S^2+37/30S+1 在MATLAB下输入如下程序:
num=[1];
den=[1/150,6/25,37/30,1];sys=tf(num,den);p=[20:2:45];for i=1:length(p)
Gc=feedback(p(i)*sys,1);step(Gc)hold on end;grid
title('Kp变化时系统的阶跃响应曲线')axis([0,3,0,2.3])仿真阶跃响应如下图:
调整参数:p=[35:2:45] 程序如下: num=[1];
den=[1/150,6/25,37/30,1];sys=tf(num,den);p=[35:2:45];for i=1:length(p)
Gc=feedback(p(i)*sys,1);step(Gc)hold on end;grid title('Kp变化时系统的阶跃响应曲线')axis([0,3,0,2.3])仿真阶跃响应如下图:
由图像可知:当Kp在40~45之间时,系统会出现等幅振荡。为进一步得到准确的Kp,调整程序参数p=[40:1:45],程序如下: num=[1];
den=[1/150,6/25,37/30,1];sys=tf(num,den);p=[40:1:45];for i=1:length(p)
Gc=feedback(p(i)*sys,1);step(Gc)hold on end;grid
title('Kp变化时系统的阶跃响应曲线')axis([0,3,0,2.3])仿真阶跃响应如下图:
由图像进一步精确得Kc约为43时,系统出现等幅震荡,震荡周期Tc约为0.5s。
扩充临界比例带法选择数字PID参数的计算公式如下表所示:
3)选择控制度。控制度的定义为数字调节器和模拟调节所对应的过度过程的误差平方积分之比,即控制度=02eDdt0edt2式中,eD为数字调节器的控制误差;e为模拟调节器的控制误差.当控制度为1.05时,数字调节器鱼模拟调节器的控制效果相当;当控制度为2时,数字调节器比模拟调节器的控制效果差一倍;在此选控制度为1.05。按选择的控制度指标及Tc,Kc实验测得值,由查表选择相应的计算公式计算采样周期:T=0.007,Kp=27,Ti=0.245,Td=0.07;KIKiTKPT=0.77,KDKdKPTD=270,Ki=0.23
TITTTc=0.5 则T=Tc*0.014=0.5*0.014=0.007;
Kp=Kc*0.63=43*0.63=27.09;
Ti=Tc*0.49=0.5*0.49=0.245;
Td=Tc*0.14=0.5*0.14=0.07;
Kp=27.09;
Ki=Kp*T/Ti=27.09*0.007/0.245=0.774;
Kd=Kp*Td/T=27.09*0.07/0.007=270.09;
六、Matlab/Simulink 控制系统建模 1.控制器
ΔU(Z)=(Kp+Ki+Kd)E(Z)-(Kp+2Kd)/Z*E(Z)+Kd/Z^2*E(Z)则D(Z)=ΔU(Z)/E(Z)=(Kp+Ki+Kd)-(Kp+2Kd)/Z+Kd/Z^2 =[(Kp+Ki+Kd)Z^2-(Kp+2Kd)Z+Kd]/Z^2 2.仿真模型图
将 Kp=27.09;
Ki=Kp*T/Ti=27.09*0.007/0.245=0.774;
Kd=Kp*Td/T=27.09*0.07/0.007=270.09带入,得:
Kp+Ki+Kd=27.09+0.774+270.09=297.95 Kp+2Kd=27.09+2*270.09=567.27 Kd=270.09
即D(Z)=[297.95*Z^2-567.27*Z+270.09]/Z^2
G0(S)=43/[0.00667S^3+0.24S^2+1.2333S+1] 3.输出阶跃响应曲线
Scope中得到阶跃响应曲线如下所示:
4、试凑法微调参数 由阶跃响应图像可得:
Y(∞)=0.96,则稳态误差Ess=1-0.96=0.04 超调量
=(1.1-0.96)/0.96*100%=14.6% 调整时间Ts=0.27s
系统有少量的稳态误差,则适当增大KI参数,使得KI参数由0.774变为1.774;
Scope中得到阶跃响应曲线如下所示:
由图像可知:此时稳态误差Ess减为1-0.98=0.02,超调量=(1.1-1)/1*100%=10%,调整时间减少为Ts=0.15s,但该曲线不够平滑,调整:Kp=36.08,Ki=2.770,Kd=270.08,降低传递函数的K值为36
Scope中得到阶跃响应曲线如下所示:
此时稳态误差几乎为0,调整时间Ts为0.3s,超调量为(1.05-1)/1*100%=5%,基本符合要求
5.最终PID参数及输出响应曲线 当Kp=36.08 Ki=2.770 Kd=270.08时
最终输出阶跃响应曲线为:
七、设计心得体会
通过这次设计,重新认识了计算机控制系统的数字PID控制,基本掌握了数字PID控制的基本规律,也认识到计算机控制系统的复杂性,检验了我所学的知识,体会了控制系统三大指标“稳,准,快”的意义.加深了我对自动控制系统的了解,同时也对比例、积分、微分控制有了更进一步的认识。
比例系数的加大,将使系统的响应速度加快,在系统稳定的前提下,加大比例系数可以减少稳态误差。但不能消除稳态误差。积分控制通常影响系统的稳定性,有助于消除稳态误差,提高系统的控制精度。而微分作用的增加则可以改善系统的动态特性,但也可能降低系统的抗干扰能力。比例+积分控制器可以使系统进入稳态后无稳态误差。而比例+微分控制器能改善系统在调节过程中的动态特性。
这次设计过程让我们把理论知识付诸于实践,这对以后的学习带来了更大的 帮助!
八、参考文献
1.陈怀琛.MATLAB及在电子信息课程中的应用.北京:电子工业出版社,2009 2.赵广元.MATLAB与控制系统仿真实践.北京:北京航空航天大学出版社,2009
第二篇:AB PLC PID控制器总结
针对AB PLC里的PID控制器的研究
首自信热轧作业区
张余海
借鉴热轧1580的稀油泵站的出口压力控制,期望压力为4.0bar,电机为异步变频电机,变频器为AB变频器,PLC和变频器的通讯通过Device Net进行数据交换。
一、控制器里的变量介绍--------
各变量名解释:(各变量只是显示用,他们的值时根据里面的参数设定而来)PID :PID控制器的名字(自己命名)
Process Variable :过程变量的输入源设定也就是反馈值(直接连到压力反馈的输入点)Tieback:手动控制时的牵引信号,因为在手动控制中,输出(OUTPUT=SETOUTPUT是人为设定的,这个Tieback有个对应的值,也就是手动设定为0,Tieback为0,如果手动设定为100%,那么Tieback输出就是4095)具体见后面的参数设定。
Control Variable:控制变量(最关键的一个参数)的输出源设定,自己命令的一个中间变量作为转换或者直接接到给到执行器的输出信号上(例如阀的开口度、电机的转速给定)。PID控制器计算得到的是一个百分数,但是百分数无法输出给执行机构,必须转换成为数字量,这个控制变量(CV)就是依照对应关系转换得到的数字量(例如OUTPUT=0,CV=0,OUTPUT=100%,CV=16384,具体见后面参数设定)
PID Master Loop:PID的主循环,就是PID控制使用串级控制,如果是就会显示为1,如果为从就为0,但是有一个前提就是选用了串级控制(看后面的参数设定)
Ihhold Bit :初始化保持位,来自1756模拟量输出通道的数据读出值,用于支持无冲击在启动,如果用户不想用此参数,可以设置为0。
Inhold Value:初始化保持值,来自1756模拟量输出通道的数据读出值,用于支持无冲击在启动,如果用户不想用此参数,可以设置为0。
这两个值是为了防止系统已运行,过程变量和设定偏差太大,PID控制器输出肯定是100%,带来很大的冲击,如果设置此参数,系统先不让PID控制器工作,输出一直用Inhold Value(初始化保持值),这个值可以人为的设定慢慢的变大,等到系统压力差不多达到设定压力后,然后将Ihhold Bit(初始化保持位)置0,这样系统输出就会采用PID控制器的输出了。
SetPoint:设定值,Process Variable :过程变量的实际值显示
OUTPUT:PID控制器经过计算得到的输出,百分数形式。
二、参数设置:
1、调节方式参数设置
2、PID功能块的配置参数设置
注:(1)如果控制动作选用的是E=SP-PV那么PID的输出就可以直接给到执行器进行动作,如果选用的是E=PV-SP那么输出就需要变方向,(2)控制变量上下限为了防止输出过大,导致冲击,下限是为了防止停转等。
(3)设置死区时间是为了防止实际值在设定值附近的时候,PID进行微调,导致系统来回的振荡。
3、PID控制器的报警参数设置
注:(1)PV上限值报警和下限值报警时为了报出实际值的过大变化,这里的40.0实际上是4.0bar,因为在AB PLC里有一个工程量的变换,一般是10倍关系(见相关的比例定标配置)
4、相关的比例定标配置
注:(1)PV未定标(unscaled)的最大值就是现场实际的压力反馈值,这里设定是16bar,而工程量单元(Engineering)是实际值的10倍关系,所以是160,而在PID功能块里用的都是工程量,所以不管是设定值和反馈值都是放大十倍关系的。
(2)控制变量的定标就是将PID控制器的输出0—100%和数字量0—16384(一个整形数)进行对应,所以在PID控制器里,OUTPUT是百分数,而Control Variable 是整形数,就是在这里进行了转换。
(3)Tieback牵引值是为了在手动模式下,手动输入Setoutput的大小之后,那个百分数就不按照0—16384进行转换,而是按照0—4095进行转换。
5、标签参数设置
设置此PID控制器的名字和相关描述。
二、PID的公式计算
我们就拿上面的工程进行计算PID计算。
参数设置的是PI控制,P=2.5,Ti=0.08,Td=0,BIAS=0,对PV进行微分,采样周期为0.4s,实际值数据是0.01S,那么如果现在PV=2.0BAR,那么输出应该是多少,E=SP-PV=4-2=2
具体的计算要进行分时间进行计算,因为PID控制器的周期是0.4S,但是PV数据采集周期可能是0.1S,那就是E的计算会很快,例如0.1S时为2,0.2S时为1,0.3S时为0.5,0.4S时为0.2,但是输出计算只能是0.4S输出一次,那样的话,系统只会要0.4S的那个时候的误差,在0-0.4S之间变化的误差时不考虑的,也就是输出应该为。
CV=2.5[2+1/0.08*0.2(0.4-0)]=7.5%(控制器的扫描周期是0.1s,IO的刷新周期是0.01s,那么中间扫描进来的 IO都不会被使用到)并不是下面的公式:
CV=2.5[2+1/0.08*2(0.1-0)]+2.5[1+1/0.08*1(0.2-0.1)]+2.5[0.5+1/0.08*0.5(0.3-0.2)]+2.5[0.2+1/0.08*0.2(0.4-0.3)]=2.5*4.5+2.5*2.25+2.5*1.125+2.5*0.45=20%
第三篇:最少拍数字控制器的设计
离散控制系统最少拍控制
摘要
本次设计针对一阶惯性积分系统在单位速度信号输入作用下进行最少拍数字控制器的设计,验证了最少拍控制器的优点,并对最少拍算法进行理论分析,分别设计出最少拍有纹波和无纹波数字控制器,利用 MATLAB 仿真平台对设计的最少拍数字控制器进行系统仿真研究,并对有纹波和无纹波系统进行对比研究。
关键词
最少拍控制;无纹波控制器;有纹波控制器;Matlab仿真
离散控制系统最少拍控制
目录
摘要……………………………………………………………………………………1 第一章 最少拍有纹波控制器设计………………………………………………….3 1.1 设计原理……………………………………………………………………3 1.2 设计举例……………………………………………………………………5 第二章 最少拍无纹波控制器设计………………………………………………….5 2.1 设计原理……………………………………………………………………5 2.2 设计举例……………………………………………………………………6 第三章 基于Matlab的最少拍控制的实现…………………………………………7 3.1 输入单位阶跃信号…………………………………………………………7 3.2 输入单位速度信号…………………………………………………………8 3.3 输入单位加速度信号……………………………………………………9 参考文献………………………………………………………………………………10 致谢……………………………………………………………………………………11
离散控制系统最少拍控制
离散控制系统最少拍控制
最少拍系统控制设计是指系统在典型输入信号(如单位阶跃输入信号、单位速度输入信号、单位加速度输入信号等)作用下,经过最少拍(有限拍),使系统输出的稳态误差为零。最少拍控制系统也称为最少拍无差系统、最少拍随动系统,实际上是时间最优控制系统,系统的性能指标就是系统的调节时间最短或者尽可能的短。可以看出,这种系统对闭环脉冲传递函数的要求是快递性和准确性。最少拍控制系统的设计与被控对象的零极点位置有很密切的关系。
第一章 最少拍有纹波控制器设计
1.1设计原理
由系统闭环脉冲传递函数可以看出,在Φ(z)中,D(z)和G(z)总是成对出现的。只有当广义对象稳定[即G(z)在z平面单位圆上和单位圆外没有极点]且不包含纯滞后环节时,上述方法才是可行的,否则,不允许D(z)与G(z)发生零极点对消。这是因为,简单地利用D(z)的零点去对消G(z)不稳定极点,虽从理论上来说可以得到一个稳定的闭环系统,但这种稳定是建立在零极点完全对消的基础上的。当系统参数产生飘逸,或者对象辨识有误差时,这种零极点对消就不可能准确实现,从而引起闭环系统不稳定。座椅建立在零极点对消基础上的稳定系统实际上是不可能稳定工作的,没有实用价值。
当G(z)含有单位圆上或单位圆外零极点时,为保证D(z)与G(z)不会发生零极点对消,在选择Φ(z)时,必须附加一个稳定性约束条件。
设广义脉冲传递函数G(z)为
uG(z)i1vi1(1bizz1)G'(z)
(1a1i)式中,b1、b2、…、bu 为G(z)的u个不稳定零点,a1、a2、…、av 为G(z)的v个不稳定极点,G'(z)为G(z)中不包含单位圆上或单位圆外的零极点部分。当对象不包含延迟环节时,m=1;当对象包含延迟环节时,m>1。
为避免发生D()与G()的不稳定零极点发生对消,Φ(z)应该满足如下稳定性条件:
①在e(z)的零点中,必须包含G(z)在z平面单位圆外或单位圆上的所有极点,即:
ve(z)1(z)i1(1aiz1)F1(z)
F1(z)为z-1的多项式,且不包含G(z)中的不稳定极点ai。
②)在(z)的零点中,必须包含G(z)在z平面单位圆外或单位圆上的所有零点,即:
离散控制系统最少拍控制
u(z)i1(1biz1)F2(z1)
式中,F2(z)为z-1的多项式,且不包含G(z)中的不稳定零点bj。因此,满足了上述稳定性条件后
11(z)F2(z)D(z),11 G(z)(1(z)G'(z)F1(z)即D(z)不在包含G(z)的z平面单位圆上或单位圆外零极点。
1.2 设计举例
对于给定一阶惯性加积分环节,时间常数为1S,增益为10,采样周期T为1S的对象,其传递函数为:Gc(S)=10/S(S+1),针对单位阶跃信号输入,设计最少拍系统如下: 被控对象的脉冲传递函数为:
1eTsG(s)csH(s)Gc(s)G(z)=Z=Zz112s(s1)-1=10(1-z)Z
(10.717z11)1=3.68×(1z)(10.368z)
(1)由(1)式知 d=0,u=0,v=1,j=1,q=2,且j≤q,则有:
m=u+d=0 n=v-j+q=2 对单位速度输入信号,选择
vje(z)1(z)[(1aizi1u1)](1z1)F1(z)q(1z1)2
(z)zd[(1bizi11)]F2(z)f21z1f22z2
结合得 e(z)1(z)1f21z1
(1z1f22z2)2
f212,f221根据多项式相等,其系数相等的的性质,有所以,(z)2z1
z
2F2(z)1qjD(z)1(z)G(z)1(z)
G'(z)(1z)F1(z),jq
1(10.368z3.68z1)(2z1z2)
1(10.718z1)(1z)
离散控制系统最少拍控制
0.543(10.5z1)(10.368z)(1z11)
从而,E(z)R(z)e(z)11(10.718z1)(2)
Tz(1zTz)2(1z1)2z1
11
Y(z)R(z)(z)(1z)2(2z1z2)2z23z34z4...U(z)E(z)D(z)z.10.543(10.5z1)(10.368z)(1z11)(10.718z0.54z1)
0.40z
310.32z20.12z40.25z5...其控制器输出与系统输出如下图所示:
u y0.5 012345t/T 1
012345t/T
最少拍控制器设计是采用z变化进行的,仅在采样点处是闭环反馈控制,在采样点间实际上是开环运行的。因此,在采样点处的误差是零,并不能保证采样点之间的误差也为零。事实上,按前面的方法设计的最少拍控制器的输出响应在采样点间存在波纹。
如上图所示,经过2拍后,在采样时刻系统误差为零,输出跟踪上了输出的变化,但在非采样时刻,输出有波纹存在,原因在于数字控制器的输出u(kT)经过2拍后不为零或常值,而是振动收敛。波纹不仅造成误差,同时也消耗功率、浪费能量,增加机械磨损,因此,设计时应考虑加以消除。
第二章 最少拍无纹波控制器设计
2.1设计原理
①设计最少拍无纹波控制器的必要条件 很明显,为使被控对象在稳态时的输出和输入同步,要求被控对象必须具有相应的能力。例如,如输入为等速输入函数,被控对象G()的稳态输出也应为等速函数。因此就要求G()中至少有一个积分环节。再如,若输入为等加速度输入函数,则被控对象G()的稳态输出也应为等加速函数,要求G()中至少有两个积分环节。所以最少拍无纹波控制器能够实现的必要条件是被控对象G()中含有与输入信号相对应的积分环节数。
离散控制系统最少拍控制
②最少拍无纹波系统确定Ф(z)的约束条件
要使系统的稳态输出无纹波,就要求稳态时的控制信号u(k)为常值(包括0)。由Y(z)(z)R(z)G(z)U(z)可知
U(z)= (z)R(z)/G(z)要使u(kT)在稳态时无波动,就意味着U(z)与R(z)之比为的有限项多项式。而这要求(z)R(z)包含G(z)的所有零点。即
w(z)i1(1biz1)F(z1)
2.2 设计举例
仍然按照有纹波控制器的设计步骤设计 同样的,由(1)式知
被控对象不含纯滞后z-d,d=0;共包含一个零点b1 =-0.718, w=1;包含一个单位圆外或单位圆上的极点,v=1,且一个极点在单位圆上,j=1; 输入信号为单位速度,q=2,且j m=w+d=1 n=v-j+q=2 因此:F1(z)1f11z1 F2(z)f21z1f22z2 对单位速度输入信号,选择 vje(z)1(z)[(1aizi11)](1z1)F1(z),qjq 121) (1zw)(1f11z(z)zd[(1bizi11)]F2(z)(10.718z1)(f21z1f22z2) 由e(z)1(z)得 1(1z)(1f11z21)1(10.718z1)(f21z1f22z2) 3展开有 : 1(f112)z1(12f11)z2f11z31f21z1(f220.718f21)z20.718f22z 对应系数相等,得:f110.592,f211.408,f220.825 离散控制系统最少拍控制 故有 e(z)(1z1)(10.592z121) 0.825z2(z)(10.718z)(1.408z1) 最后,求得数字控制器的脉冲函数为 D(z)1(z)G(z)1(z)0.383(10.5859z(10.592z11)(10.368z11))(1z)(3) 闭环系统的输出序列为 Y(z)R(z)(z)Tz(1z311)2(10.718z1)(1.408z10.825z2) ...1.41z23z4z4 1E(z)R(z)e(z)Y(z)G(z)Tz(1z11)2(1z)(10.592z21)z10.592z2 U(z)R(z)(z)G(z)0.38z10.02z20.09z30.09z4...其控制器输出与系统输出如下图所示: u0.4y4321012345t/T012345t/T 第三章 基于Matlab的最少拍控制的实现 3.1输入单位阶跃信号 计算可得到最少拍数字控制器为 离散控制系统最少拍控制 检验误差序列: 运用Simulink 对其控制结果进行仿真,系统Simulink 仿真模型框图如下图所示: 将示波器的数据存为矩阵形式,命名为y1 在Matlab 命令窗口输入: >> plot(tout(:,1),y1(:,2:4));>> hold on,legend(' 输入','误差','输出')可得输入、输出和误差三条曲线仿真结果如下图所示: 3.2输入单位速度信号 原理同上 D(Z)(z)G(z)(1(z))0.5434(10.5(1z1)(10.3679z1)z1)(10.718z1) 检验误差: z 控制系统Simulink 框图如下图所示: E(z)(1(z))R(z)1 离散控制系统最少拍控制 输入、输出和误差三条曲线仿真结果如下图所示: 3.3输入单位加速度信号 原理同上 检验误差: 控制系统Simulink 框图如下图所示: 输入、输出和误差三条曲线仿真结果如下图所示: 离散控制系统最少拍控制 参考文献 [1] 李元春.计算机控制系统.高等教育出版社.133-145 [2] 毕效辉.自动控制理论.中国轻工业出版社.321-327 离散控制系统最少拍控制 致谢 一种是利用PLC的固定模块来实现(PLC400的现成模块);一种是自己编程实现(TDC) 自动化控制系统的核心是控制器。控制器的任务是按照一定的控制规律,产生满足工艺要求的控制信号,以输出驱动执行器,达到自动控制的目的。在传统的模拟控制系统中,控制器的控制规律或控制作用是由仪表或电子装置的硬件电路完成的,而在计算机控制系统中,除了计算机装置以外,更主要的体现在软件算法上,即数字控制器的设计上。 1、王琦,计算机控制技术 1)p19 模拟系统和数字系统的区别; 2)p166 PID工程整定方法。 3)p196安装调试步骤等。 2、李江全,计算机控制技术项目教程(见PPT电子文档) 1)P185计算机控制系统的设计原则; 2)P194 计算机控制系统的总统方案设计; 3)P205计算机控制系统的硬件设计; 4)P208 计算机控制系统的软件设计; 5)P226计算机控制系统的调试与运行; 6)P229 计算机控制系统的可靠性设计 3、严海颖 计算机控制技术 1)p96 数字滤波技术和线性化处理等 4、《计算机控制》-邬学礼 赵莹琳等 控制器的实现问题 5、ta 1.满足工艺要求 在设计计算机测控系统时,首先应满足生产过程所提出的各种要求及性能指标。因为计算机测控系统是为生产过程自动化服务的,因此设计之前必须对工艺过程有一定的熟悉和了解,系统设计人员应该和工艺人员密切结合,才能设计出符合生产工艺要求和性能指标的测控系统。设计的测控系统所达到的性能指标不应低于生产工艺要求,但片面追求过高的性能指标而忽视设计成本和实现上的可能性也是不可取的。 2.可靠性要高 系统的可靠性是指系统在规定的条件下和规定的时间内完成规定功能的能力。在现代生产和管理中,计算机测控系统起着非常重要的作用,其安全可靠性,直接影响到生产过程连续、优质、经济运行。计算机测控系统通常都是工作在比较恶劣的环境之中,各种干扰会对系统的正常工作产生影响,各种环境因素(如粉尘、潮湿、震动等)也是对系统的考验。而计算机测控系统所控制的对象往往都是比较重要的,一旦发生故障,轻则影响生产,造成产品质量不合格,带来经济损失;重则会造成重大的人身伤亡事故,产生重大的社会影响。所以,计算机测控系统的设计总是应当将系统的可靠性放在第一位,以保证生产安全、可靠和稳定地运行。 3.操作性能要好 一个好的计算机测控系统应该人机界面好、方便操作、运行,易于维护。 操作方便主要体现在操作简单、显示画面形象直观,有较强的人机对话能力,便于掌握。在考虑操作先进性的同时,设计时要真正做到以人为本,尽可能地为使用者考虑,兼顾操作人员的习惯,降低对操作人员专业知识的要求,使他们能在较短时间内熟悉和掌握操作方法,不要强求操作人员掌握计算机知识后才能操作。对于人机界面可以采用CRT、LCD或者是触摸屏,使得操作人员可以对现场的各种情况一目了然。 维护方便主要体现在易于查找故障、排除故障。为此,需要在硬件和软件设计中综合考虑。在硬件方面,宜采用标准的功能模板式结构,并能够带电插拔,便于及时查找并更换故障模板;模板上应配置工作状态指示灯和监测点,便于检修人员检查与维护。在软件方面,设置检测、诊断与恢复程序,用于故障查找和处理。 从软件角度而言,要配置查错程序和诊断程序,以便在故障发生时能用程序帮助查找故障发生的部位,从而缩短排除故障的时间;在硬件方面,从零部件的排列位置,部件设计的标准化以及能否带电插拔等诸多因素都要通盘考虑,系统设计要尽量方便用户,简化操作规程,如面板上的控制开关不能太多、太复杂等。 4.实时性要强 计算机测控系统的实时性,表现在对内部和外部事件能及时地响应,并作出相应的处理,不丢失信息,不延误操作。计算机处理的事件一般分为两类:一类是定时事件,如数据的定时采集,运算控制等,对此系统应设置时钟,保证定时处理;另一类是随机事件,如事故报警等,对此系统应设置中断,并根据故障的轻重缓急预先分配中断级别,一旦事故发生,保证优先处理紧急故障。 5.通用性要好 通用性是指所设计出的计算机测控系统能根据各种不同设备和不同控制对象的控制要求,灵活扩充、便于修改。工业控制的对象千差万别,而计算机测控系统的研制开发又需要有一定的投资和周期。一般来说,不可能为一台装置或一个生产过程研制一台专用计算机,常常是设计或选用通用性好的计算机测控装置灵活地构成系统。当设备和控制对象有所变更时,或者再设计另外一个控制系统时,通用性好的系统一般稍作更改或扩充就可适应。 计算机测控系统的通用灵活性体现在两方面:一是硬件设计方面,首先应采用标准总线结构,配置各种通用的功能模板或功能模块,并留有一定的冗余,当需要扩充时,只需增加相应功能的通道或模板就能实现。二是软件方面,应采用标准模块结构,用户使用时尽量不进行二次开发,只需按要求选择各种功能 模块,灵活地进行控制系统组态。 6.经济效益要高 在满足计算机测控系统的技术性能指标的前提下,尽可能地降低成本,保证为用户带来更大的经济效益。经济效益表现在两方面:一是系统设计的性能价格比要尽可能的高,在满足设计要求的情况下,尽量采用物美廉价的元器件;二是投入产出比要尽可能的低,应该从提高生产的产品质量与产量、降低能耗、消除污染、改善劳动条件等方面进行综合评估。另外,要有市场竞争意识,尽量缩短开发设计周期,以降低整个系统的开发费用,使新产品尽快进入市场。 7.开发周期要短 如果计算机测控系统的开发时间太长,会使用户无法尽快地收回投资,影响了经济效益的提高;而且,由于计算机技术发展非常快,只要几年的时间原有的技术就会变得过时。设计与开发时间过长,等于缩短了系统的使用寿命。因此,在设计时,如何尽可能地使用成熟的技术,对于关键的元部件或软件,不是万不得已就不要自行开发。 计算机测控系统的设计与实施步骤 1.可行性研究阶段 开发者要根据被控对象的具体情况,按照企业的经济能力、未来系统运行后可能产生的经济效益、企业的管理要求、人员的素质、系统运行的成本等多种要素进行分析。可行性分析的结果最终是要确定:使用计算机控制技术能否给企业带来一定经济效益和社会效益。这里要指出的是,不顾企业的经济能力和技术水平而盲目地采用最先进的设备是不可取的。 2.初步设计阶段 也可以称为总体设计。系统的总体设计是进入实质性设计阶段的第一步,也是最重要和最为关键的一步。总体方案的好坏会直接影响整个计算机测控系统的成本、性能、设计和开发周期等。在这个阶段,首先要进行比较深入的工艺调研,对被控对象的工艺流程有一个基本的了解,包括要测控的工艺参数的大致数目和测控要求、测控的地理范围的大小、操作的基本要求等。然后初步确定未来测控系统要完成的任务,写出设计任务说明书,提出系统的控制方案,画出系统组成的原理框图,作为进一步设计的基本依据。 3.详细设计阶段 详细设计是将总体设计具体化。首先要进行详尽的工艺调研,然后选择相应的传感器、变送器、执行器、I/O通道装置以及进行计算机系统的硬件和软件的设计。对于不同类型的设计任务,则要完成不同类型的工作。如果是小型的计算机测控系统,硬件和软件都是自己设计和开发;此时,硬件的设计包括电气原理图的绘制、元器件的选择、印刷线路板的绘制与制作;软件的设计则包括工艺流程图的绘制、程序流程图的绘制、将一个个模块编写成对应的程序等。 4.系统实施阶段 要完成各个元器件的制作、购买、安装;进行软件的安装和组态以及各个子系统之间的连接等工作。 5.系统的调试(测试)阶段 通过整机的调试,发现问题,及时修改,例如检查各个元部件安装是否正确,并对其特性进行检查或测试;检验系统的抗干扰能力等。调试成功后,还要进行考机运行,其目的是通过连续不停机的运行来暴露问题和解决问题。 6.系统运行阶段 该阶段占据了系统生命周期的大部分时间,系统的价值也是在这一阶段中得到体现。在这一阶段应该有高素质的使用人员,并且严格按照章程进行操作,尽可能地减少故障的发生。 计算机测控系统的总体方案设计 确定计算机测控系统总体方案是进行系统设计的关键而重要的一步。总体方案的好坏,直接影响到整个测控系统的成本、性能、实施细则和开发周期等。总体方案的设计主要是根据被控对象的工艺要求确定。为了设计出一个切实可行的总体方案与实施方案,设计者必须深入了解生产过程,分析工艺流程及工作环境,熟悉工艺要求,确定系统的测控目标与任务。尽管被控对象多种多样,工艺要求各不相同,在总体方案设计中还是有一定共性。 1.工艺调研 1)调研的任务 2)形成调研报告和初步方案 3)形成总体设计技术报告 2.硬件总体方案设计 1)确定系统的结构和类型 2)确定系统的构成方式 3)现场设备选择 4)其他方面的考虑 3.软件总体方案设计 软件总体方案设计的内容主要是确定软件平台、软件结构,任务分解,建立系统的数学模型、控制策略和控制算法等。在软件设计也应采用结构化、模块化、通用化的设计方法,自上而下或自下而上地画出软件结构方框图,逐级细化,直到能清楚地表达出控制系统所要解决的问题为止。 在确定系统总体方案时,对系统的软件、硬件功能的划分要做统一的综合考虑,因为一些控制功能既能由硬件实现,也可用软件实现,如计数、逻辑控制等。 采用何种方式比较合适,应根据实时性要求及整个系统的性能价格比综合比较后确定。 5.系统总体方案 系统总体方案是硬件总体方案和软件总体方案的组合体。 系统的总体方案反映了整个系统的综合情况,要从正确性、可行性、先进性、可用性和经济性等角度来评价系统的总体方案。 作为总体方案的一部分,设计者还应提供对各子系统功能检测的一些测试依据或标准。对于较大的系统,还要编制专门的测试规范。 东南大学 《数字系统课程设计》 设计报告 项目名称: 交通灯控制器 姓 名: 学 号: 专 业: 实 验 室: 电工电子实验中心 组 别: 无 同组人员: 无 设计时间: 2016 年月 26 日 —— 2016 年 9 月 20日 评定成绩: 审阅教师: 目录 一.设计方案及论证……………………………………………… 3 二.模块设计……………………………………………………… 5 三.总体设计与仿真……………………………………………… 10 四.总结…………………………………………………………… 12 一.设计方案及论证 1.设计使用环境 本交通灯控制系统设计利用Verilog HDL语言进行设计编程,利用Cyclone EP1C6Q240C8芯片和一些外围器件组成硬件电路,利用Quartus II软件将编写好的程序进行编译和仿真,并将调试完成的程序下载到Cyclone EP1C6Q240C8芯片上,通过观测电路板上的红绿信号灯以及数码管显示来分析系统的性能。 2.设计任务分析 主干道与乡村公路十字交叉路口在现代化的农村星罗棋布,为确保车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。红灯禁止通行;绿灯允许通行;黄灯亮则给行驶中的车辆有时间行驶到禁行线之外。主干道和乡村公路都安装了传感器,检测车辆通行情况,用于主干道的优先权控制。 设计要求: 1)当乡村公路无车时,始终保持乡村公路红灯亮,主干道绿灯亮。2)当乡村公路有车时,而主干道通车时间已经超过它的最短通车时间时,禁止主干道通行,让乡村公路通行。主干道最短通车时间为25s。 3)当乡村公路和主干道都有车时,按主干道通车25s,乡村公路通车16s交替进行。4)不论主干道情况如何,乡村公路通车最长时间为16s。 5)在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s时间的黄灯作为过渡。6)用开关代替传感器作为检测车辆是否到来的信号。用红、绿、黄三种颜色的发光二极管作交通灯。7)数码管倒计时显示 3.测量控制原理 1)通过乒乓开关来控制FPGA输入信号的电平,从而控制交通灯工作。 2)利用FPGA输出的电平信号去驱动静态数码管及三色小灯来模拟交通灯。 4.顶层设计方案框图及说明 1)交通灯控制器框图 C表示乡村道路是否有车到来,1表示有,0表示无;SET用来控制系统的开始及停止;RST是复位信号,高电平有效,当RST为1时,恢复到初始设置;CLK是外加时钟信号;MR、MY、MG分别表示主干道的红灯、黄灯和绿灯;CR、CY、CG分别表示乡村道路的红灯、黄灯和绿灯,1表示亮,0表示灭。 2)流程图 MGCR表示主干道绿灯,乡村道路红灯;MYCR表示主干道黄灯,乡村道路红灯;MRCG表示主干道红灯,乡村道路绿灯;MRCY表示主干道红灯,乡村道路黄灯;T0=1表示主干道最短通车时间到,T1=1表示5秒黄灯时间到,T2=1表示乡村道路最长通车时间到。二.模块设计 1.模块功能及端口说明 1)分频模块 输入端为clk_in,即实验箱自带脉冲输入信号,输出端为clk,即想得到的频率。2)主控制模块 输入端为CLK、RST、C。其中c为乡村道路开关,为1时表示乡村道路有车;rst为初始化开关,为1时表示初始化为主干道绿灯,乡村道路红灯的状态。 输出端为MG、MY、MR、CG、CY、CR分别表示主干道和乡村道路的红黄绿灯,与LED灯相连;mh、ml、ch、cl分别表示主干道和乡村道路倒计时显示的高低位,与数码管相连。 3)数码管显示模块 输入端为clk和count,输出端为LED。 2.主要功能的设计方法 1)分频模块 试验箱可选晶振有2M和50M,选择使用2M后,设置分频系数为2000000,每计数到1000000,则输出取反,最终可得到1HZ的时钟信号。 2)主控制模块 设置两个外部控制条件:初始化(RST);乡村干道是否有车(C); 设置一个内部计数变量:NUM,通过相关运算取余取整得到数码管显示高低位; 通过有限状态机实现四个状态的循环切换。 3.Verilog设计程序及说明 1)分频模块 module fre(clk_in,clk);input clk_in;output clk;reg clk;reg [31:0]k;always @(negedge clk_in)begin if(k>=1000000)//1000000分频 begin clk<=~clk;//取反 k<=0;end else k<=k+1;//计数 end endmodule 2)主控制模块 module traffic(CLK,RST,C,MG,MY,MR,CG,CY,CR,mh,ml,ch,cl);input CLK,RST,C;output [3:0]mh,ml,ch,cl;output MG,MY,MR,CG,CY,CR;reg [3:0] mh,ml,ch,cl;reg MG,MY,MR,CG,CY,CR;reg [31:0] COUNT;reg [5:0]state;parameter s1=6'b100001,s2=6'b010001,s3=6'b001100,s4=6'b001010;always @(posedge CLK)if(RST)//初始化 begin state = s1;//最初状态,主通行,乡村不通行 MG=1;MY=0;MR=0;CG=0;CY=0;CR=1;COUNT = 0; mh=2;//主干道绿灯25s,乡村道路红灯5s ml=5; ch=3; cl=0; end else case(state)s1: begin COUNT = COUNT+1; if((COUNT>=25)&&(C==1))//25s已计完且乡村道路来车,跳转到s2状态 begin state = s2;//主干道黄灯,乡村道路红灯 MG=0;MY=1;MR=0;CG=0;CY=0;CR=1;COUNT = 0;mh=0;ml=5;ch=0;cl=5;end else if(COUNT<25)//25s没有计完,保持s1状态 begin state = s1; MG=1;MY=0;MR=0;CG=0;CY=0;CR=1; mh=(25-COUNT)/10;//取整取余换算,倒计时显示 ml=(25-COUNT)%10;ch=(30-COUNT)/10;cl=(30-COUNT)%10;end else if(COUNT >= 25 && C == 0)//25s计完,乡村道路仍然没有车 begin state = s1;//保持s1 MG=1;MY=0;MR=0;CG=0;CY=0;CR=1;mh=0;//数码管显示0 ml=0; ch=0; cl=0; end end s2: begin COUNT = COUNT+1; if(COUNT==5)//5s黄灯已计完 begin state = s3;//主干道红灯,乡村道路绿灯 MG=0;MY=0;MR=1;CG=1;CY=0;CR=0;COUNT = 0; mh=2;//主干道21s红灯,乡村道路16s绿灯 ml=1; ch=1; cl=6; end else begin state = s2;//5s黄灯未计完时,保持s2状态 MG=0;MY=1;MR=0;CG=0;CY=0;CR=1; mh=0; ml=5-COUNT; ch=0; cl=5-COUNT; end end s3: begin COUNT = COUNT+1; if(((COUNT>=16)&&(C==1))||(C==0))//乡村道路16s通行时间已结束,不管有无来车,均跳转s4状态 begin state = s4;//主干道红灯,乡村道路黄灯 MG=0;MY=0;MR=1;CG=0;CY=1;CR=0; COUNT = 0; mh=0; ml=5; ch=0; cl=5; end else begin state = s3;//16s未结束,仍保持s3状态 MG=0;MY=0;MR=1;CG=1;CY=0;CR=0; mh=(21-COUNT)/10; ml=(21-COUNT)%10; ch=(16-COUNT)/10; cl=(16-COUNT)%10; end end s4: begin COUNT = COUNT+1;if(COUNT==5)//5s黄灯时间结束 begin state = s1;//回到s1状态 MG=1;MY=0;MR=0;CG=0;CY=0;CR=1; COUNT = 0; mh=2; ml=5; ch=3; cl=0; end else begin state = s4;//否则保持s4状态 MG=0;MY=0;MR=1;CG=0;CY=1;CR=0; mh=0; ml=5-COUNT; ch=0; cl=5-COUNT; end end default: begin state = s1; MG=1;MY=0;MR=0;CG=0;CY=0;CR=1; COUNT = 0; mh=0; ml=5-COUNT; ch=0; cl=5-COUNT; end endcase endmodule 3)数码管显示模块 module led(clk,count,LED);input clk;input [3:0]count;output [7:0]LED;reg [7:0]LED;always @(posedge clk)begin case(count) 4'b0000:LED=8'b00000011; 4'b0001:LED=8'b10011111; 4'b0010:LED=8'b00100101; 4'b0011:LED=8'b00001101; 4'b0100:LED=8'b10011001; 4'b0101:LED=8'b01001001; 4'b0110:LED=8'b01000001; 4'b0111:LED=8'b00011111; 4'b1000:LED=8'b00000001; 4'b1001:LED=8'b00001001; default:LED=8'b00000001;endcase end endmodule 4.仿真图及说明 (1)分频模块 由于实际应用中分频较大,仿真时为方便观察,将分频频数设置为20。输入为clk_in,周期为10ns;输出为clk,其周期为200ns,与理论值相符。(2)主控制模块 与总体仿真相同,在此不再赘述。 三.总体设计与仿真 1.顶层设计图及说明 fre为分频模块,traffic为主控制模块,led为数码管显示模块。输入端有clk_in、c和rst,输出端有MG、MY、MR、CG、CY、CR和mh、ml、ch、cl。 2.仿真图及说明 输入有:C、CLK和RST 输出有:CG、CR、CY、MG、MR、MY、ch、cl、mh和ml C为乡村道路是否来车,1表示来车,0表示无车;CLK为时钟信号;RST为初始化功能,1有效;CG、CR、CY、MG、MR、MY分别表示乡村道路绿灯、红灯、黄灯,主干道绿灯、红灯、黄灯;ch、cl、mh、ml分别表示乡村道路和主干道红绿灯倒数显示高低位。 3.实验结果 (1)乡村道路无车时 乡村道路无车时,主干道25s倒数,乡村道路30s倒数结束后,保持0,且主干道绿灯亮,乡村道路红灯亮。(2)乡村道路有车时 若乡村道路一直有车,主干道25s(即S1状态)倒计时结束后,主干道切换黄灯,乡村道路保持红灯(即S2状态);5s黄灯倒计时结束后,主干道切换红灯,时间21s,乡村道路切换绿灯,时间16s(即S3状态);乡村道路16s绿灯结束后,切换黄灯,主干道保持红灯(即S4状态),5s黄灯结束后,回到S1状态,即主干道25s绿灯,乡村道路30s红灯,若一直有车,则循环进行。 四.总结 1.实验结果分析 (1)输入与输出 两个开关:一个初始化控制开关,一个乡村道路开关。初始化开关打开后复位,交通灯开始工作,乡村道路打开表示乡村公路上有车。 输出:四个数码管,两个显示主干道交通灯时间,两个显示乡村道路时间;六个led灯,两红两黄两绿分别表示主干道和乡村公路的红黄绿灯。(2)运行过程 1)初始状态(S1) 左侧为主干道倒计时,右侧为乡村道路倒计时;主干道绿灯亮,乡村道路红灯亮。K1为初始化按键,K2为乡村道路有无来车。 2)主干道25s绿灯结束后切换黄灯,乡村道路红灯(S2) 3)主干道5s黄灯结束,切换红灯21s,乡村道路切换绿灯16s(S3) 4)乡村道路16s绿灯结束,切换黄灯,主干道红灯(S4) 5s黄灯倒计时结束,回到S1状态,若一直有车,则循环S1-S2-S3-S4-S1。 2.问题解决方法 问题1:数码管显示与红绿灯切换不同时。 解决方法:红绿灯输出后面增加一延时模块,延时一个CLK,使其与数码管显示同步。问题2:理解错题意,在S3状态(即主干道红灯,乡村道路绿灯)时,此时若乡村道 路无车通过,应立即切换为S4状态(即主干道红灯,乡村道路黄灯),而不是等当前计数结束再切换。 解决方法:将代码修改为if(((COUNT>=16)&&(C==1))||(C==0)),修改后符合要求,解决了问题。 3.心得体会 通过此次系统设计,我对verilog HDL语言有了初步了解,并对利用quartus来进行系统设计有了更加深入的理解,操作也更加熟练。在设计过程中应该先设计好总体架构,再进行模块的具体设计,通过分析每个模块要实现的功能来写代码,并注意编写注释,便于以后的理解修改。编译时要注意设置顶层文件,先进行仿真观察结果是否正确,对代码进行修改,仿真结果正确后再下载到硬件,测试系统功能。 参考书目: [1] 夏宇闻,《Verilog数字系统设计教程》,北京,北京航空航天大学出版社,2013年 [2] 王金明,《数字系统设计与Verilog HDL》,北京,电子工业出版社,2011年第四篇:数字控制器工程实现
第五篇:数字系统课程设计交通灯控制器