?? 06-凸輪輪廓的設計計算與繪圖.m__.htm
字號:
<html><head><title>MATLAB.rar 06-凸輪輪廓的設計計算與繪圖.m</title>
<LINK href="/inc/read_style.css" type=text/css rel=stylesheet></head>
<body>
<p><a href=http://www.pudn.com>www.pudn.com</a> > <a href="http://www.pudn.com/downloads111/sourcecode/graph/detail461284.html">MATLAB.rar</a> > 06-凸輪輪廓的設計計算與繪圖.m</p><!-- saved from http://www.pudn.com -->
<script src="/inc/gg_read1.js"></script><BR>
<pre name="code" class="m">
disp ' ******** 偏置移動從動件盤形凸輪設計 ********'
disp '已知條件:'
disp ' 凸輪作逆時針方向轉動,從動件偏置在凸輪軸心的右邊'
disp ' 從動件在推程作等加速/等減速運動,在回程作余弦加速度運動'
rb = 40;rt = 10;e = 15;h = 50;ft = 100;fs = 60;fh = 90;alp = 35;
fprintf (1,' 基圓半徑 rb = %3.4f mm \n',rb)
fprintf (1,' 滾子半徑 rt = %3.4f mm \n',rt)
fprintf (1,' 推桿偏距 e = %3.4f mm \n',e)
fprintf (1,' 推程升程 h = %3.4f mm \n',h)
fprintf (1,' 推程運動角 ft = %3.4f 度 \n',ft)
fprintf (1,' 遠休止角 fs = %3.4f 度 \n',fs)
fprintf (1,' 回程運動角 fh = %3.4f 度 \n',fh)
fprintf (1,' 推程許用壓力角 alp = %3.4f 度 \n',alp)
hd= pi / 180;du = 180 / pi;
se=sqrt( rb^2 - e^2 );
d1 = ft + fs;d2 = ft + fs + fh;
disp ' '
disp '計算過程和輸出結果:'
disp ' 1- 計算凸輪理論輪廓的壓力角和曲率半徑'
disp ' 1-1 推程(等加速/等減速運動)'
s = zeros(ft);ds = zeros(ft);d2s = zeros(ft);
at = zeros(ft);atd = zeros(ft);pt = zeros(ft);
for f = 1 : ft
if f <= ft / 2
s(f)=2 * h * f ^ 2 / ft ^ 2;s = s(f);
ds(f)=4 * h * f * hd / (ft * hd) ^ 2;ds = ds(f);
d2s(f)=4 * h / (ft * hd) ^ 2;d2s = d2s(f);
else
s(f)=h - 2 * h * (ft - f) ^ 2 / ft ^ 2;s = s(f);
ds(f)=4 * h * (ft - f) * hd / (ft * hd) ^ 2;ds = ds(f);
d2s(f)=-4 * h / (ft * hd) ^ 2;d2s = d2s(f);
end
at(f)= atan(abs(ds - e) / (se + s));atd(f) = at(f) * du;
p1=((se + s ) ^ 2 + (ds - e) ^ 2) ^ 1.5;
p2= abs((se + s) * (d2s - se - s) - (ds - e) * (2 * ds - e));
pt(f)= p1 /p2;p = pt(f);
end
atm = 0;
for f = 1 : ft
if atd(f) > atm
atm = atd(f);
end
end
fprintf (1,' 最大壓力角 atm = %3.4f 度\n',atm)
for f = 1 : ft
if abs(atd(f) - atm) < 0.1
ftm = f;break
end
end
fprintf (1,' 對應的位置角 ftm = %3.4f 度\n',ftm)
if atm > alp
fprintf (1,' * 凸輪推程壓力角超過許用值,需要增大基圓!\n')
end
ptn = rb + h;
for f = 1 : ft
if pt(f) < ptn
ptn = pt(f);
end
end
fprintf (1,' 輪廓最小曲率半徑 ptn = %3.4f mm\n',ptn)
for f = 1 : ft
if abs(pt(f) - ptn) < 0.1
ftn = f;break
end
end
fprintf (1,' 對應的位置角 ftn = %3.4f 度\n',ftn)
if ptn < rt + 5
fprintf (1,' * 凸輪推程輪廓曲率半徑小于許用值,需要增大基圓或減小滾子!\n')
end
disp ' 1-2 回程(余弦加速度運動)'
s = zeros(fh);ds = zeros(fh);d2s = zeros(fh);
ah = zeros(fh);ahd = zeros(fh);ph = zeros(fh);
for f = d1 : d2
k = f - d1;
s(f) = .5 * h * (1 + cos(pi * k / fh)); s = s(f);
ds(f)=-.5 * pi * h * sin(pi * k / fh) / (fh * hd);ds = ds(f);
d2s(f)= -.5 * pi ^2 * h * cos(pi * k / fh)/(fh * hd) ^2;d2s = d2s(f);
ah(f)=atan(abs(ds + e) / (se + s));ahd(f) = ah(f) * du;
p1=((se + s ) ^ 2 + (ds - e) ^ 2) ^ 1.5;
p2= abs((se + s) * (d2s - se - s) - (ds - e) * (2 * ds - e));
ph(f)= p1 /p2;p = ph(f);
end
ahm = 0;
for f = d1 : d2
if ahd(f) > ahm;
ahm = ahd(f);
end
end
fprintf (1,' 最大壓力角 ahm = %3.4f 度\n',ahm)
for f = d1 : d2
if abs(ahd(f)- ahm) < 0.1
fhm = f;break
end
end
fprintf (1,' 對應的位置角 fhm = %3.4f 度\n',fhm)
phn = rb + h;
for f = d1 : d2
if ph(f) < phn
phn = ph(f);
end
end
fprintf (1,' 輪廓最小曲率半徑 phn = %3.4f mm\n',phn)
for f = d1 : d2
if abs(ph(f) - phn) < 0.1
fhn = f;break
end
end
fprintf (1,' 對應的位置角 fhn = %3.4f 度\n',fhn)
if phn < rt + 5
fprintf (1,' * 凸輪回程輪廓曲率半徑小于許用值,需要增大基圓或減小滾子!\n')
end
disp ' 2- 計算凸輪理論廓線與實際廓線的直角坐標'
n = 360;
s = zeros(n);ds = zeros(n);r = zeros(n);rp = zeros(n);
x = zeros(n);y = zeros(n);dx = zeros(n);dy = zeros(n);
xx = zeros(n);yy = zeros(n);xp = zeros(n);yp = zeros(n);
xxp = zeros(n);yyp = zeros(n);
for f = 1 : n
if f <= ft/2
s(f) = 2 * h * f ^ 2 / ft ^ 2; s = s(f);
ds(f) = 4 * h * f * hd / (ft * hd) ^ 2; ds = ds(f);
elseif f > ft/2 & f <= ft
s(f) = h - 2 * h * (ft - f) ^ 2 / ft ^ 2; s = s(f);
ds(f) = 4 * h * (ft - f) * hd / (ft * hd) ^ 2; ds = ds(f);
elseif f > ft & f <= d1
s = h;ds = 0;
elseif f > d1 & f <= d2
k = f - d1;
s(f) = .5 * h * (1 + cos(pi * k / fh)); s = s(f);
ds(f)= -.5 * pi * h * sin(pi * k / fh) / (fh * hd); ds = ds(f);
elseif f > d2 & f <= n
s = 0;ds = 0;
end
xx(f) = (se + s) * sin(f * hd) + e * cos(f * hd); x = xx(f);
yy(f) = (se + s) * cos(f * hd) - e * sin(f * hd); y = yy(f);
dx(f) = (ds - e) * sin(f * hd) + (se + s) * cos(f * hd); dx = dx(f);
dy(f) = (ds - e) * cos(f * hd) - (se + s) * sin(f * hd); dy = dy(f);
xp(f) = x + rt * dy / sqrt(dx ^ 2 + dy ^ 2);xxp = xp(f);
yp(f) = y - rt * dx / sqrt(dx ^ 2 + dy ^ 2);yyp = yp(f);
r(f) = sqrt (x ^2 + y ^2 );
rp(f) = sqrt (xxp ^2 + yyp ^2 );
end
disp ' 2-1 推程(等加速/等減速運動)'
disp ' 凸輪轉角 理論x 理論y 實際x 實際y'
for f = 10 : 10 :ft
nu = [f xx(f) yy(f) xp(f) yp(f)];
disp(nu)
end
disp ' 2-2 回程(余弦加速度運動)'
disp ' 凸輪轉角 理論x 理論y 實際x 實際y'
for f = d1 : 10 : d2
nu = [f xx(f) yy(f) xp(f) yp(f)];
disp(nu)
end
disp ' 2-3 凸輪輪廓向徑'
disp ' 凸輪轉角 理論r 實際r'
for f = 10 : 10 : n
nu = [f r(f) rp(f)];
disp(nu)
end
disp '繪制凸輪的理論輪廓和實際輪廓:'
plot(xx,yy,'r-.') % 理論輪廓(紅色,點劃線)
axis ([-(rb+h-10) (rb+h+10) -(rb+h+10) (rb+rt+10)]) % 橫軸和縱軸的下限和上限
axis equal % 橫軸和縱軸的尺度比例相同
text(rb+h+3,0,'X') % 標注橫軸
text(0,rb+rt+3,'Y') % 標注縱軸
text(-5,5,'O') % 標注直角坐標系原點
title('偏置移動從動件盤形凸輪設計') % 標注圖形標題
hold on; % 保持圖形
plot([-(rb+h) (rb+h)],[0 0],'k') % 橫軸(黑色)
plot([0 0],[-(rb+h) (rb+rt)],'k') % 縱軸(黑色)
plot([e e],[0 (rb+rt)],'k--') % 初始偏置位置(黑色,虛線)
ct = linspace(0,2*pi); % 畫圓的極角變化范圍
plot(rb*cos(ct),rb*sin(ct),'g') % 基圓(綠色)
plot(e*cos(ct),e*sin(ct),'c--') % 偏距圓(藍綠色,虛線)
plot(e + rt*cos(ct),se + rt*sin(ct),'y') % 滾子圓(黃色)
plot(xp,yp,'b') % 實際輪廓(藍色)
</pre>
<script src="/inc/gg_read2.js"></script><BR>
<script src="http://s117.cnzz.com/stat.php?id=1236358&web_id=1236358&show=pic" language="JavaScript" charset="gb2312"></script>
</body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -