第五章 結論及後續工作
5.2 後續工作
後續工作可探討不同的金屬封片外型以及 o-ring 墊圈外型對密封 性的影響,而 o-ring 墊圈的橡膠硬度,可再做更廣泛的實驗,以便更 加真實的模擬橡膠的變形情形和對漏氣量的影響。而若是其他種類的 鋼瓶,其密封方式若也是運用 o-ring 墊圈做封口,可先以本研究的方
78
式,運用模擬和實驗找出密封性較佳的組合,再去比較與本研究所得 結論之差異性;在鋼瓶內壓的部分,由於必頇以手動的方式給定 o-ring 墊圈一均部內壓,若以此方式去進行模擬,在多組尺寸組合以及最佳 化模擬的情況下便難以進行,因此本研究並沒有考慮 o-ring 墊圈承受 氣體壓力的情形,後續可用 fluid element[12]或以其他方式進一步的 模擬高壓氣體對 o-ring 墊圈的影響,以便能更真實反映出 o-ring 墊圈 接觸應力狀態和變形的狀況;在沖頭最佳化部分,由於本研究僅針對 其中一組尺寸做開模實驗,若後續要針對沖頭外型做深入研究,可再 挑選數組鋼瓶尺寸密封性較好的組合,去做沖頭最佳化的模擬與實驗,
進一步提升密封性與更了解沖頭外型對密封性的影響。
79
參考文獻
[1] D. Burgess, “Nonmetallic gaskets: Avoiding leaks and blow outs”, Plant Engineering,1999 Oct; 60-64.
[2] H. Champliaud and N. V. Lê, “Prediction of the leakage pressure of a cap and bottle assembly using the finite element method”, Glass Technology, 2003; 44(6):225-230.
[3] G. Boqin, C. Ye, and Z. Dasheng, “Prediction of leakage Rates Through Sealing Connections with Nonmetallic Gaskets”, Nanjing University of Technology, 2007; 15(6):837-841.
[4] Y. Matsuzaki, K. Hosokawa, and K. Funabashi, “Effect of Surface Roughness on Contact Pressure of Static Seals”, JSME International Journal, Series III, 1992; 35(3):119-124.
[5] 許嘉元,“金屬密封塑性變形研究”,國立台灣大學機械工程 學系研究所碩士論文,2000。
[6] J. Arghavani, M. Derenne, and L. Marchand, “Effect of Surface Characteristics on Compressive Stresses and Leakage Rate in Gasketed Flanged Joints”, Advanced Manufacturing technology,
2003; 21:713-732.
[7] 左亮,“橡膠 Mooney-Rivlin 模型材料系數的一種確定方法”,
西南交通大學,2008。
[8] S. Y. Chen, “SmartDO Version 2.0 Manuals”, FEA-Opt Technology, 2008.
[12] ABAQUS 6.8-1 HTML Documentation.
80
[13] 士盟科技股份有限公司,http://www.simutech.com.tw。
[14] 愛發股份有限公司,『 ABAQUS 實務入門引導』,初版,全華,
2005。
[15] 元翎精密工業股份有限公司,http://www.twmosa.com。
[16] 韓忠諭,“複合金屬板材板液壓成形之有限元素分析”,國立 交通大學機械工程學系研究所碩士論文,2009。
[17] 李曉芳,“封隔器膠筒接觸應力的有限元分析”,福建福州大 學,2005。
81
附錄 A 連接 SmartDO 和 ABAQUS/Standard 的程式碼
# -*- coding: mbcs -*-
#
# Abaqus/CAE Version 6.8-1 replay file
# Internal Version: 2008_05_02-13.37.42 86896
# Run by six on Wed Dec 23 11:55:48 2009
#
# from driverUtils import executeOnCaeGraphicsStartup
# executeOnCaeGraphicsStartup()
#: Executing \"onCaeGraphicsStartup()\" in the site directory ...
from abaqus import *
from abaqusConstants import *
session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=192.98516061902, height=190.634765625)
session.viewports\['Viewport: 1'\].makeCurrent() session.viewports\['Viewport: 1'\].maximize() from caeModules import *
from driverUtils import executeOnCaeStartup executeOnCaeStartup()
openMdb(pathName='C:/Temp/cylinder.cae')
#: The model database \"C:\\Temp\\cylinder.cae\" has been opened.
session.viewports\['Viewport: 1'\].setValues(displayedObject=None) p = mdb.models\['Model-1'\].parts\['NN08-03-E'\]
session.viewports\['Viewport: 1'\].setValues(displayedObject=p) p1 = mdb.models\['Model-1'\].parts\['punch'\]
session.viewports\['Viewport: 1'\].setValues(displayedObject=p1) p = mdb.models\['Model-1'\].parts\['punch'\]
s = p.features\['Wire-1'\].sketch
mdb.models\['Model-1'\].ConstrainedSketch(name='__edit__', objectToCopy=s) s1 = mdb.models\['Model-1'\].sketches\['__edit__'\]
g, v, d, c = s1.geometry, s1.vertices, s1.dimensions, s1.constraints s1.setPrimaryObject(option=SUPERIMPOSE)
p.projectReferencesOntoSketch(sketch=s1, upToFeature=p.features\['Wire-1'\], filter=COPLANAR_EDGES)
DV001 = $smartdo_x(1) DV002 = $smartdo_x(2)
82
DV003 = $smartdo_x(3) DV004 = $smartdo_x(4)
d\[0\].setValues(value=DV001, ) d\[2\].setValues(value=DV002, ) d\[4\].setValues(value=DV003, ) d\[1\].setValues(value=DV004, ) s1.unsetPrimaryObject()
p = mdb.models\['Model-1'\].parts\['punch'\]
p.features\['Wire-1'\].setValues(sketch=s1)
del mdb.models\['Model-1'\].sketches\['__edit__'\]
p = mdb.models\['Model-1'\].parts\['punch'\]
p.regenerate()
a = mdb.models\['Model-1'\].rootAssembly a.regenerate()
a = mdb.models\['Model-1'\].rootAssembly
session.viewports\['Viewport: 1'\].setValues(displayedObject=a)
session.viewports\['Viewport: 1'\].assemblyDisplay.setValues(mesh=ON) session.viewports\['Viewport: 1'\].assemblyDisplay.meshOptions.setValues(
meshTechnique=ON)
a = mdb.models\['Model-1'\].rootAssembly partInstances =(a.instances\['punch-1'\], ) a.generateMesh(regions=partInstances)
session.viewports\['Viewport: 1'\].assemblyDisplay.setValues(mesh=OFF) session.viewports\['Viewport: 1'\].assemblyDisplay.meshOptions.setValues(
meshTechnique=OFF) import job
mdb.jobs\['cylinder'\].submit(consistencyChecking=OFF) mdb.jobs\['cylinder'\].waitForCompletion()
#: The job input file \"cylinder.inp\" has been submitted for analysis.
#: Job cylinder: Analysis Input File Processor completed successfully.
#: Job cylinder: Abaqus/Standard completed successfully.
#: Job cylinder completed successfully.
import visualization
o3 = session.openOdb(name='C:/Temp/cylinder.odb')
#: Model: C:/Temp/cylinder.odb
#: Number of Assemblies: 1
#: Number of Assembly instances: 0
#: Number of Part instances: 4
83
#: Number of Meshes: 4
#: Number of Element Sets: 3
#: Number of Node Sets: 4
#: Number of Steps: 2
session.viewports\['Viewport: 1'\].setValues(displayedObject=o3)
session.viewports\['Viewport: 1'\].odbDisplay.display.setValues(plotState=(
CONTOURS_ON_DEF, ))
session.viewports\['Viewport: 1'\].view.setValues(nearPlane=67.8488,
farPlane=93.5774, width=6.11329, height=4.541, viewOffsetX=-0.92217, viewOffsetY=5.02598)
leaf = dgo.LeafFromPartInstance(partInstanceName=('O-RING', ))
session.viewports\['Viewport: 1'\].odbDisplay.displayGroup.replace(leaf=leaf) odb = session.odbs\['C:/Temp/cylinder.odb'\]
session.fieldReportOptions.setValues(sort=DESCENDING)
session.writeFieldReport(fileName='CPRESS.txt', append=OFF, sortItem='CPRESS', odb=odb, step=1, frame=18, outputPosition=ELEMENT_NODAL, variable=((
'CPRESS', ELEMENT_NODAL), )) mdb.save()
#: The model database has been saved to \"C:\\Temp\\cylinder.cae\".
84
附錄 B SmartDO 的其他程式碼
目標函數
catch {file delete -force cylinder.lck}
catch {file delete -force CPRESS.txt}
smartdo exetcl cylinder01.py cylinder02.py
catch {exec abaqus cae noGUI=cylinder02.py}
set File001 [open "CPRESS.txt" "r"]
while { [gets $File001 String001] != -1} {
if { [string first "Total" $String001] != -1 } { set smartdo_obj [lindex $String001 1]
set smartdo_obj [expr 500-$smartdo_obj]
} }
close $File001
限制條件
set File001 [open "CPRESS.txt" "r"]
set Line 1 set totalcpress 0 set Totaline 0 set sumcpress 0
while { [gets $File001 String001] != -1} {
set Totaline [expr $Totaline+1]
}
set Totaline [expr $Totaline-32]
close $File001
85
set File001 [open "CPRESS.txt" "r"]
while { [gets $File001 String001] != -1} {
close $File001
set File001 [open "CPRESS.txt" "r"]
while { [gets $File001 String001] != -1} {
86
close $File001
#
=============================================================
#constraint2:the contact area must higher than 80%
=============================================================
set File001 [open "CPRESS.txt" "r"]
while { [gets $File001 String001] != -1} {
close $File001
87
變數資料檔案(初始值&上下界)
set smartdo_ioptmzr 1 set smartdo_idflt 12
#
# model parameters
#
set smartdo_ndv 4 set smartdo_ncnstrn 2
#
# design variables
#
smartdo filobj cylinder_obj.tcl smartdo filcns cylinder_cns.tcl
88
附錄 C 改變金屬封片尺寸的模擬與實驗
初步後續工作之一,由元翎精密工業變更金屬封片尺寸,應用本 研究之結論進行模擬與實驗。新版與舊版之金屬封片外型如下圖所示
主要變動較大的尺寸如圖中紅框所示,應用先前的研究結果,模擬參 數如下表所示:
將模擬結果依 o-ring 墊圈最大接觸應力和接觸應力標準差製成圖表,
並結合 o-ring 墊圈接觸面積來判斷,選出九組模擬情形較佳的尺寸組
製程參數 變數值
鋼瓶口高度(mm) 3.8 ,3.85,3.9 鋼瓶口內徑(mm) 7.5,7.55,7.6 o-ring 墊圈高度(mm) 2.3,2.5 o-ring 墊圈厚度(mm) 1.3,1.5
89
90
方面是金屬封片之尺寸改良,另一方面是模擬的準確預測,確實能夠 降低詴誤法所花費的時間和成本。
91
附錄 D 改變 o-ring 墊圈硬度的模擬
在本研究中 o-ring 墊圈的硬度值為固定,但由於在文獻中也有其 他 o-ring 墊圈硬度值的資訊,因此本研究也模擬了不同 o-ring 墊圈硬 度對接觸應力的影響,首先選定一組固定的尺寸組合,接著參考文獻 中的實驗數據改變 o-ring 墊圈的材料係數來做模擬。
改變 o-ring 墊圈硬度的模擬結果 接觸應力
oring 硬度
最大接觸應力(MPa) 接觸面積(%) 接觸應力標準差
50 度 1.03652 68.38235 0.18746 60 度 1.50402 69.58924 0.27334 70 度 2.26158 72.36782 0.41436
由模擬結果可以看出,增加 o-ring 墊圈硬度也會影響到接觸應力 狀態,最大接觸應力、接觸面積和接觸應力標準差都隨之增加;而由 模擬與實驗所得之接觸應力與密封性的關係,可知 o-ring 墊圈的硬度 也有一適當值,硬度太軟則不足以產生足夠的接觸應力強度使鋼瓶達 成良好的密封,但硬度過硬則會使接觸應力標準差上升,造成接觸應 力分佈的不平均,反而讓密封性下降。