基于ADAMS宏命令的物料输送机械建模研究
2018-12-24袁俊杰王锦涛郭无极
袁俊杰,王锦涛,郭无极
(1.广西大学机械工程学院,广西 南宁 530004;2.南京农业大学工学院,江苏 南京210031)
0 引言
目前,随着虚拟样机技术即机械系统动态仿真技术在数字化设计及多体动力学仿真领域的运用,可以让设计人员在各种虚拟环境下对产品的整体运动进行仿真,通过对虚拟样机添加相关约束、载荷条件和驱动,模拟样机真实运动时的情况,便于观察运动时样机相关部件的受力情况,对设计方案进行分析。利用虚拟样机对产品进行开发时,不仅能代替物理样机进行试验验证,减少返工,还能设定多种工作情况、开展试验设计对某一部件尺寸或者性能进行优化,缩短了样机的可开发周期,提高了设计的效率和质量[1-2]。
在虚拟样机仿真软件Adams中,对机械系统进行仿真建模时,常常会因为物料的个数太多,而必须对物料进行重复建模,如在物料输送过程中,物料与物料之间会发生碰撞,同时物料与样机模型部件之间也会发生碰撞,但是在Adams软件界面中对于相互碰撞的物体,一次只能对两个相互碰撞的物体进行碰撞关系的设定,要想对每个物料与其他物料之间的碰撞关系以及每个物料与所接触的部件之间的碰撞关系进行设定,只能依次点击如图1所示的碰撞力设置窗口进行参数设定,十分繁琐。
图1 碰撞力设置窗口
如图2所示的甘蔗排种器,在其左侧的储种箱内储有150根甘蔗等待排出,若不采用宏命令进行建模,则必须在Adams中连续建立150根甘蔗模型或导入150根甘蔗模型,再依次对这些甘蔗模型进行弹性模量、密度、泊松比的设置,之后对150根甘蔗之间的两两碰撞关系进行设定,则需要进行11325次操作,对于150根甘蔗与其发生碰撞的12个样机部件进行碰撞关系的设定,则需要1 800次操作,所以在物料输送机械建模仿真时,若不采用宏命令进行建模,操作将十分不便。
图2 液压系统原理
针对此问题,将利用Adams宏命令,对以甘蔗排种器为代表的物料输送机械建模过程中各材料参数和碰撞力的设定问题进行深入探索和解决。
1 Adams宏命令的功能
宏命令是包含于Adams/view的命令集,它可以执行大量繁琐、重复、连串的命令。在宏命令中可以对模型的一系列参数进行设定,实现宏命令与模型之间的数据交换。宏命令可以在Adams/View中的命令窗口、宏命令、对话框、菜单、按钮命令中使用。
主要功能[3]:
(1)连续执行重复性操作;
(2)进行参数设定,与View界面模型实现数据交换;
(3)自动完成模型的建立、复制、移动;
(4)迅速建立建模所需变量。
2 多物料输送机械宏命令具体建模步骤
2.1 物料模型的建立、复制与移动
以甘蔗排种器排出的物料甘蔗为例,甘蔗模型为圆柱体,甘蔗种类为新台糖22号,通过采用文献[4]中方法对甘蔗进行采样、分组、测量,确定甘蔗模型的尺寸为直径为29.84 mm,其茎节凸起约1.5 mm,取其茎节处直径为33 mm,确定模型长度为270 mm,为如图3所示。
图3 甘蔗模型
首先,在适当的位置建立首个甘蔗模型;随后,对所绘制的首根甘蔗模型进行复制(此操作同时复制模型形状和参数),生成余下149根甘蔗模型;同时,在模型复制的过程中,注意对复制出的甘蔗模型进行移动操作,将150根甘蔗排布整齐,如图4所示。
图4 150根甘蔗模型
点开Adams/View工具栏的Tool选项,依次点击Marco→Edit→New,创建宏命令,如 Marco_1,之后点击Wrap in uodo→Yes,保证该命令可以被撤销,便于修改。
完成上述操作的宏命令程序如下:
defaults model model_name=.MODEL_1注释:项目名称
variable create variable_name=ip&注释:创建变量
integer_value=1变量初始赋值
while condition=(ip<150)注释:在首根甘蔗模型的位置创建其余149根甘蔗模型
part copy part=.MODEL_1.PART_1&
new_part=(unique_name("PART"))
variable modify variable_name=ip&
integer_value=(eval(ip+1))
end
variable delete variable_name=ip注释:消去变量
defaults model part_name=.MODEL_1.PART_1
variable create variable_name=ip&
integer_value=1
while condition=(ip<150) 注释:将其余甘蔗模型进行移动
move object part_name=&注释:同行甘蔗相邻质心之间距离为33mm
(eval(".MODEL_1.PART_"//(ip+1)))&
c1=33 c2=0 c3=0&
cspart_name=&
(eval(".MODEL_1.PART_"//(ip)))
variable create variable_name=ip1&
integer_value=1
while condition=(ip1<135) 注释:同列甘蔗相邻质心之间距离为33mm
move object part_name=&
(eval(".MODEL_1.PART_"//(ip1+15)))&
c1=0 c2=33 c3=0&
cspart_name=&
(eval(".MODEL_1.PART_"//(ip1)))
variable modify variable_name=ip1&
integer_value=(eval(ip1+15))
end
variable delete variable_name=ip1
variable modify variable_name=ip&
integer_value=(eval(ip+1))
end
variable delete variable_name=ip
依次点击Tool MarcoDebug Marco,选择宏命令Marco_1,点击Run运行宏命令。
2.2 物料模型参数的添加
通过创建统一的材料属性,再采用循环结构将此材料属性赋给全部物料模型。
依文献方法[4]中方法测得新台唐22号甘蔗密度为1.11e-6,弹性模量为122.45,泊松比为0.3.
创建名为ganzhe_1的材料属性。建立宏命令Marco_2并运行,宏命令如下:
defaults model model_name=.MODEL_1
material create material_name=&
(eval(".MODEL_1.MATERIAL_"//"ganzhe_"//(1)))&
density=1110&
youngs_modulus=1.2245E8&
poissons_ratio=0.3
将材料属性赋予全部物料模型。建立宏命令Marco_3.并运行,宏命令如下:
defaults model model_name=.MODEL_1
for variable_name =tempreal start_value =1 end_value=60
part modify rigid mass_properties&
part_name=(eval(".MODEL_1.PART_"//rtoi(tempreal)))&
material_type=.MODEL_1.MATERIAL_ganzhe_1
end
2.3 物料之间碰撞关系的设定
此时150根甘蔗已经全部定义完成,但它们还只是彼此独立的模型,不存在任何接触关系,若就此运行Adams进行仿真,甘蔗模型之间会出现彼此完全穿透的现象,所以要对每两个甘蔗模型之间的碰撞参数进行设定。
本文采用impact函数模型对碰撞关系进行设定。
式中:K为接触刚度系数;x1为位移开关量,用于确定单侧碰撞是否起作用;x为接触物体之间的实际位移;d为阻尼最大时两接触物体的穿透深度;Cmax为最大接触阻尼;x˙为穿透速度;n为非线性弹簧力指数。
当 x>x1时,两物体不发生接触,接触力为0,当x<x1时,两物体接触,接触力大小与接触刚度系数、非线性指数、阻尼系数以及两物体距离的改变量即穿透量有关[1]。
Adams中的碰撞关系的设定是基于Hertz弹性碰撞定律的,根据Hertz定律[5]。
式(2)、(3)、(4)中:R2为甘蔗半径,取 15mm,Ei为弾性模型,μi为泊松比。
在定义甘蔗之间和甘蔗与钢板之间的碰撞时,对于e(Force Exponent)为力的指数,刚度项的贡献因子,都取默认值2.2;C(Damping)为阻尼系数,单位为N*sec/m,通常取刚度值的0.1%~1%,本文前三者取10 N*sec/m;δ为穿透深度,对应Adams取最大阻尼系数时的穿透深度,取δ=0.1 mm.
根据文献[6]所述方法测得,甘蔗与甘蔗之间静摩擦系数为0.66,动摩擦系数取0.46.
建立宏命令Marco_4并运行,编写的宏命令如下:
defaults model model_name=.MODEL_1
variable create variable_name=ip&
integer_value=1
while condition=(ip<150)
variable create variable_name=ip1&
integer_value=2
variable create variable_name=paiming&
integer_value=1
while condition=(ip1<151)
if condition=(ip contact create contact_name=(eval("CGZ_"//(ip)//"_"//(paiming+1)))&i_geometry_name=(eval(".MODEL_1.PART_"//(ip)//".SOLID16"))& j_geometry_name=(eval(".MODEL_1.PART_"//(ip1)//".SOLID16"))& stiffness=245.6677727&注释:刚度系数 damping=1.0E+001&注释:阻尼系数 exponent=2.2&注释:力的指数 dmax=1.0E-001&注释:最大穿透深度 coulomb_friction=on&注释:库伦摩擦力 mu_static=0.66&注释:静摩擦力系数 mu_dynamic=0.46&注释:动摩擦力系数stiction_transition_velocity =100& friction_transition_velocity=1000 else end variable modify variable_name=paiming& integer_value=(eval(paiming+1)) variable modify variable_name=ip1& integer_value=(eval(ip1+1)) end variable delete variable_name=ip1 variable delete variable_name=paiming variable modify variable_name=ip& integer_value=(eval(ip+1)) end variable delete variable_name=ip 运行上述宏命令后,自动完成如图5所示的150根甘蔗之间的11325个碰撞关系设定。 图5 50根甘蔗之间的碰撞关系 根据文献[6]所述方法测得,测得甘蔗与钢板之间静摩擦力系数为0.59,动摩擦力系数取0.39. 建立宏命令Marco_4并运行,编写的宏命令如下: defaults model model_name=.MODEL_1 variable create variable_name=ip& integer_value=1 while condition=(ip<61) contact create contact_name=(eval("C_"//(ip)//(ip) //"_"//(1713)))&i_geometry_name=(eval(".MODEL_1.PART_"//(ip)//".SOLID16"))&j_geometry_name=(eval (".MODEL_1.PRT0001_1"//".SOLID1713"))& stiffness=209.381517& exponent=2.2& 此时150根甘蔗之间的碰撞关系已经全部定义完成,但它们都还没有与接触部件之间建立联系,不存在任何接触关系,此时运行Adams进行仿真,甘蔗模型与部件之间就会出现彼此完全穿透的现象,所以要对每个甘蔗模型与部件之间之间的碰撞参数进行设定,将部件材料为钢。 根据公式(1)、(2)、(3),取 R1=15 mm,R3=1.5 mm,E3=2.07e5 N/m2则 h1=2.356e-3 mm2/N,h3 mping=1.0E+001& dmax=1.0E-001& coulomb_friction=on& mu_static=0.59& mu_dynamic=0.39& stiction_transition_velocity=100& friction_transition_velocity=1000 ……(其余部件与甘蔗模型之间的碰撞关系同上) variable modify variable_name=ip& integer_value=(eval(ip+1)) end variable delete variable_name=ip 运行上述宏命令后,自动完成如图6所示的150根甘蔗与机器部件之间的1800个碰撞关系设定。 图6 150根甘与机器部件之间的碰撞关系 本文针对物料输送机械在Adams的仿真过程中,出现的物料模型重复建立、各种材料属性和碰撞关系重复设立所造成工作量浩大繁琐的问题,以甘蔗排种器为研究对象,编写了相关的宏命令,从而实现了模型的快速复制以及材料属性和各种碰撞关系的一次性施加,大大减少了仿真中建模所需的时间,提高了建模效率,为后续模型的仿真、分析创造了前提条件,也为类似物料输送机械的建模与宏命令的应用提供了参考依据。2.4 物料与部件之间碰撞关系的设定
3 结论