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

上传人:仙*** 文档编号:90215746 上传时间:2022-05-14 格式:DOC 页数:13 大小:190.50KB
收藏 版权申诉 举报 下载
北航计算机控制系统实验报告_第1页
第1页 / 共13页
北航计算机控制系统实验报告_第2页
第2页 / 共13页
北航计算机控制系统实验报告_第3页
第3页 / 共13页
资源描述:

《北航计算机控制系统实验报告》由会员分享,可在线阅读,更多相关《北航计算机控制系统实验报告(13页珍藏版)》请在装配图网上搜索。

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.138.3比例系数11

3、.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采样也会造成误差。3. 说出开环放大系数与

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

6、接口根本原理,芯片构造;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程序,在计算机中输入不同电压对应的码,进展输出,并用电压表测量电压输出值,将实际值与理论值进展比拟。五、程序流程图1

7、. 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.201.22.53.75误差-0.1-

8、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. 掌握采样周期的实现方法二、实验容 1

9、. 编制并调试所编写的程序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. 为什么T越小系统特性越好,T可以无限小吗? 答:

11、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闭环传递函数稳态增益为,;系统连续局部的传递函数为;假设取得状态方程输出方程由MATLAB可得,a=0

14、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) 设可测,设计降维观测器,观测器衰减速率是系统闭环衰减速率的 4

15、倍。降维观测器方程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的量程,构造图如下:两图比拟得:K1=-0.505 K2=1 K3=-0.

16、4615 K4=-0.8121K5=0.21 K6=0.5 K7=26编排实现按下列图编排实现:可得,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语言编制带曲显示的实时控制程序。实时控制程序参考流程图 3. 运行带曲显示的实时

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

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

19、后感教师的细心指导和每节课的耐心讲解,在我们遇到线路上的问题时,都会帮我们来排查故障。教师。附实验代码:. z.-#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.4615,k4=-0.8121,k5=0.21,k6=0.5,k7=2;/

20、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,k2=0.75,k3=-0.459,k4=0.521,k5=4,k6=4,k

21、7=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(); oldint=getvect(0xb); setvect(0xb,ne

22、wint); 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);/8259 INTERRUPT END MARK setvect(0xb,old

23、int); /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=ad0;setcolor(RED);line(240+x1*(timer),3

24、50-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,77,77);setcolor(YELLOW);line(120,350,12

25、0+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*0xfff0;lo=y&0x00ff;hi=(y&0xff00)/256;

26、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=0;i500;i+) p=inportb(0x312)%16; q=inp

27、ortb(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 gdriver = DETECT, gmode; initgraph(&gdriver

28、, &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/180*pi),y2+120*cos(180-t)/180*pi),k);

29、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*sin(t/180*pi),y2+85*cos(180-t)/180*pi),x

30、2+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); else line(x1+94*sin(t/180*pi),y1+94*cos

31、(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); sprintf(msg,Output V:,output); outtextx

32、y(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 = rp7 = starty;rp4 = rp6 = startx+widt

33、h;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 = starty+height;fillpoly(4,tp);settextstyl

34、e(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=0;i=20;i+,numy+=19) line(240+numy,260

35、,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);for(numy=240,i=0;i11;i+,numy+=38) sprint

36、f(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,-);. z.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!