基于MATLAB的同步带传动优化设计
摘 要:阐述同步带传动优化设计的技术和方法,以设计轴间距与预定轴间距之间偏差最小为目标,建立数学模型;用牛顿迭代法求解反渐开线函数;用混合离散变量直接搜索法求出最优解;用MATLAB实现计算机辅助同步带传动优化设计。 关键词:MATLAB;同步带传动
1、同步带传动的优化设计
应用实例按期望函数设计四杆机构,设计一个曲柄摇杆机构,当原动件的转角
???0~?0?90?
要求从动件摇杆机构的输出角实现函数
2??-?0?2 ???0?3? 其中?0、?0分别是摇杆在右极位置的曲柄和摇杆的初始位置角(如图1),取
曲柄长度 l1?1,机架的相对长度l4?5。
??图1
1、1实例优化的意义
四杆机构是机械传动的重要组成部分,设计四杆机构通常使用作图法和实验法,这两种发放简单易行,但是误差较大,运用解析法,能获得所要求的精度,然而人工进行,整个设计过程是一项繁琐的工作,有的甚至可能无法实现。但是采用MATLAB对四杆机构进行优化设计,不仅参数输入简单,而且编程的工作量小,更可快捷准确的达到设计要求。
1、2已知条件
⑴曲柄长度 l1?1,机架的相对长度l4?5;
⑵查《工程优化设计与MATLAB实现》可知函数fmincon可以处理有约束的非线性多元函数优化问题,其数学模型如下:
minf(x)
s.t. C?x??0 Ceq?x??0 Ax?b Aeqx?beq lb?x?ub
其中,x,b,beq,lb,ub为向量,A,Aeq为矩阵;C?x?,Ceq?x?是返回的函数向量;
f?x?为目标函数。f?x?,C?x?,Ceq?x?可以是非线性函数。
Fmincon函数调用格式为:
[x,fval]=fmincon(FUN,X0,A,B,Aeq,Beq,lb,ub,NONLCON,OPTIONS)
其中:NONLCON是用户定义的非线性约束函数,用来计算非线性不等式约束
C?x??0和非线性等式Ceq?x??0在x处的值。
1、3确定设计变量
摇杆与曲柄的位置角?、?可由四杆的几何关系确定。因此,选择机构的连
?l2??x1?杆长度和摇杆作为设计变量:x??????
?l3??x2?
1、4确定目标函数
⑴要求设计的四杆机构的摇杆的期望函数???0?2??-?0?2,经过设计好的3?四杆机构实际实现的函数为?s?F?x?。由于机构的待定参数较少,故一般不能准确地实现期望函数,但我们要?s尽量逼近?,所以取一系列的实际输出值?si与对应位置期望函数值?i之和的最小值作为设计目标 。取i?30,则即目标函数为minf?x??min???i??si?。
i?0302
⑵如下图2中,可求出曲柄、摇杆的初始位置角度
2222??a?x1??d2?x2a?x1??d2?x2 ?0?acos,?0?acos2?a?x1?d2x2d曲柄的转角范围为:?0~?0?90?,将90?分成S等分,则某阶段i,由已知条件曲柄、摇杆的转角期望为
is2????0?2 3??????0?0.5?,???0? 即建立了用x1、x2表示?的关系式。
图2
⑶在图3中求出曲柄、摇杆的实际转角
BD?a2?d2?2adcos?
2?BD2?x2?x12?BDC?acos? ?2BD?x2????? ???BD2?d2?a2 ?BDA?acos?2BD?d????
当0????时,?s?????BDC??BDA? 当????2?时,?s?????BDC??BDA?
即建立了用x1、x2表示?的关系式。
图3
1、5确定约束条件
⑴根据《机械原理》查得曲柄存在的条件:
?最短杆与最长杆的长度和小于或者等于其他连杆的长度之和(杆长条件)。 ?连杆架与机架中必有一最短。 所以有
x1?0,x2?0,a?d?x1?x2,a?x1?x2?d,a?x2?x1?d
⑵根据《机械原理》查得压力角和传动角说明:
机械在某位置时,其连杆与从动摇杆之间所夹的锐角?,成为机构在该位置时的传动角。常用传动角来衡量机构的传动性能。
主动件曲柄通过连杆作用于从动摇杆上的力F的作用线与其作用点的速度方向之间所夹的锐角,成为机构的压力角?。??90?-?,压力角的一般取值为:
30????60?。
所以为了使四杆机构具有良好的传动性能,通常要求其最小传动角 ?min?40?~50?
?min出现在在曲柄与机架共线的两个位置之一,如图3,这时有:
2x12?x2??d?a? ?1?acos?a、d重合共线?
2x1x222x12?x2??d?a?? ?2?180-acos?a、d拉直共线?
2x1x22 40???1?50?,40???2?50?
2、目标函数编写matlab优化程序 2、1将数学模型转化为一般形式
minf?x??min???i??si?
i?0302?l??x??x??0? x??2???1?,s.t.?1????
?x2??0??l3??x2? x1?x2??a?d,x1?x2?d?a,x2?x1?d?a
22x12?x2??d?a?x12?x2??d?a??-cos40?0,-cos130??02x1x22x1x22222x12?x2??d?a?x12?x2??d?a????cos50?0,??cos140??0
2x1x22x1x222
2、2建立目标函数文件
⑴便携目标函数M文件并以文件名myfun保存在MATLAB目录下的work文件夹中,如图4。
目标函数的MATLAB程序如下:
function f=fun(x) i=30; a=1; d=5;
fx=0;
fai0=acos(((a+x(1))^2-x(2)^2+d^2)/(2*(a+x(1))*d)); pusi0=acos(((a+x(1))^2-x(2)^2+d^2)/(2*x(2)*d)); for i=1:50 fai=fai0+0.5*pi*i/s; pusi=pusi0+2*(fai-fai0)^2/(3*pi); BD=sqrt(a^2+d^2-2*a*d*cos(fai));
jBDC=acos((BD^2+x(2)^2-x(1)^2)/(2*BD*x(2))); jBDA=acos((BD^2+d^2-a^2)/(2*BD*d)); if fai>0 & fai<=pi;
pusis=pi-(jBDC+jBDA); elseif fai>pi & fai<=2*pi;