《第二章工程数据的计算机处理ppt课件》由会员分享,可在线阅读,更多相关《第二章工程数据的计算机处理ppt课件(38页珍藏版)》请在金锄头文库上搜索。
1、第二章 工程数据的计算机处理,2.1 概述 在CADCAM过程中,常常要参照各种标准和规范,根据一系列相关数据资料、图表、实验曲线来选用所需的数据。在传统的手工设计时,这些标准资料是通过技术人员查手册等工具书获得的,查阅起来既费时又容易出错。而在CADCAM中,就要将这些资料作适当的处理并预先存入计算机,以便在设计时由计算机按要求自动检索和调用;或在程序编制过程中融于其中,将其程序化随着程序的运行,自动选用,加工处理。这是CADCAM软件开发的基本工作之一。,2.1.1数表的分类,按数据间有无函数关系分类 机械设计中所用到的数表是各种各样的,一般可根据表中各数据间有无函数关系和表格的维数这两种
2、方法进行分类。 (1)常数数表 这种数表中记载的供设计用的一组数据,彼此之间没有定的函数关系。例如各种材料的力学性能、齿轮的标准模数系列、V带轮的计算直径系列,各种材料的密度等。,(2)列表函数数表 数表中的数据之间存在某种函数关系。这种数表的来源可以分为两类: 一类是本来就有精确的计算公式或经验公式,但是由于解析式太复杂,为了方便进行手工设计将其制成表格供设计人员查用; 另一类是本来就没有公式,数表是以试验所得的离散数据作为依据制作的。 对第一类数表,能找到原始解析式的,要求找到原来的理论计算公式或经验公式,编入应用程序进行计算这种办法最简单,结果也很精确。对于一时难于找到原始解析式的数表或
3、原来就没有解析式的第二类图表,则应进行相应的程序化处理。,表2-2所示V带传动设计中的包角修正系数K表,就是一个一维列表函数数表的例子,表中的函数是包角修正系数K自变量是带轮包角的度数。,按数表的维数分类,按数表的维数可把数表分为一维数表、二维数表和多维数表。 (1)一维数表 所要检索的数据只与一个变量有关这样的数表称为一维数表,表22所示都是一维数表。,表2-2所示V带传动设计中的包角修正系数K表,就是一个一维列表函数数表的例子,表中的函数是包角修正系数K,自变量是带轮包角的度数。,(2)二维数表 所要检索的数据与两个变量有关,这样的数表称为二维数表。例:表2-3用于链轮设计中,由节距t和链
4、轮齿数z查取链轮轴孔最大直经dk和齿侧凸缘最大直经dh,试对其进行程序化处理。,表2-3,(3)多维数表 所要检索的数据与两个以上的变量有关,这种数表称为多维数表。,单根普通v带所能传递的基本额定功率P,2.1.2数表的数据处理方法,(1)程序化方式 将数据直接编在程序中。该方式简单易行,但缺点是数据与程序互相依赖,即使是更动了一个数据,也要使程序作相应修改,且数据冗余度大,故应用于数据较少,数据变更小的情况。 具体又分为如下几种情况: (1)将数表中的数据存入一维、二维或者三维组中; (2)将数表拟合成公式,然后编入程序。,(2)数据文件方式 将数据建立成一个独立的数据文件,并单独存储,使它
5、与应用程序分开,需要时,通过应用程序来打开、调用和关闭数据文件,并进行相关处理。 每一个文件都有文件名,文件名由若干字符组成,可以带后缀,即扩展名,如常用的*.dat、*.txt、*.doc等,也可以自己定义后缀名称,原则是以容易记忆为主。 优点是应用程序简洁,占用内存量大大减少,数据更改也方便。 缺点是文件之间彼此孤立,文件内部又无结构信息,因而数据共享范围有限。另外文件管理系统缺乏对数据进行集中管理和控制的能力。数据的操作仍离不开应用程序,两者之间并末实现完全独立。,建立数表文件的方法:随不同的操作系统而异,可直接用编辑文本文件的方法输入,如记事本、写字板等文字处理软件。另外,建立数表文件
6、也可用高级语言如C、Pascal、Fortran和Basic中的文件管理功能建立,在应用时按一定的格式读取。 针对不同的编程语言,其文件操作语句也不同。下面对C语言中的文件操作语言进行简单说明。C语言系统自定义文件类型,可非常方便地实现对外存储器的存取使用。常用的文件类型有顺序文件(File)和文本文件(Text)。C语言文件操作常用指令表如表3-6所示。,C语言文件类型的常用指令表,利用C语言读出文件的程序如下:#include stdio.hstruct st /定义f1的文件float t1,t2,m,d; s30;void main () int i;FILE *fp;/定义一个文件指
7、针/打开当前目录名为f1.dat的文件,为只读操作类型,/并判断文件是否打开成功 if (fp=fopen ( f1.dat,r) = NULL) printf(Cannot open the data file);/提示打开不成功 exit(); i=0;while(!feof(fp) /循环读取数据记录 fread( int Z14=9,11,13,15,17,19,21,23,25,27,29,31,33,35; float K14=0.446,0.555,0.667,0.775,0.893,1.00,1.12,1.23, 1.35 , 1.46,1.58,1.70,1.81,1.94;
8、 printf(“请输入链轮齿数Z1:”); scanf(“%d”, ,例:表2-3用于链轮设计中,由节距t和链轮齿数z查取链轮轴孔最大直经dk和齿侧凸缘最大直经dh,试对其进行程序化处理。,表2-3,取变量: 齿数zZi i=1,2,3,8 节距t Ti i=1,2,3,10 dhDHi,j i=1,2,3,8 j=1,2,3,10 dkDKi,j i=1,2,3,8 j=1,2,3,10 用Turbo C语言编程如下: main() int i,j,Z1,ip=20,jp=20; float T1; int Z8=11,13,15,17,19,21,23,25; float T10=9.5
9、25,12.7,15.875,19.05,25.4,31.75,38.1,44.45, 50.8,63.5; int DH810=22,30,37,45,60,76,91,106,121,152, 28,38,48, 57,77, 96,116,135,155,193,35,46,58,70,93,117,140,164, 187, 235,41,54,68,82,110,137,165,193,220,275, 47, 63,79, 94,126,158,189,221,253,316, 53,71,89,107, 142,178, 214,250,285,357, 59,79,99,119
10、,159,199, 238,278,318, 398,65,87,109,131,175,219,263,307,315,438,;,int DK810=11,18,22,27,38,50,60,71,80,103, 15,22,30,36,51,64,79,91,105,132, 20,28,37,46,61,80,95,111,129, 163, 24,34,45, 53,74,93,112,132,152,193,29,41,51,62,84,108,129,153,177, 224,33,47,59,72,95,122,148,175,200,254, 37,51,65,80,109,
11、137,165,196,224,278, 42,57,73,88,120,152,184,217,249,310;,printf(“请输入链轮齿数Z1:”); scanf(“%d”, ,(2)数表的文件化处理 对于数据量较小的数表,数据不需经常改变,可以利用数组的形式将其程序化,但数表的容量较大或数表较复杂,常需建立数据文件,并将数据文件与应用程序分开,数据文件可以存储在外存设备上,如软盘、硬盘、光盘等,只有当需要的时候,利用应用程序通过操作语句将数据文件打开并调用。 数据文件按组织形式和管理方式可分为顺序文件和随机文件,顺序文件中的各个记录是按照其输入的先后顺序存放的,其存取文件需从头至尾按
12、顺序读/写,故效率不高;随机文件是指在写入一个数据时,还给此数据登记一个编号(记录号),以后可按照此记录号进行查找,所以随机文件的存取速度比顺序文件的要高。 以表2-2由小链轮齿数Z查齿数系数K的文件化处理为例: 建立数据文件ZK.DAT如下: 9 11 13 15 17 19 21 23 25 27 29 31 33 35 38 0.446 0.555 0.667 0.775 0.893 1.0 1.12 1.23 1.35 1.46 1.58 1.70 1.81 1.94 2.12 用Turbo C语言编程如下: main() int i,z1,z15,ip=20; float k15;,
13、FILE *fp; fp=fopen(“ZK.DAT”, “r”); for(i=0;i15;i+) fscanf(fp, “%d”, ,2.3数表的公式化(解析化)处理,通常,工程手册中的数据主要有两大类来源: 一类是己知明确的函数关系,但其计算非常复杂。所以经过计算后将其离散结果以表或曲线形式表达出来,以便工程技术人员使用(如三角函数表)。 另一类是通过大量实验和经验获取的数据制成表格或曲线,供技术人员使用。如链轮设计中,小链轮齿数Z查取齿数系数K 。 如果数表中的两个参数 、 之间具有一一对应关系。 1) 已知 时,可输入对应的值 ; 2) 若已知 在数表所列的离散值中不存在,应输出近似
14、的 值。这就要构造某个函数关系式来近似表达列表数据关系。工程中经常使用的有插值法和曲线拟合法。,小链轮齿数Z查取齿数系数K,2.3.1插值法 插值法的基本思想是在插值点附近选取几个合适的结点,过这些选取的点构造一个简单函数p(x),在此小段上用p(x)代替原来函数f(x),这样插值点的函数值能用p(x)的值来代替。因此插值的实值问题是如何构造一个既简单又具有足够精度的函数p(x)。 最常用的近似函数类型p(x)为代数多项式,此处仅介绍一次多项式(线性插值)和二次多项式(抛物线循值)。,(1)线性插值:即两点插值。已知插值点P的相邻两点;y1f(x1),y2f(x2),如下图所示。近似认为函数在
15、此区间呈线性交化,根据几何关系求插值点P对应于x的函数值y为,写成一般形式,则有,程序说明: n:给定的插值结点个数 xn:存放各结点上的自变量数据要求升序排列,即xn(n十1)xn(n) yn:存放相应结点处的函数值 xo:存放插值点自变量数值。 yo:存放待求的插值点的函数值。,(2)抛物线的插值:当不适宜采用线性插值法时,为改善计算精度,可用多点插值法,常用的是一元三点抛物线插值法。 该法是在f(x)上取三点,过三点作抛物线p(x),以p(x)替代f(x),可获得比线性插值精度高的结果,如图23所示。,设插入已知值x相邻3点为pi-1(xi-1,yi-1)、p i(x i,y i) 、
16、p i+1(x i+1,y i+1) ,则求y的公式如下。,插值的关键是确定pi(xi-1,yi-1)、p i(x i,y i) 、 p i+1(x i+1,y i+1) 三点的坐标值,即i的值。,*V带包角影响系数表*,xi-2 xi-1 xi xi+1,x1 x2 x3,xn-2 xn-1 xn,插值节点的选取规则,(1)当x=x2时,即x靠近表头,则选最初3个结点p1、p2、p3, (如图)这时公式2-2中的i=2。 (2)当x=xn-1时,即x靠近表尾,则选最后3个结点pn-2,pn-1,pn, (如图)这时公式2-2中的i=n-1。 (3)除以上两种情况外,即当xi-1xx i时,分两种情况: a、当x-xi-1=xi-x时,即x靠近xi-1,则选pi-2、pi-1、pi三点。(如图)此时公式2-2中的i=i-1。 b、当x-xi-