張宇廷,王宗彥,2,趙鵬宇,范浩東,王曦
(1.中北大學(xué)機械工程學(xué)院,山西太原 030051;2.山西省起重機數(shù)字化設(shè)計工程技術(shù)研究中心,山西太原 030051)
隨著起重機行業(yè)的發(fā)展壯大,以橋式起重機為主的起重機已經(jīng)在工程運輸、重型機械加工以及房屋建造等方面應(yīng)用廣泛。日益增長的市場競爭和信息化的沖擊,使得起重機行業(yè)不斷適應(yīng)時代的變化,開始向輕量化、數(shù)字化、智能化的趨勢靠攏。郭小雷等以VB6.0作為開發(fā)語言,實現(xiàn)了對SolidWorks三維模型的驅(qū)動,并根據(jù)簡化算法,設(shè)計出能夠快速提供報價服務(wù)的橋式起重機參數(shù)化設(shè)計系統(tǒng)。何仕永等針對橋式起重機中小車架部分進(jìn)行優(yōu)化設(shè)計,大大提升了起重機的生產(chǎn)效率,降低成本。劉春桐等使用ADAMS與SolidWorks聯(lián)合仿真,實現(xiàn)橋式起重機的消振控制。
綜合國內(nèi)研究現(xiàn)狀,我國起重機設(shè)計模式還較為單一:(1)由于市場上大多企業(yè)還在采用傳統(tǒng)的人工設(shè)計方法,根據(jù)經(jīng)驗進(jìn)行設(shè)計與選型,不僅流程繁瑣,而且設(shè)計成本較高。(2)設(shè)計的起重機不具有實時通用性,無法保證客戶與生產(chǎn)廠家的實時對接,沒有做到協(xié)同化設(shè)計。
本文作者基于Visual Studio 2013的開發(fā)軟件,使用C#語言對橋式起重機進(jìn)行智能化云平臺開發(fā)。該系統(tǒng)通過輸入各結(jié)構(gòu)的基本參數(shù),實現(xiàn)模型驅(qū)動,并且自動生成工程圖紙,調(diào)整工程圖,生成BOM表與計算書,最終實現(xiàn)在云服務(wù)器上的協(xié)同設(shè)計開發(fā)。不僅如此,根據(jù)企業(yè)的不同需求,可以使用戶在原有系統(tǒng)基礎(chǔ)上進(jìn)行多次開發(fā)。
此系統(tǒng)主要分為兩大設(shè)計板塊:(1)參數(shù)化設(shè)計;(2)云開發(fā)設(shè)計。參數(shù)化設(shè)計部分采用模塊化方式,云開發(fā)設(shè)計部分采用SaaS的服務(wù)模式。模塊化是指將橋式起重機的具體設(shè)計分為四大模塊,分別為用戶界面管理模塊、設(shè)計輕量化計算模塊、數(shù)據(jù)管理模塊以及后臺開發(fā)模塊。SaaS的含義為“軟件即服務(wù)”,是指用戶只需要通過購買或者租賃就可以使用互聯(lián)網(wǎng)中軟件的設(shè)計權(quán)限,不需要單獨購買軟件,流通性更加廣泛,可以提供在線服務(wù)。該系統(tǒng)的總體結(jié)構(gòu)如圖1所示。
圖1 總體設(shè)計框架
參數(shù)化設(shè)計與云開發(fā)設(shè)計使用云服務(wù)器進(jìn)行連接,并不相互獨立,而是可以同時在本地服務(wù)器端或者網(wǎng)絡(luò)端打開相應(yīng)的界面,以實現(xiàn)快速、高效的協(xié)同化設(shè)計。
網(wǎng)絡(luò)云開發(fā)平臺(Web Development Platform)是指使用與創(chuàng)建可應(yīng)用程序虛擬數(shù)字化技術(shù)的平臺,具有網(wǎng)絡(luò)瀏覽、資源可視化處理、云數(shù)據(jù)管理、自動備份等多種功能于一體的多元開發(fā)平臺。通過該平臺,使應(yīng)用軟件不會與系統(tǒng)開發(fā)平臺產(chǎn)生兼容問題,達(dá)到廣泛使用、充分利用網(wǎng)絡(luò)可視化資源的目的。
網(wǎng)絡(luò)云開發(fā)簡稱云開發(fā),一般有兩種基本開發(fā)模式:一種是基于C/S結(jié)構(gòu)的云開發(fā),即客戶機/服務(wù)器模式;一種是基于B/S結(jié)構(gòu)的云開發(fā),即瀏覽器/服務(wù)器模式。C/S結(jié)構(gòu)下的云開發(fā)具有更豐富的界面功能拓展和產(chǎn)品開發(fā)手段,只有一層交互對接,使用方便,但是只限于局域網(wǎng)內(nèi)的使用,客戶與生產(chǎn)廠家不能迅速協(xié)同設(shè)計與對接。B/S結(jié)構(gòu)的云開發(fā)則不需要安裝客戶端,對Windows環(huán)境下的.Net Framework基礎(chǔ)軟件環(huán)境沒有要求,只需要在網(wǎng)頁端就能打開系統(tǒng),操作簡單,但是可能會降低系統(tǒng)的基礎(chǔ)開發(fā)性能。本文作者采用B/S結(jié)構(gòu)的云開發(fā)平臺,并對其進(jìn)行了結(jié)構(gòu)優(yōu)化,實現(xiàn)三維預(yù)覽跨瀏覽器的兼容以及自帶驅(qū)動插件的功能。
(1)SolidWorks參數(shù)化二次開發(fā)
三維驅(qū)動模型的配置是二次開發(fā)的關(guān)鍵與基礎(chǔ)。SolidWork本身具備強大的三維設(shè)計服務(wù),可以配合關(guān)系使用內(nèi)嵌的API函數(shù)實現(xiàn)驅(qū)動橋式起重機各部分結(jié)構(gòu)草圖,分別生成三維模型的裝配關(guān)系,再通過得到的模型進(jìn)行減速器、卷筒、滑輪組的選型和總體的排布選型設(shè)計,最后經(jīng)過優(yōu)化計算得到橋式起重機的輕量化模型。文中的數(shù)字化開發(fā)設(shè)計不同于VB的二次開發(fā)設(shè)計,引入自編程的Solidwork工具類庫的概念。以下為C#開發(fā)關(guān)鍵代碼:
打開三維模型代碼:
SldWorks.SldWorksswApp=new SldWorks.Sl-
Works();
swApp.Visible=true;
int errors=0;
int warnings=0;
bool boolstatus=false;
string DocName2=
@"C:Users橋起.SLDASM ";
驅(qū)動草圖尺寸關(guān)鍵代碼:
swApp.OpenDoc6(DocName2,2,0,””,ref er-
rors,ref warnings);
SldWorks.ModelDoc2 swModel=swApp.Acti-
veDoc;
SldWorks.Dimension swDim=(SldWorks.Dim-
ension)swModel.Parameter("D1@草圖1");
swModel.EditRebuild3();
(2)工程圖調(diào)整開發(fā)
不同于參數(shù)化二次開發(fā),工程圖調(diào)整需要根據(jù)不同的實際使用情況,設(shè)置不同的圖紙標(biāo)準(zhǔn)。該系統(tǒng)采用層層檢索模式,套用API函數(shù)的循環(huán)語句,遍歷整個工程圖紙的圖層、視口位置、尺寸,使工程圖調(diào)整達(dá)到標(biāo)準(zhǔn)化程度。
打開工程圖代碼:
swDraw=swApp.OpenDoc6(@"C:Users小車工程圖.SLDDRW",3,0,"",ref errors,ref warnings);
ModelDoc2 swModel=swApp.ActiveDoc;
swView=(SldWorks.View)swDraw.GetFirstVi-
ew();
調(diào)整視圖位置代碼:
double x=Convert.ToDouble(xe.Element("位置").Element("X").Value);
double y=Convert.ToDouble(xe.Element("位置").Element("Y").Value);
swView.Position=new double[]{ x,y,0 };
獲取圖層、調(diào)整尺寸代碼:
object obj=(object)obj_loopVariable;
DisplayDimensioncurr DisplayDimension=
(DisplayDimension)obj;
Annotation ann=currDisplayDimension.GetA-
nnotation();
double[]m=ann.GetPosition();
(3)Office的二次開發(fā)
在該系統(tǒng)中需要使用Word與Excel文檔,使用Word自動生成機構(gòu)計算書,使用Excel生成BOM表。使用C#將Word與Excel內(nèi)置的VBA類型的API函數(shù)進(jìn)行類別轉(zhuǎn)換與調(diào)用,創(chuàng)建OfficeTool的類庫,將驅(qū)動Word與Excel的程序分別寫入不同的類中,實現(xiàn)創(chuàng)建打開文檔、激活圖表、讀取單元格文本、添加公式等功能。生成的計算書與BOM表需要統(tǒng)一字體,公式需要按照起重機設(shè)計手冊規(guī)范。具體要求如圖2所示。
圖2 Office類庫的實現(xiàn)
現(xiàn)階段的橋式起重機輕量化設(shè)計大多是主梁的優(yōu)化設(shè)計,原因在于主梁的結(jié)構(gòu)簡單,設(shè)計方便,運用多目標(biāo)優(yōu)化算法可以直觀看到主梁輕量化實驗之后的效果。所以文中重點為基于NSGA-II算法的主梁輕量化設(shè)計方案。
遺傳算法是一種基于自然界與遺傳的隨機搜索算法,模擬與搜索進(jìn)化過程中的最優(yōu)解,利用由多個染色體組成的初始化群體,交換信息重新組合成為新的群體。遺傳算法基本的操作步驟為遺傳、交叉、變異。缺點是編碼存在不可靠程度高的問題,結(jié)果具有隨機性,在定量分析方面還沒有統(tǒng)一的標(biāo)準(zhǔn)。
NSGA-II算法是基于NSGA提出的多目標(biāo)遺傳優(yōu)化算法,引入了擁擠度的概念,擁擠度大的樣本個體會被保留下來,擁擠度小的樣本個體則會被淘汰。相比于傳統(tǒng)的遺傳算法,它的運行速度快,帕累托解集的收斂性更好,降低了一些非劣個體在遺傳進(jìn)化過程中的淘汰率,魯棒性更強。NSGA-III算法沿用了NSGA-II算法的框架,基于參考點的方法實現(xiàn)三目標(biāo)以上的優(yōu)化問題,但是如果擁擠程度過高,則會降低計算解集的收斂性,陷入局面最優(yōu)的問題。因此作者最終選擇NSGA-II算法作為實現(xiàn)主梁多目標(biāo)優(yōu)化的基礎(chǔ)。
將主梁的參數(shù)化結(jié)構(gòu)簡化為上蓋板、左右對稱腹板、下蓋板、板間跨度、長度,如圖3所示。
圖3 主梁簡化截面
結(jié)合NSGA-II算法,在參數(shù)驅(qū)動程序中將不同的封裝函數(shù)進(jìn)行嵌套處理,給定主梁上蓋板和板間跨度,運用交叉、變異的進(jìn)化策略分別將腹板與下蓋板的厚度通過最優(yōu)解收斂成集合的形式,在編程中使用數(shù)組嵌套,分別將各自的優(yōu)化情況返回到參數(shù)設(shè)置程序中,提示用戶某一優(yōu)化范圍下左右對稱腹板的跨度,在材料許用應(yīng)力滿足的情況下,最大限度地簡化尺寸,節(jié)省生產(chǎn)用料。圖4為NSGA-II算法實現(xiàn)主梁優(yōu)化流程。
圖4 基于NSGA-II算法的主梁輕量化流程
云平臺開發(fā)是在物聯(lián)網(wǎng)與互聯(lián)網(wǎng)的基礎(chǔ)之上,將所有的可視化數(shù)據(jù)上傳到云服務(wù)器端,通過云平臺的接口調(diào)用需要的數(shù)據(jù)。通過網(wǎng)絡(luò)和終端實現(xiàn)高效、有序、智能的先進(jìn)技術(shù)開發(fā)方式。
文中的云開發(fā)過程是基于SaaS云開發(fā)的服務(wù)模式,為用戶提供多租戶數(shù)據(jù)連接服務(wù),將本機作為終端服務(wù)器和數(shù)據(jù)處理器,將生成的工程圖和三維驅(qū)動模型上傳到云端并返回所需的API輕量化文件,調(diào)用XML文件調(diào)取需要的初始化文件,將最終生成的模型與圖紙預(yù)覽地址轉(zhuǎn)換為可被瀏覽器識別的HTML的原文件,將HTML文件自動調(diào)用到Web窗體上顯示。具體過程如圖5所示。
圖5 云開發(fā)關(guān)鍵流程
將云端服務(wù)器與Visual Studio 2013中建立的ASP.Net.Core的環(huán)境相互鏈接,點擊啟動按鈕,激活Form窗體,C#程序中引用SldWorks Library Type接口實現(xiàn)SolidWorks二次開發(fā)功能與工具類庫的調(diào)用,使用接口Newtonsoft.Json調(diào)取用戶的企業(yè)ID來連接云服務(wù)器,配置好關(guān)鍵接口后按照提示需要輸入用戶名與密碼。界面設(shè)置有5項基本服務(wù),打開文件、幫助、瀏覽器訪問、后臺開發(fā)以及文件加密。圖6為云平臺初始開發(fā)界面。
圖6 系統(tǒng)初始化界面
打開初始化界面之后,進(jìn)行起重機基本參數(shù)選擇與尺寸設(shè)計計算。參數(shù)化驅(qū)動部分運用模塊化設(shè)計思路分為總裝設(shè)計、小車設(shè)計、大車設(shè)計3個模塊。
首先進(jìn)行橋式起重機的總裝設(shè)計。以小車為雙起升機構(gòu)的橋式起重機為例,需要先設(shè)置它的工作級別,工作精度,起重機所處溫度、海拔,司機室的布置情況;根據(jù)這些外在因素調(diào)用不同的封裝函數(shù)并對起重機強度載荷、疲勞狀況、輕量化開發(fā)進(jìn)行更精確的優(yōu)化計算,節(jié)約不必要的時間損耗與開發(fā)成本,如圖7所示。
圖7 總裝設(shè)計界面
輸入界面需要提供基本尺寸與排布尺寸,然后進(jìn)行電動機、減速器、吊鉤等外構(gòu)件的選型,根據(jù)設(shè)計公式檢查參數(shù)與選型是否合理;當(dāng)所有設(shè)計都趨于合理時,系統(tǒng)會顯示綠色的計算結(jié)果,包括載荷強度、尺寸規(guī)劃和輕量化結(jié)果;當(dāng)出現(xiàn)紅色的提示,說明設(shè)置不合理,需要重新設(shè)置參數(shù),否則無法進(jìn)行下一步。起重機小車的載荷計算結(jié)果如圖8所示。
圖8 起升機構(gòu)載荷計算界面
在所有的參數(shù)與驗證校核都合理時,在每個模塊的最后板塊會根據(jù)界面輸入的數(shù)據(jù)自動生成Word格式的計算書與Excel格式的BOM表。在主梁的輕量化設(shè)計中,該系統(tǒng)運用了NSGA-II的多目標(biāo)優(yōu)化算法,可以分別對主梁的左右腹板與上下蓋板進(jìn)行輕量化設(shè)計,并不只限于尺寸與厚度的優(yōu)化。生成的計算書中會提出優(yōu)化方案,方便用戶查看。圖9為主梁設(shè)計界面。
圖9 主梁輕量化設(shè)計界面
最后生成模型驅(qū)動后的工程圖紙,根據(jù)實際需求調(diào)整圖紙的圖層、尺寸、序號等具體標(biāo)注,調(diào)用不同的型號的工程圖紙。具體操作為使用驅(qū)動程序捕捉視圖位置與圖框,根據(jù)圖框進(jìn)行尺寸、序號的遍歷,再將尺寸歸于圖層,實現(xiàn)標(biāo)準(zhǔn)化的生產(chǎn)圖紙,最后將圖紙自動保存為DWG格式。
此系統(tǒng)中的云平臺開發(fā)基于B/S架構(gòu),在Web界面的參數(shù)化設(shè)計操作以及云服務(wù)器調(diào)取所需數(shù)據(jù),使用XML調(diào)取云端的數(shù)據(jù)信息,將生成的三維模型與工程圖紙直接下載到客戶的計算機中。初始三維模型是“自頂向下”創(chuàng)建模式,也就是將模型中的裝配零件轉(zhuǎn)換為虛擬零件形式,保存在同一裝配體中,目的是為了保持整個構(gòu)件的裝配關(guān)系。
以小車架為案例,首先點擊初始界面的云端開發(fā)選項,點擊界面中的調(diào)用接口按鈕,調(diào)用到FTP端口,獲取網(wǎng)絡(luò)云端域名,返回需要轉(zhuǎn)換的云端服務(wù)網(wǎng)址;再通過C#轉(zhuǎn)換驅(qū)動程序?qū)⑷S模型轉(zhuǎn)換成x_t格式的輕量化文件上傳到云端服務(wù)器中,經(jīng)過兩次的MD5加密后作為臨時文件儲存到云數(shù)據(jù)庫中;將網(wǎng)頁客戶端的數(shù)據(jù)通過Base64解碼成網(wǎng)頁編碼格式字符串,最后返回HTML格式的網(wǎng)址文件。用戶可以調(diào)用臨時網(wǎng)址對需要的模型與工程圖進(jìn)行下載。圖10為驅(qū)動完成后使用網(wǎng)址打開的橋式起重機小車架模型。
圖10 網(wǎng)頁HTML版小車架三維模型
生成的網(wǎng)絡(luò)版三維模型還保持原有的裝配關(guān)系與屬性,便于實時的設(shè)計檢測;若需要再次驅(qū)動模型的尺寸,則會在臨時網(wǎng)址刷新,重復(fù)上述步驟,完成云平臺的各項驅(qū)動;最后可以將網(wǎng)頁端的數(shù)據(jù)模型下載到本地預(yù)覽。
本文作者使用Visual Studio 2013的ASP.NET為開發(fā)環(huán)境,使用API函數(shù)將B/S框架嵌套到數(shù)字化系統(tǒng)開發(fā)中,在網(wǎng)頁端可以實現(xiàn)圖紙的驅(qū)動,供用戶下載使用。該系統(tǒng)創(chuàng)新之處在于:
(1)對于復(fù)雜參數(shù)化裝配體而言,云平臺中的三維模型還保存原有的裝配關(guān)系,沒有受到開發(fā)環(huán)境的影響。
(2)使用NSGA-II算法轉(zhuǎn)換成驅(qū)動開發(fā)程序,實現(xiàn)主梁輕量化設(shè)計與精確校核計算。
(3)設(shè)置封裝函數(shù),用戶可以根據(jù)企業(yè)需求在開發(fā)基礎(chǔ)上進(jìn)行自己的云平臺拓展與研發(fā)。
文中研究對于大批量化生產(chǎn)起重機的中大型企業(yè)來說具有重要的意義,極大地縮短了開發(fā)周期,節(jié)省了設(shè)計計算的時間。此系統(tǒng)已經(jīng)應(yīng)用于多家企業(yè)中,得到了大量認(rèn)可,該系統(tǒng)為起重機云平臺開發(fā)設(shè)計提供了參考。