二阶对象控制系统pc机.docx
《二阶对象控制系统pc机.docx》由会员分享,可在线阅读,更多相关《二阶对象控制系统pc机.docx(42页珍藏版)》请在冰点文库上搜索。
二阶对象控制系统pc机
摘要:
计算机控制系统就是利用计算机来实现生产过程自动控制的系统。
通信与网络技术、微电子技术的高速发展,给计算机控制技术带来了巨大的变革。
人们利用这种技术可以完成常规控制技术无法完成的任务,达到常规控制技术无法达到的性能指标。
本次二阶对象控制系统就是采用通过用户在键盘上输入PID参数,从而选取合适的主要参数Kp,Ki,Kd和采用周期T,使整个系统具有满意的动态特征,并满足稳态误差要求。
关键词:
二阶对象、控制、PID参数、A/D、D/A
目录
1概述…………………………………………………………………………3
2课程设计任务及解决方案…………………………………………3
2.1课程设计任务……………………………………………………3
2.2系统设计解决方案………………………………………………4
3系统硬件的设计………………………………………………………4
3.1系统硬件设计方案………………………………………………4
3.2D/A转换电路………………………………………………………5
3.3A/D转换电路………………………………………………………6
4系统软件的设计…………………………………………………………7
4.1程序设计思想及流程……………………………………………7
4.2A/D转化子程序……………………………………………………9
4.3键盘读入子程序…………………………………………………10
4.4屏幕显示子程序…………………………………………………11
5任务分工及总结………………………………………………………12
5.1任务分工……………………………………………………………12
5.2总结…………………………………………………………………12
参考文献………………………………………………………………………14
附录………………………………………………………………………………15
附录一系统硬件连接图………………………………………………15
附录二程序清单………………………………………………………16
二阶对象控制系统设计(采用PC机)
1概述
通信与网络技术、微电子技术的高速发展,给计算机控制技术带来了巨大的变革。
人们利用这种技术可以完成常规控制技术无法完成的任务,达到常规控制技术无法达到的性能指标。
自动控制技术在许多领域里获得了广泛的应用。
所谓自动控制,就是在没有人直接参与的情况下,通过控制器使生产过程自动地按照预定的规律运行。
近年来,计算机已成为自动控制技术不可分割的重要组成部分,并为自动控制技术的发展和应用开辟了广阔的新天地。
本次课程设计是采用PC机设计二阶系统的控制器,通过用户在键盘上输入PID参数,从而将二阶系统的参数控制在一定范围之内。
2课程设计任务及解决方案
2.1课程设计任务
1、采用运算放大器搭建如图2-1所示的二阶系统,观察并记录该二阶系统的阶跃响应曲线,判断二阶系统的稳定性。
2、运用PC机设计控制器,使如图所示的二阶不稳定对象的稳态精度≤5%,调节时间≤60s,超调量≤20%。
3、设计人机接口,能用键盘修改控制器参数,如P、I、D参数,并能通过LED或CRT显示器显示稳态值、稳态误差、超调量、调节时间。
图2-1二阶对象控制系统
2.2系统设计解决方案
本设计采用的主要硬件有PC机,DAC0832,AD574和标准CRT显示器。
其硬件电路的基本环节由PC机,键盘输入电路,A/D转换电路,D/A转换电路和CRT显示电路组成。
硬件原理方框图如图2-2所示。
图2-2硬件原理方框图
3系统硬件的设计
3.1系统硬件设计方案
本设计通过AD574采样系统输出信号反馈给PC机,与设定值进行比较。
其偏差为PID控制的参数。
送出给系统的时候要转换为模拟量,所以用DAC0832芯片。
当外界干扰脉冲到来的时候,系统G(S)被影响,输出改变。
与设定值有偏差,驱动PID程序对系统进行调节。
系统方框图如图3-1所示。
与PC机连接的芯片有,输入:
AD574输入键盘
输出:
DAC0832输出CRT显示器
3.2D/A转换电路
D/A转换器是一种将数字信号转换成模拟信号的器件,本设计采用的是DAC0832芯片,它是一种常用的电流输出型的8位数模转换器。
在电路中使用了CMOS电流开关和控制逻辑,从而达到较低的功耗和较低的输出漏电流误差。
采用特殊的电路结构可与TTL逻辑输入电平相兼容。
DAC0832其主要功能特性如下:
分辨率:
8位;
电流建立时间:
1
;
线性度(在整个温度范围内):
8位;
单一电源:
+5~15V(直流)
DAC0832的引脚如图3-2所示,各引脚功能介绍如下:
(1)
:
片选信号(低电平有效)。
(2)
;输入锁存允信号(高电平有效)。
(3)
:
写1(低电平有效)。
当
为低电平时,用来将输入数据传送到输入锁存器;当
为高电平时,输入锁存器中的数字被锁存;当
为高电平,又必须是
和
同时为低时,才能将锁存器中的数据进行更新。
以上三格外控制信号构成第一级输入锁存。
(4)
:
写2(低电平有效)。
该信号与
配合,可使锁存器中的数据传送到DAC寄存器中进行转换。
(5)
:
传送控制信号(低电平有效)。
将与
配合使用,构成第二级锁存。
(6)D7~D0:
数字输入量。
(7)
和
:
DAC电流输出1和2。
(8)
:
参考电压输入,要求外部接一个精密的电源。
(9)
:
数字电路供电电压,一般为+5~+15V。
(10)
:
反馈电阻
(11)AGND和DGND:
模拟地和数字地。
本设计利用DAC0832的扩展接口,DAC0832有3种工作方式,分别是直通方式、单缓冲方式和双缓冲方式,本设计采用的是双缓冲方式,PC机对DAC0832的寄存器进行控制,先把数据写入寄存器,再将寄存器内容写入DAC寄存器并启动转换。
3.3A/D转换电路
设计中采用的模数转换器是AD574A型芯片,A/D转换电路将输入的模拟电压(或电流)转换成数字量。
AD574A是单片高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换显片,具有外接元件少,功耗低,精度高等特点,并且具有自动校零和自动极性转换功能,只需外接少量的阻容件即可构成一个完整的A/D转换器。
AD574A的主要特点如下:
图3-3AD574A引脚图
分辨率:
12位。
非线性误差:
小于±1/2LBS或±1LBS。
转换速率:
25
。
模拟电压输入范围:
0—10V和0—20V,0—±5V和0—±10V两档四种。
电源电压:
±15V和5V。
数据输出格式:
12位/8位。
芯片工作模式:
全速工作模式和单一工作模式。
AD574A的引脚如图3-3所示,各引脚功能如下:
(1)V+:
数字逻辑部分电源+5V。
(2)
:
数据模式选择端,通过此引脚可选择数据纵线是12位或8位输出。
(3)
:
片选信号端,低电平有效。
(4)A0:
字节选择控制线。
与
端用来控制启动转换的方式和数据输出格式。
须注意的是,
端TTL电平不能直接与+5V或0V连接。
(5)
:
读数据转换控制信号。
(6)CE:
启动转换信号,高电平有效。
可作为A/D转换启动或读数据的信号。
(7)
和
:
模拟部分供电的正电源和负电源,为±12V或±15V。
(8)REFOUT:
10V内部参考电压输出端。
(9)REFIN:
基准电源电压输入端。
(10)BIPOFF:
补偿调整。
接至正负可调的分压网络,以调整ADC输出的零点。
(11)DGND和AGND:
数字地和模拟地。
(12)DB0~DB11:
数字量输出。
(13)STS:
工作状态指示信号端,当STS=1时,表示转换器正处于转换状态,当STS=0时,声明A/D转换结束,通过此信号可以判别A/D转换器的工作状态,作为单片机的中断或查询信号之用。
(14)10
和20
:
模拟量10V和20V量程的输入端。
AD574和PC机系统的基本组成主要有PC机、A/D转换器和计算机接口。
其中PC机是核心部分,主机通过接口启动PC机工作,以使CPU资源向其它请求开放。
PC机发出控制信号以启动A/D转换器进行采样。
4系统软件的设计
4.1程序设计思想及流程
在设计中,程序分为主程序,A/D转换模块,D/A转换模块,键盘输入模块和屏幕显示模块五个模块组成。
主程序流程图如图4-1所示。
下面分别将主程序,A/D转化子程序,键盘读入子程序,屏幕显示子程序的流程图做简单说明。
图4-1主程序流程图
先对程序进行初始化,输入R-SET值,在显示器上画出坐标和表头,对KID参数进行设置,运行程序,计算机将键盘输入值转化为二进制的形式,在进行计算,读20次AD转化结果,,然后对其滤波,再将采样值转化为电压形式,然后将其显示在显示器上,再调用PID记法程序,将结果输出.
4.2A/D转化子程序
A/D574是将模拟信号转化为数字信号的芯片,在启动前需选好通道,然后通过R/C管脚来控制A/D的工作状态,并且通过对STS的查询来判断转化是否完成.
图4-2A/D转化程序流程图
4.3键盘读入子程序
由键盘上读入的键值为ASCII值,在进行运算时需二进制的形式,并且在每次输入新的数值时,需要将前一次的输入值的二进制数乘上一个权,在把她与新的数值的二进制数求和.
图4-3键盘读入程序流程图
4.4屏幕显示子程序
在屏幕上以描点的形式画出波形图,将每次采样值分成25mV一个小格,当采样值为-5.0时,Y轴坐标为465,当采样值增大时,采样值的Y坐标为465减去其格数,每采样一次X坐标值自动增1,直到达到C_P=640时,把C_P清零从头开始描点
图4-4屏幕显示程序流程图
5任务分工及总结
5.1任务分工
任务
完成人员
硬件焊接
姚远,王宇
主程序
王颖
A/D、D/A转换程序
王攀,王颖
键盘读入程序、PID算法
王宇
屏幕显示程序
王攀
报告书写
王宇,姚远
5.2总结
王颖:
通过这次课程设计,我学到了很多。
我深刻的了解了计算机控制在现代工业控制中的作用,和优势。
通过计算机我们可以对不稳定的系统进行控制。
完成更复杂的控制,来满足现代工业需要。
这次试验使我熟悉了AD574芯片的使用方法和性能。
AD574是模数装换芯片,将模拟信号装换成数字信号,是实现数字控制的基础。
它将系统输出模拟信号转换成数字信号,将数字信号送给计算机分析和处理。
利用计算机的强大的计算功能,来势完成数字PID算法。
对系统进行调解。
计算机再将计算结果传给DAC0832数模转换芯片。
再将数据字信号转换为模拟信号。
送给二阶被控对象,对其进行调节。
计算机要将读入的数据显示显示器上。
计算机要讲读入的数据加以处理才能正确显示在显示器上。
先将读入的数字信号进行滤波处理,然后再将它们转化为电压的形式。
再将它们转化为ASCII送显示。
计算机根据数据在显示器上进行描点画图。
系统的给定值、KP、KI和KD的值由键盘输入。
对他们要进行二进制转换,才能进行数据处理。
正个控制构成主要是数据类型的转换。
和PID控制算法的设计。
数字PID还设计到采样周期设计。
采样周期应以越小越好。
数字PID的控制能力更强的,能够满足复杂工业控制。
姚远:
本次设计是基于二阶对象控制系统设计的要求,让我们在跨入工作前就提前去实践完成一些设计项目,很大程度上提高了我们的动手能力。
此次课程设计使我明白了课程设计是一项高强度、多配合的团队工作。
使我们懂得如何在工作学习中与人交流、配合,使工作效率较高,工作效果较好某个人的离群都可能导致整项工作的失败。
课程设计中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的失误会导致整个设计的失败。
同时使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论。
总之,此次课程设计充分锻炼了我们分析问题和解决问题的能力,使我们的知识不仅仅停留在理论阶段,为我们的计算机控制相关知识的学习和动手能力的提升提供了很好的锻炼机会。
这次设计我负责的是设计的报告书写部分,这一段相比整个任务来说相对比较简单,原以为任务会轻松完成,不过还是问题不断。
其实这次课程设计,给我最大的启示就是要在这么短的时间里完成这个复杂的程序靠一个人的力量是很难完成的,这需要几个人的通力合作。
而此次计控课程设计算得上大学四年最后一次真正意义上的需要团队合作才能完成的任务。
王宇:
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
通过本次课程设计,使我对我们所学习的计算机硬件基础,计算机控制系统,汇编语言编程有了更深刻的认识和掌握。
并把所学的理论知识运用到实际系统的设计和解决问题中。
我们小组的题目是:
二阶对象控制系统的设计(PC机实现)。
我负责了硬件的焊接,报告的书写和键盘读入,PID算法部分程序。
硬件的焊接和报告的书写虽然已经做过很多次但还是需要认认真真去完成才能保证不出差错。
另外键盘读入上关于二进制和ASCII码的转换需要注意,而PID算法则是在熟悉了二阶对象后,应用所学控制知识来解决的。
另外通过这次设计我再次体会到了团队合作的力量。
把整项工作具体化,大家分工合作,极大的提高了工作效率。
总之,此次课程设计充分锻炼了我们分析问题和解决问题的能力,使我们的知识不仅仅停留在理论阶段,让理论在实践中得到升华,为我们的计算机控制相关知识的学习和动手能力的提升提供了很好的锻炼机会。
王攀:
本次课程设计,我主要负责屏幕显示部分子程序的编写。
当接到这个分工时,我确实有点为难,因为以前并没有系统学习屏幕显示这部分的程序,所以这次只有自己查阅相关程序,来从头开始学习。
屏幕显示程序主要包括字符的显示和和图形曲线的显示,其显示的原理基本相同,在字符和图形显示方式下,屏幕都被分成一系列的点阵。
当要显示字符时,每个字符的显示以点阵为单位,显示信息以ASCCⅡ的形式存放,通过以系列的硬件自动处理后给显示器显示;图形显示方式提供了多种分辨率,每一个小方格称为一个像素点,把不同的像素值写入到这些像素点,像素点就有了不同的颜色,则屏幕上可以显示相应的图形。
通过为期一周的计算机控制课程设计,我在课外扩充了很多实践知识,主要有以下收获:
通过这次课程设计使我对课本上学到的知识有了更深的认识,并在对理论知识的应用过程中,增强了自己的动手设计能力,补充和完善了知识结构,更激发了我对计算机控制学习并应用的兴趣;有了文献检索的能力,特别是如何利用Intel网及学校的数字图书馆资源检索需要的文献资料,知道了怎样能快速的找到自己需要的资料,并充分利用网络来扩充自己的知识;根据所得资料和课本所学知识,学会了如何分析问题,发现问题和解决问题的能力,将网络资源真正转化为自己的知识;在设计过程中也遇到了一些自己解决不了的问题,通过和小组其他组员的沟通与交流找到了解决方案,加强了与同学合作与交流的能力,同时也逐步树立了遇到困难战胜困难的信心。
参考文献
[1]黄勤等.计算机硬件技术基础实验教程.重庆大学出版社,2004年
[2]李群芳等.单片微型计算机机与接口技术.电子工业出版社,2005年
[3]王建华等.计算机控制技术.高等教育出版社,2002年
[4]范立南等.单片微型计算机控制系统设计.人民邮电出版社,2003年
[5]单片机实验指导书.西安唐都科技仪器公司.2006年
附录
附录1系统硬件连接图
附录二程序清单
.486
DATASEGMENT'DATA'
H_PORTEQU200H;读取数据高8位口地址
L_PORTEQU201H;读取数据低4位口地址
CH_PORTEQU205H;通道选择端口地址
IN_PORTEQU202H;输入寄存器地址
DAC_PORTEQU204H;DAC寄存器地址
X_PDW10
R_SETDW1000
K_SETDW28
O_SETDW40960
DATAADW8DUP(0)
BUFFDW9,8,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,8,9
MES1DB'"B"--BEGIN,"E"--EXIT,"S"--SET',0AH,0DH,'$'
DISPDB'CH0R_SET:
V',0AH,0DH,'$'
DISP1DB'CH0000000V',0DH,'$'
MES_KPDB'PLEASESETVALUEKp=','$'
MES_KIDB'PLEASESETVALUEKI=','$'
KONGDB'',0DH,'$'
CHAODB'',0DH,'$'
CBUFFDW4DUP(0)
MESS0DB'+5.000V'
MESS1DB'-5.000V'
CH_NUMDB0
OUTDADB0
FLAG1DB0
FLAG2DB0
KEYBUFDB6
COUNTDB?
KEYNUMDB6DUP(?
)
MES2DB'R_SET(mV)=','$'
EKDW0
EK1DW1
KPDW3
KIDW1
KPPDW0
KIIDW0
OUTDA1DB0
M1DW1
PMAXDW0
PMAX1DW0
DATAENDS
STCKSEGMENTPARASTACK'STACK'
DB256DUP(0)
STCKENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA,SS:
STCK
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
LEADX,MES2;显示输入提示信息
MOVAH,09H
INT21H
LEADX,KEYBUF
MOVAH,0AH
INT21H;从键盘输入系统设定值
MOVBX,0;将从键盘接收的数据转换成二进制数
MOVDI,0
LLP:
MOVAL,KEYNUM[DI]
ANDAL,0FH
MOVAH,0
XCHGAX,BX
MOVCX,10
MULCX
ADDBX,AX
INCDI
MOVAX,DI
CMPAL,COUNT
JZLLP0
JMPLLP
LLP0:
MOVR_SET,BX;存放设定值
MOVDATAA[4],BX
MOVCH_NUM,2;设定值送显示缓存区
CALLDISPH1
MOVCH_NUM,0
CALLTT;在屏幕上画坐标
LEADX,MES1;送操作提示符屏幕上显示
MOVAH,09H
INT21H
LEADX,disp
MOVAH,09H
INT21H
AJ:
MOVAH,01H
INT16H;查询是否有键按下
JZAJ;没有键按下,继续循环
MOVAH,0
INT16H;有键按下,读键值
CMPAL,'B'
JZPL;开始键按下,转置标志程序
JMPAJ;无操作键按下,转循环程序
PL:
LEADX,CHAO
MOVAH,09H
INT21H
LEADX,DISP1;送显示缓存区数据屏幕上显示
MOVAH,09H
INT21H
LP:
MOVDI,0
MOVCX,20
LP00:
CALLSAMP0;读20次A/D转换结果
LOOPLP00
CALLSAMP1;20个数据由大到小排列
CALLSAMP2;求中间16个数据平均值
CALLBTOD;标尺变换,将采集样变换为电压毫伏值
CMPFLAG2,0
JZNEXT
MOVFLAG2,0
PUSHAX
PUSHBX
PUSHCX
MOVBX,R_SET
MOVCX,BX
MOVAX,PMAX
SUBAX,BX;PMAX减去预设值
JSNN
DIVCX
MOVBH,4
MOVBL,10
LEADI,CBUFF
WW:
MOV[DI],AX
INCDI
INCDI
MOVCX,R_SET
MOVAX,DX
MULBL
DIVCX
DECBH
JZNN
JMPWW
NN:
POPCX
POPBX
POPAX
CALLBFB;转换超调量的百分比
LEADX,CHAO
MOVAH,09H
INT21H
NEXT:
CALLSDATA;传送到内存
CALLDISPH;送显示预处理,将电压值转换成ASCII码
CALLDISPL;送屏幕显示
;CMPFLAG1,0
;JZLP03
CALLCT;调控制算法程序
CALLDAOUT;送数到D/A转换
CMPFLAG1,0
JZLP03
CALLPOINT;将当前采集样在屏幕描点
LP03:
MOVECX,300000H
LP02:
LOOPDLP02
MOVAH,01H
INT16H;查询是否有键按下
JZLP;没有键按下,继续循环
MOVAH,0
INT16H;有键按下,读键值
CMPAL,'E'
JZLPQ;退出键按下,转退出程序
CMPAL,'B'
JZLPB;开始键按下,转置标志程序
CMPAL,'P'
JZLPP;停止键按下,转清标志程序
CMPAL,'S'
JZLPS;设置键按下转设置子程序
JMPLP;无操作键按下,转循环程序
LPQ:
MOVOUTDA,60H
CALLDAOUT
RET
LPS:
LEADX,MES_KP
MOVAH,09H
INT21H
LEADX,KEYBUF
MOVAH,0AH
INT21H
CALLZHUANG
MOVKP,BX
LEADX,KONG
MOVAH,09H
INT21H
LEADX,MES_KI
MOVAH,09H
INT21H
LEADX,KEYBUF
MOVAH,0AH
INT21H
CALLZHUANG
MOVKI,BX
LEADX,KONG
MOVAH,09H
INT21H
JMPSTART
LPB:
MOVFLAG1,1;置系统控制开始标志
JMPLP
LPP:
MOVFLAG1,0;置系统控制停止标志
JMPLP
MAINENDP
BFBPROCNEAR;进行显示预处理
LEADI,CHAO
ADDDI,29
MOVAX,CBUFF[0]
ADDAL,30H
INCDI
MOV[DI],AL
MOVAX,CBUFF[2]
ADDAL,30H
I