12/15/2006

r95631022林冠宏

林冠宏
R95631022
之前以有人做回應
我想表中所對應的值,有時會不齊,所以讓可以找到一個表中對應較近的值,是否會比較好,就可以有所依據,去做選擇
及修改yes和no大小寫都轉為大寫
程式流程:
% gear.m
% Design of a gear
efc=0.86;g=9.81;% efficiecy of gear
gcof=[10 0.176 0.201
11 0.192 0.226
12 0.210 0.125
13 0.223 0.261
14 0.236 0.276
15 0.215 0.289
16 0.254 0.295
17 0.264 0.302
18 0.270 0.308
19 0.276 0.314
20 0.283 0.320
21 0.289 0.327
23 0.295 0.333
25 0.305 0.339
27 0.311 0.349
30 0.317 0.358
34 0.327 0.371
38 0.333 0.383
43 0.339 0.396
50 0.346 0.408
60 0.355 0.421
75 0.361 0.434
100 0.368 0.446
150 0.374 0.459
300 0.383 0.471
999 0.390 0.484];
gmax=length(gcof);
while 1

while 1
GT=input('請輸入齒輪之齒數(-)[預設值為30]:
','s'); %輸入齒輪之齒數

if isempty(GT), %檢查是否有輸入,沒有則令為30
GT='30';
end

gteeth=str2num(GT);
[N,I]=find(gcof(:,1)==gteeth);




if isempty(N) %找表中較近的值

while isempty(N)
gteeth=gteeth+1;
[N,I]=find(gcof(:,1)==gteeth);
end

disp([' 表中較近的值為 ' num2str(gteeth)]);
on = upper(input('是否使用(Y/N) [Y]
','s'));

if on ~= 'Y'
gteeth=0;
[N,I]=find(gcof(:,1)==gteeth);
end

end




if isempty(N), %檢查齒數是否在表中可以查到
disp('齒數不符合,請重新輸入!');
else
break;
end
end
while 1

GP=input('請選擇壓力角[14.5度(1)/20度(2)][預設值為1]:
');%選擇壓力角
if
isempty(GP),%檢查是否有輸入,沒有則令為1
GP=1;
end

if GP==1 |
GP==2,%如果是1或是就跳出
break
else


disp('請選1或2,重新輸入!');
end
end

GF=input('請輸入齒輪之作用力(kg)[預設值為200]:
','s');%輸入齒輪之作用力
if isempty(GF),
GF='200';end;gf=str2num(GF);%檢查是否有輸入,沒有則令為200


GD=input('請輸入齒輪節徑(mm)[預設值為200]:
','s');%輸入齒輪節徑
if isempty(GD),
GD='200';end;gd=str2num(GD);%檢查是否有輸入,沒有則令為200


GB=input('請輸入齒厚(mm)[預設值為100]: ','s');
%輸入齒厚
if isempty(GB),
GB='100';end;gb=str2num(GB);%檢查是否有輸入,沒有則令為100


RPM=input('請輸入齒輪迴轉速(mm)[預設值為1200]: ','s');
%輸入齒輪迴轉速
if isempty(RPM),
RPM='1200';end;rpm=str2num(RPM);
%檢查是否有輸入,沒有則令為1200

%計算抗彎應力

gv=rpm*pi.*gd/60/1000;
gfv=3./(3+gv);
gm=gd/gteeth;
gy=gcof(N,GP+1);


gst=gf./gfv./gb./gm./gy;

%輸出資料
disp('齒輪資料:')
disp(['齒數:'
num2str(gteeth) ' 節徑:' num2str(gd)...
'mm. 齒厚:'
num2str(gb) 'mm.'])
disp(['轉速:'
num2str(rpm) 'rpm. 作用力:' num2str(gf) ' KG.'])

disp(['齒輪之抗彎應力為: ' num2str(gst) ' kg/m^2.
<=====']);

%是否還要計算

A=upper(input('繼續執行嗎?(Y/N) [Y] ','s'));

if ~isempty(A) |
A~='Y'
break;
end
end

結果(1):
請輸入齒輪之齒數(-)[預設值為30]: 40
表中較近的值為 43
是否使用(Y/N) [Y] y
請選擇壓力角[14.5度(1)/20度(2)][預設值為1]:
請輸入齒輪之作用力(kg)[預設值為200]:
請輸入齒輪節徑(mm)[預設值為200]:
請輸入齒厚(mm)[預設值為100]:
請輸入齒輪迴轉速(mm)[預設值為1200]:
齒輪資料:
齒數:43 節徑:200mm. 齒厚:100mm.
轉速:1200rpm. 作用力:200 KG.
齒輪之抗彎應力為: 6.5817 kg/m^2. <=====
繼續執行嗎?(Y/N) [Y]
結果(2):
請輸入齒輪之齒數(-)[預設值為30]: 40
表中較近的值為 43
是否使用(Y/N) [Y] n
齒數不符合,請重新輸入!
請輸入齒輪之齒數(-)[預設值為30]: 30
請選擇壓力角[14.5度(1)/20度(2)][預設值為1]:
請輸入齒輪之作用力(kg)[預設值為200]:
請輸入齒輪節徑(mm)[預設值為200]:
請輸入齒厚(mm)[預設值為100]:
請輸入齒輪迴轉速(mm)[預設值為1200]:
齒輪資料:
齒數:30 節徑:200mm. 齒厚:100mm.
轉速:1200rpm. 作用力:200 KG.
齒輪之抗彎應力為: 4.9105 kg/m^2. <=====
繼續執行嗎?(Y/N) [Y] n

_______________________________________
YM - 離線訊息
就算你沒有上網,你的朋友仍可以留下訊息給你,當你上網時就能立即看到,任何說話都冇走失。
http://messenger.yahoo.com.hk

沒有留言: