APP下载

基于PCMS 系统的海洋工程浮体专业半成品管理功能的研究与应用

2019-05-17吴涛曹纪慧

现代计算机 2019年10期
关键词:下料工单杆件

吴涛,曹纪慧

(海洋石油工程(青岛)有限公司,青岛 266000)

0 引言

众所周知,浮体建造过程中结构专业的原材料主要为板材或者型材,当原材料下料后到模块或者船体总装搭载前,每个建造阶段所产生的结构体统称为半成品。本文概述了浮体建造过程中对半成品的管理方案,此方案主要用于浮体制造的下料、预制和装配三个阶段。下料工单完成工作量反馈后,通过半成品管理功能可筛选出具备下一阶段建造条件的杆件,并根据工作阶段和类型将数据进行合并或拆分,自动导出半成品材料清单,并能为下一阶段的工单中进行材料预测预留,最终实现半成品管理。

1 PCMS系统

1.1 系统简介

PCMS(Project Construction Management System)即工程项目建造管理系统,是基于鹰图公司SmartYard 软件系列产品,在数据标准化和规范的基础上,结合海洋石油工程股份有限公司建造事业部个性化的工程项目管理需求,定制开发的一套用于海洋工程类项目建造全生命周期管理的信息集成系统。系统以三个软件SPF(基础数据平台)、SPC(施工管理模块)、SPM(材料管理模块)为基础,以工单为载体,打通设计、计划、物资和生产的信息瓶颈,以符合行业内AWP(Advanced Work Package)管理体系标准,提高建造施工组织效率。

1.2 工单和工单类型

根据AWP 管理体系标准,PCMS 系统的工单是一个IWP(Installation Work Packages)级别施工范围,可动态展现该IWP 计划、材料、设计、进度等信息。工单最重要的功能之一是实现材料预测预留,系统根据加工设计的材料需求和现场材料入库情况进行精确匹配。在项目建造阶段,每个专业的工单分为多种类型。以企鹅项目浮体专业为例,工单类型分别为下料、一级预制、二级预制、装配、总装。工单类型对应着不同的施工阶段。

2 半成品管理

从下料阶段开始到总装阶段结束,每一个建造阶段都会产生半成品。半成品建造完成后会存放在预制场地,不会进行入库,因此下一建造阶段的工单包含该半成品材料时,需要明确该半成品是否已经完成建造并且检验释放。通过PCMS 系统工单执行情况,从而判别出半成品材料的建造状态,实现半成品管理,使各个建造阶段都可以进行材料预测预留是本文研究的重点。

3 半成品完成状态跟踪报表的定制

半成品完成状态跟踪报表是通过用户定义含有Schema 数据结构的XML 文件在SmartPlant Foundation软件中进行定制,此报表可导出当前生产项目工单执行的完成量、完成时间等基本信息,并以xls 格式存储。报表每行以该项目所有工单的工艺步骤为单位,表结构如表1 所示。

表1 半成品完成状态跟踪报表的表结构

Schema 数据结构的核心定义如下所示:

由于报表作用域为整个Site,所有专业和工作阶段的工单基本信息都会导出,为了过滤出浮体专业信息,在SmartPlant Foundation 中查找到半成品完成状态跟踪报表,编辑其定义,通过筛选条件过滤不必要的数据。例如筛选浮体专业的下料类型的工单,在Criteria一列增加筛选条件 Discipline=“Structural”,Purpose=“ST_Plate_Cut”or“ST_Shape_Cut”。

4 半成品管理

4.1 半成品管理原理

半成品管理的原理是在不同建造阶段,建立原材料和半成品或者半成品和半成品之间的关联关系。例如,下料工单中名称为3SD-CR-DWG-S10-ST-0201-VL-A36-10-0003.TXT-01 某钢板,其 NestingList 的属性值为一个列表,包含本张钢板下料后的所有杆件及数量信息,我们称之为Nesting,每个Nesting 以“,”作为分隔。Nesting 的结构为“杆件名称”+“:”+“杆件数量”,即某下料方案下唯一的杆件名称(TAG_ID)和该杆件数量(QTY)。某下料方案下的所有工艺步骤完成意味着此钢板即具备下一阶段建造即一级预制的条件。程序将以下料方案号(DWG_ID)作为筛选条件,补充其他信息,导出下料后半成品。此钢板下料后会产生余料,即属性ExcessMaterialList 的值,与NestingList处理方式一样,补充其他信息,作为下料半成品导出。除下料阶段外,其他建造阶段半成品管理是通过TagID实现的。例如一级预制工单,TagID 同为101_CS01_T1的杆件完成比全部达到100%,则将101_CS01_T1 作为下一阶段建造的半成品导出。

4.2 半成品管理功能实现

根据半成品管理需求,功能实现通过开发插件读取半成品状态跟踪报表,分析报表处理数据后,导出SmartPlant Material 软件能够识别的半成品入库清单。插件引入pandas 库进行xlsx 文件的读写操作,使用dataframe 数据结构按工单类型筛选半成品状态跟踪报表进行数据分组。浮体专业半成品管理分为下料、预制、装配和总装四个阶段,某些阶段会根据工作小类型进一步细分。 例如下料阶段分为板材下料(ST_Plate_Cut)和型材下料(ST_Shape_Cut),预制阶段分为针对于T 型梁、组合梁、立柱、拉筋、舾装预制件和其他结构附件的一级预制(ST_1st_Fabr)和针对于船体板片和组块甲板片的二级预制(ST_2ed_Fabr)。装配阶段分为船体分段装配(ST_Block_Asse)和上部模块装配(ST

_Module_Asse)。在插件程序中数据分组代码如下:

df=pd.read_excel(excel_path,sheetname=0)

# 按照不同的建造阶段筛选数据,使用dataframe 进行存储

df_1st_Fabr=df[df["Purpose"]=="ST_1st_Fabr"]

df_2ed_Fabr=df[df["Purpose"]=="ST_2ed_Fabr"]

df_Block_Asse=df[df["Purpose"]=="ST_Block_Asse"]

df_Module_Asse=df[df["Purpose"]=="ST_Module_Asse"]

df_Erection=df[df["Purpose"]=="ST_Erection"]

df_Plate_Cut=df[df["Purpose"]=="ST_Plate_Cut"]

df_Shape_Cut=df[df["Purpose"]=="ST_Shape_Cut"]

#获取关键字集合,预制和装配工单关键字为ParentID,下料工单关键字为DrawingID

s_1st_Fabr_pid=set(df_1st_Fabr["ParentID"])

s_2ed_Fabr_pid=set(df_2ed_Fabr["ParentID"])

s_Block_Asse_pid=set(df_Block_Asse["ParentID"])

s_Module_Asse_pid=set(df_Module_Asse["ParentID"])

s_Erection_pid=set(df_Erection["ParentID"])

s_Plate_Cut_dwg=set(df_Plate_Cut["DrawingID"])

s_Shape_Cut_dwg=set(df_Shape_Cut["DrawingID"])

#结果数据存储在list 中

l_result=[]

针对于不同数据分组,其数据处理方式也会有区别,本文以一级预制和板材下料为例,将其核心代码进行演示。

一级预制类型工单数据处理核心代码如下:

for pid in s_1st_Fabr_pid:

df_ass_pid=df_1st_Fabr[df_1st_Fabr["ParentID"]==pid]

df_ass_pid.loc[:,("Units")] = df_ass_pid.loc[:,("Units")].map(lambda x:round(float(x.split("")[0]),1))

df_ass_pid.loc[:,("QuantityComplete")]=df_ass_pid.loc[:,("QuantityComplete")].map(lambda x:round(float(x),1))

s_judge = df_ass_pid.apply(lambda x: judge(x.Units, x.QuantityComplete),axis=1)

if 0 not in s_judge.values:

DISCIPLINE="STRUCTURE"

CONS_PHASE="FAB_TRACK"

SD_DOC=df_ass_pid.iloc[0]["DrawingID"]

DWG_ID="BCP-"+df_ass_pid.iloc[0]["DrawingID"]

ITR="TAG WO MS"

TAG_ID=df_ass_pid.iloc[0]["ParentID"]

QTY=1

UNIT="each"

COMP_TYPE="PART"

WAREHOUSE="ST-BCP-TAG"

LOCATION=df_ass_pid.iloc[0]["WorkPlace"].upper()

s_result=[DISCIPLINE,CONS_PHASE,SD_DOC,DWG_ID,ITR,TAG_ID,QTY,UNIT,COMP_TYPE,WARE -HOUSE,LOCATION]

l_result.append(s_result)

下料类型工单数据处理核心代码如下:

for dwg in s_Plate_Cut_dwg:

df_cut_dwg=df_Plate_Cut[df_Plate_Cut["DrawingID"] ==dwg]

df_cut_dwg.loc[:,("Units")] =df_cut_dwg["Units"].map(lambda x:round(float(x.split("")[0]),1))

df_cut_dwg.loc[:, ("QuantityComplete")] =df_cut_dwg["QuantityComplete"].map(lambda x:round(float(x),1))

s_judge=df_cut_dwg.apply(lambda x:judge(x.Units,x.QuantityComplete),axis=1)

if 0 not in s_judge.values:

nestinglist=set(df_cut_dwg.iloc[0]["NestingList"].split(","))

for nesting in nestinglist:

DISCIPLINE="STRUCTURE"

CONS_PHASE="FAB_TRACK"

SD_DOC=df_cut_dwg.iloc[0]["DocumentID"]

DWG_ID="BCP-"+df_cut_dwg.iloc[0]["DrawingID"]

ITR="TAG WO MS"

TAG_ID=nesting.split(":")[0]

QTY=int(nesting.split(":")[1])

UNIT="each"

COMP_TYPE="PART"

WAREHOUSE="ST-BCP-TAG"

LOCATION=df_cut_dwg.iloc[0]["WorkPlace"].upper()

s_result = [DISCIPLINE, CONS_PHASE, SD_DOC,

DWG_ID, ITR, TAG_ID, QTY, UNIT,COMP_TYPE, WARE

HOUSE,LOCATION]

l_result.append(s_result)

if pd.isnull(df_cut_dwg.iloc[0]["ExcessMaterialList"])==

False:

#if","in df_cut_dwg.iloc[0]["ExcessMaterialList"]:

ExcessMaterialList = set(df_cut_dwg.iloc[0]["Excess-

MaterialList"].split(","))

#else:ExcessMaterialList=set({df_cut_dwg.iloc[0]["Ex

cessMaterialList"]})

for excessmaterial in ExcessMaterialList:

DISCIPLINE="STRUCTURE"

CONS_PHASE="FAB_TRACK"

SD_DOC=df_cut_dwg.iloc[0]["DocumentID"]

DWG_ID="BCP-"+df_cut_dwg.iloc[0]["DrawingID"]

ITR="TAG WO MS"

TAG_ID=excessmaterial

QTY=1

UNIT="each"

COMP_TYPE="PART"

WAREHOUSE="ST-BCP-TAG"

LOCATION = df_cut_dwg.iloc[0]["WorkPlace"].upper()

s_result = [DISCIPLINE, CONS_PHASE, SD_DOC,DWG_ID, ITR, TAG_ID, QTY,UNIT, COMP_TYPE, WAREHOUSE,LOCATION]

l_result.append(s_result)

插件集成在PCMS-PLUS 网站中,该功能用户通过网站进行报表上传和入库清单下载。插件语言选型为Python,网站框架选型为Django+HTML5。

图1 网站页面截图

5 结语

本文给出了基于PCMS 系统的海洋工程浮体专业半成品管理功能实现的原理和应用方法的演示,该功能可用于解决PCMS 系统推广应用中的一些相关问题,具有一定的实际意义。用Python 语言实现的插件程序则有助于读者更好地理解和把握该功能的实现过程。用网站界面实现的半成品材料数据管理流程有助于用户操作易懂,简化操作步骤,对管理员来说易于维护。

猜你喜欢

下料工单杆件
基于结构设计竞赛的纸质杆件极限承载力影响因子分析
高职院校计算机类专业“工单制”教学的研究与探索
基于RPA技术的机器人在配网调度工单发布工作中的应用
仅考虑自重的细长受弯构件是否需满足长细比要求的研究
空间桁架杆件与球节点的机器人双臂柔顺装配
基于分布式数据库Cedar的高效工单管理系统设计与实现
人工智能新探索 打造银行智能工单
2100PCTC薄甲板制作工艺
废树脂料斗定量法计量验证试验
铝电解槽下料过程对电解质温度场的影响