第一篇:CAXA自动编程实习报告
实习报告可乐瓶底的画法
在CAXA制造工程师2004画可乐瓶底的造型之前,首先要分析其造型结构,根据分析,可乐瓶底的骨架主要有两类曲线组成,A类曲线和B类曲线。第一类是A类曲线,两两组成一组,彼此之间的夹角为11.2度,共有五组A类曲线均匀分布在一个圆周;第二类是B类曲线,共有五条均匀分布在圆周上,A曲线和B曲线的夹角为41.6度。可乐瓶底是由这两类骨架曲线放样而成,是一张曲面。
(1)绘制A曲线
如图所示,绘制顺序为依次绘制I,II,III,IV和V曲线及直线,然后过渡。
(这空的地方是画图的,你们要有个位置)
①绘制曲线I
a,按键盘功能,切换到XOZ坐标平面上。
b, 点击绘制圆弧工具,绘制起始角为330,终止角为360,圆心为(-47,0,0)半径为89.5的圆弧。
②绘制曲线II,点击直线图标,输入第一点为(0,0,-32),另一点为(8,0,-32)。③绘制曲线III,点击圆弧图标,绘制起始角为57,终止角为90,圆心为(8,0,-38)半径为6的圆弧。
④ 绘制曲线IV,点击直线图标,切换到切线/法线,绘制长度为20mm与曲线III相切的切线,用曲线裁剪工具裁剪掉直线IV的上半部分。
⑤绘制直线V,起点为(8,0,-37),终点为(45,0,-37)。
⑥在曲线I和直线V之间,直线IV和V之间用半径为6mm的圆弧过渡。⑦将这些直线及曲线组合成一条曲线。
(2)旋转拷贝A曲线均匀分布在圆周上。
①将做好的A曲线旋转拷贝11,2度。
②将刚做好的两条A类曲线旋转拷贝72度,拷贝份数为4。
(3)绘制B曲线。如下图,B类曲线绘图顺序依次为I,II,III,IV、V和VI。
(这空的地方是画图的,你们要有个位置)
①作两点直线I,首末点坐标分别为(0,0,-32)和(8,0,-32)。
②作圆弧II,圆心为(-5,0,11.4)半径为50mm。起始角为270,终止角为360。③作圆弧III,圆心为(7.5,0,0)半径为35mm,起始角为300.,终止角为360。④作圆弧IV,圆心为(8,0,-38),半径为6mm,起始角为45,终止角为90,。⑤作曲线V。圆弧II、III之间作过渡,半径为12mm。
⑥做曲线VI。圆弧II、IV之间作圆弧,半径为6mm。
⑦将曲线及直线组合成一条曲线B。
(4)旋转拷贝B曲线均匀分布在圆周上。
①将曲线B旋转移动-30.4度的正常位置,其中旋转轴为Z轴。
②将曲线B旋转拷贝4份,旋转角度为72度。
(5)将A类曲线和B类曲线作放样面。点击放样面图标,依次拾取曲线,点击鼠标右键
结束,生成放样面。
一,可乐瓶底的加工仿真
(1)(1)、定义毛坯。根据参照毛坯来定义,最后生成的毛坯是一个80mm*80mm*37mm的长方体形状。
(2)(2)、等高线粗加工
①在刀具参数设置中,选用直径为12mm的端铣刀。
②在加工参数1中设置加工方向是逆铣,Z切入层高是3mm,行距为10mm,行间连接方式是圆弧,加工余量为1mm,其他未默认状态。
③在加工参数2中设置起始点为(0,0,20)。
④切入切出方式为默认。
⑤下刀方式中设置安全高度为20mm,慢速下刀距离和退刀距离都是5mm,切入方式为倾斜线,距离为5mm,角度为10度。
⑥切削用量中只需把切入切出连接速度改为80,其他未默认值。
⑦加工边界参照毛坯就行了。
⑧参数确定后,点击“确定”,拾取加工对象(左键拾取,右键确认),拾取加工边界,点击右键,再按右键结束,系统开始计算。
⑼进行刀具轨迹仿真。
(3)(3)、等高线精加工
①在“等高线精加工”对话框中选择刀具参数为直径为6mm的球头铣刀。
②在加工参数1中设置加工方向为顺铣,Z向残留高度0.08mm,行距为2,行间连接方式为圆弧,加工精度为0.05mm,加工余量为0。
③在加工参数2中设置路径生成方式为不加工平坦部,起始点为(0,0,20)。④下刀方式、加工边界和切削用量和粗加工的设置一样。
⑤参数确定后,点击“确定”,拾取加工对象(左键拾取,右键确认),拾取加工边界,点击右键,再按右键结束,系统开始计算轨迹。
⑥分别进行粗加工和精加工刀具轨迹仿真。
⑦仿真完之后,点击菜单:加工-后置处理-生成G代码。分别把粗加工和精加工生成的程序保存到桌面上。
(4)(4)、等高线粗加工部分程序如下:
《
写程序的地方,你们只需要写一部分就行》
(5)(5)、等高线精加工部分程序如下:
《这儿也是》
三、可乐瓶底的机加工
(1)、选择工件并装夹
①选择直径R=80mm的棒料,截取50mm。
②将工件装夹上工作台。
(2)、机床上电及对刀
①开启主电源,然后通过面板上的按键启动机床。
②将急停旋开,随后机械回零,使X、Y、Z轴回到机床零点。
③选择手动方式,移动工作台使刀具与棒料的最右端接触,记下当前X的机床坐标的位置(负值),然后在刀补中再减去棒料的半径与刀具半径的和(R+r),此时X坐标对好了。再将刀具移动,使其与棒料最前端面接触,记下当前Y的机床坐标位置(负值),然后在刀补中再减去棒料的半径与刀具半径的和(R+r),此时Y坐标对好了。最后将刀具移动到工件上端面,使刀具与工件接触,记下当前Z的机床坐标位置(负值),然后直接将该数值填入刀补中。
④选择录入方式,点击“程序”,出现输入界面,输入G54,再点击“循环启动”按钮,输入的G54消失,说明录入成功!
(3)、验证工件坐标
①点击“回零”使X、Y、Z返回机床坐标零点。
②再次选择录入方式,同样点击“程序”当出现输入界面后输入G00 X0 Y0 然后点击“循环启动”,工作台自动运行,使工件中心正对着刀具的中心,到此对刀成功!
(4)、传输加工程序
①选择自动方式,再按一下自动,使其转入DNC方式,然后点击“循环启动”两下。②打开电脑中的程序,点击“传送”,程序即可自动传入机床,并自动控制机床开始加工零件!!
实习总结
此次CAXA实习主要是对运用软件自动编程与加工的实地操作,通过在计算机上
利用软件绘制图形并做出加工程序,再传输到机床上进行加工,使我明白了理论与实际之间是有很大差别的,理论学得很好但是不能很好的与实际联系起来,这样也不会有很好的收获!以下是我在此次实习中的体会还有遇到的问题及解决方案!体会————通常在计算机上我们可以在保证能够加工、没有干涉的情况下根据自己的意愿
随意选择刀具、毛坯材料进行加工,但是在我们实际操作时则不可,则需从多方面考虑,比如:
一、要考虑我们现有的能利用的刀具和材料有哪些,以防做好程序后没有合适刀具或是材料供我们使用;
二、要考虑机床夹具所能卡住的最大长度,以防设计的毛坯的最大长度超过机床夹具所能夹持的最大值;
另外,通过这次实习我体会到,计算机编程是很方便,但是它所生成的程序过于繁琐,实际加工时很费时!
问题及解决方案————在粗加工后,进行了换刀,将12mm的刀换成6mm刀,然后在不
改变X、Y的机床坐标的情况下,重新对了Z的机床坐标,并再次在刀补中输入同时进行了G54的录入及工件坐标验证,但是却发现此时工件坐标系已经改变。随后便进行一系列的检查,分别采用了a、重新对Z坐标,b、重新对X和Y坐标,但是还是不能解决问题。
最后在老师的指导下发现,我们在第一次对刀时就存在错误,是由于某些不明原因导致机床的“丢步”处成!最终经过调解将工件坐标系调到合适的位置加工!但是由于考虑疏忽,装夹刀具时卡入刀座的刀杆过长,致使伸出刀具不够长度,最总留下部分材料未加工!
总之,这次实习使我受益匪浅,让我学到了在课本上所学不到好多东西,像我们学机械的学生,要想在社会上立足,仅凭在学校学到的理论知识是远远不够的,不仅要靠理论,更多的是实践。
第二篇:CAA课程设计报告
目录
1.课程设计报告书····································1
2.电路原理分析······································2
3.PSpice程序设计···································
43.1 PSpice软件简介································4 3.2 实验步骤·······································4
3.2.1绘制原理图
3.2.2仿真、产生曲线
4.仿真结果分析 4.1 临界阻尼 4.2过阻尼情况
4.3欠阻尼情况
5.总结
武汉理工大学《电路CAA》课程设计说明书
课程设计任务书
学生姓名: 毛亚婷 专业班级: 电信0804班 指导教师: 黄晓放 工作单位:
信息工程学院 题 目: 电路CAA课程设计
━━基于PSpice的二阶电路的暂态分析
初始条件: 1.提供实验室机房及其PSpice软件; 2.选RLC串联或GCL并联电路。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):
1、熟练运用PSpice软件创建电路、模拟电路、显示或绘制结果(至少有三条曲线以上);
2、使用该软件进行二阶电路的零状态响应分析(分三种情况:过阻尼、欠阻尼、临界阻尼讨论);
3、独立完成课程设计说明书,课程设计说明书按学校统一规范来撰写,具体包括:
⑴ 目录; ⑵ 理论分析;
⑶ 程序设计; ⑷ 程序运行结果及图表分析和总结;
⑸ 课程设计的心得体会(至少800字,必须手写。);
⑹ 参考文献(不少于5篇)。
时间安排:
(1)布置课程设计任务,查阅资料,学习Pspice软件
两天;
(2)用Pspice软件进行电路分析
一天半;
(3)完成课程设计报告书及答辩
一天半;
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
武汉理工大学《电路CAA》课程设计说明书
2.原理分析
二阶电路的初始储能为零(即电容两端的电压和电感中的电流都为零),仅由外施激励引起的响应称为二阶电路的零状态响应。
图1 如图1所示为GCL并联电路,根据KVL有:
(1)
可得(2)
式(2)这是二阶线性非齐次微分方程,它的解将由特解和对应的齐次方程的通解组成。其特解与激励的形式相同,通解与零输入响应形式相同,再根据初始条件确定积分常数,从而得到全解。的特解与激励的形式相同,且为微分方程的一个解,则特解;
此微分方程的通解为其对应的齐次方程其特征方程为:的解。
其特征根为:
根据G、L、C取值的不同,特征根存在三种不同的情况:
武汉理工大学《电路CAA》课程设计说明书
1.当况。,即 时,特征根为两个不相等的实根,此时称为过阻尼情2.当,即 时,特征根为一对共轭复根,此时称为欠阻尼情况。
3.当,即 时,特征根为重根,此时称为临界阻尼情况。
武汉理工大学《电路CAA》课程设计说明书
3.PSpice程序设计
3.1 PSpice软件简介
Pspice是国际上广泛应用的通用电路模拟程序。主要是面对电子电路和集成电路的分析软件,是Spice的一种(PC)微机版本,而且版本不断的在完善、修改和更新。Pspice电路数据的输入既可以为文本方式,也可以为图形方式。供教学使用的Pspice通常只能分析规模较小的电路。
目前在Windows方式下的Pspice通常包括以下几个基本程序模块:电路原理图编辑程序Capture;激励源编辑程序Stimulus Editor;电路仿真程序Pspice A/D;曲线输出程序Probe;模型参数编辑程序Model Editor;元器件模型参数库LIB.Pspice能够处理的电子元器件非常广泛,可直接输入的电子元器件有:线性电路元件,非线性受控源,电子元器件,功率电子器件,用于电子测量、控制等常见的集成芯片等。
3.2 实验步骤
3.2.1绘制原理图
图2 1)运行Orcad Family Release 9.2 Lite Edition中的Capture CIS Lite Edition,新建空白Project,命名为GCL。
2)打开Place/Part,在ANALOG_P中选择相应的r、l、c,在SOURCE中选择IDC,将元器件摆放好位置。
3)选定元器件,右击选择Edit Properties修改元器件属性。4)连线。
3.2.2
仿真、产生曲线
(1)临界阻尼情况
设定L=1H,C=1uF,R=0.5k则
武汉理工大学《电路CAA》课程设计说明书
1)设置仿真参数: 单击,在出现的窗口中,Analysis Type设为Time domain,options在general settings打钩。在Run to栏填入5Ms,Start saving data栏填入0,在Maximum step栏填入40u,设置完单击确定。
2)运行pspice/run 指令,出现probe窗口,在改窗口中执行trace/add trace命令。
选择I(C),则曲线图为
曲线1
临界阻尼情况下I(C)变化
选择I(L),则曲线图为
曲线2
临界阻尼情况下的I(L)变化
选择V(C:1)-V(C:2),曲线图为
武汉理工大学《电路CAA》课程设计说明书
曲线3
临界阻尼情况下U(C)变化
(2)欠阻尼情况
将R的参数值设定为1k,并在仿真参数设定窗口中时将Run to栏填入15ms,重复上述仿真步骤,则I(C)、I(L)、U(C)的曲线图分别为
曲线4 欠阻尼情况I(C)变化
曲线5 欠阻尼情况I(L)变化
武汉理工大学《电路CAA》课程设计说明书
曲线6
欠阻尼情况U(L)变化
(3)过阻尼情况
将R的参数值分别设定为0.1k,此时电路处于欠阻尼情况下。在仿真参数设定时将Run to栏填入5ms,重复上述仿真步骤,则I(C)、I(L)、U(C)的曲线图分别为
曲线7 过阻尼情况I(C)变化
武汉理工大学《电路CAA》课程设计说明书
曲线8
过阻尼情况I(L)变化
曲线9
过阻尼U(C)的变化
武汉理工大学《电路CAA》课程设计说明书
4.仿真结果分析
4.1 临界阻尼
当R1=0.5K时,电路处于临界阻尼情况下时,其特征方程特征根为 ,此时电路的处于非振荡状态,L1的电流不断增大,不断的储存能量,的两个而C1电流先减小,到零后改变电流方向后电流大小先增大最终减小到零,C1的电压大小也是先增大最终最小到零。说明电容先储能后释放能量。
4.2过阻尼情况
当R1=0.4K时,电路处于过阻尼状态,两个特征根为两个不同的实数。此状态下的曲线下,与临界阻尼曲线十分相似,各原件的电压、电流与临界阻尼情况下基本相同。其实临界阻尼的情况是其他两种情况无限接近临界阻尼情况的极限情况。
4.3欠阻尼情况
当R1=2k时,电路处于欠阻尼情况下。两个特征根为复数。他们的波形呈现衰减振荡的状态,各原件的电压,电流方向呈周期性变化。储能原件也周期性地交换能量。最终C1的电压、电流都变成零,L1的电流最终为1A,电压为0。
5.总结
RLC串联电路中,在可变频的电压源V1的激励下,由于感抗、容抗随频率变动,所以电路中的电流应亦随频率变动。
RLC串联谐振频率只有一个,且只与R、L有关,与电阻R无关。
谐振电路的品质因数Q综合反映了电路中三个参数对谐振状态的影响。
6.参考文献
1)王源.电子电路CAD 程序及其应用[M].西安:西安电子科技大学出版社,2001.2)蔡元宇.电路及磁路(第2 版)[M].北京:高等教育出版社,2000.5.3)李永平.Pspice电路设计与实现.北京 国防工业出版社.2005.1 4)Rayender Goyal.High-frepuency Analog Integrated Circuit Design.New York:John Wiley &Sons.Inc,1995.武汉理工大学《电路CAA》课程设计说明书
5)Robert B Northrop.Analog Electronic Circruits.New York:Addison-Wesley Publishing Company,1990.6)Mark N Horenstein.Microelectronic Circruits and Devices.2nd ednew jersey:Prentice-Hall Inc,1996.
第三篇:自动实习报告
本科生课程设计(报告)
题
目: 姓
名: 学
院: 专
业: 班
级: 学
号: 指导教师:
自动控制原理课程设计
机械手终端执行器微机控制
王文栋
夏小成工学院
农业电气化与自动化
电气82、83班
3218303 3218217
李玉民
林相泽
2010年 12月 15日 南京农业大学教务处制
自动控制实习报告
一 课程设计目的:
针对具体的设计对象,对象参数进行数学建模,运用经典控制理论知识设计控制器,并运用Matlab进行仿真分析。通过本课程设计,建立理论知识与褓对象之间的联系,加深和巩固所学的控制理论知识,增加工程实践能力。
二 课程题目:机械手终端执行器微机控制
控制设计对象结构示意图:
机构参数:
克服摩擦力矩M 2 x 10Nmf
电压变电流放大倍数K 1A/VI
电流变力矩放大倍数K 0.5NmT
传感器变换系数K 0.83V0
所夹容器的最大直径D 0.2mmax
弹性衬垫的压缩量为(5mm~8mm)时可压紧容器又不至于损坏容器,期望压缩量
为6mm
最终性能要求: ,ts,精度 %15%1.5%0.1mm三 问题理论分析:
1、控制过程分析:
系统运动分为三个阶段:
(1)加速阶段,初始位置为夹钳最大开度0.2m,加速时间为0.5s。
(2)减速阶段,起始时为夹钳接触玻璃容器开始,减速最大行程为5mm,以上两个
阶段采用开环控制,以提高响应速度。
(3)夹紧阶段,减速阶段完成后,这时传感器开始有输出,起始位置为减速结束的位、置。
2、控制系统模型分析:
前两个阶段用开环控制,先求系统传递函数,根据电动机输出转矩与电动机转子角速度之间的关系有:
dwMMf dt2Rm2其中:J 为转动惯量;J rdrd3.125X10200R
为电动机转子角速度
M电动机输出电磁转矩
J
Mf摩擦转矩
R电机驱动轮半径
d2
又因为:;为转子角位移
dt2d2J2MMf
则:dt 以及:y=R
2Js(s)M(s)Ms)f(对以上两式去拉氏变换 Y(s)(s)R
可以得到Y(s)M(s)Ms)f(R2Js
G(s)Y(s)R2
M(s)Ms)Jsf(代入数据可得:G(s)80 2s22MMdydf加速度 a 2RR80MMf2dtdtJ
第三个阶段需要用闭环控制,增加反馈环节H(s),由传感器参数可得计算得H(s)。由于原系统的传830递函数为G(s)80,可知系统临界稳定,因此我们要加入一个闭环控制器,其目的是为了增大系统阻尼比,2sKIKDSKP,其中KI、KD、KP分别为需要确S因此我们选用PID校正。PID控制器的数学模型Gc(S)定的积分、微分、比例常数。
3、参数计算:
第一阶段:加速阶段
12a1t0.1由2 a180(MMf)20.03Nm
得:a,输入信号电压V.8m/s,M10
第二阶段:减速阶段
M0.06V KIKT
12a2t0.005由2 v2v22as02t得a,输入信号电压V=-0.36V 0.18Nm16m/s,M2
第三阶段加入控制器后所得闭环传递函数为:(s)Gc(s)KIKTG(s)Y(s)
把R(s)1Gc(s)KIKTG(s)H(s)Gc(S) KIKDSKP代入 S(1)可得闭环特征方程为:s333200KDs23200KIs33200kI0
由%e
再由ts21
可得0.517 X100%15%4n5.1581.5可得wn2.7
可取wn3.6 n
再由=0.517,可取主导极点s1=-3.6+j4.8,s2=-3.6-j4.8 由闭环特征方程(1)可知,方程有三个极点,为了不改变主导极点的主导特性,且保证它的绝对主导性,使系统的稳定性能较好,超调量小,调整时间小,所以
一般取极点到虚轴的距离为主导极点到虚轴距离的5倍以上,可取s3=300.,可得闭环特征方程:(2),(s-300)*(s+3.6+j4.8)*(s+3.6-j4.8)=0 将方程(2)展开和方程(1)进行比较,可得
I0.326,P0.066,D0.00093;Gc(S)KIKDSKP=0.326/S+0.00093S+0.066;代入控制结构框图中 S23所以控制器
:可得校正后的开环控制方程:G1(s)=(0.0372s+2.64s+13.04)/s4、建立系统传递函数动态结构图:
有以上分析该系统分为三个阶段,加速阶段、减速阶段和控制阶段,其中为了达到快速控制的目的,前两个阶段采用开环控制,第三个阶段采用闭环控制。Simulink仿真图如下:
四 仿真图结构图
结
构
仿
真
图
五 系统开环控制的Bode图:
校正前的开环控制Bode图:G(S)=40/(s*s)
Bode Diagram35302520Magnitude(dB)Phase(deg)151050-5-10-179-179.5-180-180.5-181100Frequency(rad/sec)101
校正后的开环控制Bode图:G1(S)=(0.0372*s*s+2.64s+13.04)/(s*s)
Bode Diagram100
50Magnitude(dB)Phase(deg)0-50-100-150-90-135-180-225-27010-1100101Frequency(rad/sec)102103104
六 程序
校正前:40/(s*s)num=[40 ];den=[1 0 0];bode(num,den)grid
校正后:(0.0372s2+2.64s+13.04)/s3
>> num=[0.0372 2.64 13.04];>> den=[1 0 0 0];bode(num,den)grid
七
实习心得:
此次实习刚开始,由于刚开始对MATLAB这个软件工具不怎么熟悉,所以导致周一一整天都在熟悉这个软件,其他同学已经在思考怎么去实现想要的结果,在一开始就比别人慢了一步,但我和组员没有灰心,我们认真积极思考,最后还是有了一个整体的思路,顺利完成了实习任务,得到了想要的数据结果。
这次实习我们学到了很多新知识,那就是MATLAB跟PID校正。对于MATLAB,在以前的课程中曾经涉及,但我们都是跳过不讲的,这是首次用此软件。至于PID校正呢,我们根据书上讲的来实际操作。
我们从实验中对所学的知识加深了理解和巩固,也学会了Matlab的一些基本运用,知道了如何用MATLAB来显示输出响应曲线,以及如何用MATLAB来显示Bode图,如何用PD控制来改善系统性能。这次实习,让我们知道了如何将自己所学的理论知识和实践运用相结合,怎么分析和解决实际的工程问题。
通过这次实验,我发现我的自控原理有的地方学的还不够扎实,导致 在实习的过程中,碰到了一些简单的问题,自己都不能解决,还要去翻阅书本,我觉得这是我的不足,要想有好的实践能力,必须要掌握好理论知识,在今后的学习过程中,我要注意这方面能力的培养,将理论与实践相结合,真正做到学以致用。
第四篇:网络编程实习报告
[实习目的]
通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,并为自己能顺利与社会环境接轨做准备。[实习任务]Linux下网络服务器开发(基于C语言);本文总结了我对Linux下网络服务器模型的认识。[实习内容]一.循环服务器1.循环服务器在同一个时刻只可以响应一个客户端的请求,对多个客户程序的处理是采用循环的方式进行; 2.UDp循环服务器的实现非常简单:UDp服务器每次从套接字上读取一个客户端的请求,处理, 然后将结果返回给客户机;2.1.算法如下(UDp服务器): socket(...);
bind(...);
while(1)
{
recvfrom(...);
process(...);
sendto(...);
}3.TCp循环服务器的实现也不难:TCp服务器接受一个客户端的连接,然后处理,完成了这个客户的所有请求后,断开连接;3.1.算法如下(TCp服务器):
socket(...);
bind(...);
listen(...);
while(1)
{
accept(...);
while(1)
{
read(...);
process(...);write(...);
}
close(...);
}3.2.TCp循环服务器一次只能处理一个客户端的请求.只有在这个客户的所有请求都满足后, 服务器才可以继续后面的请求.这样如果有一个客户端占住服务器不放时,其它的客户机都不能工作了.因此,TCp服务器一般很少用循环服务器模型的.二.并发服务器1.为了弥补循环TCp服务器的缺陷,人们又想出了并发服务器的模型。并发服务器的思想是每一个客户机的请求并不由服务器直接处理,而是服务器创建一个子进程来处理;2.使用并发服务器可以使服务器进程在同一个时刻有多个子进程和不同的客户程序连接、通信;在客户程序看来,服务器可以同时并发地处理多个客户的请求;3.算法如下(TCp服务器):socket(...);
bind(...);
listen(...);
while(1)
{
accept(...);
if(fork(..)==0)
{
close(...);while(1)
{
read(...);
process(...);
write(...);
}
close(...);
exit(...);
}
close(...);
}4.TCp并发服务器可以解决TCp循环服务器客户机独占服务器的情况,改善了对客户程序的响应速度;不过也同时带来了一个不小的问题:为了响应客户机的请求,服务器要创建子进程来处理,而创建子进程是一种非常消耗资源的操作,这明显增加了系统调度的开销;5.为了解决创建子进程带来的系统资源消耗,人们又想出了多路复用I/O模型.5.1.该模型一般用函数select和相关的四个宏定义:intselect(intfd,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,structtimeval*timeout)
voidFD_SET(intfd,fd_set*fdset)
voidFD_CLR(intfd,fd_set*fdset)
voidFD_ZERO(fd_set*fdset)
intFD_ISSET(intfd,fd_set*fdset)5.2.一般的来说当我们在向文件读写时,进程有可能在读写时候阻塞,直到一定的条件满足.比如我们从一个套接字读数据时,可能缓冲区里面没有数据可读(通信的对方还没有发送数据过来),这个时候我们的读调用就会等待(阻塞)直到有数据可读.如果我们不希望阻塞,我们的一个选择是把socket设置为非阻塞模式来实现;int socketfd;socketfd=socket(AF_INET,SOCK_STREAM,0);fcntl(socketfd,F_SETFL,O_NONBLOCK);通过设置socket为非阻塞模式,可以实现“轮循”多个socket,当企图从一个没有数据等待处理的非阻塞socket读取数据时,函数立即返回,但是这种“轮循”会使CpU处于忙等待方式,降低了性能,select函数解决了这个问题;5.3.在我们调用select时进程会一直阻塞直到以下的一种情况发生.1)有文件可以读.2)有文件可以写.3)超时所设置的时间到;5.4.算法如下(多路复用I/O模型):初始化(socket,bind,listen);
while(1)
{ 设置监听读写文件描述符(FD_*);
调用select;
如果是倾听套接字就绪,说明一个新的连接请求建立
建立连接(accept);
加入到监听文件描述符中去;
否则说明是一个已经连接过的描述符
进行操作(read或者write);}
多路复用I/O可以解决资源限制的问题.着模型实际上是将UDp循环模型用在了TCp上面.这也就带来了一些问题.如由于服务器依次处理客户的请求,所以可能会导致有的客户会等待很久。三.I/O模型1.网络服务器模型根据I/O模型的不同实现而来的;2.I/O模型分为同步I/O和异步I/O;同步I/O又包括阻塞I/O、非阻塞I/O、信号驱动I/O、多路复用I/O;可根据不同的要求利用不同的I/O模型实现不同是网络服务器。[实习心得] 通过近几个月的实习,基本上掌握了Linux下C语言网络编程的一些算法和技巧,提高了自己的能力。专业:计算机网络技术 班级:03631 学号:63103089 姓名:吕亮亮——XX.05.23
第五篇:网络编程实习报告
广东应届生实习报告网在线编辑整理本文。
[实习目的]
通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,并为自己能顺利与社会环境接轨做准备。[实习任务]Linux下网络服务器开发;本文总结了我对Linux下网络服务器模型的认识。[实习内容]一.循环服务器1.循环服务器在同一个时刻只可以响应一个客户端的请求,对多个客户程序的处理是采用循环的方式进行;2.UDp循环服务器的实现非常简单:UDp服务器每次从套接字上读取一个客户端的请求,处理,然后将结果返回给客户机;2.1.算法如下:socket(...);
bind(...);
while(1)
{
recvfrom(...);
process(...);
sendto(...);
}3.TCp循环服务器的实现也不难:TCp服务器接受一个客户端的连接,然后处理,完成了这个客户的所有请求后,断开连接;3.1.算法如下:
socket(...);
bind(...);
listen(...);
while(1)
{
accept(...);
while(1)
{
read(...);
process(...);write(...);
}
close(...);
}3.2.TCp循环服务器一次只能处理一个客户端的请求.只有在这个客户的所有请求都满足后,服务器才可以继续后面的请求.这样如果有一个客户端占住服务器不放时,其它的客户机都不能工作了.因此,TCp服务器一般很少用循环服务器模型的.二.并发服务器1.为了弥补循环TCp服务器的缺陷,人们又想出了并发服务器的模型。并发服务器的思想是每一个客户机的请求并不由服务器直接处理,而是服务器创建一个子进程来处理;2.使用并发服务器可以使服务器进程在同一个时刻有多个子进程和不同的客户程序连接、通信;在客户程序看来,服务器可以同时并发地处理多个客户的请求;3.算法如下:socket(...);
bind(...);
listen(...);
while(1)
{
accept(...);
if(fork(..)==0)
{
close(...);while(1)
{
read(...);
广东应届生实习报告网在线编辑整理本文。process(...);
write(...);
}
close(...);
exit(...);
}
close(...);
}4.TCp并发服务器可以解决TCp循环服务器客户机独占服务器的情况,改善了对客户程序的响应速度;不过也同时带来了一个不小的问题:为了响应客户机的请求,服务器要创建子进程来处理,而创建子进程是一种非常消耗资源的操作,这明显增加了系统调度的开销;5.为了解决创建子进程带来的系统资源消耗,人们又想出了多路复用I/O模型.5.1.该模型一般用函数select和相关的四个宏定义:intselect(intfd,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,structtimeval*timeout)
voidFD_SET(intfd,fd_set*fdset)
voidFD_CLR(intfd,fd_set*fdset)
voidFD_ZERO(fd_set*fdset)
intFD_ISSET(intfd,fd_set*fdset)5.2.一般的来说当我们在向文件读写时,进程有可能在读写时候阻塞,直到一定的条件满足.比如我们从一个套接字读数据时,可能缓冲区里面没有数据可读(通信的对方还没有发送数据过来),这个时候我们的读调用就会等待(阻塞)直到有数据可读.如果我们不希望阻塞,我们的一个选择是把socket设置为非阻塞模式来实现;intsocketfd;socketfd=socket(AF_INET,SOCK_STREAM,0);fcntl(socketfd,F_SETFL,O_NONBLOCK);通过设置socket为非阻塞模式,可以实现“轮循”多个socket,当企图从一个没有数据等待处理的非阻塞socket读取数据时,函数立即返回,但是这种“轮循”会使CpU处于忙等待方式,降低了性能,select函数解决了这个问题;5.3.在我们调用select时进程会一直阻塞直到以下的一种情况发生.1)有文件可以读.2)有文件可以写.3)超时所设置的时间到;5.4.算法如下:初始化(socket,bind,listen
while(1)
{设置监听读写文件描述符(FD_*);
调用select;
如果是倾听套接字就绪,说明一个新的连接请求建立
建立连接(accept);
加入到监听文件描述符中去;
否则说明是一个已经连接过的描述符
进行操作(read或者write);}
多路复用I/O
广东应届生实习报告网在线编辑整理本文。可以解决资源限制的问题.着模型实际上是将UDp循环模型用在了TCp上面.这也就带来了一些问题.如由于服务器依次处理客户的请求,所以可能会导致有的客户会等待很久。三.I/O模型1.网络服务器模型根据I/O模型的不同实现而来的;2.I/O模型分为同步I/O和异步I/O;同步I/O又包括阻塞I/O、非阻塞I/O、信号驱动I/O、多路复用I/O;可根据不同的要求利用不同的I/O模型实现不同是网络服务器。[实习心得]通过近几个月的实习,基本上掌握了Linux下C语言网络编程的一些算法和技巧,提高了自己的能力。专业:计算机网络技术班级:03631学号:63103089姓名:吕亮亮——XX.05.23