袁俊杰,王錦濤,郭無極
(1.廣西大學機械工程學院,廣西 南寧 530004;2.南京農業大學工學院,江蘇 南京210031)
目前,隨著虛擬樣機技術即機械系統動態仿真技術在數字化設計及多體動力學仿真領域的運用,可以讓設計人員在各種虛擬環境下對產品的整體運動進行仿真,通過對虛擬樣機添加相關約束、載荷條件和驅動,模擬樣機真實運動時的情況,便于觀察運動時樣機相關部件的受力情況,對設計方案進行分析。利用虛擬樣機對產品進行開發時,不僅能代替物理樣機進行試驗驗證,減少返工,還能設定多種工作情況、開展試驗設計對某一部件尺寸或者性能進行優化,縮短了樣機的可開發周期,提高了設計的效率和質量[1-2]。
在虛擬樣機仿真軟件Adams中,對機械系統進行仿真建模時,常常會因為物料的個數太多,而必須對物料進行重復建模,如在物料輸送過程中,物料與物料之間會發生碰撞,同時物料與樣機模型部件之間也會發生碰撞,但是在Adams軟件界面中對于相互碰撞的物體,一次只能對兩個相互碰撞的物體進行碰撞關系的設定,要想對每個物料與其他物料之間的碰撞關系以及每個物料與所接觸的部件之間的碰撞關系進行設定,只能依次點擊如圖1所示的碰撞力設置窗口進行參數設定,十分繁瑣。

圖1 碰撞力設置窗口
如圖2所示的甘蔗排種器,在其左側的儲種箱內儲有150根甘蔗等待排出,若不采用宏命令進行建模,則必須在Adams中連續建立150根甘蔗模型或導入150根甘蔗模型,再依次對這些甘蔗模型進行彈性模量、密度、泊松比的設置,之后對150根甘蔗之間的兩兩碰撞關系進行設定,則需要進行11325次操作,對于150根甘蔗與其發生碰撞的12個樣機部件進行碰撞關系的設定,則需要1 800次操作,所以在物料輸送機械建模仿真時,若不采用宏命令進行建模,操作將十分不便。

圖2 液壓系統原理
針對此問題,將利用Adams宏命令,對以甘蔗排種器為代表的物料輸送機械建模過程中各材料參數和碰撞力的設定問題進行深入探索和解決。
宏命令是包含于Adams/view的命令集,它可以執行大量繁瑣、重復、連串的命令。在宏命令中可以對模型的一系列參數進行設定,實現宏命令與模型之間的數據交換。宏命令可以在Adams/View中的命令窗口、宏命令、對話框、菜單、按鈕命令中使用。
主要功能[3]:
(1)連續執行重復性操作;
(2)進行參數設定,與View界面模型實現數據交換;
(3)自動完成模型的建立、復制、移動;
(4)迅速建立建模所需變量。
以甘蔗排種器排出的物料甘蔗為例,甘蔗模型為圓柱體,甘蔗種類為新臺糖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_"http://(ip+1)))&
c1=33 c2=0 c3=0&
cspart_name=&
(eval(".MODEL_1.PART_"http://(ip)))
variable create variable_name=ip1&
integer_value=1
while condition=(ip1<135) 注釋:同列甘蔗相鄰質心之間距離為33mm
move object part_name=&
(eval(".MODEL_1.PART_"http://(ip1+15)))&
c1=0 c2=33 c3=0&
cspart_name=&
(eval(".MODEL_1.PART_"http://(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運行宏命令。
通過創建統一的材料屬性,再采用循環結構將此材料屬性賦給全部物料模型。
依文獻方法[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_"http://"ganzhe_"http://(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_"http://rtoi(tempreal)))&
material_type=.MODEL_1.MATERIAL_ganzhe_1
end
此時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_"http://(ip)//"_"http://(paiming+1)))&i_geometry_name=(eval(".MODEL_1.PART_"http://(ip)//".SOLID16"))& j_geometry_name=(eval(".MODEL_1.PART_"http://(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_"http://(ip)//(ip) //"_"http://(1713)))&i_geometry_name=(eval(".MODEL_1.PART_"http://(ip)//".SOLID16"))&j_geometry_name=(eval (".MODEL_1.PRT0001_1"http://".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 結論