国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

FPSO船體結(jié)構(gòu)建造Piece Mark進(jìn)度報(bào)表開發(fā)與應(yīng)用

2021-11-20 14:41姜秀斌沈彬吳濤劉鎮(zhèn)東
現(xiàn)代計(jì)算機(jī) 2021年18期
關(guān)鍵詞:數(shù)據(jù)表總裝分段

姜秀斌,沈彬,吳濤,劉鎮(zhèn)東

(海洋石油工程股份有限公司,青島266520)

0 引言

隨著近幾年海洋石油工程股份有限公司走向全球、走向深海的步伐,海工青島公司作為建造板塊的核心公司也迎來(lái)了國(guó)內(nèi)和國(guó)外浮式生成和儲(chǔ)油裝置建造的一個(gè)小高峰,同時(shí)也加強(qiáng)與煙臺(tái)萊佛士船業(yè)有限公司為代表船廠之間的合作。在船體建造過程中,國(guó)外業(yè)主會(huì)要求每周提交每一個(gè)零件的建造狀態(tài),國(guó)外業(yè)主稱之為Piece Mark狀態(tài)表,包括下料、零件預(yù)制、板片預(yù)制、分段預(yù)制、涂裝和搭載狀態(tài),并以此為依據(jù)進(jìn)行建造進(jìn)度的計(jì)算,以及費(fèi)用QS結(jié)算等業(yè)務(wù)。

由于每一個(gè)項(xiàng)目業(yè)主對(duì)Piece Mark報(bào)表的內(nèi)容和狀態(tài)清單等都可能提出一些特定的要求,因此需要基于項(xiàng)目的特定需求并使用該解決方案和軟件算法為每一個(gè)項(xiàng)目的Piece Mark表開發(fā)特定的程序。

1 PCMS系統(tǒng)配置

PCMS系統(tǒng)是Project Construction Management Sys?tem的縮寫,海工青島公司與鷹圖公司合作開發(fā)的適用于海工青島公司的建造管理系統(tǒng)。該系統(tǒng)的一個(gè)優(yōu)點(diǎn)是可以根據(jù)項(xiàng)目的需求實(shí)現(xiàn)從加工設(shè)計(jì)數(shù)據(jù)、工單類型、工作步驟、報(bào)表等環(huán)節(jié)的自定義配置,因此是非常靈活的一個(gè)系統(tǒng)。

1.1 加工設(shè)計(jì)數(shù)據(jù)模板配置

加工設(shè)計(jì)數(shù)據(jù)模板分為下料方案模板類和裝配方案模板類。其中分段下料方案模板包括:分段板材下料方案模板文件和分段型材下料方案模板文件。下料方案模板文件必須包含的信息包括:下料指令號(hào)(即圖紙?zhí)枺?、套料零件清單、下料凈總重量等;其中裝配模板文件包括:一級(jí)裝配件(包括卷制管、T型梁、K板等)裝配模板文件、板架裝配模板文件和分段裝配模板文件。裝配模板文件必須包含的信息包括:裝配圖紙?zhí)?、零件ID、子構(gòu)件ID、零件數(shù)量、零件重量和父構(gòu)件ID等。

1.2 工單類型和工作步驟配置

工單的類型需要與業(yè)主、項(xiàng)目組和生產(chǎn)車間相關(guān)人員(包括生產(chǎn)負(fù)責(zé)人和計(jì)劃工程師等)一起討論后確定;每一類工單中包含什么Component(工作對(duì)象),它應(yīng)該分成哪幾個(gè)Work Step(工作步驟)也需要一起討論后確定。這些討論是非常有必要的,因?yàn)楣ぷ鲗?duì)象和工作步驟直接和項(xiàng)目的四級(jí)計(jì)劃、權(quán)重分配策略等相關(guān)。

1.3 SPF進(jìn)度報(bào)表配置

從SPF2016R1版本開始,Smart Plant Foundation軟件提供了Report Administration模塊,通過該模塊可以非常方便并且靈活地配置報(bào)表,報(bào)表導(dǎo)出格式選擇xlsx文件格式。在本項(xiàng)目中設(shè)計(jì)了兩個(gè)報(bào)表分別是下料進(jìn)度報(bào)表和裝配進(jìn)度報(bào)表,由于xlsx格式數(shù)據(jù)文件的最大行數(shù)約為104萬(wàn)行,因此合理地分成兩個(gè)報(bào)表有利于保證在項(xiàng)目后期數(shù)據(jù)報(bào)表的總行數(shù)不會(huì)突破104萬(wàn)行限制。

2 Piece Mark開發(fā)技術(shù)與算法

本文采用的編程技術(shù)是VSTO技術(shù)(Visual Studio Tool for Office),編程語(yǔ)言采用Visual Basic.Net,首選通過SPF生成xlsx報(bào)表并下載到本地,再通過xlsx數(shù)據(jù)表提取數(shù)據(jù)技術(shù),并采用數(shù)據(jù)字典數(shù)據(jù)結(jié)構(gòu),最后使用零件狀態(tài)分析算法生成業(yè)主需要的Piece Mark報(bào)表。

2.1 xlsx表提取數(shù)據(jù)技術(shù)

將xlsx文件作為數(shù)據(jù)庫(kù),可以采用如下數(shù)據(jù)庫(kù)連接關(guān)鍵字信息:OleDbConnection1.ConnectionString="Provider=Microsoft.Ace.OLEDB.12.0;Extended Proper?ties='Excel 12.0;HDR=yes;IMEX=1';Data Source="&XlsxFullFileName。其中Extended Properties中的屬性‘Excel 12.0’Excel文件擴(kuò)展名為.xlsx;當(dāng)IMEX=1時(shí)為“匯入模式”,這個(gè)模式開啟的Excel檔案只能用來(lái)做“讀取”用途;當(dāng)HDR=Yes,這代表第一行是標(biāo)題,不作為數(shù)據(jù)使用。

如果整個(gè)xlsx文件作為一個(gè)數(shù)據(jù)庫(kù),那么xlsx文件中的一個(gè)worksheet就作為一個(gè)數(shù)據(jù)表,因此讀取數(shù)據(jù)可以使用select語(yǔ)句,select語(yǔ)句的語(yǔ)法采用Jet SQL的語(yǔ)法,唯一的區(qū)別是數(shù)據(jù)庫(kù)表名稱的寫法為:FROM["+WorkSheet_CuttingDamp_Data_SheetName+"$]T1,即用‘[SheetName$]’表示數(shù)據(jù)庫(kù)表名,T1作為表的別名。那么獲取下料進(jìn)度狀態(tài)數(shù)據(jù)完整的select語(yǔ)句范例如下所示:Sql_Get_Nest_Plate="SELECT T1.RegisterID,

T1.DrawingID,T1.Component,T1.NestingList,T1.Qty,T1.Units,T1.FinishDate,T1.RowID"+"FROM["+Work?Sheet_CuttingDamp_Data_SheetName+"$]T1 where T1.Class='PCMS_ST_Nest_Plate'and T1.RegisterID like'%SD-CR-DWG-S10-ST-%'"。可以通過select語(yǔ)句的應(yīng)用,可以快速地獲得想要得到的數(shù)據(jù)集合,并可以較為快速地存儲(chǔ)這些數(shù)據(jù)到DataTable對(duì)象中。

針對(duì)裝配階段的完成情況數(shù)據(jù)表,可以根據(jù)零件和構(gòu)件在不同階段完成裝配工作的情況的分類,對(duì)應(yīng)生成如下10種數(shù)據(jù)表:1)零件在一級(jí)裝配階段的完成情況數(shù)據(jù)表;2)零件在二級(jí)預(yù)制階段的完成情況數(shù)據(jù)表;3)零件在三級(jí)預(yù)制階段的完成情況數(shù)據(jù)表;4)零件在總裝搭載階段的完成情況數(shù)據(jù)表;5)一級(jí)結(jié)構(gòu)物在二級(jí)預(yù)制階段的完成情況數(shù)據(jù)表;6)一級(jí)結(jié)構(gòu)物在三級(jí)預(yù)制階段的完成情況數(shù)據(jù)表;7)一級(jí)結(jié)構(gòu)物在總裝搭載階段的完成情況數(shù)據(jù)表;8)二級(jí)結(jié)構(gòu)物在三級(jí)預(yù)制階段的完成情況數(shù)據(jù)表;9)二級(jí)結(jié)構(gòu)物在總裝搭載階段的完成情況數(shù)據(jù)表;10)三級(jí)結(jié)構(gòu)物在總裝搭載階段的完成情況數(shù)據(jù)表。也同樣將這10張數(shù)據(jù)表存儲(chǔ)到DataTable對(duì)象中。

2.2 數(shù)據(jù)字典結(jié)構(gòu)的應(yīng)用

如果通過使用For循環(huán)遍歷DataTable對(duì)象中的每一行數(shù)據(jù),去尋找指定零件ID的預(yù)制狀態(tài),一定會(huì)出現(xiàn)循環(huán)嵌套的情況。由于數(shù)據(jù)表的行數(shù)是幾萬(wàn)行這樣一個(gè)數(shù)量級(jí),因此For循環(huán)的執(zhí)行效率一定會(huì)非常低。因此本文考慮使用字典數(shù)據(jù)結(jié)構(gòu),將For循環(huán)嵌套改進(jìn)為兩個(gè)獨(dú)立的非嵌套的For循環(huán)。第一個(gè)For循環(huán)用于生成數(shù)據(jù)字典,數(shù)據(jù)字典對(duì)象的定義如下所示:Dim Dict_ClassPart_1stFabr_Finished As Dictionary(Of String,List(Of String)),該字典用于存儲(chǔ)零件在一級(jí)裝配階段完成情況,字典的Key為零件ID,字典的Value為一個(gè)List對(duì)象,List對(duì)象的清單為該零件在預(yù)制階段各個(gè)工作步驟的完成日期。第二個(gè)For循環(huán)用于循環(huán)所有零件ID,根據(jù)零件ID以及指定的字典直接獲得它的各個(gè)階段的施工步驟完成日期。采用數(shù)據(jù)字典和兩個(gè)獨(dú)立的For循環(huán)的方法代替兩層for循環(huán)嵌套的方法,解決了算法效率太慢的問題。

2.3 零件狀態(tài)總體分析算法

零件的Piece Mark報(bào)表中分成兩個(gè)部分,第一部分是零件的加工設(shè)計(jì)基礎(chǔ)數(shù)據(jù),包括零件號(hào)、圖紙?zhí)枴⒎侄翁?hào)、零件數(shù)量、零件重量等。第二部分是零件的各生產(chǎn)階段的狀態(tài)信息,包括下料階段各狀態(tài)點(diǎn)完成日期、一級(jí)裝配階段各狀態(tài)點(diǎn)完成日期、分段預(yù)制階段各狀態(tài)點(diǎn)完成日期、分段總裝階段各狀態(tài)點(diǎn)完成日期。因此零件的狀態(tài)分析算法應(yīng)該包括對(duì)零件的各個(gè)階段的狀態(tài)分析過程。

首先下料狀態(tài)日期直接從存儲(chǔ)下料狀態(tài)信息的字典中取值即可,沒有層次關(guān)系直接對(duì)應(yīng)即可。接著分析一級(jí)裝配件的預(yù)制狀態(tài)信息,由于一級(jí)裝配件是由零件組成的構(gòu)建,因此需要根據(jù)一級(jí)裝配件的類型(例如T型梁、K板、卷制管)再分別分析并獲取該類型零件從一級(jí)裝配、板片預(yù)制、分段預(yù)制和分段總裝全過程的狀態(tài)信息。再接著對(duì)于沒有一級(jí)裝配階段的零件而直接進(jìn)入分段預(yù)制階段的零件的狀態(tài)進(jìn)行分析,最后對(duì)那些總裝散裝零件的狀態(tài)進(jìn)行分析。

2.4 一級(jí)裝配件零件的狀態(tài)分析算法

該算法由一個(gè)函數(shù)實(shí)現(xiàn),該函數(shù)所包含的參數(shù)如下:零件號(hào),一級(jí)裝配構(gòu)件號(hào),板片預(yù)制構(gòu)件號(hào),分段預(yù)制構(gòu)件號(hào)。該類型的零件大多數(shù)在一級(jí)裝配階段就完成了預(yù)制工作,但存在少量零件在板片預(yù)制階段安裝,少量零件直接在分段預(yù)制階段安裝,也存在極少量直接在總裝階段安裝。因此該算法首先需判斷該零件是否在一級(jí)裝配階段完成了預(yù)制,如果該零件在一級(jí)裝配階段完成裝配,那么讀取該一級(jí)裝配件預(yù)制完成日期作為該零件的預(yù)制完成日期。接著再判斷該一級(jí)裝配件是否在板片預(yù)制階段完成了裝配,如果該板片完成了裝配,那么讀取該板片預(yù)制完成日期作為該零件的板片預(yù)制完成日期。再接著判斷板片構(gòu)件是否完成在分段裝配階段完成了裝配,如果該分段完成了裝配,那么讀取該分段裝配完成日期作為該零件的分段裝配完成日期。最后判斷分段構(gòu)件是否完成了總裝工作,如果該分段完成了總裝,那么讀取該分段總裝完成日期作為該零件的總裝完成日期。對(duì)于其他類型的零件的整個(gè)建造狀態(tài)的分析過程類似,不在累述。

3 Piece Mark報(bào)表的實(shí)際應(yīng)用效果

該解決方案適用于數(shù)據(jù)源文件是Excel進(jìn)度文件,該Excel文件來(lái)自于某一個(gè)項(xiàng)目管理系統(tǒng)(例PCMS系統(tǒng))。通過xlsx表提取數(shù)據(jù)技術(shù)、數(shù)據(jù)字典數(shù)據(jù)結(jié)構(gòu)、零件狀態(tài)分析算法,使用VSTO開發(fā)平臺(tái)開發(fā)Excel小程序,開發(fā)周期短、開發(fā)環(huán)境和調(diào)試環(huán)境好、Excel小程序用戶體驗(yàn)好等優(yōu)勢(shì)。

3.1 SPF報(bào)表生成速度

PCMS系統(tǒng)使用Smart Plant Foundation,通過SPFAdhocReport類型生成Excel進(jìn)度文件,當(dāng)項(xiàng)目后期這個(gè)報(bào)表的總行數(shù)達(dá)到23萬(wàn)行這個(gè)級(jí)別,服務(wù)器端生成Excel報(bào)表文件的時(shí)間約為4分鐘,從服務(wù)器下載到本地的時(shí)間約為15秒。

3.2 Piece Mark報(bào)表生成速度

通過xlsx表提取數(shù)據(jù)技術(shù)、數(shù)據(jù)字典數(shù)據(jù)結(jié)構(gòu)和零件狀態(tài)分析算法,在項(xiàng)目后期零件數(shù)達(dá)到6萬(wàn)行這個(gè)級(jí)別時(shí),經(jīng)過測(cè)試從讀取Excel文件(文件數(shù)據(jù)行總數(shù)約23萬(wàn)行)到最終生成Piece Mark報(bào)表共計(jì)需要約4分鐘(CPU Intel Core i7 2.2MHz 6核)。

3.3 Piece Mark表的后續(xù)應(yīng)用

Piece Mark報(bào)表有大量的應(yīng)用領(lǐng)域和較高的價(jià)值。一方面可用于進(jìn)度計(jì)算,結(jié)構(gòu)專業(yè)的進(jìn)度計(jì)算一般會(huì)是使用重量作為工作量統(tǒng)計(jì)的單位,該P(yáng)iece Mark報(bào)表可以作為進(jìn)度計(jì)算的數(shù)據(jù)源,編制Excel進(jìn)度計(jì)算表,或者匯總后反饋給P6也是可以的。另一方面,費(fèi)用結(jié)算時(shí)一般會(huì)考慮項(xiàng)目進(jìn)度和完成工作量,該表可以作為QS工作量結(jié)算參考,如果與QS團(tuán)隊(duì)完成每個(gè)零件QS結(jié)算重量的校核后可以直接用于QS費(fèi)用結(jié)算。最后,依據(jù)該P(yáng)iece Mark報(bào)表還可以生成各種各樣基于時(shí)間軸的圖表,來(lái)反映項(xiàng)目下料工作、預(yù)制工作的實(shí)際進(jìn)展曲線,分析出項(xiàng)目的高峰期和低谷期,為未來(lái)類似項(xiàng)目的人力計(jì)劃編制提供依據(jù)。

4 結(jié)語(yǔ)

結(jié)合FPSO船體建造項(xiàng)目的需求,依據(jù)Smart Plant Foundation軟件生成的Excel報(bào)表,使用VSTO工具開發(fā)滿足業(yè)主要求的Piece Mark報(bào)表是一條非常靈活和高效的報(bào)表開發(fā)解決方案。通過xlsx表提取數(shù)據(jù)技術(shù)、數(shù)據(jù)字典數(shù)據(jù)結(jié)構(gòu)、零件狀態(tài)分析算法,使用匯VSTO開發(fā)平臺(tái)完成開發(fā),用戶使用Excel進(jìn)行工作。顯然的優(yōu)勢(shì)如下:Visual Studio開發(fā)和調(diào)試環(huán)境好、程序分發(fā)和部署非常綠色和方便、Excel小程序用戶體驗(yàn)好。由于該類型的報(bào)表的使用頻率并不會(huì)太高(一般情況下一周兩次),程序的運(yùn)行速度前期很快,隨著項(xiàng)目數(shù)據(jù)的增大會(huì)慢慢變慢,到項(xiàng)目組的最后生成報(bào)表的速度也是可以接受的。

猜你喜歡
數(shù)據(jù)表總裝分段
航天器回收著陸系統(tǒng)總裝多余物預(yù)防與控制
淺析PFMEA在總裝車間生產(chǎn)制造中的應(yīng)用
2018年—2020年山西省普通高考成績(jī)分段統(tǒng)計(jì)表
中國(guó)航天發(fā)展史(二)
分段函數(shù)的常見題型及其解法
湖北省新冠肺炎疫情數(shù)據(jù)表(2.26-3.25)
湖北省新冠肺炎疫情數(shù)據(jù)表
湖北省新冠肺炎疫情數(shù)據(jù)表
例談分段函數(shù)單調(diào)性問題的解決
尋求分段函數(shù)問題的類型及解法
扬州市| 温泉县| 随州市| 景洪市| 富宁县| 江永县| 信阳市| 开鲁县| 宁化县| 永胜县| 丰县| 新野县| 晴隆县| 新闻| 博客| 观塘区| 山东| 青河县| 新平| 柏乡县| 浮山县| 承德市| 博野县| 镇宁| 罗甸县| 桃源县| 扎赉特旗| 司法| 九龙坡区| 五寨县| 湖南省| 灵璧县| 定日县| 永泰县| 定安县| 关岭| 桐乡市| 潜江市| 云龙县| 蒙自县| 大荔县|