桥式吊车专业实验任务书终稿_第1页
桥式吊车专业实验任务书终稿_第2页
桥式吊车专业实验任务书终稿_第3页
桥式吊车专业实验任务书终稿_第4页
桥式吊车专业实验任务书终稿_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北 京 航 空 航 天 大 学专 业 实 验 报 告专业名称 自动化 专业方向 飞行控制系统 班 级 学生姓名 吴崇珂 指导教师 袁少强 2014年 10月 11 日目 录1系统设计任务及技术指标32系统的组成和工作原理42.1 系统的组成42.2 工作原理53计算机控制系统的设计与实现53.1 计算机控制系统的设计方案(硬件、软件)53.2 实时控制软件框图63.3 数据采集(吴崇珂负责)、数据处理(赵友铖负责)与模拟量输出(赵子豪负责)73.4 采样周期的实现(赵子豪负责)123.5 界面设计与实现(张娱负责)133.6 动画的设计与实现(李昆鹏负责)194系统的组装及调试194.1 吊摆

2、实现电路244.2 反馈极性判别244.3 系统调试25系统性能分析与结论255收获和体会261系统设计任务及技术指标专业实验任务书题目:数控式桥式吊车控制系统一 技术指标:1 摆角稳定时间小于5秒,摆动次数小于3次2 吊车启动时最大摆角小于103 吊车最大速度为0.5米/秒4 D/A输出 100mv电机起动,D/A输出5 v时对应电机最大速度二 实验任务1 桥式吊车实验系统方案和主要部选择2 桥式吊车系统元部件测试与建模3 数字控制器硬件实现4 数字控制器软件实现5 闭环系统的组成和实验调试6 实验结果分析7 编写专业实验报告2系统的组成和工作原理2.1 系统的组成图 1 数字式桥式吊车系统

3、的结构原理数字式桥式吊车系统的结构原理如图所示,计算机作为数字控制器实现对系统的实时控制,同时也为操作者提供人机界面,完成对系统的监督管理功能,如实时画图、采集数据等。A/D、D/A接口板插在计算机内,完成模数、数模转换。小功率随动系统用于电压和功率的放大。电机、测速机是系统的执行元件和速度反馈元件,电位计1和2分别是车位置反馈元件和摆角度反馈元件。吊车系统的整套机械部件安装在一块底板上。底板上固定着导轨、皮带轮、电机、测速机、车位置反馈电位计,底板开槽,使吊摆垂下去。吊车轨道的有效长度约为0.7米,吊车组件包围在轨道外,四个车轮在导轨上方运动,吊车板下面连着小车板支架和角位置电位计支架,两支

4、架之间安装吊摆,在角位置电位计支架上装有测量吊摆角度的单圈电位计。计算机、A/D、D/A板,小功率随动系统、电机、测速机、桥式吊车装置通过机械或电气手段连接成一个整体。其中电气连接通过控制盒实现。2.2 工作原理 图 2 Digital Crane数字式桥式吊车控制系统框图吊车(下装吊摆)在电机的拖动下沿固定的直线导轨进行运动,相应地,产生了吊车的直线位移和吊摆的转角。线速度、线位移由与皮带轮同轴安装的多圈电位计测得,角位移由安装在吊摆轴上的单圈电位计测得,这三个物理量通过A/D转换送入计算机,经过机内的实时控制程序运算产生控制指令,该指令经D/A变换送入小功率随动系统,经过功率放大再输出给电

5、机,产生相应的控制作用,从而实现对吊车线位移和吊摆角位移的控制。3计算机控制系统的设计与实现3.1 计算机控制系统的设计方案(硬件、软件)硬件部分:软件部分:编程环境为TC.定时器初始化.开机动画.A/D转换,数字量处理.吊车运动状态实时显示.D/A转换3.2 实时控制软件框图3.3 数据采集(吴崇珂负责)、数据处理(赵友铖负责)与模拟量输出(赵子豪负责)首先是A/D函数的调用,具体内容:使计数器8253工作在方式4;给A/D转换器发送转换的通道;延时25微秒;启动A/D转换;延时25微秒;读取高四位和低八位;合成12位浮点数;返回;程序如下:float adc(int n) int adh=

6、0,adl=0,adint=0; int i=0; float ad=0; outportb(0x31b,0x18); /* 8253工作与方式4 */ outportb(0x310,n); /* 发送通道号(0-15) */ for(i=0;i5000;i+); /* 延时25us */ outportb(0x311,0x0); /* 启动A/D转换 */ for(i=0;i=0.9) ek=0.9; else if(ek=0.005)&(ek100)&(r+0.1sk*10/1.1249)&(r-0.1=-0.02)&(ek100)&(r+0.1sk*10/1.1249)&(r-0.1sk

7、*10/1.1249) ek=-0.02; dac(ek); ek=-5*ek; outportb(0x20,0x20); sk=100*sk; /* cm */ vk=100*vk; /* cm/s */ ok=180*ok/3.14; /* sk=sk*10/(1.1249); m */ if (k500) enable();void dac(float x1) unsigned int lo=0,hi=0,newhi=0,newlo=0,x; x=(x1+1)/2*0xfff0; /* 转换为16进制偏移码 */ lo=x%256;hi=(x-lo)/256; /* 分为高8位和低8位

8、*/ newhi=hi%16*16+(int)hi/16; /* 高4位和低4位互换 */ outportb(0x316,newhi); /* 写入高8位 */ newlo=lo%16*16+(int)lo/16; /* 高4位和低4位互换 */ outportb(0x317,newlo); /* 写入低8位 */ inportb(0x317); /* 启动D/A转换 */正如上面所说,A/D通道0为小车位置通道;A/D通道1为小车速度通道;A/D通道2为小车摆角通道;一开始对小车这三个参数的初值进行了读取,然后每过一个采样周期,读取一组新的值。因为参数读取有延迟,所以要读取两次以上,才能读取

9、到正确的参数值。读取到参数值之后,与初值算出相对的差。因为测速抖动较大,所以采用了均值滤波,改善了抖动。取到相对值之后,经过通过由最优算法的控制律得到e(k).因为要满足最大电压5v,启动电压100mv,所以对e(k)进行了饱和特性处理,符合了设计的要求。然后是D/A函数的调用,具体内容:先将输入的数字信号转换成十六进制偏移码;由于使用DAC1213芯片,分别为D/A1和D/A2,I/O接口是8位的,因此必须写入两次才能完成12位数据的传递,同时由于实验设备的特殊,需要将这八位中的高低四位互换后再写入,最后通过起动信号使D/A转换开始;3.4 采样周期的实现(赵子豪负责)使用的是8253,并使

10、其工作在方式3,通道2选通,先读低字节后读高字节,二进制计数的方式构成计数器;同时采样周期的实现需要用到中断向量,在每一次关中断时给8253写入控制字,然后再开中断。程序:void init_int() oldint=getvect(0xb); /* 获得旧的中断向量*/ setvect(0xb,newint); /* 建立新的中断向量*/ disable(); /* 关闭中断 */ outportb(0x31b,0xb6); /* 初始化编程,写入控制字,定时时间25ms */ outportb(0x31a,0x40); /* 低位 80 */ outportb(0x31a,0x9c); /

11、* 高位 195 */ outportb(0x21,inportb(0x21)&0xf7); enable(); /* 开中断 */3.5 界面设计与实现(张娱负责)界面设计主要实现功能:(1)在界面上可以输入小车的期望位置,实现对小车任意位置的控制,可以比较在不同位置时控制系统的性能(2)界面上实时显示小车的位置,速度和摆角变化曲线. 在曲线幅值标注的过程中,根据技术指标,分别在在小车速度达到0.5m/s和摆角达到10处绘制出最大速度标准和最大摆角限制,由此根据曲线能清晰地看出小车的运动过程是否达到了技术指标,方便了调试过程。.主要调用了setcolor:设定当前颜色;settextstyl

12、e:图形屏幕文字显示风格setlinestyle:设置线型outtextxy:图形屏幕文字的显示等主要绘图函数实现了界面的设计。程序:void init_background() /* 图形背景初始化 */ int i=0,j=0; /* 显示系统参数 setcolor(WHITE);*/ /*for(i=0;i7;i+) sprintf(buf,k%d=%f,i+1,_ki); outtextxy(X4,Y4+i*D,buf); */ /* 绘制坐标网格*/ /* 小车位置坐标*/ cleardevice(); /* 清屏 */ setcolor(WHITE); settextstyle(D

13、EFAULT_FONT,HORIZ_DIR,0); setlinestyle(1,0,NORM_WIDTH); for(i=0,j=-1*B/2;i9;i=i+2) /* if(i=0|i=4|i=8) */ if(i=4) setlinestyle(SOLID_LINE,0,NORM_WIDTH); line(X1,Y1+j,X1+A,Y1+j); setlinestyle(1,0,NORM_WIDTH); else line(X1,Y1+j,X1+A,Y1+j); /*幅值标注*/ switch (i) case 0: outtextxy(X1-X1,Y1+j-5, 60); outtex

14、txy(X1-X1+45,Y1+j+5,S(cm); break; case 1: outtextxy(X1-X1,Y1+j-5, 60); break; case 2: outtextxy(X1-X1,Y1+j-5, 30); break; case 3: outtextxy(X1-X1,Y1+j-5, 20); break; case 4: outtextxy(X1-X1,Y1+j-5, 0 ); break; case 5: outtextxy(X1-X1,Y1+j-5, -20); break; case 6: outtextxy(X1-X1,Y1+j-5, -30); break;

15、case 7: outtextxy(X1-X1,Y1+j-5, -60); break; case 8: outtextxy(X1-X1,Y1+j-5, -60); break; j=j+B/4; setlinestyle(1,0,NORM_WIDTH); for(i=0,j=0;i7;i+) line(X1+j,Y1-B/2,X1+j,Y1+B/2); /*时间标注*/ switch (i) case 0: break; case 1: outtextxy(X1+j-15,Y1+5,100T); break; case 2: outtextxy(X1+j-15,Y1+5,200T); bre

16、ak; case 3: outtextxy(X1+j-15,Y1+5,300T); break; case 4: outtextxy(X1+j-15,Y1+5,400T); break; case 5: outtextxy(X1+j-15,Y1+5,500T); break; case 6: outtextxy(X1+j-35,Y1+5,600T); break; j=j+A /6; setlinestyle(SOLID_LINE,0,NORM_WIDTH); line(X1,Y1-B/2,X1,Y1+B/2); /* line(X1+A,Y1-B/2,X1+A,Y1+B/2); */ /*

17、绘制期望位置输入R?*/ setcolor(RED); setlinestyle(SOLID_LINE,0,NORM_WIDTH); line(X1,Y1-r*11.249/K4*B/(2*80),X1+A,Y1-r*11.249/K4*B/(2*80); /* 小车速度坐标*/ setcolor(WHITE); settextstyle(DEFAULT_FONT,HORIZ_DIR,0); setlinestyle(1,0,NORM_WIDTH); for(i=0,j=-1*B/2;i9;i=i+2) /* if(i=0|i=4|i=8) */ if(i=4) setlinestyle(SO

18、LID_LINE,0,NORM_WIDTH); line(X2,Y2+j,X2+A,Y2+j); setlinestyle(1,0,NORM_WIDTH); else line(X2,Y2+j,X2+A,Y2+j); /*幅值标注*/ switch (i) case 0: outtextxy(X2-X1,Y2+j-5, 60); outtextxy(X2-X1+45,Y2+j+5,V(cm/s); break; case 1: outtextxy(X2-X1,Y2+j-5, 45); break; case 2: outtextxy(X2-X1,Y2+j-5, 30); break; case

19、 3: outtextxy(X2-X1,Y2+j-5, 15); break; case 4: outtextxy(X2-X1,Y2+j-5, 0); break; case 5: outtextxy(X2-X1,Y2+j-5, -15); break; case 6: outtextxy(X2-X1,Y2+j-5, -30); break; case 7: outtextxy(X2-X1,Y2+j-5, -45); break; case 8: outtextxy(X2-X1,Y2+j-5, -60); break; j=j+B/4; setlinestyle(1,0,NORM_WIDTH)

20、; for(i=0,j=0;i7;i+) line(X2+j,Y2-B/2,X2+j,Y2+B/2); /*时间标注*/ switch (i) case 0: break; case 1: outtextxy(X2+j-15,Y2+5,100T); break; case 2: outtextxy(X2+j-15,Y2+5,200T); break; case 3: outtextxy(X2+j-15,Y2+5,300T); break; case 4: outtextxy(X2+j-15,Y2+5,400T); break; case 5: outtextxy(X2+j-15,Y2+5,50

21、0T); break; case 6: outtextxy(X2+j-35,Y2+5,600T); break; j=j+A /6; setlinestyle(SOLID_LINE,0,NORM_WIDTH); line(X2,Y2-B/2,X2,Y2+B/2); /* line(X2+A,Y2-B/2,X2+A,Y2+B/2); */ /* 绘制最大速度标准 */ setcolor(RED); setlinestyle(SOLID_LINE,0,NORM_WIDTH); line(X2,Y2-55*B/(2*60),X2+A,Y2-55*B/(2*60); line(X2,Y2+55*B/(

22、2*60),X2+A,Y2+55*B/(2*60); /* 小车摆角坐标*/ setcolor(WHITE); settextstyle(DEFAULT_FONT,HORIZ_DIR,0); setlinestyle(1,0,NORM_WIDTH); for(i=0,j=-1*B/2;i9;i=i+2) /* if(i=0|i=4|i=8) */ if(i=4) setlinestyle(SOLID_LINE,0,NORM_WIDTH); line(X3,Y3+j,X3+A,Y3+j); setlinestyle(1,0,NORM_WIDTH); else line(X3,Y3+j,X3+A,

23、Y3+j); /*幅值标注*/ switch (i) case 0: outtextxy(X3-X1,Y3+j-5, 12); outtextxy(X3-X1+45,Y3+j+5,O(degree); break; case 1: outtextxy(X3-X1,Y3+j-5, 9); break; case 2: outtextxy(X3-X1,Y3+j-5, 6); break; case 3: outtextxy(X3-X1,Y3+j-5, 3); break; case 4: outtextxy(X3-X1,Y3+j-5, 0); break; case 5: outtextxy(X3

24、-X1,Y3+j-5, -3); break; case 6: outtextxy(X3-X1,Y3+j-5, -6); break; case 7: outtextxy(X3-X1,Y3+j-5, -9); break; case 8: outtextxy(X3-X1,Y3+j-5, -12); break; j=j+B/4; setlinestyle(1,0,NORM_WIDTH); for(i=0,j=0;i7;i+) line(X3+j,Y3-B/2,X3+j,Y3+B/2); /*时间标注*/ switch (i) case 0: break; case 1: outtextxy(X

25、3+j-15,Y3+5,100T); break; case 2: outtextxy(X3+j-15,Y3+5,200T); break; case 3: outtextxy(X3+j-15,Y3+5,300T); break; case 4: outtextxy(X3+j-15,Y3+5,400T); break; case 5: outtextxy(X3+j-15,Y3+5,500T); break; case 6: outtextxy(X3+j-35,Y3+5,600T); break; j=j+A /6; setlinestyle(SOLID_LINE,0,NORM_WIDTH);

26、line(X3,Y3-B/2,X3,Y3+B/2); /* line(X3+A,Y3-B/2,X3+A,Y3+B/2); */ /* 最大摆角限制 */ setcolor(RED); setlinestyle(SOLID_LINE,0,NORM_WIDTH); line(X3,Y3-10*B/(2*12),X3+A,Y3-10*B/(2*12); line(X3,Y3+10*B/(2*12),X3+A,Y3+10*B/(2*12);3.6 动画的设计与实现(李昆鹏负责) 1、基本思路利用c语言中graphics.h头文件实现动画,通过使用该文件中提供的,例如bar,bar3d, fillell

27、ipse,line等函数绘制出基本图形,用于表示试验中的小车,吊摆及车轮。而动画的实现方法是高频率的重复画图达到动画的效果。2、相关程序解释 (1)、开机动画部分 void open() int i=0,j=200,k=0; for(i=0,j=639;i100) setfillstyle(SOLID_FILL,BLACK); bar(j-5,95,640,120); setcolor(WHITE); setfillstyle(SOLID_FILL,BLUE); bar(j-5,95,j+450,120); settextstyle(DEFAULT_FONT,HORIZ_DIR,2); out

28、textxy(j,100,Digital Crane Control System); /画出小车的过程中,通过对变量j进行判断 利用outtextxy写出“Digital Crane Control System” setfillstyle(SOLID_FILL,BLACK); /*for(k=0;k3;k+) bar(0,0,100,100);*/ j=j-2; /擦去小车导轨 setcolor(BLACK); line(0,51,640,51); setcolor(WHITE); settextstyle(DEFAULT_FONT,HORIZ_DIR,0); setlinestyle(S

29、OLID_LINE,0,THICK_WIDTH); j=250; k=250; setfillstyle(SOLID_FILL,BLACK); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtex

30、txy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k, ); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy(j,k,); j=j+8; cursor(j,k); outtextxy

31、(j,k,);j=j+8; /通过利用cursor函数和for函数实现字母的动态出现方式。该段程序只用于试验未填充内容 for(i=0;i30;i+) bar(0,300,640,480); for(i=0;i30;i+) bar(0,300,640,480); for(i=0;i30;i+) bar(0,300,640,480); settextstyle(DEFAULT_FONT,HORIZ_DIR,0); getch();(2)、实验动画部分 /该部分动画与open函数中绘画步骤基本相同。与之区别的内容是,某些参数不同例如:sk为小车的当前位置,x,y为小车当前屏幕上的位置。基本过程为,

32、首先利用颜色覆盖,清除上一次绘制的图形。在利用新数据(即sk)绘制出图形。 /* 抹去原图形 */ setfillstyle(SOLID_FILL,BLACK); /*bar(X4,Y4-B/2,X4+A,Y4+B/2);*/ bar(x+sk-1*A/160-a/2,y-b/2,x+sk-1*A/160+a/2,y+b/2+2*R); /* 重画 */ /* 小车 */ setcolor(BLUE); setlinestyle(SOLID_LINE,0,NORM_WIDTH); setfillstyle(SOLID_FILL,RED); bar3d(x+sk*A/160-a/2,y-b/2,

33、x+sk*A/160+a/2,y+b/2,0,1); /* 车轮 */ setcolor(BLUE); setfillstyle(SOLID_FILL,RED); fillellipse(x+sk*A/160-a/4,y+b/2+R,R,R); fillellipse(x+sk*A/160+a/4,y+b/2+R,R,R); /* 吊摆 */ setcolor(BLACK); line(x+sk-1*A/160,y+b/2,x+sk-1*A/160+L*sin(ok-1*3.14/180)/K,y+b/2+L*cos(ok-1*3.14/180); setcolor(RED); line(x+sk*A/160,y

温馨提示

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

评论

0/150

提交评论