收藏 分销(赏)

北航计算机控制系统实验报告.doc

上传人:二*** 文档编号:4511697 上传时间:2024-09-26 格式:DOC 页数:23 大小:1.55MB
下载 相关 举报
北航计算机控制系统实验报告.doc_第1页
第1页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 .计算机控制系统实 验 报 告实验一 模拟式小功率随动系统的实验调试实验二 A/D、D/A接口的使用和数据采集实验三 中断及采样周期的调试实验四 计算机控制系统的实验调试 姓名: 陈启航 学号: 13031144 同组人: 吴振环 陈秋鹏 李恺 指导教师: 袁少强 日期: 2016年6月16日 实验一 二阶系统的电子模拟及时域响应的动态测试一、实验目的 1. 熟悉反馈控制系统的结构和工作原理,进一步了解位置随动系统的特点。 2. 掌握判别闭环系统的反馈极性的方法。 3. 了解开环放大倍数对稳定性的影响及对系统动态特性的影响,对静态误差的影响。二、实验内容 1. 连接元件构成位置随动系统; 2

2、. 利用计算机内的采样及显示程序,显示并分析输出的响应结果;3. 反复调试达到设计要求。三、实验设备XSJ-3 小功率直流随动系统学习机一台、DH1718 双路直流稳压电源一台、4 1/2 数字多用表一台四、实验原理模拟式小功率随动系统如下图所示:1. 实验前需进行零位调整,反馈极性判断,反馈极性判断又包括速度反馈极性判断和位置反馈极性判断,须使反馈为负反馈。2. 动态闭环实验系统调试。按下面电路图连线,通过改变变阻器 大小来改变闭环系统放大倍数,通过一路A/D把输出相应采入计算机进行绘图,同时测量输入电压和反馈电位计输入电压,算出稳态误差。五、实验结果滑阻阻值(千欧)7.118.324.13

3、8.3比例系数11.52.753.7给定角度(度)3060120输出角度(度)3866129静差角度(度)314静态误差(mv)-146.7-6.2-193.5过度过程曲线见下图1. K=1时的过渡过程曲线2. K=1.5时的过渡过程曲线3. K=2.75时的过渡过程曲线4. K=3.7时的过渡过程曲线六、思考题及实验感想1 如果速度反馈极性不对应如何处理?如果位置反馈极性不对应如何处理? 答:首先判断测速机反馈极性。在一级运放处加一电压,记住电机转向,然后断开输入,用手旋转电机按同一转向转动,测量测速机输出电压,如与前电机所加电压极性相同,则可将该信号接入运放二的负端;否则应把测速机输出极性

4、倒置,即把另一信号接入运放二的负相端。 其次判断位置反馈极性。将回路接成开环状态,给电机加入一正电压,可使其转动,然后使电机回零,顺着电机刚才转动的方向转一小角度(不可转到非线性区),同时用数字电压表测电位计电刷的输出电压,倘若其值为负,则表明此时是负反馈,否则,需把电位计两端10V接线头对调,以保证闭环系统是负反馈。2. 系统是几阶无静差系统?产生静差的原因。答:系统是二阶无静差系统。产生静差的原因有以下几点:第一,系统的非线性特性,由于电机有死区,故当误差太小时,系统输出给电机的电压也比较小,未达到电机的启动电压,导致电机不能转动,造成误差。第二,电位计的测量有误差,A/D采样也会造成误差

5、。3. 说出开环放大系数与静差及稳定性的关系。答:增大开环放大倍数有助于减小静差和增加系统的快速性,如过渡过程曲线1和2对比所示。但是开环放大倍数过大会导致超调增加和系统振荡,甚至不稳定,如过渡过程曲线3和4所示。感想:通过这次实验,深刻了解了对于速度反馈类型的调试,对静态误差的分析以及产生误差的原因等,并且对开环放大系数对系统的影响也在实验过程中得到验证。对今后学习将有极大作用。实验二 A/D、D/A接口的使用和数据采集一、实验目的 1. 了解A/D接口的基本原理,硬件结构及编程方法等2. 掌握机器内部的数据转换和储存方式3. 学会定时器的原理及使用方法4. 测量A/D的输入/输出特性,分析

6、误差产生原因5. 了解D/A接口基本原理,芯片结构;6. D/A与CPU的连接,地址设置及编程方法等二、实验内容 1. 编制并调试带定时器的A/D程序2. 编制并调试带定时器的D/A程序3. 对编写程序进行测试4. 分析误差产生原因三、实验设备IBM PC 系列微机一台(586)、HD1219 12位A/D D/A接口板一块、DH1718 双路直流稳压电源一台、4 1/2 数字多用表一台四、实验步骤1. 编制A/D采样程序,对不同电压进行采样测量,并转换码制。将所测的结果与真实结果进行对比。 2. 编制D/A程序,在计算机中输入不同电压对应的码,进行输出,并用电压表测量电压输出值,将实际值与理

7、论值进行比较。五、程序流程图1. A/D程序流程图 2. D/A程序流程图六、实验数据1. A/D实验数据电压(V) -10-7.5-5-2.502.557.510偏移码01f93f65f17f0a08c27e1afbf补码 f800f9f9fbf6fdf1fff020842761a7bf浮点数 -1.00-0.753-0.505-0.257-0.0080.2540.5190.7630.9682. D/A实验数据Code00002000400060008000A000C000E000FFFF输入电压-5-3.75-2.5-1.2501.252.53.755输出电压-4.9-3.7-2.4-1.

8、201.22.53.75误差-0.1-0.05-0.1-0.0500.0500.050七、思考题1. 试分析采集误差产生原因有哪些?答:A/D和D/A本身存在量化误差;A/D和D/A有非线性特性;噪声干扰,在测量过程中发现无论是A/D还是D/A,在实验中都不是稳定不变的,一般尾数都在不断的变化,这是由于电路中本身的噪声,以及数据采集板在设计过程中没有考虑到信号干扰所造成的。八、实验感想通过这次实验,接触了计算机编程的语言逻辑,并且对计算机的A/D和D/A编程有了一定了解,通过实验机上的仿真程序对实验得到进一步的完善。实验三 中断及采样周期的调试一、实验目的 1. 学习中断的原理及编程方法 2.

9、 掌握采样周期的实现方法二、实验内容 1. 编制并调试所编写的程序2. 按线路图搭接一个二阶系统并观察输出特性3. 观察采样周期变化对系统的影响三、实验设备IBM PC 系列微机一台(586)、HD1219 12位A/D D/A接口板一块、DH1718 双路直流稳压电源一台、4 1/2 数字多用表一台四、实验步骤 1. 编写并调试程序。参照照老师所给程序语句编写面板程序,合理布局,使在面板上可以看到输入的电压波形,输出的电压波形,并为了方便实验六里观察随动,所以又编写了两个表盘,便于更好的观察输入输出的电压变化。并编写简单的控制率,使可以通过改变程序中的参数改变控制率。 2. 按照下面的电路图

10、连线,组成一个计算机控制系统,改变其采样周期,观察系统的特性。五、实验数据中断计时器的计数值,其中T以ms为单位。由于计时器为16位,n的最大值为0xFFFF,即65535,由此得出的最大值为。故实验中只取了两组数据,并对采样周期对系统性能的影响作定性的观察。由实验现象得出结论:采样周期对系统的性能影响较大,且越小,系统的稳定性越好,动态响应越理想。对于本实验的系统,时系统近似等幅振荡。R01-100Q0001-1Uda(理论)01-1-11Uda(实测)01.91-2.79-1.741.57实验截图如下:T=10msT=20msT=25msT=30msT=32ms六、思考题及实验感想1. 为

11、什么T越小系统特性越好,T可以无限小吗? 答:T小有利于改善系统的动态特性,因为采用较小的T,在同样的采样周期内就可以对系统进行更多次的采样和控制,使系统响应往期望的方向发展。但是T过小会使系统极点向单位圆靠近,很小的量化误差会对系统的稳定性造成很大的影响,可能会导致系统不稳定。因此T不能太大也不能过小,应根据实际情况选择一个合适的值。实验感想:通过这次实验,对实验中计算机的仿真编程有了进一步的了解,并且对于编程中的中断程序有了认识,同时,对于采样周期的不同对实验结果产生的影响也有了进一步的深入了解。实验四 计算机控制系统的实验调试一、实验目的 1. 掌握数控伺服系统静态参数选取的一般方法 2

12、. 掌握利用极点配置方法进行离散系统全状态反馈控制规律及降维观测器的设计 3. 掌握控制算法编排实现及比例因子配置方法4. 学会数控伺服系统调试的方法与过程二、实验内容 1. 选择合适的采样周期,对小功率随动系统的模型进行离散化2. 利用极点配置方法进行离散系统全状态反馈控制规律及降维观测器的设计 3. 编辑实时控制程序,在计算机内实现控制律4. 进行闭环动态系统调试5. 讨论静态误差及其消除方法三、实验设备IBM PC 系列微机一台(586)、HD1219 12位A/D D/A接口板一块、DH1718 双路直流稳压电源一台、4 1/2 数字多用表一台四、实验原理该数控伺服系统的结构图如下图所

13、示。该系统是一直流伺服系统,它由直流力矩电机、直流测速发电机、角位置测量电位计及直流放大器、80X86处理器计算机及A/D、D/A变换器组成。加入系统的指令输入信号通过A/D、D/A变换器进入计算机,经过计算机控制算法的处理产生控制指令,由D/A变换器输出,加到运算放大器输入端,与测速机测得的角速度信号综合比较,经过功率放大后驱动直流力矩电机转动。负载的转角由电位计测得,并通过A/D加入到计算机,通过控制指令的计算,形成一个完整的闭环控制系统。(1) 确定增益系数D/A输出 120mv,电机启动:,;D/A输出 5v,电机转速26rad/s闭环传递函数稳态增益为,;系统连续部分的传递函数为;若

14、取得状态方程输出方程由MATLAB可得,a=0 1;0 -54.49;b=0;283.4;F,G=c2d(a,b,0.01)F = 1.0000 0.0077 0 0.5799G = 0.01192.1849(2) 设计状态反馈增益,使系统闭环极点0.9,n 20 rad/s系统在s平面的特征根根据要求取,得根据,离散系统的特征根为使用MATLAB计算状态反馈增益F=1,0.0077;0,0.5799;G=0.0119;2.1849;P=0.7877 + 0.0674*i,0.7877 - 0.0674*i;k=acker(F,G,P)k = 2.2735 -0.0103(3) 设可测,设计降

15、维观测器,观测器衰减速率是系统闭环衰减速率的 4倍。 降维观测器方程 L为观测器增益,观测器衰减速率是系统闭环衰减速率的 4倍,闭环极点为 观测器极点为利用MATLAB可求得L = 24.5844;F22=0.5799;F12=0.0077;P=0.3906;l=acker(F22,F12,P)l = 24.5844降维观测器方程观测器误差方程(4) 求离散控制律 D(z)加入观测器和反馈增益系统的离散方程为:对上式进行z变换 ; (5) 将 D(z)进行实现,配置适当的比例因子。采用零极型编排结构实现配置比例因子控制器稳态增益为,高频增益为 选择比例因子为4不考虑A/D,D/A的量程,结构图

16、如下:两图比较得:K1=-0.505 K2=1 K3=-0.4615 K4=-0.8121K5=0.21 K6=0.5 K7=2(6)编排实现按下图编排实现:可得,k1=-0.45725,k2=1,k3=-0.09787,k4=0.233,k5=0.25,k6=0.125,k7=8上面为理论计算得到的控制器,实验中使用的控制器参考了往届同学的工作,进行了较大修正,得到的效果较好。以下为实验实际所用的编排数据,程序见附录:k1=-0.66,k2=1,k3=-0.456,k4=0.511,k5=0.74,k6=0.26,k7=2.7;五、实验步骤1. 按上述原理图接线。2. 用C语言编制带曲显示的

17、实时控制程序。实时控制程序参考流程图 3. 运行带曲显示的实时控制程序,调节系统达到控制要求,打印输出曲线六、实验结果 实验结果比较顺利的完成了指定的任务。静差和超调均在规定范围之内。控制界面的截图如下所示:阶跃响应:七、思考题1. 若系统输入和输出有较大偏差,如何通过系数的调整解决?答:若输出角度和输入角度有较大偏差,可以通过改变K1的值,增大或减小反馈值,从而达到改变输出电压,即调整输出角度的目的,不用重新设计状态反馈。2. 系统引入速度反馈的作用是什么?答:速度反馈的目的是改善系统的动态特性,使系统能够快速响应输入。 3. 参数 K1 、K5 对系统静特性的影响? 答:K1和K5影响的主

18、要是系统的开环增益,增加开环增益可以减少系统静差,提高系统的快速性,同时太大的开环增益会是的系统振荡性加强甚至不稳定。4. 参数 K3 、K4 对系统动特性的影响? 答:K3调整的是控制器的零点,可以调节系统的响应,但对稳定性影响不大;K4对应控制器的极点,对系统的动态响应及稳定性都起关键作用。八、实验感想通过这四次实验,对计算机控制系统的实验有了进一步了解,从前三次实验的分步了解认识到后来第四次综合性的大实验结合,对速度反馈系统有了深刻了解,并且学会了如果通过调节速度反馈中的系数大小来调节完善系统反馈的准确性,通过调节参数来减小系统静差,并且接触到了仿真程序的编写,以及如何控制这些仿真程序来

19、改变仿真界面的类型等技巧,相信这些知识对我将来起到极大的作用。最后感谢老师的细心指导和每节课的耐心讲解,在我们遇到线路上的问题时,都会帮我们来排查故障。谢谢老师。附(实验代码): .页脚. #include #include #include #include #include #include #include #define pi 3.14159265/*-define k1 to k7-*/float k1=-0.68,k2=1,k3=-0.459,k4=0.521,k5=0.85,k6=1.02,k7=0.8;/*-others-*/float k1=-0.505,k2=1,k3=-0

20、.4615,k4=-0.8121,k5=0.21,k6=0.5,k7=2;/float k1=-0.6546,k2=1,k3=-0.4293,k4=0.5024,k5=0.75,k6=4,k7=2;float k1=-0.66,k2=1,k3=-0.456,k4=0.511,k5=0.74,k6=0.26,k7=2.7;/float k1=-0.6743,k2=0.75,k3=-0.459,k4=0.521,k5=2,k6=2,k7=2;/float k1=-0.67,k2=1,k3=-0.459,k4=0.521,k5=0.75,k6=0.25,k7=2;/float k1=-0.6743,

21、k2=0.75,k3=-0.459,k4=0.521,k5=4,k6=4,k7=2;/float k1=-0.333,k2=0.75,k3=0.0329,k4=0.1963,k5=4,k6=4,k7=2;/*-*/float t=0.1,x=0,x1,adpre=0,adpre1=0;float timer=0;int N1;void interrupt (*oldint)(.);void interrupt newint(.);float adc(int n);void dac(float da);void initialscreen();void main() initialscreen(

22、); oldint=getvect(0xb); setvect(0xb,newint); disable(); int n,temp; N1=10/t; x1=50*t; n=2000000*t; temp=n; n=n*256; outportb(0x31b,0xb6); outportb(0x31a,n); outportb(0x31a,temp); outportb(0x21,inportb(0x21)&0xf7); /setcolor(BLACK); enable(); getch(); closegraph(); outportb(0x21,inport(0x21)|0x08);/8

23、259 INTERRUPT END MARK setvect(0xb,oldint); /RECOVER INTVECTvoid interrupt newint(.)while(timer=N1)disable();outportb(0x20,0x20);goto a;timer=timer+0.3 ;float ad0,ad1,a1,da,d1;ad0=adc(0);ad1=adc(1);/*-DRAW THE PICTURE-*/setcolor(BLUE);line(240+x1*timer,120-adpre1*90,240+x1*timer,120-ad0*90);adpre1=a

24、d0;setcolor(RED);line(240+x1*(timer),350-adpre*90,240+x1*timer,350-ad1*90);adpre=ad1;/*-DRAW THE POINTER-*/setcolor(RED);setfillstyle(0,BLACK);fillellipse(120,120,77,77);setcolor(RED);line(120,120,120+75*cos(ad0+0.5)*pi),120-75*sin(ad0+0.5)*pi);setcolor(RED);setfillstyle(0,RED);fillellipse(120,350,7

25、7,77);setcolor(YELLOW);line(120,350,120+75*cos(ad1+0.5)*pi),350-75*sin(ad1+0.5)*pi); /*a1=ad1*k1+x;d1=ad0*k5+a1*k2;if(d1=1/k6) d1=1/k6;else if(d1=-1/k6) d1=-1/k6;da=k7*d1;dac(da); */ da=2*(ad0-ad1); dac(da); a: outportb(0x20,0x20);/*-D/A PROGRAM-*/void dac(float da)int y,lo,hi,newhi,newlo;y=(da+1)/2

26、*0xfff0;lo=y&0x00ff;hi=(y&0xff00)/256;newhi=(hi&0x000f)*16+(hi&0x00f0)/16;outportb(0x314,newhi);newlo=(lo&0x00f0)/16;outportb(0x315,newlo);inportb(0x315);/*-A/D PROGRAM-*/float adc(int n) float ad; int p,q; int i,r; outportb(0x31b,0x18); outportb(0x310,n); for(i=0;i500;i+) outportb(0x311,0x0); for(i

27、=0;i500;i+) p=inportb(0x312)%16; q=inportb(0x313); /printf(%0x,%0xn,p,q); r=p*256+q; /printf(%0x,r); float r1=r; ad=r1/0x800-1; /printf(%f,ad); /getch(); return ad; /*-FIGURE PLOT-*/void initialscreen() int gm, i,Radius,numy,width,startx,starty,height,blockHeight; char msg100; int point16; int gdriv

28、er = DETECT, gmode; initgraph(&gdriver, &gmode,D:BORLANDCBGI); cleardevice(); setbkcolor(BLUE); setcolor(14); int x1=120,y1=120; int x2=120,y2=350;/ Radius=80; char k100; for(float t=0;t=360) sprintf(k,%2.0f,t-360); outtextxy(x1+120*sin(t/180*pi),y1+120*cos(180-t)/180*pi),k); outtextxy(x2+120*sin(t/

29、180*pi),y2+120*cos(180-t)/180*pi),k); else outtextxy(x1-10+111*sin(t/180*pi),y1-3+111*cos(180-t)/180*pi),k); outtextxy(x2-10+111*sin(t/180*pi),y2-3+111*cos(180-t)/180*pi),k); setcolor(20); line(x1+85*sin(t/180*pi),y1+85*cos(180-t)/180*pi),x1+100*sin(t/180*pi),y1+100*cos(180-t)/180*pi); line(x2+85*si

30、n(t/180*pi),y2+85*cos(180-t)/180*pi),x2+100*sin(t/180*pi),y2+100*cos(180-t)/180*pi); setcolor(20);else line(x1+90*sin(t/180*pi),y1+90*cos(180-t)/180*pi),x1+100*sin(t/180*pi),y1+100*cos(180-t)/180*pi); line(x2+90*sin(t/180*pi),y2+90*cos(180-t)/180*pi),x2+100*sin(t/180*pi),y2+100*cos(180-t)/180*pi); e

31、lse line(x1+94*sin(t/180*pi),y1+94*cos(180-t)/180*pi),x1+100*sin(t/180*pi),y1+100*cos(180-t)/180*pi); line(x2+94*sin(t/180*pi),y2+94*cos(180-t)/180*pi),x2+100*sin(t/180*pi),y2+100*cos(180-t)/180*pi); char input,output; setcolor(14); sprintf(msg,Input V:,input); outtextxy(373,15,msg); setcolor(14); s

32、printf(msg,Output V:,output); outtextxy(373,235,msg); setcolor(14); sprintf(msg,Input Angle:,output); outtextxy(10,10,msg); setcolor(14); sprintf(msg,Output Angle:,output); outtextxy(10,235,msg);height=180, width=380,startx=240,starty=30;int rp8;char a60;setfillstyle(1,WHITE);rp0 = rp2 = startx;rp1

33、= rp7 = starty;rp4 = rp6 = startx+width;rp3 = rp5 = starty+height;fillpoly(4,rp);settextstyle(0,0,0);setlinestyle(1,1,1);setcolor(DARKGRAY);height=180, width=380,startx=240,starty=260;int tp8;char b60;setfillstyle(1,WHITE);tp0 = tp2 = startx;tp1 = tp7 = starty;tp4 = tp6 = startx+width;tp3 = tp5 = st

34、arty+height;fillpoly(4,tp);settextstyle(0,0,0);setlinestyle(1,1,1);setcolor(DARKGRAY); /*-AXIS PLOT-*/for(numy=30,i=0;i=10;i+,numy+=18) line(240,numy,620,numy); for(numy=260,i=0;i=10;i+,numy+=18) line(240,numy,620,numy); for(numy=19,i=0;i=20;i+,numy+=19) line(240+numy,30,240+numy,210); for(numy=19,i

35、=0;i=20;i+,numy+=19) line(240+numy,260,240+numy,440); setcolor (14);for(numy=30,i=0;i=10;i+,numy+=18) sprintf(msg,%d,2*(5-i) ); outtextxy(225,numy,msg); for(numy=260,i=0;i=10;i+,numy+=18 ) sprintf(msg,%d,2*(5-i) ); outtextxy(225,numy,msg); setcolor(RED);line(240,120,620,120);line(240,350,620,350);fo

36、r(numy=240,i=0;i11;i+,numy+=38) sprintf(msg,%d,i ); outtextxy(numy,125,msg); for(numy=240,i=0;i11;i+,numy+=38) sprintf(msg,%d,i); outtextxy(numy,355,msg); setcolor(GREEN) ;setlinestyle(SOLID_LINE,0,1); t=0; circle(x1,y1,101); line(x1,y1,x1+75*sin(t/180*pi),y1+75*cos(180-t)/180*pi); circle(x2,y2,101); line(x2,y2,x2+75*sin(t/180*pi),y2+75*cos(180-t)/180*pi); setcolor(14); outtextxy(350,450,-);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服