机电一体化系统设计报告实习总结.docx
《机电一体化系统设计报告实习总结.docx》由会员分享,可在线阅读,更多相关《机电一体化系统设计报告实习总结.docx(16页珍藏版)》请在冰豆网上搜索。
机电一体化系统设计报告实习总结
《机电一体化综合训练》总结
姓名孔垂靖
学号08908054
实验组宝贝车第三组、流水线第五组、
机械臂第一组
实验指导教师史颖刚、朱兆龙、刘利
西北农林科技大学机械与电子工程学院
2011年7月
机电一体化综合训练实习总结
一、宝贝车总结
拿到宝贝车的实习器材的那一刻我有点激动,因为我个人觉得这个实习是我们这几个实习中相对来说比较有趣的一个。
当然也不能总是激动,通过对实习教材的研读我们组完成了宝贝车的安装、程序的编辑调试和载入。
下面是我们编辑的红外线屏蔽程序和胡须屏蔽程序,经过调试和实验,这两个程序能过满足要求。
红外线屏障程序:
#include
#include
#include
#defineLeftIRP1_2//左边红外接收连接到P1_2
#defineRightIRP3_5//右边红外接收连接到P3_5
#defineLeftLaunchP1_3//左边红外发射连接到P1_3
#defineRightLaunchP3_6//右边红外发射连接到P3_6
voidIRLaunch(unsignedcharIR)
{
intcounter;
if(IR=='L')
for(counter=0;counter<38;counter++)
{
LeftLaunch=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
LeftLaunch=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
if(IR=='R')
for(counter=0;counter<38;counter++)//右边发射
{
RightLaunch=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
RightLaunch=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
}
voidForward(void)//向前行走子程序
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
voidLeft_Turn(void)//左转子程序
{
inti;
for(i=1;i<=26;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
}
voidRight_Turn(void)//右转子程序
{
inti;
for(i=1;i<=26;i++)
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
voidBackward(void)//向后行走子程序
{
inti;
for(i=1;i<=65;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
intmain(void)
{
intirDetectLeft,irDetectRight;
uart_Init();
printf("ProgramRunning!
\n");
while
(1)
{
IRLaunch('R');//右边发射
irDetectRight=RightIR;//右边接收
IRLaunch('L');//左边发射
irDetectLeft=LeftIR;//左边接收
if((irDetectLeft==0)&&(irDetectRight==0))//两边同时接收到红外线
{
Backward();
Left_Turn();
Left_Turn();
}
elseif(irDetectLeft==0)//只有左边接收到红外线
{
Backward();
Right_Turn();
}
elseif(irDetectRight==0)//只有右边接收到红外线
{
Backward();
Left_Turn();
}
else
Forward();
}
}
胡须屏障程序:
#include
#include
intP1_4state(void)
{
return(P1&0x10)?
1:
0;
}
intP2_3state(void)
{
return(P2&0x08)?
1:
0;
}
voidForward(void)
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
voidLeft_Turn(void)
{
inti;
for(i=1;i<=26;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
}
voidRight_Turn(void)
{
inti;
for(i=1;i<=26;i++)
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
voidBackward(void)
{
inti;
for(i=1;i<=65;i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
intmain(void)
{
intcounter=1;
intold2=1;
intold3=0;
uart_Init();
printf("ProgramRunning!
\n");
while
(1)
{
if(P1_4state()!
=P2_3state())
{
if((old2!
=P1_4state())&&(old3!
=P2_3state()))
{
counter=counter+1;
old2=P1_4state();
old3=P2_3state();
if(counter>4)
{
counter=1;
Backward();//向后
Left_Turn();//向左
Left_Turn();//向左
}
}
else
counter=1;
}
if((P1_4state()==0)&&(P2_3state()==0))
{
Backward();//向后
Left_Turn();//向左
Left_Turn();//向左
}
elseif(P1_4state()==0)
{
Backward();//向后
Left_Turn();//向左
}
elseif(P2_3state()==0)
{
Backward();//向后
Right_Turn();//向右
}
else
Forward();//向前
}
}
二、流水线总结
要说宝贝车是有趣的话,那么流水线生产则是实用的代名词,它在我们的日常生活应用最为广泛的!
各种各样的流水线生产不在是完全由人完成,而是基本都不用人工操作,用机器代替人工是社会发展的必然要求。
在这个实习中我们主要是根据流水线生产的运动过程写出了PLC电器控制图。
当然由于这个流水线生产自身也存在一些问题,我们也要提出自己的改进措施,在第五站的中我个人觉得主要存在的问题是机械臂的来回旋转会产生巨大的转动惯量,而转动惯量是由转动角速度、臂长、质量等决定的。
为了提高效率不能减小转动角速度,当然臂长和质量一般也是不能改变的,所以我提出的改进措施是在臂的摆动到位处增加缓冲机构,从而减小臂摆时的冲击。
下面是PLC控制的梯形图和指令表:
三、机械臂总结
机械臂是我们实习的第一站,两个周的实习也是从这里开始的。
通过学习系统基础硬件和软件构成,了解了各部件名称、功能及使用方法,也了解了控制软件平台、示教再现控制方式及其演示软件。
学会了用机器人控制两种坐标空间运动模式的操作设计。
通过机械臂的操作使用,了解了部分控制器件的功能、使用方法和基本控制原理。
最后当然是通过编程训练,学会了用绘图语言控制工业机器人的基本编程方法、设计绘图程序控制机械臂并绘出实际图形。
通过前面的学习加之老师的细心讲解,我也学会了使用鼠标、手写板和摄像头控制机械臂绘制图案文字和素描肖像。
咋一看,机械臂画的图好像只是好看,没有什么实用的地方。
但是实际的事实并不是这样的,它在好多的工业生产中发挥着重要的作用,在给油方面表现尤为突出。
下面的是我在实习过程中编写的绘图程序和绘出的肖像图:
画五角星程序:
VAR//程序主体运动开始标志
floati;
floatd;
floatr1;//定义外圆的半径
floatr2;//定义内圆的半径
floatx;
floaty;
floata,b;
floatp;
BEGIN
i=0;
d=54;//初始角度
p=3.1415926;//3.1415926为圆周率的值,这是为了画圆而定义的
r1=100;//外圆半径赋值
r2=38.196601;//内圆半径计算赋值
x=160;//圆心x坐标
y=120;//圆心y坐标
a=x+r2*cos(d*p/180);
b=y-r2*sin(d*p/180);
MoveTo(a,b);//笔画的起点
while(i<5)//循环体结构,当i<5时不断的画圆弧
{
d=d+36;
a=x+r1*cos(d*p/180);
b=y-r1*sin(d*p/180);
LineTo(a,b);//画当前点到(a,b)点坐标的直线
d=d+36;//角度增加36
a=x+r2*cos(d*p/180);
b=y-r2*sin(d*p/180);
LineTo(a,b);
i=i+1;//改变循环条件
}
END
画出的图形如下:
//四叶玫瑰线:
VAR//程序主体运动开始标志
floatd;
floatr;//定义圆的半径
floatx;
floaty;
floata,b;
floatp;
BEGIN
d=0;//初始角度
p=3.1415926;//3.1415926为圆周率的值,这是为了画圆而定义的
r=120;//半径r
x=160;//圆心x坐标
y=120;//圆心y坐标
a=x;
b=y;
MoveTo(a,b);//笔画的起点
while(d<6.283)//循环体结构,当i<6时不断的画圆弧
{
a=x+r*sin(2*d)*cos(d);
b=y+r*sin(2*d)*sin(d);
LineTo(a,b);//画当前点到(a,b)点坐标的直线
d=d+0.01;//角度增加0.01弧度,为了使曲线更圆滑可使角度增量更小
}
a=x;//以下是画对称轴程序段
b=y;
MoveTo(a,b);
a=x+84.8528;
b=y+84.8528;
LineTo(a,b);
a=x;
b=y;
MoveTo(a,b);
a=x-84.8528;
b=y+84.8528;
LineTo(a,b);
a=x;
b=y;
MoveTo(a,b);
a=x+84.8528;
b=y-84.8528;
LineTo(a,b);
a=x;
b=y;
MoveTo(a,b);
a=x-84.8528;
b=y-84.8528;
LineTo(a,b);
END//程序结束
图形如下:
肖像图
四、个人体会与总结
两个周的实习是短暂的,但是在这两个周的实习中我还是学到了不少东西,尤其是那些平时书本中学不到的东西,就像俗话说的“世上无难事,只怕有心人”。
在本次的实习中,我们组做的是第五站。
看似很简单的一个站,在实习过程中却给了我们很大的困难,还好在老师的帮助下一切都顺利的完成了。
但是PLC程序的绘制和编辑给我们留下了深刻的记忆;开始的时候保存老是出现错误,导致我们编辑了好多次才成功的保存下来,幸好保存成功了,还是值得庆幸。
实习是我们大学生活必不可少的一部分,我们也会抓住每一次锻炼自己的机会让自己与实际更接近。
实习给我们提供锻炼自己动手能力的机会,让我们把自己在课堂上学的知识和实践中的东西结合起来,学以致用。
现在回忆这些天奋斗的过程,感触颇深啊!
有成功的喜悦也有失败的忧伤。
当面对自己做出的劳动成果时,感觉自己真的学到了很多知识,最重要的是还能把它们变成有技术含量的东西应用到实际生活中。
任何个人的力量都是有限的,在实习中我们通过几个人的团队合作达到了1+1大于2的效果,这也充分地说明团队合作的重要性。
感谢学校给我们这次机会,让我们能够通过这次机会锻炼自己的动手能力和团队协作能力!