版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1前言数控机床进给伺服系统由伺服电路、伺服驱动装置、机械传动机构及执行部件构成。它作用是:接受由数控系统发出进给位移和速度指令信号,由伺服驱动电路作一定转换和放大后,经伺服驱动装置(直流、交流伺服电机、直流电机、功率步进电机、电液伺服阀—液压马达等)相机械传动机构,驱动机床工作台、主轴头架等执行部件实现工作进给和迅速运动。数控机床进给伺服系统与普通机床进给系统有本质上差别,它能依照指令信号精准地控制执行部件运动速度与位置,以及几种执行部件按一定规律运动所合成运动轨迹。发展高性能数控进给伺服系统,在很大限度上决定了机床加工精度、表面质量和生产效率。数控进给伺服系统性能取决于构成它伺服驱动系统与机械传动机构中各环节特性,也取决于系统中各环节性能参数合理匹配。以伺服驱动装置与控制调节器为中心伺服驱动系统已有较成熟理论分析、实验研究和设计办法。图1.1数控进给系统在CNKI中所受关注度(来源于CNKI学术趋势)由图1.1可以看出,数控进给系统研究,近年来也逐渐受到诸多学者注重,她们也进行了不少工作,并获得了一定得进步。这些进步均有效地增进了进给伺服系统技术发展,进给系统功能也随之得到了巨大提高。但是,若只有单轴进给系统精度等各方面性能优越是不够,在双轴或多轴系统中,它们各自不一定可以完全发挥各自优越性,这样就会导致严重资源挥霍,不利于实际生产。只有在各个进给系统之间参数密切配合才可以将每个进给系统性能发挥到极致,这样就有效地提高了资源运用率,对实际生产才有益。因而,进一步研究数控机床中伺服系统特性以及探寻测试数控机床机电匹配办法、途径,并探讨数控机床机电匹配作用、地位,并定性、定量地分析系统增益匹配对运动(加工)轨迹精度影响就显得尤为重要。只有对的结识进给系统特性以及进给系统增益对轮廓加工精度影响,才可以采用有效办法提高整个数控系统整体性能,服务于整个数控行业。1.1数控进给伺服系统特点数控机床进给系统与普通机床不同。数控机床数控系统发出进给指令,经进给电动机和驱动机构,使执行部件如刀架、工作台、主轴箱等按程序规定运动。数控机床进给系统,按其控制方式,可分为开环、半闭环和闭环三类。开环系统构造简朴,但是当载荷突然发生激烈变化时,也许导致执行部件运动误差。闭环系统可以检查指令执行状况并及时反馈误差信息,因此精度较高。半闭环由于反馈装置装在伺服电机或丝杠上,不能纠正丝杠误差以及受载后丝杠、轴承等变形,因此精度比全闭环低。在大多数精度规定较高机床上都采用全闭环控制。但执行部件是一种质量元件,传动机构是一种弹性元件,因而执行机构和传动机构构成一种振荡环节。全闭环系统如果参数选得不适当,则有也许产生进给振荡。数控系统发出进给位移和速度指令,通过转换和功率放大后,作为伺服驱动装置输入信号,并控制其作某一速度和距离角位移和直线位移,从而驱动执行部件实现给定速度和位移量。伺服驱动装置性能,在很大限度上影响机床进给系统品质,因而,伺服驱动装置应满足如下规定。=1\*GB3①调速范畴宽:调速范畴是指最高进给速度与最低进给速度之比。在整个调速范畴内,输出运动要有良好稳定性。普通调速范畴应不不大于1:10000,并且低速应当可以达到0.1r/min如下。对于普通数控机床,其进给速度都在1mm/min~24000mm/min范畴之内,即调速范畴为:1:24000。在这一调速范畴内,规定速度均匀、稳定、低速时无爬行,还规定当速度为0mm/min时,伺服电机处在电磁锁住状态,以保持定定位精度不变。=2\*GB3②位移精度高:即输出位移有较高精度,也就是实际位移与指令位移量之差要小。当代数控机床位移精度普通为0.01~0.001mm,甚至可以高至0.1μm。=3\*GB3③稳定性好:即负载特性要硬,当负载发生变化或承受外界干扰时,输出速度应基本不变,并且保持平稳均匀。当低速运动相加工时,应有足够负载能力和过载能力。=4\*GB3④动态响应快:即有高敏捷度,达到最大稳态速度时间要短,普通规定在200-100ms以内,有时甚至规定不大于几十毫秒。动态响应快慢,反映了系统跟踪精度高低,直接影响了轮廓精度高低和加工表面质量好坏。出此之外,还规定静态、动态误差小,反向死区小,能频繁启、停和正反运动。1.2设计任务本次毕业设计,笔者将完毕如下设计任务:①建立数控机床进给系统数学模型,分析数控进给伺服系统特性;②以数控直线加工状况为基本,定性分析数控机床中进给增益匹配作用;③定量分析数控机床中进给系统增益匹配对运动(加工)轨迹精度影响;④开发出基于PC分析测试软件,规定该软件具备数据采集、误差分析、数据浏览、图形显示、成果分析等功能;⑤撰写符合有关规定软件设计阐明书、使用阐明书和测试分析报告;⑥撰写毕业设计阐明书。1.3总体方案本次设计总体方案由理论分析某些和软件测试某些构成,总体方案图如下图1.1所示:图1.2总设计方案图如图1.2所示,由理论分析某些和软件设计某些构成,笔者将在2章简介理论某些,在3、4、5章将对软件某些进行简介。总方案实现思路如下:理论某些系统建模是特性分析基本,笔者将选用惯用进给系统构造进行建模,然后对其进行传递函数推动,从而进行特性分析,最后通过定性和定量两个方面就进给系统参数匹配对轮廓加工精度影响进行分析。鉴于理论分析成果,为了提高其实际使用价值,并充分运用于实际生产过程中,笔者将在WindowsXP系统下基于VC++开发环境设计一套系统进给增益匹配测试软件,最后运用PC机接口电路采集位移数据对该软件进行检测,从而见证测试软件实用性。总方案详细实现细节请参看有关章节。
2数控进给伺服系统2.1数控进给伺服系统构造原理2.1.1数控进给伺服系统构造图2.1为采用全闭环控制数控机床进给伺服系统构造图,当前大某些高速机床都采用与此类似控制构造。感应同步器感应同步器位置检测单元测速发电机交流伺服电机位置控制单元速度控制单元图2.1数控机床进给伺服系统构造图此种闭环进给系统采用感应同步器作为位置检测装置,涉及位置控制单元、位置检测单元和速度控制单元等某些。位置检测单元测得执行部件实际位置,位置控制单元将位置指令与差值乘以增益常数,经变换后,得到速度指令电压。将与测速发电机反馈电压差值通过速度控制器乘以增益常数,得到伺服电机电枢电压,它控制电机旋转速度。指令位置与实际位置相等时,也就是位置偏差值为0时,与均为0,系统停止工作,执行部件到达指令所规定位置。因此整个系统在偏差不为0时,始终处在不断凋整阶段,因而,增益系数在整个进给过程中,对系统迅速到达指定位置起着至关重要作用。本文将会针对进给系统增益系数匹配对加工精度影响做进一步进一步分析,那么,一方面让咱们理解一下位置误差物理概念以及位置误差是如何产生。2.1.2位置误差深刻理解位置误差物理概念对数控进给系统性能分析至关重要,不妨假设系统获得一种恒速指令信号,下面就针对恒速进给时位置误差进行分析。如图2.2(a)所示,当进给系统获得恒速F进给位置指令时,执行部件实际速度并不能及时达到指令速度值F,而是从零逐渐上升到F值,后来就稳定在此速度值上运营。在时,位置指令到达指令值,指令速度下降至零,但是执行部件实际速度只能逐渐下降到零。将指令位移量,按脉冲当置换算成数字量,则以恒速F进给指令位置数字量值将按如图2.2(b)所示指令位置直线(直线OP)变化,由零时刻零位置到达时刻位置。由于实际速度是逐渐上升至F值,因此按同一脉冲当量换算成数字量实际位置值将按另一条曲线变化,实际位置总是滞后于指令位置。时刻瞬时位置指令值与瞬时实际位置值之间差值,称为该时刻位置偏差。它由执行部件升速启动时零值逐渐增大到某一稳态值,这一稳态值就是所谓速度误差或随动误差,当执行部件减速并停止时,它由稳态值逐渐减小到零。(b)(a)结束图2.2位置误差运用再乘上,并加上位置误差补偿,可得速度指令值,再变换为速度指令电压。可见越大,则就越大,伺服电机速度就越高。并且控制启动与停止时位置指令值大小,从而控制变化大小,就可以控制升降速快慢,即升降速时间长短。普通而言,按照等差数列或指数曲线规律变化,可获得直线或指数规律升降速。2.2进给伺服系统数学模型数控进给伺服系统,总是接受数控系统发出位置与速度指令。驱动执行部件在一定切削参数下进行加工。从控制系统角度来看,位置指令是系统一种输入;与切削或使用条件关于负载可以说是系统干扰输入。执行机构位置(角位移或直线位移)是系统输出。进给系统特性重要是系统静态特性,以及在指令与负载作用下动态特件。然而,咱们在设计与分析进给系统特性时,重要分析它动态特性。从加工精度和加工能力方面来考虑,动态特性重要有两个方面:与输入指令关于特性,即执行部件跟随位置指令特性,这就是执行部件定位精度或直线与轮廓进给精度;此外,执行部件由于切削力等因素将产生静态或动态变位,因而减少了加工精度甚至产生系统震荡。除此以外,还规定系统必要是稳定。从指令信号、给定装置到伺服驱动装置,为构成进给系统重要构成某些,称之为伺服驱动系统。另一某些是伺服驱动装置后来机械传动机构。进给系统可以概括成如图2.3所示构造。在设计和分析进给系统时,既要设计这两个某些并分析各自特性,还规定这两某些合理匹配,从整体上综合系统特性。输出输出伺服驱动系统机械传动机构输入检测装置图2.3进给系统构造图下面将以图2.3中所示闭环系统为例,简要论述动态特性方面问题。2.2.1伺服驱动系统数学模型图2.1所示为采用直流伺服电机驱动全闭环控制进给伺服系统构造图。伺服驱动系统由位置控制器与速度控制器构成。位置指令与实际位置反馈值之差=-,经数模变换与放大后,变为速度指令电压,位置控制单元作用是一种比例放大环节,它传递函数为常数,因而有(2.1)速度指令电压与测速发电机速度反馈信号之差值为速度误差信号,经速度控制单元变换放大后,获得直流伺服电机电枢控制电压,速度控制单元同样是一种比例放大环节,比例系数即为传递函数,它们关系式为:(2.2)式中:——直流伺服电机角位移;——速度反馈环增益系数。此处,位置控制器与速度控制器都是采用比例控制,这是现今实际使用大多数进给伺服系统所采用控制方略。在这两个控制器中,可以采用PI控制器、PID控制器,甚至其她控制方案,固然其传递函数也要发生变化。2.2.2机械传动机构数学模型以伺服电机角位移作为机械传动机构输入,以执行部件运动作为输出,所设计机械传动机构是各种各样。但是采用大惯量直流伺服电机时,可以将电机通过联轴器与滚珠丝杠直接相连,如图2.4(a)所示。如果由于构造因素,或者规定放大力矩时,可以通过一对降速齿轮或齿链传动将电机与滚珠丝杠连接起来,如图(b)所示。含齿轮构造x含齿轮构造xoFcFcrmJ2,Z2M,J,θM
θMJ1,Z1JS=2\*ROMANII=1\*ROMANI不含齿轮构造xoFcFcrmJc,JsM,J,θM
θM图2.4进给机械传动机构图由于机械传动机构某些不是本文讨论重点,因此笔者略去对于机械传动机构中各种参数(如转动惯量、刚度等)等效折算。有了机械传动机构等效动力学模型,便可推导出系统动特性方程和传递函数。对于图2.4(a)所示动力学模型,其转矩平衡方程为:弹性变形方程为:对以上两式进行拉氏变换得整顿后可得如果觉得系统输出,为输入,为扰动输入,则=0情况下,与之间传递函数为:令固有频率,阻尼比,则上式可以变成原则形式如下:由上式可以看出,机械传动系统是一种固有频率为,阻尼比为二阶系统,其构造框图如图2.5所示。图2.5进给机械传动构造图依照图2.5和原则形式传递函数可以看出,此机械传动系统为二阶振荡环节。在推导机械传动部件传递函数过程中,不但要得出等效惯量和等效阻尼,并且要考虑等效刚度,这是由于惯性和刚度直接决定机械部件固有频率,该固有频率关系到整个伺服机构刚性和工作稳定性。阻尼特性则和系统定位精度、工作稳定性关于。若将机械传动机构简化为如图2.4(b)所示构造,得到传递函数将会是是如何呢?笔者推导其传递函数如下:由图2.1可知,电机轴上负载有二:其一是惯性负载(2.3)式中,,即电机轴与丝杆之间连接件与传动件折算转动惯量与丝杆折算转动惯量之和。其二是传动弹簧变形力折算到电机轴上等效转矩。(2.4)式中,——执行部件直线位移(输出量);——电机对执行部件输入位移。系统动力平衡方程为(2.5)式中,——执行部件质量;——导轨副上粘性阻尼性系数;——外载荷,且。弹性变形力就是执行部件驱动力(2.6)对以上两式进行拉氏变换,并整顿后得(2.7)以为系统输出,为系统输入,不考虑外力时,机械系统传递函数为:(2.8)可见,是一种二阶系统,固有频率为:阻尼比为:其构造框图如图2.6所示。图2.6进给机械传动构造框图综上所述,无论选取图2.4所示两种构造中任意一种,通过推导均可得一种二阶系统,虽然固有频率和阻尼比会有一定差别,但是构造框图完全相识。2.2.3数控进给伺服系统数学模型前面已经对位置控制、速度控制以及机械传动机构等环节数学模型进行了分析。如果分析机械传动机构时,采用2.4(b)所示模型,这样将几某些综合起来,就可以得到整个进给系统数学模型以及传递函数。下面对如图2.1所示闭环进给系统进行分析。系统采用直流伺服电机作为驱动电机,电机转动惯量为J,电磁转矩为M,电机力矩平衡方程式应为:(2.9)式中:——电枢阻尼转矩系数;——电机负载转矩,且。电机电磁转矩,故有由电压平衡方程及可以求得:在上式子中,可以略去及两项,并去拉氏变换后得:上式子中不考虑电机负载转矩,则觉得输入,为输出时,电机传递函数为:(2.10)上式也可以改写为如下形式:(2.11)式中:——电机增益系数,;——电机机械时间常数,;——电机电气时间常数,。综合前面推导式(2.1)、式(2.2)、式(2.4)、式(2.6)、式(2.11)以及机械某些传递函数式(2.7),再结合到,可以绘制出整个进给系统构造框图,如图2.7所示图2.7进给伺服系统构造框图图2.7中,是机械传动系统外载荷,与作为负载力矩与惯性负载力矩反馈作用在电枢输入端。对于闭环系统,位置控制环位置反馈信号就是执行部件位置输出信号;对于半闭环系统,位置反馈信号取自电机角位移信号。以构成负反馈回路形成速度控制环.反馈信号从即取出,这就是速度负反馈。由图2.7,可以求出系统对于干扰力闭环传递函数,以及对于位置指令闭外传递函数。系统输出是位置指令响应和干扰负载响应之和。在所述系统中,外界负载有两某些,一某些是切削力;另一某些是摩擦力。又分为两某些:第一某些与速度成比例,即阻尼系数为粘性摩擦阻尼力,该阻尼力在执行部件力平衡方程式(2.5)中考虑,第二某些是导轨之间固体摩擦力及传动件彼此之间固体摩擦扭矩(它可以换算为执行部上轴向力为),即综上所述,如图2.7所示闭环进给系统,在位置指令和干扰负载作用下,全闭环位置输出为:在半闭环时,位置输出为:式中,上两式系数为:2.2.4进给伺服系统构造简化从图2.7中还可以看出,所建立数控伺服系统是一种高阶系统,在将产品和系统调定参数代入后,可得到一种高阶传递函数。对高阶系统分析和设计是比较复杂,为便于分析,咱们需要对高阶系统进行解决,普通采用直接降阶解决。如果忽视高阶模型中对特性影响很小系数,直接降阶得到一种二阶系统,这样本来高阶系统就被简化为一种二阶系统。为了使得简化过程更加严密,笔者引用了参照文献[1]有关结论图2.8降阶先后X轴进给系统BODE图文章中,作者对X—Y双轴数控工作台系统进行分析,对各某些进行了建模,并依照数控工作台系统数学模型,对该系统动态特性和伺服精度进行了数学分析。通过直接降阶解决后,分别得到X、Y轴进给系统表达式为:(2.12)(2.13)降阶先后X轴方向进给系统BODE图对照如图2.8所示。从图2.8可以看出在所研究频率范畴内降阶先后系统幅频特性和相频特性几乎是相似。这表白两者输入输出特性是一致,因而咱们所得到式(2.12)和式(2.13)降阶数学模型是可以信赖,所选用降阶办法也是适当。图2.9进给伺服系统简化构造如图2.7所示闭环和半闭环系统,依照上述分析,在伺服驱动某些,当高次项系数与一次项系数和常数项相比小得多时,可以将高次项忽视,将其从高阶简化为一阶惯性环节进行分析,而在成果上主线就不会受到多大影响。同样地,在机械传动某些,S2和S系数相对常数项而言都非常小,因而也可将其近似化简为比例环节进行分析。同样对其进行恰当简化,本质上可以把它当作一种一阶惯性系统,如图2.9所示,系统可以更进一步简化成如图2.10所示构造。图2.10进给伺服系统简化构造2.3进给伺服系统特性分析在图2.7中所示系统中,可得该系统增益为:(2.14)依照图2.10所示,则系统开环传递函数为:而系统闭环函数为:(2.15)由于,故跟随误差对输入传递函数为:(2.16)则(2.17)如果系统执行一种速度为F恒速位置指令,即(2.18)运用终值定理有:(2.19)则(2.20)由上式可知,当数控机床中进给速度F为恒速运动时,跟随误差。由此可以看出,当速度F一定期,系统增益越大,则系统稳态位置误差越小,即系统随动误差小,也就是说跟随精度高。但是,过大会使得系统稳定性变差,在一定系统中,运动速度越大,系统稳态误差越大。综上所述,对系统敏捷度、系统增益和系统跟随精度这三个因素,在拟定其数值时,需要进行多方面综合考虑。2.4进给伺服系统特性对加工精度影响数控经给伺服系统特性直接影响工件加工精度,因而,分析进给伺服系统特性与加工精度之间关系就显得尤为重要。在数控机床上两轴联动加工直线、圆弧轮廓工件,或加工工件拐角部位时,数控进给系统速度误差特性和加速度误差特性所引起加工误差,可以作如下分析。在数控机床进给系统中,丝杠和螺母将电机转速转换成为执行部件位移,这相称于一种积分环节。依照前面分析,系统别的某些可以简化成为一种增益是比例环节,因而,进给系统可以简化成图2.10所示构造。从控制系统分类角度来分析,这是一种I型系统。I型系统特点是它对于阶跃位置指令输入响应不存在稳态误差;对于阶跃速度指令输入,即斜坡位置指令输入,其响应稳态位置偏差为,也称之为速度误差,这是为了建立速度F所必须指令位置与实际位置之间误差。由于在数控机床进给系统中,输入不是阶跃位置指令,而是斜坡位置指令,即为阶跃速度位置指令,依照式(2.20)可知,系统必然存在位置偏差。系统稳态运动速度与阶跃指令速度相似,而实际位置总是滞后于指令位置,即有稳态位置偏差,它是维持系统恒速运动必不可少。2.4.1速度误差对单坐标直线加工影响如图2.2所示,当指令位置已达到值即P点时,实际位置还滞后于指令位置,这时位置偏差,在数值上等于指令速度下稳态位置偏差。系统此时运营速度还是稳态速度,即执行部件速度还是稳态速度。随着执行部件运动,实际位置在变化,因而,位置偏差不断减小,保持对位置控制单元一种不断减小正误差信号,使执行部件减速后平稳地进入定位点,直到实际位置与指令位置相等,位置偏差等于零为止。由此可知,速度误差并不影响定位运动或直线加工时停止位置精确性,只是在时间上实际位置较指令位置有所滞后而已。2.4.2定性分析系统增益匹配对加工直线轮廓影响数控机床在加工过程中往往规定精准地、实时地同步控制各种进给伺服系统位置与速度,但由于进给伺服系统都不可避免地存在着跟随误差△D,该误差将也许对多坐标轴运动合成轨迹精准性产生影响。如图2.11所示,假设被加工直线轮廓,其方程式为:(2.21)直线与X轴夹角为,有。如果沿直线加工速度为,则插补运算时,保持X、Y轴速度分别为图2.11直线轮廓加工设X、Y轴进给系统增益为、,则两轴速度误差分别为:由上式可得对不同和讨论如下:=1\*GB2⑴当两轴增益匹配,即=1时,则,即(2.22)刀具指令位置A点坐标为(x,y),实际位置A'点坐标为(,),将式(2.21)与式(2.22)相应项相减有:(2.23)由上式可知,刀具实际位置仍在直线轮廓上,只是较指令位置有一定滞后。在两轴指令速度等于轮廓加工速度分量,并且两轴进给系统增益相等条件下,直线轮廓加工时,速度误差不会引起加工误差。=2\*GB2⑵当两轴增益不匹配,即时,此时速度误差,因而,当指令位置在OA上O点时,时间位置并不在直线OA上,而在离OA距离为另一点A'。下面就点A'在直线OA两边分别进行讨论:图2.12直线轮廓加工=1\*GB3①当点A'在直线OA下面时,如图2.12所示。由图2.12,在两个直角三角形中,依照几何关系可得:=2\*GB3②当A'在直线OA此外一边时,同理可得:综上所述,误差为:将两轴速度误差代入上式可得:(2.24)由式(2.24)可以看出,当时,误差,这与前面所述两轴增益相等状况完全吻合。当两轴增益不相等,即时,此时误差为:此外,误差不但与两轴增益、关于,同步还与轮廓直线倾角关于,可得结论如下:=1\*romani.当速度一定期,时,倾角越大,轮廓误差越大;时,倾角越大,轮廓误差越小。=2\*romanii.当或时,即工作台沿X或Y作单轴坐标运动时,轮廓误差;=3\*romaniii.当时,最大,且最大值为:。由此可见,当速度和加工轮廓直线倾角都一定期,两轴增益、就直接影响了加工精度。因而,两轴增益、良好匹配就可以保障被加工工件精度和质量。既然进给系统增益匹配对保障轮廓加工精度如此重要,则有必要进一步分析增益匹配对加工精度影响深度,笔者下面将定量地分析系统增益匹配对运动(加工)轨迹精度影响。2.4.3定量分析系统增益匹配对加工直线轮廓影响为了使得对轮廓误差分析更加贴近实际工程分析,并以便读者加深对轮廓误差理解,笔者将式(2.24)变换为:(2.25)式中,平均系统增益为:;两轴增益差为:;为系统增益失配量。在其他条件不变状况下:
①轮廓误差与两轴增益差成正比,与平均系统增益平方成反比与进给速度成F正比。
②当加工45°直线时,轮廓误差最大,。
③当加工0°或90°直线时,这就相称于单轴加工,轮廓误差与增益无关。
为了更加进一步分析该问题,笔者引入下面实际加工问题进行定量分析分析系统增益匹配对运动(加工)轨迹精度影响。若在X-Y平面上铣削工件一种平面,该面与X轴成45°角,即,进给速度为:F=300mm/min,为10±2%(1/s),可以计算出最大轮廓误差。
依照公式(2.25)计算出最大轮廓误差为:针对、不同状况进行分析如下:由上述理论分析有:于是,式中,为X轴方向实际稳态速度,为Y轴方向实际稳态速度。①当两轴增益、互相匹配,即==时,则==10,则两轴增益差=0,于是有并且,于是,可以得到两轴位移变化图如图2.13所示。YY轴X轴图2.13X、Y轴位移变化图此刻,图2.13所相应直线轮廓加工直线如图2.14所示。图2.14直线轮廓加工由图2.13可以看出,X、Y轴位移变化图中两轴位移直线斜率相等,这与计算出两轴实际稳定速度相符。由图2.14可以看出,当两轴增益、匹配时,△KS=0,ε=0,这阐明当两轴系统增益相等时,跟随误差、对轮廓精度无影响。刀具实际位置仍在直线轮廓上,只是较指令位置有一定滞后。在两轴指令速度等于轮廓加工速度分量,且两轴进给系统增益相等条件下,直线轮廓加工时,速度误差不会引起加工误差。②当两轴进给系统增益匹配,即时,可以分相对于偏大和相对于偏小两种状况进行分析,不妨假设、均为常数。当增益相对于增益偏大时,依照题意,不妨设,,则两轴增益差为:于是有并且,于是,可以得到两轴位移变化图如图2.15所示。XX轴Y轴图2.15X、Y轴位移变化图此刻,图2.15所相应直线轮廓加工直线如图2.16所示。图2.16直线轮廓加工由图2.15可以看出,X、Y轴位移变化图中X轴位移直线斜率比Y轴位移直线斜率大,这与计算出两轴实际稳定速度大小相符。由图2.16可以看出,当增益相对于增益偏大时,若增大,实际运动轨迹就越偏离理论轨迹,将会产生轮廓误差,当时,则,实际运动轨迹就越接近理论轨迹。若不考虑两轴加速、减速阶段,实际轨迹直线平行于理论轨迹直线,两直线距离为轮廓误差。③当增益相对于增益偏小时,且、均为常数时,依照题意,不妨设,,则两轴增益之差为:于是有并且,于是,可以得到两轴位移变化图如图2.17所示。XX轴Y轴图2.17X、Y轴位移变化图此刻,图2.17所相应直线轮廓加工直线如图2.18所示。图2.18直线轮廓加工由图2.17可以看出,X、Y轴位移变化图中X轴位移直线斜率比Y轴位移直线斜率小,这与计算出两轴实际稳定速度大小相符。由图2.18可以看出,当增益相对于增益偏小时,若增大,实际运动轨迹就越偏离理论轨迹,将会产生轮廓误差,当时,则,实际运动轨迹就越接近理论轨迹。若不考虑两轴加速、减速阶段,实际轨迹直线平行于理论轨迹直线,两直线距离为轮廓误差。综上所述,通过对工作台双轴伺服系统在直线插补运动时轮廓误差分析,可知双轴联动作直线进给时,轮廓误差产生源于双轴系统开环增益不匹配性,单轴坐标直线进给时,没有位置误差,但运动存在滞后现象。在闭环控制系统中,零件轮廓形状精度不但受机床定位精度、微量位移精度影响,并且更为重要是受机床进给伺服系统轮廓跟随精度所影响。在轮廓加工过程中,系统稳态特性会对轮廓误差产生比较大影响。在直线加工时,若=,直线轮廓误差为零,若增大,实际运动轨迹偏离理论轨迹,将会产生轮廓误差。因而,在数控机床进给伺服系统中,各联动坐标轴系统增益普通均取相似数值,只有这样才干保证零件轮廓加工精度。通过上述理论分析,为了提高理论分析成果实用性,并充分运用于实际生产过程之中,笔者下面将在WindowsXP系统下基于VC开发环境设计一套测试数控机床增益匹配软件。
3软件设计3.1软件功能简介数控机床参数匹配测试平台软件应当具备重要功能如下:采集8253芯片数据并写入文献;读取文献内容并绘制数据坐标点;最小二乘法拟合直线;设定并绘制理论直线;数据浏览、误差显示;成果分析;软件使用协助。3.2操作系统选取方案1:DOS操作系统特点:单顾客单任务操作系统方案2:WINDOWS操作系统特点:单顾客多任务操作系统和谐图形顾客界面、易学易用,并能支持多任务。方案3:网络操作系统特点:多顾客多任务操作系统UNIX、NETWARE、WINDOWSNTLINUX等。结论:虽然网络操作系统功能较为强大,但WINDOWS深为广大顾客爱慕,由于它操作比较简朴,并且考虑与语言程序匹配兼容性,咱们选取使用WINDOWS操作系统。3.3编程语言方案选取方案1:VisualBasicVB浅显易懂,很容易上手,具备如下某些特点:
①面向对象
VB采用了面向对象程序设计思想。它基本思路是把复杂程序设计问题分解为一种个可以完毕独立功能相对简朴对象集合,所谓“对象”就是一种可操作实体,如窗体、窗体中命令按钮、标签、文本框等。②事件驱动
在Windows环境下,程序是以事件驱动方式运营,每个对象都能响应各种不同事件,每个事件都能驱动一段代码——事件过程,该代码决定了对象功能,普通称这种机制为事件驱动。③软件集成式开发
VB为编程提供了一种集成开发环境。在这个环境中,编程者可设计界面、编写代码、调试程序,直至把应用程序编译成可在Windows中运营可执行文献,并为它生成安装程序。
④构造化程序设计语言
VB具备丰富数据类型,是一种符合构造化程序设计思想语言,并且简朴易学。此外作为一种程序设计语言,VB尚有许多独到之处。
方案2:Delphi语言编译速度快,比C++、C#快多了。运营速度快,VC体系比较好,使用以便,适合做数据库,适合做共享软件,组件资源丰富,难度不大于C++。使用Pascal语言,语言流行限度不如C/C++,不是完全面向对象,使用不是很灵活。方案3:VisualC++Visual
Basic之因此受到广大编程兴趣者及专业编程人员青睐,是由于VisualC++具备如下重要特点:①程序构造简朴、书写格式自由。②语句简洁、语法构造清晰、紧凑,使用以便、灵活。③数据类型丰富、齐全。④运算符丰富、齐全,运算能力强。⑤语法限制不太严格,程序自由度大。⑥具备直接硬件解决能力⑦C++编译系统生成目的代码质量高,程序执行效率高。⑧程序可移植性强。C++包括了整个C,因而也继承了C所有特性和长处,同步添加了对OOP完全支持。综上所述,本设计涉及从PC机ISA接口读取数据,综合各方面考虑,最后选取VisualC++作为编程语言。
3.4VC开发平台简介VC++是VisualC++简称,它涉及编辑、编译、连接、运营几种环节。VisualC++6.0是当今世界是上最流行语言之一,它是在20世纪80年代初由贝尔实验室开发。当时C语言已经非常流行,随着问题复杂度提高和面向对象办法提出,C语言越来越显得力不从心,C++是由C语言扩张而成,它继承了C语言长处,又扩张了C语言功能。它非常合用于开发中档和大型计算机应用项目。软件可重用性、可扩充性以及可靠性均显示出了它优越性。VisualC++编程界面如图3.1所示。图3.1工程界面在图3.1中,工具栏中惯用按钮重要功能简介如下:编译按钮,当程序编辑好后,点击此按钮看程序与否出错,以便修改。组建按钮,当所有文献编辑好后,点击此按钮看程序与否出错,以便修改。运营按钮,当程序编译无误后点击这个按钮会自动弹出运营界面,这样你就可以检查你程序和你思想与否一致。单步运营按钮,便于检查程序执行状况,看与否按自己思路运营,可以单步查看运营成果;插入或删除中断点按钮;停止组建按钮;协助按钮;保存按钮,将编辑当前程序存盘;所有保存按钮,将所有文献存盘。3.5软件功能实现数控机床参数匹配测试平台框架构造图如图3.2所示:最小二乘法拟合最小二乘法拟合写入文献读取数据点绘制理论直线误差分析成果分析采集外部数据数据浏览3.2数控机床参数匹配测试平台框架构造图每个环节之间存在着一定得逻辑关系,详细流程阐述如下:①平台通过计算机ISA接口将8253计数芯片上数据采集进入平台之中,然后通过一定数学解决将其转换为坐标点数据,并写入PC机硬盘中备用;②将PC机中数据文献读出,并将其绘制到坐标系中;③将PC机中数据文献读出,应用最小二乘法对其进行拟合,将拟合直线与坐标点绘制到相似坐标系中,并显示拟合直线方程;④对最小二乘法数据拟合以及系统位置误差进行分析;⑤设立理论直线方程,将其与拟合直线和坐标点绘制到同一坐标系;⑥通过对所绘制图形分析,给出有关结论和解决问题建议。下面将针对每个功能模块某些实现状况进行阐述,功能模块之间都是基于VC++消息机制,每个功能模块中将简介编程思想、简朴编程流程图、重要子程序以及其她核心编程信息。3.5.1采集数据信息平台通过计算机ISA总线接口将8253计数芯片上数据采集进入平台之中,然后通过一定数学解决将其转换为坐标点数据,并写入PC机硬盘中备用。那么,有必要对8253芯片和ISA总线做简朴简介。1、8253芯片简介:8253芯片是INTEL公司生产微型机通用外因芯片之一。采用24引脚双列直插式封装,其重要特性有:●采用单一+5V电源供电;●计数频率为0~5MHz;●两种计数方式:即二进制或BCD方式计数;●片内有3个独立16位减法计数器(或计数通道),每个计数器又可以分为2个8位计数器;●六种工作方式,既可对系统时钟脉冲计数实现定期.又可对外部事件进行计数,可由软件或硬件控制开始计数或停止计数。由于篇幅有限,下面就只简介一下8253芯片6种工作方式,依照本设计需要选取一种适合工作方式。工作方式选取①方式0—计数结束时产生中断方式当写入方式0控制字后,计数器输出及时变为低电平,当赋初值后,计数器立即开始工作,且输出始终保持低电平,计数结束时变为高电平,并始终保持到再次装入初值或复位为止。若初值为双字节,则只有当输入高字节后计数器才开始工作。如果对正在进行计数计数器装入一种新初值,则计数器立即重新开始计数。GATE门控端可禁止或容许计数,当GATE=0时,禁止计数,GATE=1时,容许计数。②方式1—可编程单次脉冲方式当装入计数初值后,要等GATE信号由低变高,并保持高时开始计数,此时OUT信号为低电平,计数结束时,输出变高电平,输出单次脉冲,单次脉冲宽度由计数初值N决定。当再有GATE上跳沿信号时,将再次以N为初值开始计数,若在GATE信号之前赋入新初值,则等到再有触发信号时将以此新值开始计数。③方式2—频率发生器方式当装入计数初值后,及时开始计数,输出端不断输出负脉冲,其宽度等于一种时钟周期,两脉冲之间时钟个数等于装入初始值。该方式需在GATE信号控制下工作,当GATE为0时,及时逼迫输出为高电平,当GATE为1时启动一次新计数周期。④方式3—方波频率发生器方式该发生GATE信号作用与方式2相似,在GATE信号上升沿启动计数,前半计数输出始终保持高电平,后一半计数输出又变为低电平。若装入初值N为奇数,则在(N+1)/2个计数期间输出保持低电平。⑤方式4—软件触发选通方式该方式被设立后输出即变为高电平,当GATE=1时,一旦计数器装入初值便立即开始计数,计数结束后立即输出一种宽度等于一种时钟周期负脉冲。GATE=0时,禁止计数。⑥方式5—硬件触发选通方式该方式由GATE信号上升沿启动计数器,输出始终保持高电平,当计数结束时,输出一种宽度等于时钟周期负脉冲。此方式下,GATE电平高低对计数器工作无作用。但计数操作可用GATE信号上升沿重新触发,当正在计数期间计数器一旦重新触发,便又从本来初值重新开始计数,计数期间,输出始终保持高电平。综上所述,结合本次设计需要,选取8253芯片工作方式2比较适当。8253-5编程写入方式控制字8253工作方式控制字格式如图3.3所示。使用任意计数器通道,一方面要向该通道写入方式控制字,以拟定该通道工作方式。注意,虽然三个通道用控制字端口地址是相似,但三个控制字写入后却存入相应通道控制寄存器中。写入计数初始值某个计数器在写入了方式控制字后,任何时候都可以按RL1RL0规定写入计数初始值,对某一计数器写入顺序是必要严格遵守,但是在符合顺序状况下,容许在中间穿插着对别计数器读写操作。当RL1RL0=01时,只写入低8位,则高位自动置0;当RL1RL0=10时,只写入高8位,则低位自动置0;当RL1RL0=11时,共写入16位,先写低8位,后写高8位。D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCD方式控制字方式控制字SC1、SC1、SC0计数器选取RL1、RL0CPU读/写操作SC1SC0计数器00计数器001计数器110计数器211无效RL1RL0操作方式00计数值锁存(供CPU读出)01读/写计数器低8位10读/写计数器高8位1M2M2M1M0工作方式选取先读/写低8位,后读/写高8位M2M1M0工作方式000方式0001方式1×10方式2×11方式3100方式4101方式5BCDBCD计数方式选取0二进制计数1十进制(BCD码)计数图3.38253工作方式控制字读计数值在计数进行过程中,读出当前计数值有时是有用。在动态读计数值时可以有两种办法。本次采用锁存计数器当前计数值。采用一种方式控制字,其中SC1SC0=01指定要读计数器通道号,RL1RL0=00,使这个方式控制字成为一种软件命令,方式字别的各位内容可以不考虑。这个命令一旦写入后,就及时把当前计数值锁存到锁存寄存器,而计数器可以继续工作。此后,CPU通过先用方式控制字所规定读取方式,然后再读计数值,但由于这是从锁存寄存器中读取,因此是一种稳定值。这种办法唯一限定也是必要读完规定字节数。2、ISA总线简介:ISA插槽是基于ISA总线(IndustrialStandardArchitecture,工业原则构造总线)扩展插槽,其颜色普通为黑色,比PCI接口插槽要长些,位于主板最下端。其工作频率为8MHz左右,为16位插槽,最大传播率16MB/sec,可插接显卡,声卡,网卡已及所谓多功能接口卡等扩展插卡。ISA总线扩展插槽由两某些构成,一某些有62引脚,重要由地址线,数据线,控制线,状态线,辅助线,电源线等62根引脚构成,其信号分布及名称与PC/XT总线扩展槽基本相似,仅有很小差别。ISA总线端口编址方式有两种方式:统一方式:存储器中一某些地址分派给I/O;独立方式:存储器和I/O分别编址,有独立指令,PC采用此方式。计算机端口地址如下表3.1所示。表3.1计算机端口地址I/O接口名称端口地址硬驱控制卡1F0H~FFH游戏控制卡200H~20FH并行口控制卡1370H~37FH并行口控制卡2270H~27FH串行口控制卡13F8H~3FFH串行口控制卡22F0H~2FFH原型插件板(顾客可用)300H~31FH同步通讯卡13A0H~3AFH同步通讯卡2380H~38FH单显DMA3B0H~3BFH彩显CGA3D0H~3DFH彩显EGA/VGA3C0H~3CFH软驱控制卡3F0H~3F7H从表3.1可以看出,顾客可用地址区域为:300H~31FH,即表3.1中所加黑某些。因而,运用VC++编程时,将会运用300H~31FH段地址。综合分析,由于双轴系统中,每个进给轴会用到2个计数器,即正反方向分别各一种计数器。因而,两个轴一共需要4个计数器才够用,由于每片8253芯片只有3个计数器,因此需要选用2片8253芯片。地址:300H~303H分别表达第一片8253芯片计数器0、计数器1、计数器2和控制字;地址:304H~307H分别表达第二片8253芯片计数器0、计数器1、计数器2和控制字。为以便标记,笔者将第二片8253计数器依次命名为:计数器3、计数器4、计数器5。3、采集数据程序实现:采集数据程序流程图如下图3.4所示:打开文献打开文献初始化计数器开始读取外部数据写入文献解决数据读取完毕关闭文献是否结束3.4采集数据程序流程图下面分别简介每个小模块实现过程。(1)初始化计数器初始化编程顺序是:对某一指定计数器,必要先写控制字,再写计数器初值,计数初值写入格式由控制字D5和D4两位编码决定。由于单个计数器是完全独立,因此写入控制字顺序无任何先写或后写限制。由于本次设计中采用是读取之前先送计数锁存,因而,D5D4只能取00和11,分别表达锁存和先读低8位后读高8位。选取工作方式2,则D3D2D1应当取010。采用二进制计数,因此D0=0。第一片芯片控制字地址为0x303,第二片控制字地址为0x307。依照上述分析,对于计数器0而言,其初始化核心代码如下://第一片8253芯片计数器0,代表X轴正方向;_outp(0x303,0x34);//控制字 _outp(0x300,255);//初始化计数器0为0xFFFF;先低8位,后高8位; _outp(0x300,255);以上代码中,第一行代码中0x303为第一片芯片控制字地址,0x34是依照D7D6D5D4D3D2D1=00110100B=34H计算而来。第2、3行代码中0x300是计算器0地址,255是需要初始化进入计数器数值。代码中_outp()函数是输出函数。在VC开发系统中,系统提供了conio.h头文献,conio.h不是C原则库中头文献。conio是ConsoleInput/output(控制台输入输出)简写,其中定义了通过控制台进行数据输入和数据输出函数,本设计将重要用到conio.h头文献中_outp()和_inp()函数。_outp()函数原型为:int_outp(unsignedshortport,intdatabyte);port参数为指定输出端标语,databyte参数为输出值。调用后,它将databyte参数指定值输出到port参数指定端口并返回该值。databyte可以是0—255范畴内任何整数值。_inp()函数原型为:int_inp(unsignedshortport);port参数为指定输入端标语。调用后,它从port参数指定端口读入并返回一种字节,输入值可以是在0—255范畴内任意无符号整数值。其她计数器初始化某些程序实现与初始化计数器0完全类似,笔者在此就不在赘述。读取数据及解决初始化编程顺序是:通过控制字先对计数值进行所存,供CPU读出,然后设立为先读低8位再读高8位;然后读取低8位并储存低8位,再读取高8位并储存高8位。对计数器0读取核心代码如下: _outp(0x303,0x04); //计数值锁存(供CPU读出) _outp(0x303,0x34); //先读低8位,后读高8位 _outp(0x300,0x34); //读取数据 data0=_inp(0x300);//储存低8位 data1=_inp(0x300);//储存高8位在以上代码中,第1行代码中0x303为第一片芯片控制字地址,0x04是依照D7D6D5D4D3D2D1=00000100B=04H计算而来,其作用是将计数值锁存。第2行代码中0x34是通过D7D6D5D4D3D2D1=00110100B=34H计算而来,其作用是将读取方式设立为读/写低8位,后读/写高8位。第3行代码是将地址为0x300,即计数器0,计数值分别读取2次。第4、5行代码完毕将读取数据分别存储在data0、data1中,则data0存储低8位,data1存储高8位。实际计数值大小为:读取其她计数器中数据与读取计数器0中数据完全类似,笔者在此不再赘述。由于每次采集到数据不是符合规定坐标值,必要通过一定数学转换才干得到合乎规定坐标值,详细操作环节是:将每次从计数器0获得值减去从计数器1获得值作为当前X轴坐标值,然后将次从计数器2获得值减去从计数器3获得值作为当前Y轴坐标值,如此循环,下一次得到X轴坐标值和Y轴坐标值都分别需要加上前一种状态坐标值。文献操作笔者最初想将读取进来数据储存到一种数组中,但是由于读取数据量大,这样不但会挥霍CPU,并且还也许导致系统崩溃。为此,笔者多方考虑,打算采用文献操作来解决这一种文献,即将读取数据写入一种二进制文献,然后在需要时候将其调用出来进行有关解决和分析。该某些核心代码如下:FILE*datafile;datafile=fopen("C:\\Data.dat","wb");while(!feof(datafile)){ fwrite(&data.x,sizeof(long),1,datafile); fwrite(&data.y,sizeof(long),1,datafile);}fclose(datafile);在以上代码中,先是运用第一行代码定义了一种FILE指针文献,然后第二行代码将C:\创立一种名为Data.dat文献,并以二进制写方式打开;背面代码则是将采集X坐标data.x和Y坐标data.y分别依次存入文献中。最后一行代码作用是将该文献关闭,这是每次打开一种文献后必要环节。本软件开发过程中,诸多地方都会运用到文献操作,为此,笔者有必要对其进行简朴简介。①打开文献在前面第二行代码中,fopen函数用来打开一种文献,其调用普通形式为:文献指针名=fopen(文献名,使用文献方式)其中,第一种形式参数表达文献名,可以包括途径和文献名两某些,“文献名”是字符串常量或字符串数组。第二个形式参数表达打开文献类型,本设计用到两种打开文献类型如下:"rb"只读打开一种二进制文献,只容许读数据
"wb"
只写打开或建立一种二进制文献,只容许写数据②读写文献在写文献某些代码中,写数据块函数调用普通形式为:fwrite(buffer,size,count,fp);后来将用到读数据块函数,其调用普通形式为:fread(buffer,size,count,fp);其中,buffer是一种指针,在fread函数中,它表达存储输入数据首地址,在fwrite函数中,它表达存储输出数据首地址。size表达数据块字节数。count表达要读写数据块块数。fp表达文献指针。例如:fread(x,4,5,fp);其意义是从fp所指文献中,每次读4个字节(一种实数)送入实数组x中,持续读5次,即读5个实数到x中。fwrite(y,4,5,fp);其意义是从实数组y中,每次写4个字节(一种实数)送入fp所指文献中,持续写5次,即写5个实数到fp所指文献中。③关闭文献fclose()函数用来关闭一种由fopen()函数打开文献,其调用格式为:fclose(FILE*stream);该函数返回一种整型数。当文献关闭成功时,返回0,否则返回一种非零值。可以依照函数返回值判断文献与否关闭成功。3.5.2读取数据信息并绘图读取数据信息绘图程序流程图如下图3.5所示:下面简介一下本软件绘图实现办法,这里选用MFC提供CClientDC类来实现这一功能。这个类派生于CDC类,并且在构造时调用GetDC函数,在析构时调用ReleaseDC函数。也就是说,当一种CClientDC对象在构造时,它内部会调用GetDC函数,获得一种对象;在这个CClientDC对象析构时,会自动释放这个设备描述表资源。这样话,程序中如果使用了CClientDC类型定义DC对象,就不需要显示地调用GetDC函数和ReleaseDC函数了。只需要定义一种CClientDC对象,然后就可以运用这个对象提供函数进行绘图操作了。当该对象生命周期结束时,会自动释放其所占设备资源。这就是CClientDC对象好处,因而,本软件开发过程中关于绘图指令都是基于CClientDC类进行。打开文献打开文献开始读取文献数据绘制数据点读取完毕关闭文献是否结束图3.5绘制数据程序流程图为了简朴简介CClientDC类功能,下面给出软件中坐标系绘制程序实现如下:CClientDCdc(this);//定义一种CClientDC对象//绘制纵坐标dc.MoveTo(20,0);//移动到绘图起点dc.LineTo(20,750);//从起点到此点画用线段连接起来//绘制坐标原点0dc.ExtTextOut(10,700,ETO_OPAQUE,CRect(10,700,10,710),_T("0"),NULL);//绘制X坐标标签dc.ExtTextOut(30,20,ETO_OPAQUE,CRect(30,20,30,30),_T("Y"),NULL);//绘制Y坐标标签dc.ExtTextOut(750,710,ETO_OPAQUE,CRect(750,710,750,720),_T("X"),NULL);以上代码只提供了纵坐标绘制,其她坐标绘制完全相识,笔者就不再赘述,详细代码见程序清单。从上面例子可以发现,在构造CClientDC对象时,需要一种CWnd类型指针作为参数。由VC++知识可知,每个对象均有一种this指针指向自己自身,因此,本例子就将this作为参数传递给该对象构造函数。由此可以看出,CClientDC类绘图十分以便快捷。但是还需要阐明是,不论是VC中窗口还是对话框,设备原点(0,0)都是在左上角,这与咱们实际应用不同样,因而需要对设备原点(0,0)进行变化,这样才干使得绘出图像具备很强工程意义。例子中笔者就将原点改到(20,700),这样下面绘制出来图形就会出当前坐标系第一象限。此外,由于本次设计中会有拟合直线、理论直线以及所有数据坐标点在同一坐标系中浮现,因而,需要用不同颜色、大小来显示所绘制图形,这样才以便分析她们之间关系。前一种例子中所画坐标系都是黑色,这是由于设备描述表中有一种默认黑色画笔,因而绘制线条都是黑色。在VC++中,如果想要绘制其她颜色线条,一方面需要创立一种特定颜色画笔,然后将此画笔选入设备描述表中,接下来绘制图形颜色就由这个新画笔特性做决定了。详细实现,可以运用MFC提供CPen类创立画笔对象,这个类封装了与画笔有关操作。它有三个构造函数,其中一种构造函数原型声明如下:CPen(intnPenStyle,intnWidth,COLORREFcrColor);其中,第一种参数(nPenStyle)指定笔线型(实线(PS_SOLID)、点线(PS_DOT)、虚线(PS_DASH)等);第二个参数(nWidth)指定画笔线宽,需要注意是,画笔宽度要不超过1才可以保证虚线线型有效;第三个参数指定笔颜色,这个参数是COLORREF类型,运用RGB这个宏可以建立这个类型值。RGB宏声明如下:COLORREFRGB(BYTEbRed,BYTEbGreen,BYTEbBluecolor);可以看出,RGB宏有三个参数,分别代表红、绿、蓝三种颜色值。这三个参数都是BYTE类型,取值范畴为:0~255,RGB(255,255,255)代表白色,RGB(0,0,0)代表黑色,当三个参数分别设立为0~255之间任意值时,可以得到各种不同颜色。对于前面坐标系例子,若将第一行指令修改为如下代码:CPenpen(PS_SOLID,1,RGB(0,0,255));//创立新画笔 CClientDCdc(this);//定义一种CClientDC对象CPen*pOldPen=dc.SelectObject(&pen);//添加新画笔备用然后,在最后一行代码背面添加如下代码:dc.SelectObject(pOldPen); //恢复默认画笔从修改后例子可以看出,一方面创立了一种实线画笔,其宽度为1,颜色为蓝色。接着运用SelectObject函数将新画笔对象选入设备描述表,再运用画线函数可以发现绘制出线发生了变化。最后,再次调用SelectObject函数恢复设备描述表中画笔。最后简介一下,CClientDC对象中一种SetPixel函数,该函数声明如下:StatusSetPixel(INTx,INTy,COLORREFcrColor);其中,x为横坐标,y为纵坐标,crColor为颜色设立。打开文献开始打开文献开始读取文献数据最小二乘法拟合读取完毕关闭文献是否计算拟合直线计算拟合直线关闭文献显示拟合直线绘制拟合直线结束FILE*fp1;//定义文献指针 fp1=fopen("C:\\Data.dat","rb");//二进制方式读文献while(!feof(fp1))//判断与否读完数据结束{fread(&x,sizeof(long),1,fp1);//读横坐标 fread(&y,sizeof(long),1,fp1);//读纵坐标dc.SetPixel(20+x,700-y,RGB(255,0,0));//以红色画笔绘制坐标点}fclose(fp1);//关闭文献在上面代码中,每行代码作用见标注,该某些所有程序详见附录中DrawDlg.cpp。3.5.3最小二乘法拟合直线运用最小二乘法拟合直线程序流程图如图3.6所示。图3.6最小二乘法拟合直线程序流程图一方面,简介一下最小二乘法拟合基本原则以及拟合直线方程推导过程,详细分析如下:图3.6最小二乘法拟合直线程序流程图事实上,运用最小二乘法原理求取回归参数k、b时,应使各数据点与拟合直线偏离平方和为最小,假设有n对数据点,在点上y预计量为:(3.1)误差方程组为:(3.2)应当使得最小,于是求取参数k、b应当满足:\(3.3)式(3.3)称为正规方程组,运用代数办法求解,可得:(3.4)(3.5)式中,,(3.6)(3.7)综上所述,可以得到拟合后直线方程为:(3.8)此外,有关系数ρ是描述两个变量线性关系密切限度数量指标,自然其绝对值越大,即接近于1时,x、y线性关系就越密切;当ρ接近0时,两者线性变化规律就不明显。因而,本设计引入了有关系数ρ来判断直线拟合与否成功,也可以观测到数据点线性关系。有关系数公式如下:(3.9)式(3.9)中,因分母根式值恒为正值,故有关系数符号取决于离差积之和符号,即与参数k符号一致。普通而言,只要有关系数ρ>0.999,那么x、y线性关系就非常密切了,线性关系很明显。懂得n-2为自由度,又由于残差平方和是反映了x对y线性影响之外其她随机影响总和,故定义下列预计量s为:(3.10)s也可以以为是剩余原则差,它意义与原则差相识,用它可以衡量所有随机因素对y大小,s愈大,拟合精度越高。通过对最小二乘法推导和分析,运用VC编写实现拟合核心代码如下://最小二乘法拟合程序averx=sumx/len_data;//求x平均avery=sumy/len_data;//求y平均fp1=fopen("C:\\Data.dat","rb");while(!feof(fp1)){fread(&x,sizeof(long),1,fp1); fread(&y,sizeof(long),1,fp1);Lxx+=(x-averx)*(x-averx); Lxy+=(x-averx)*(y-avery);Lyy+=(y-avery)*(y-avery);}fclose(fp1);k=Lxy/Lxx;//求斜率kb=avery-k*averx;//求截距b在上面代码中sumx和sumy分别为所有X、Y坐标值累加和,通过上述代码,可以获得直线方程:Y=k*X+b,于是笔者可以运用绘图CClientDC类指令进行绘图,这一操作类似于理论直线绘制,详细实现过程参看3.5.4绘制理论直线某些。该某些所有程序详见附录中DrawDlg.cpp中OnNihe函数。 3.5.4绘制理论直线图3.7绘制理论直线程序流程图设立理论直线开始坐标点计算绘制理论直线图3.7绘制理论直线程序流程图设立理论直线开始坐标点计算绘制理论直线结束然后,运用前面简介CClientDC类绘图中LineTo函数即可完毕理论直线绘制,详细核心代码如下所示:dc.MoveTo(20,700-m_b);//移动到A点dc.LineTo((700-m_b)/m_k+20,0);//连接A、B两点dc.ExtTextOut(750,30,ETO_OPAQUE,CRect(750,30,750,40),_T("理论直线:"),NULL);//绘制图例dc.MoveTo(820,40);dc.LineTo(950,40);从以上代码可以看出,代码中m_k、m_b是设立直线方程斜率和截距。绘制图指令在前面已经简介过,每行代码作用见右边标注。拟合直线绘制代码与理论直线绘制完全相识,函数ExtTextOut可以是用来输出“理论直线:”和“拟合直线:”文本信息,然后运用随后两行代码绘制出一条小线段,这样可以让读者清晰地结识那条线代表什么含义,固然拟合直线和理论直线是采用不同画笔。运营后得到效果如图3.8所示:图3.8理论直线和拟合直线图例该某些所有程序详见附录中DrawDlg.cpp中OnNilun函数。3.5.5数据浏览及误差显示数据浏览及误差显示编程过程中,由于需要计算方差、原则差等有关误差,但是她们是每个点都要进行计算,最后会有诸多值,只有和数据放在一起才懂得她们所属关系,因而,笔者就将这两项功能设计在相似对话框中。详细流程图如图3.9所示。由于篇幅有限,笔者只简介一下数据加入列表框某些程序实现,其核心代码如下:charch[400];//定义缓存数组sprintf(ch,"第%6d点:X:%6d,Y:%6d,//定义输出格式△D=%6d,Dy=%4.4f,dy=%4.4f",lendata,x,y,Delta_D,Dy,dy);m_DataList.AddString(ch);//加载进入列表框从上面代码可以看出,第一行代码是用来定义一种储存每次加载内容数组;第二行时设立数组内容格式,其中,%6d表达6位十进制输出,%4.4f表达4为整数、4为小数浮点型输出;最后一行代码中,运用AddString函数将数组内容加载进入列表框中,这样将该核心代码放在数据读循环里面就可以将每次读出来数据以及误差数据显示在列表框中。在数据加载完毕后,关闭文献背面添加如下代码:sprintf(ch,"%6s%6s%6s%6s%10s%10s","点序号","X坐标","Y坐标","△D","方差","原则差");//定义一种输出m_DataList.InsertString(0,ch);//插入ch内容到列表框中第0行通过以上代码可以给列表框输出一种表头,下面相应就是表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年公司普通货物运输合同
- 港口高桩码头课程设计
- 企业人才储备计划协议书
- 定向培育就业协议书范例
- 股权购买协议书
- 员工和公司之间的汽车租赁协议
- 2024年购买二手房定金合同模板
- 工程建设年度借款合同书写作指导
- 幼儿园办园行为评估系统指标体系(复评用)
- 律师代写委托代理合同
- 完整版数据结构-C语言描述习题及答案耿国华
- GB/T 28749-2012企业能量平衡网络图绘制方法
- GB/T 32722-2016土壤质量土壤样品长期和短期保存指南
- GB/T 30649-2014声屏障用橡胶件
- GB/T 25087-2010道路车辆圆形、屏蔽和非屏蔽的60 V和600 V多芯护套电缆
- 南京理工大学PPT模板
- GB/T 1029-1993三相同步电机试验方法
- GA 838-2009小型民用爆炸物品储存库安全规范
- 《化工原理》试题库答案
- FANUC用户宏程序课件
- 2023年伊犁哈萨克自治州伊宁辅警招聘笔试题库及答案解析
评论
0/150
提交评论