HEATS 发表于 2010-9-13 22:22:07

用函数实现Inventor中特殊运动的模拟

Inventor具有非常强大装配功能,它的零部件运动模拟通常也是基于装配约束的,这使得对于基于装配约束的运动模拟,无论结构多复杂实现起来都非常容易(如连杆机构、传动机构和摆轮机构等)。但是在实际工作中,我们遇到的很多运动模式(如一个物体按确定的二维或三维的轨迹运动;在自动加工流水线上工件、夹具和加工设备的协调动作等等),我们仅仅只用基于装配约束的运动模拟就难以实现。
<P>&nbsp;&nbsp;&nbsp; 如何来实现这种复杂的运动模拟?我们知道Inventor的装配模型中每添加一个装配约束,系统内部就会自动赋予一个变量,而且这个变量可以用Inventor的内部函数与其它变量建立关系,并在驱动约束主变量时实现联动,这就为实现复杂的模拟运动带来了可能。</P>
<P>&nbsp;&nbsp;&nbsp; 在Inventor的变量中除了用“加减乘除”运算进行关联外,还可以用SIN、COS等复杂函数建立相互间的关联关系,在Inventor的帮助中可以找到这些函数的详细说明。</P>
<P>&nbsp;&nbsp;&nbsp; 下面我们就通过几个实例来探讨如何用Inventor的内部函数,来实现一些特殊而复杂的运动模拟问题。</P>
<P><STRONG>&nbsp;&nbsp;&nbsp; 1、&nbsp;二维正弦波型曲线运动</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; A.&nbsp;这里以小球为列,首先做一个直径为5mm的球型零件,存盘后将其装入一新建的部件文件(.iam)中。</P>
<P>&nbsp;&nbsp;&nbsp; B.&nbsp;在部件浏览器中选中小球单击右键,选择取消固定。</P>
<P>&nbsp;&nbsp;&nbsp; C.&nbsp;分别给小球中心和部件的基准坐标的xy、yz和zx平面之间添加配合约束,之后选择zx平面为观察方向。</P>
<P>&nbsp;&nbsp;&nbsp; D.&nbsp;接下来要将装配约束变量进行关联,我们选择与yz平面的装配约束为主动变量,而与xy平面的装配约束变量用y=a sin(x)公式与主动变量相关联。</P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_rgnero20072293013.jpg" width=554 height=228></STRONG></P>
<P align=center><STRONG>图1</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; E.&nbsp;在装配工具面板中选择参数按钮“ <IMG src="http://www.chmcw.com/upload/news/RCL/13220_1qcasx20072293058.jpg">”,在参数设置对话框中进行设置,如图1所示。如果与yz平面的装配约束变量名为d1,与xy平面的装配约束变量为d5,接着将d5的等式项中添加“100 mm * ( sin(d1 / 1 mm * 1 deg) )”的表达式,如图2所示。</P>
<P>&nbsp;&nbsp;&nbsp; 注意:100为振幅,“d1 / 1 mm * 1 deg”是为了将量纲mm转换为deg,以确保量纲的正确性,否则就会出错。</P>
<P align=center><IMG src="http://www.chmcw.com/upload/news/RCL/13220_cxzkbv20072293128.jpg" width=556 height=229></P>
<P align=center><STRONG>图2</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; F.&nbsp;如图3所示,在浏览器中,选择与XY平面的配合约束,在右键下拉菜单中选择“驱动约束”,然后在“驱动约束对话框”中设置合适的终止值,点“<IMG src="http://www.chmcw.com/upload/news/RCL/13220_hvc7xb20072293158.jpg">”按钮,小球就会按正弦波型曲线运动。如果再将小球与ZX平面的装配约束变量,也和驱动变量用表达式进行关联,那么就可以实现三维曲线轨迹的运动模拟。</P>
<P align=center><STRONG><IMG style="WIDTH: 558px; HEIGHT: 261px" src="http://www.chmcw.com/upload/news/RCL/13220_xg6xxo20072293213.jpg" width=559 height=261></STRONG></P>
<P align=center><STRONG>图3</STRONG><SPAN class=px14><FONT id=FontSizeSettings5> </P>
<P></P>
<P align=left>&nbsp;&nbsp; <STRONG>&nbsp;2、&nbsp;三维轨迹的运动</STRONG> </P>
<P>&nbsp;&nbsp;&nbsp; A.&nbsp;一滚轮沿图示路径匀速滚动,路径的尺寸如图4所示。</P>
<P>&nbsp;&nbsp;&nbsp; B.&nbsp;首先按上面所给的尺寸用三维路径扫掠做一个路径轨迹模型。再做一个直径为100mm的滚轮,为了能看清楚滚动可以打些孔。</P></FONT></SPAN>
<P align=center><IMG src="http://www.chmcw.com/upload/news/RCL/13220_nxixhj20072293439.jpg" width=556 height=450></P>
<P align=center><STRONG>图4</STRONG></P>
<P align=left>&nbsp;&nbsp;&nbsp;&nbsp; C.&nbsp;新建一部件,首先将路径轨道模型装入,让其固定。然后装人滚轮,在添加装配约束之前,再新建一参考零件,用于驱动滚轮沿轨迹线移动。参考零件可以是空零件,也可以做一些如正方体和空等简单的特征,用定位和添加约束用。参考零件的形状如图5所示。</P>
<P align=center><IMG src="http://www.chmcw.com/upload/news/RCL/13220_ypl1s820072293528.jpg"></P>
<P align=center><STRONG>图5</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; D.&nbsp;将参考零件约束到图6所示示位置,参考零件的轴线分别与图中ZX平面重合、与YZ平面相距1000mm,底面与XY平面重合,然后再给参考零件添加一个驱动绕其中心轴线旋转的对准角度装配约束。以控制参考零件沿X轴、Z轴平动和绕其中心轴线旋转。</P>
<P align=center><STRONG><IMG style="WIDTH: 551px; HEIGHT: 347px" src="http://www.chmcw.com/upload/news/RCL/13220_qboq2d2007229364.jpg" width=557 height=365></STRONG></P>
<P align=center><STRONG>图6</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; E.&nbsp;给滚轮与参考零件之间添加装配约束,使滚轮约束到图7所示的起点位置,让其能跟着参考零件进行移动和旋转。最后添加滚轮的滚动约束,即能使滚轮能绕其中心轴滚动的对准角度约束,可以是滚轮的YZ平面和参考零件的上平面,该约束可以作为驱动约束。</P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_p07o002007229372.jpg"></STRONG></P>
<P align=center><STRONG>图7</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; F.&nbsp;约束添加完毕后,在参数对话框中可以看到所添加约束的参数值,为了便于区分,在备注栏中可以注明,也可更改参数名称,如将驱动参数名改为“drive”。如图8所示。</P>
<P align=center><STRONG><IMG style="WIDTH: 558px; HEIGHT: 259px" src="http://www.chmcw.com/upload/news/RCL/13220_p0jwdn20072293724.jpg" width=558 height=266></STRONG></P>
<P align=center><STRONG>图8</STRONG><SPAN class=px14><FONT id=FontSizeSettings5> </P>
<P></P>
<P align=left>&nbsp;&nbsp; G.&nbsp;将装配约束与驱动变量关联<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; 在这里要用到的一个函数是sign(expr),当expr<=0时返回0,当expr>0时则返回1。<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; 首先设一个用户参数,将滚轮的滚动角度转换为滚动距离: </P>
<P>&nbsp;&nbsp;&nbsp; L=3.1415926ul*100mm*drive/360deg(drive是模型中用于驱动的参数)</P></FONT></SPAN>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_hojoos20072294516.jpg"></STRONG></P>
<P align=center><STRONG>图9</STRONG></P>
<P align=left>&nbsp;&nbsp;&nbsp; 通过作图可得到滚轮中心运动的轨迹,如图9所示,将轨迹分为8段,每段的长度设为用户参数L1、L2、L3、……L8,未直接给出的长度尺寸可通过计算或直接在模型中测量得到。为了方便输入和修改,以下所定义的用户参数,均先在Excel表格中建立,如图10所示,通过链接到Inventor中:</P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_sdwbsp2007229460.jpg" width=558 height=168></STRONG></P>
<P align=center><STRONG>图10</STRONG></P>
<P align=left>&nbsp;&nbsp;&nbsp; 用sign(expr)函数设8对用户参数P1A、P1B;…… P8A、P8B,如图11所示,用于在轨迹上设置断点,相当于一个时间轴,用于控制某段函数值的的开始或停止:</P>
<P><IMG src="http://www.chmcw.com/upload/news/RCL/13220_rdurw720072294617.jpg"></P>
<P>图11</P>
<P align=left>&nbsp;&nbsp;&nbsp; 再分别设参数X1、Z1和turn_angle_1将滚轮的X向运动、Z向运动和转动角度按其运动轨迹定义函数表达式如下:</P>
<P align=left>&nbsp;&nbsp;&nbsp; X1的函数表达式: </P>
<P>&nbsp;&nbsp;&nbsp; L*P1A+L1*P1B+(L-L1-L2)*P2B*P3A+L3*P3B-(L-L1-L2-L3-L4)*P4B*P5A-P5B*L5-P5B*P6A*(L-L1-L2-L3-L4-L5)*800mm/L6-800mm*P6B-P6B*P7A*(L-L1-L2-L3-L4-L5-L6)-L7*P7B-1000mm</P>
<P>&nbsp;&nbsp;&nbsp; Z1的函数表达式:</P>
<P>&nbsp;&nbsp;&nbsp; 50mm+(L-L1)*P1B*P2A+P2B*L2-P5B*P6A*(L-L1-L2-L3-L4-L5)*500mm/L6-500mm*P6B</P>
<P>&nbsp;&nbsp;&nbsp; 转动角度turn_angle_1的函数表达式:</P>
<P>&nbsp;&nbsp;&nbsp; P3B*P4A*( L1+L2+L3-L)*360deg/(2ul*3.1415926ul*500mm)-180deg*P4B+P7B*P8A*( L1+L2+L3+L4+L5+L6+L7-L)*360deg/(2ul*3.1415926ul*500mm)-180deg*P8B</P>
<P>&nbsp;&nbsp;&nbsp; 注意:由于每个人所建的模型和所加的装配约束不同,上述的函数表达式可能不同,需要进行必要的调整,另外还要确保函数表达式中量纲的正确。</P>
<P>&nbsp;&nbsp;&nbsp; 以上参数均在Excel表格中设置,如图12所示。</P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_gpj6od20072294758.jpg" width=565 height=71></STRONG></P>
<P align=center><STRONG>图12</STRONG></P>
<P align=left>&nbsp;&nbsp;&nbsp; 在Inventor的参数对话框中链接所建立的Excel表格(如图13所示),再将X1、Z1和turn_angle_1代替相应模型的参数值(如图14所示)。</P>
<P align=center><STRONG><IMG style="WIDTH: 559px; HEIGHT: 482px" src="http://www.chmcw.com/upload/news/RCL/13220_mhjoml20072294816.jpg" width=559 height=513></STRONG></P>
<P align=center><STRONG>图13</STRONG></P>
<P align=center><STRONG><IMG style="WIDTH: 560px; HEIGHT: 215px" src="http://www.chmcw.com/upload/news/RCL/13220_wxiewg20072294844.jpg" width=612 height=230></STRONG></P>
<P align=center><STRONG>图14</STRONG></P>
<P align=left>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参照图15所示,将参考零件设为不可见,然后在浏览器中选中驱动变量,单击鼠标右键选择驱动约束后,在驱动约束对话框中将终止值设为6630,按“<IMG src="http://www.chmcw.com/upload/news/RCL/13220_na1prw20072294958.jpg">”按钮,滚轮就会按预定轨迹滚动,。</P>
<P align=center><IMG src="http://www.chmcw.com/upload/news/RCL/13220_ioyq2j20072295011.jpg" width=562 height=292></P>
<P align=center><STRONG>图15</STRONG><SPAN class=px14><FONT id=FontSizeSettings5> </P>
<P></P>
<P align=left><STRONG>&nbsp; 3、&nbsp;两个以上零件的运动模拟 </STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 接下来我们讨论两个以上零件互不相同的运动,为了方便起见,在这里采用在上一个例子基础上再增加一个滚轮沿三维路径作反向运动,如图16所示。</P>
<P>&nbsp;&nbsp;&nbsp; A.&nbsp;在这里得再装入一个滚轮和两个参考零件,其中一个参考零件只添加角度对准约束作为主驱动变量,起到时间轴的作用,为两个滚轮运动提供一个共同的位置基准,以此为基准再向两个滚轮分别添加不同的运动函数表达式,从而使两个滚轮分别按不同的轨迹或规律运动;另一个参考零件用于与第二个滚轮配合,实现反向运动。</P></FONT></SPAN>
<P align=center><STRONG><IMG style="WIDTH: 559px; HEIGHT: 302px" src="http://www.chmcw.com/upload/news/RCL/13220_xgi5yf20072295329.jpg" width=559 height=310></STRONG></P>
<P align=center><STRONG>图16</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; B.&nbsp;按图17所示示要求给参考零件2和滚轮2添加装配约束,方法与给参考零件1和滚轮1的添加装配约束相同,最终将滚轮2约束到起点位置,使其能随参考零件2移动或转动,同时加上能使滚轮2绕自身轴线滚动的装配约束。</P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_01hw2b20072295433.jpg"></STRONG></P>
<P align=center><STRONG>图17</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; C.&nbsp;按滚轮2运动的规律,同样用sign(expr)函数设8对用户参数RP1A、RP1B;…… RP8A、RP8B作为轨迹上的断点,如图18所示,打开所链接的Excel表格,在该表格文件中添加。</P>
<P>&nbsp;&nbsp;&nbsp; D.&nbsp;再分别设参数X2、Z2和turn_angle_2将滚轮2的X向运动、Z向运动和转动角度按其运动轨迹定义函数表达式。</P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_7j8dz22007229550.jpg" width=555 height=279></STRONG></P>
<P align=center><STRONG>图18</STRONG></P>
<P align=left>&nbsp;&nbsp;&nbsp; X2的函数表达式:</P>
<P>&nbsp;&nbsp;&nbsp; (L-L8)*RP1B*RP2A+L7*RP2B+RP2B*(L-L8-L7)*800mm/L6*RP3A+RP3B*800mm+RP3B*(L-L8-L7-L6)*RP4A+RP4B*L5-RP5B*RP6A*(L-L8-L7-L6-L5-L4)-RP6B*L3-RP7B*RP8A*(L-L8-L7-L6-L5-L4-L3-L2)-RP8B*L1<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; Z2的函数表达式:</P>
<P>&nbsp;&nbsp;&nbsp; RP2B*(L-L8-L7)*500mm/L6*RP3A+500mm*RP3B-RP6B*RP7A*(L-L8-L7-L6-L5-L4-L3)-RP7B*L2<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; 转动角度turn_angle_2的函数表达式:</P>
<P>&nbsp;&nbsp;&nbsp; RP1A*(180deg-( L8-L)*360deg/(2ul*3.1415926ul*500mm))+180deg*RP2B-RP4B*RP5A*( L8+L7+L6+L5-L)*360deg/(2ul*3.1415926ul*500mm)+180deg*RP5B</P>
<P>&nbsp;&nbsp;&nbsp; 添加完X2、Z2和turn_angle_2参数后的Excel表格如图19所示。</P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_aiquof20072295551.jpg" width=557 height=60></STRONG></P>
<P align=center><STRONG>图19</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; E.&nbsp;添加完毕参数的Excel表格保存后,Inventor就会自动更新所链接的参数,如图20所示。接下来在参数对话框中用X2、Z2、turn_angle_2参数替代相应模型参数的值,这里还需要将主驱动参数名改为“drive”,并用“drive”替代滚轮1和滚轮2中用于滚动的驱动变量参数值,这样滚轮1和滚轮2才能滚动,滚动方向可用“+、-”号来控制。更改完成后的模型参数如图21所示。</P>
<P align=center><IMG src="http://www.chmcw.com/upload/news/RCL/13220_vuk4wb20072295630.jpg"></P>
<P align=center>图20</P>
<P align=center><STRONG><IMG style="WIDTH: 557px; HEIGHT: 301px" src="http://www.chmcw.com/upload/news/RCL/13220_kic0ag20072295648.jpg" width=557 height=322></STRONG></P>
<P align=center><STRONG>图21</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; F.&nbsp;如图22所示,将所有参考零件设为不可见,然后在浏览器中选中主驱动变量,驱动其约束,两个滚轮就会按预定路径轨迹,相反方向滚动,如图23所示。</P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_fkvurn20072295720.jpg"></STRONG></P>
<P align=center><STRONG>图22</STRONG></P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_x9jsrv20072295742.jpg"></STRONG></P>
<P align=center><STRONG>图23</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; G.&nbsp;利用主驱动变量提供的时间轴,可以连接驱动更多零部件的运动,设置零部件的先后、不同节拍的运动模式。用Inventor提供的其它内部函数,还能模拟更复杂的运动模式。</P>
<P>&nbsp;&nbsp;&nbsp; 通过以上几个列子,简单地探讨了在Inventor中用函数来实现运动模拟的方法,可以说在通用机械领域中,用Inventor提供的基于装配约束的运动模拟和函数的方法,均能方便地模拟各种复杂的机械机构运动,这方面的实列还很多,在此只是起了个头。欢迎各位读者就此问题作进一步的探讨和交流。</P>
               
页: [1]
查看完整版本: 用函数实现Inventor中特殊运动的模拟

中国磨床技术论坛
论 坛 声 明 郑重声明:本论坛属技术交流,非盈利性论坛。本论坛言论纯属发表者个人意见,与“中国磨削技术论坛”立场无关。 涉及政治言论一律删除,请所有会员注意.论坛资源由会员从网上收集整理所得,版权属于原作者. 论坛所有资源是进行学习和科研测试之用,请在下载后24小时删除, 本站出于学习和科研的目的进行交流和讨论,如有侵犯原作者的版权, 请来信告知,我们将立即做出整改,并给予相应的答复,谢谢合作!

中国磨削网