第三章机械设计编程基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 机械设计编程基础
2.1 编程和图表处理的基本方法
一、编制机械设计计算程序的基本方法
(1) 设计数据
(2) 表格、线图及标准规范 (3) 算法设计
[]
p p dlh
T
σσ≤=
4 式中,T 为转矩;
h 为键高度;
l 为键的工作长度;
[σp ]为轮毂的许用挤压应力。
表1 平键(摘自GB1096-90) 轴径 mm d mm b mm
h
自6~8 2 2
>8 ~10 3 3 >10~12 4 4
>12~17 5 5
>17~22 6 6
>22~30 8 7 >30~38 10 8
>38~44 12 8
>44~50 14 9
二、设计图表处理的基本方法
1.表格(手册中的)分为两类:⎩
⎨⎧
..:;:着某种联系表格中的数据之间存在列表函数任何联系表格中的数据之间没有数表
2.表格处理的基本方法:
(1) 表格的程序化:将数表中的数据以数组形式存储和检索,直接编
在解题的程序中。 (2) 表格的公式化:对于列表函数,可用曲线拟合的方法形成数学表
达式并直接编于程序中。
2-2 设计数表的处理
一、表格的程序化
1. 数表
一维(元)数表:所查取的数据只与一个变量有关的数表; 二维(元)数表:所查取的数据与两个变量有关的数表; 它们均可用一维和二维数组的形式存入计算机,以备程序使用。
一维(元)数表程序化
示例1 :
示例2 :
int I;
float GAMA[ ]
={ 7.87,7.85,8.30,7.75}; printf( “1. 工业纯铁\ n”); printf( “1. 钢材\ n”); printf( “2. 高速钢\ n”); printf( “3. 不锈钢\ n”); printf( “选择材料类型:”); scanf( “ % d”,&I); printf( “3. 不锈钢\ n”);
printf( “材料的密度:% f\ n”,GAMA[I -1]);
表2 材料的密度
材 料 密度 / (g.。cm -3)
工业纯铁 7。87 钢 材 7。85 高 速 钢 8。30 不 锈 钢 7。75
上表为4种材料,12种热处理规格,而每一种规格包含4种机械性能指标: 11,,,--τσσσS B 。若给每一种机械性能确定一个标识符,则该表可由以下4个 一维数组表示:
[][][][]
11
,,2,1,011,,2,1,011,,2,1,011,,2,1,011 =------=------=-----=-----
--I I TAU I I SGM I I SGMAS I I SGMAB S B τσσσ
二维(元)数表程序化
示例1:
表3 齿轮传动的工作情况系数用条件语句编制程序就会显得冗长,故可采用3×3的数组WK[3][3]。有关程序如下:
Int I,J
Float WK[ ] [3] = {1,1.25,1.75,1.25,1.5,2,1.5,1.75,2.25}; Printf ( “ 原动机工作情况:\ n”) ; Printf ( “ 1. 工作平稳\ n”) ; Printf ( “ 2. 轻度冲击\ n”) ; Printf ( “ 3. 中度冲击\ n”) ;
Printf ( “ 请选择序号:\ n”) ; Scanf (“ % d”, &I);
Printf ( “ 工作机工作情况:\ n”) ; Printf ( “ 1. 平稳载荷\ n”) ; Printf ( “ 2. 中等冲击\ n”) ; Printf ( “ 3. 严重冲击\ n”) ;
Printf ( “ 请选择序号:\ n”) ; Scanf (“ % d”, &J);
Printf ( “ 工况系数:% f\ n”, WK [I -1] [j-1]) ;
2. 列表函数
使用这类列表函数时,需要用插值的方法来检索数据。列表函数如下:
表4 蜗杆传动的相对滑动速度
v 与当量摩擦系数μ之间的关系
()i i i i i i x x x x y y y y ---+
=--1
1
有关线性分段插值的程序为
分段线性插值的算法框图:
检索表4当量摩擦系数的程序段: Int n=14 float
x_vs
[
]
=
{ 0.01,0.05,0.10,
0. 25,0.50,1.0,1.5,2.0,2.5,3.0,4.0,5.0,8.0,10.0 };
float Y_Mv [ ] = { 0.110,0.090, 0.080,0.065,0.055,0.045,0.040,0.035,0.030,0.028,0.024,0.022,0.018,0.016 }; float v_s,M_v ;
float lineinsert ( float *sx,float *sy,int n, float inp); v_s = 1.24;
m_V
= lineinsert
( x_VS,Y_Mv,
n,v_s );
float lineinsert ( float *sx, float *sy, int n, float inp ); { int i;
float outp;
for ( I=1;i outp = sy[ i ] + ( sy[ i ] - sy[ i-1] ) * (inp – sx[ i ] ) / (sx[ i ] - sy[ I-1 ] ); return ( outp ) ; }