一、引言
伴随中国轨道交通行业的不断发展,越来越多的国内外的先进轨道交通生产企业开始在成熟的精益生产管理的基础上进行数字化工厂仿真,通过构建生产现场各类资源的三维模型、实现生产现场工艺布局的快速调整及优化;通过软件代码的开发,将生产现场的生产管理数据采集或导入,结合生产工艺布局实现工厂生产数据的快速分析;由于现有市面上的仿真软件普遍价格昂贵、定制化程度不高,使用不方便,笔者结合多年工作实践,通过使用免费的物理引擎可以实现快速的数字化工厂仿真。
二、数字化工厂仿真技术应用的背景
数字化仿真技术的核心价值在于,通过新一代制造技术和信息技术驱动,实现对物理实体对象的特征、行为、形成过程和性能等进行描述和建模,从而实现数字化孪生;数字化仿真系统主要由模型、仿真、控制、支撑环境构成。
通过对真实工厂进行虚拟化仿真、提供优化分析结果,主要解决工厂、车间和生产线以及产品设计到制造实现的转化过程,使设计到生产制造环节的不确定性降低,在数字空间中将生产制造过程压缩和提前,使生产制造过程在数字化空间中得以检验。
三、数字化工厂仿真技术与精益生产管理的融合
基于精益生产价值流理念,从仓储、物流配送、生产制造(流水线、辅助工位、自动化工位等)、试验检测等主要环节进行仿真,分析节拍时间、周期时间、生产效率、场地利用率、工位及人员数量等多角度进行分析,通过不同方案测算数据的对比分析,寻找最适合当场环境条件下的生产布局方案和生产组织形式。
四、基于物理引擎的数字化工厂仿真的实现
4.1 架构
精益数字化工厂仿真的初步架构主要由模型/环境的搭建、代码脚本对模型以及UI界面的控制以及基于精益管理思想的数据分析三部分构成,如下图所示:
图1.精益数字化工厂仿真架构
引擎方面:可以使用UNITY、UNREAL等主流物理引擎进行开发,笔者使用的是UNITY引擎。
模型方面:可以使用常用三维软件如SolidWorks、CATIA、3DSMAX、C4D等进行建模并导入引擎。
脚本代码方面:UNITY引擎可按照C#或JavaScript语言进行编程,通过使用UNITY引擎自带的API函数实现各类功能,无论使用哪种语言,API都是相同的;使用引擎自带的API函数进行脚本代码的开发基于面向对象的编程理念,具有简单快捷的优势。
4.2 代码开发
4.2.1 创建场地
可按照实际需求确定工厂布局区域大小及类别,进行场地创建,如物流仓储区域、生产操作区域、试验检测区域等。部分主要代码如下:
workplane = Instantiate(WorkPlanePrefabs);
workplane.transform.localPosition = new Vector3(0, 0.1f, 0);
Vector3 localScale1 = workplane.transform.localScale;
Vector3 scale1 = new Vector3(localScale1.x*WScaleX, 0.1f, localScale1.z*WScaleZ);
workplane.transform.localScale = scale1;
//生成场地的预制件并修改场地预制件的大小为设置的实际三维向量的大小;
4.2.2生产并有序排列模型
在引擎中通过代码将这些模型进行合理有序的排列;排列的方式可依据实际需求进行调整,部分主要代码如下:
public void MakeCAAs()
{ for (int i = 0; i < lineNum; i++)
{ int shang2 = (i+1)/2;
int yushu2 = (i+1)%2;
if (yushu2 == 0 )
{ for (int n = 0; n < gongweiNum; n++)
{ int shang3 = (n+1)/2;
int yushu3 = (n+1)%2;
line = Instantiate(LinePrefabs);
if (yushu3 == 1)
{line.transform.localPosition = new Vector3(xLine*shang2, high, -zLine*shang3) ; }
else
{line.transform.localPosition = new Vector3(xLine*shang2, high, zLine*shang3) ; } }}
//生成生产线的预制件,并指定生成的位置;
4.2.3 定义属性
模型可以自动生产后,需要定义模型的属性,例如生产线的节拍工时、生产效率、设备利用率、生产批量、合格率等,数据来源于生产现场的测算结果。
4.2.4 指标测算
当所有模型的属性参展精益管理测算数据定义后之后,即可以依据模型的实际配置数量开展整体工区布局的精益指标的测算工作。部分主要代码如下;
private void IndexCalculate()
{ int caanum = WorkButtoon.GetComponent<CreateCAA>().caaNum;
int gwuum = WorkButtoon.GetComponent<CreateCAA>().gongweiNum;
int linenum = WorkButtoon.GetComponent<CreateCAA>().lineNum;
int rouum = WorkButtoon.GetComponent<CreateCAA>().robotNum;
int tsnum = CheckButtoon.GetComponent<CreateCheck>().testdeviceNum;
int stnum = StoreButtoon.GetComponent<CreateStore>().storeNum;
// 以上为获取生产线、辅助装配工位、机器人生产工位、检测工位、仓储工位的仿真数量;
CyTime = Prefabs[0].GetComponent<Attribute>().TT*caanum + Prefabs[1].GetComponent<Attribute>().TT*gwuum +Prefabs[2].GetComponent<Attribute>().TT* rouum + Prefabs[3].GetComponent<Attribute>().TT*stnum + Prefabs[4].GetComponent<Attribute>().TT*tsnum; // 获取所有仿真工位的节拍工时,计算生产周期时间;
TotalNum = caanum + gwuum*linenum + rouum + tsnum +stnum;
// 获取所有仿真工位的数量,计算生产工位的总数;
float totalarea = PlaneButtoon.GetComponent<CreatePlane>().Totalarea;
float TotalOBJArea = WorkButtoon.GetComponent<CreateCAA>().LineArea*gwuum*linenum + WorkButtoon.GetComponent<CreateCAA>().CAAArea*caanum+ WorkButtoon.GetComponent<CreateCAA>().RobotArea*rouum + CheckButtoon.GetComponent<CreateCheck>().CheckArea*tsnum + StoreButtoon.GetComponent<CreateStore>().StoreArea*stnum;
AreaPer = TotalOBJArea/totalarea;
//计算所有工位的占地面积,和产地布局的大小进行对比,计算场地利用率;
4.2.5 UI展示
引擎的UI展示功能也很强大,可以将计算出的所有精益指标进行目视化展示,在布置好UI界面后,使用代码编程,实现数据展示,部分主要代码如下:
public void TakeCalculate()
{ for (int i = 0; i < Prefabs.Length; i++)
{ int TT = Prefabs[i].GetComponent<Attribute>().TT;
int LS = Prefabs[i].GetComponent<Attribute>().LS;
int PR = Prefabs[i].GetComponent<Attribute>().PR;
int WE = Prefabs[i].GetComponent<Attribute>().WE;
int OEE = Prefabs[i].GetComponent<Attribute>().OEE;
//获取模型预制件定义的属性值;
Sliders[i].value = Mathf.Floor(TT/LS*(PR/100f)/(WE/100f)/(OEE/100f));
//UI滑条获取具体计算值;
TextPrefabs[i].text = Sliders[i].value + "min"; }
IndexCalculate();
CyText.text = CyTime + "min";
GwText.text = TotalNum + "个";
CdText.text = (AreaPer*100).ToString("f2") + "%";
WlText.text = WEAverage + "%"; }
//UI文本框获取具体计算值并显示。
4.3 仿真对比效果分析
通过搭建一下环境条件进行模拟仿真并分析不同方案下的精益数据对比结果;
表1.方案一
图4.方案一模拟仿真测算结果
通过仿真测算结果可知,方案一的各工区工位生产节拍不均衡、生产场地利用率不高,需要对方案进行调整;在各阶段生产周期时间保持不变的情况下,客户的需求为(25~30)min的生产节拍,在此基础上进行重新设置,通过减少流水线数量,增加测试工位、辅助装配工位以及物流配送工位数量,减少检测及仓储区域面积;调整后的环境条件如下表所示:
表2.方案二
图5.方案二模拟仿真测算结果
通过方案二的仿真测算结果分析可知,此时各工区生产节拍已基本平衡,试验检测工位在节拍工时仍偏高的情况下,可通过改进设备利用率OEE的方式进一步降低节拍工时;此时场地利用率也得到了提升。
通过以上两个方案的对比分析可以看出,通过仿真进行生产布局的优化可以快速有效的模拟除生产现场布局方案,并可以直观的查看精益测算数据,为规范方案提供合理的数据支撑。
五、基于物理引擎的数字化仿真技术的研究发展及展望
利用物理引擎的强大功能,可以进一步进行开发,挖掘更多的便利性功能,笔者认为主要有以下两点:
1、增加生产全过程的跑线测试功能,模拟真实环境下产线运营状态时可能出现的问题,如生产中间件的积压,物流配送路线的合理性等,以获得更精确的仿真数据,发现问题并优化。
2 通过与生产现场MES系统数据库或直接通过通讯协议与生产设备实现对接,采集实时生产运行数据,通过将虚拟仿真与实际生产相结合,实现数字孪生。
在未来,物理引擎和信息通讯技术的快速发展将使得数字孪生技术中的虚拟环境和真实环境联系的更加紧密,并获得更加真实和具有更高互动性的仿真体验。
结束语:本文所使用的UNITY物理引擎开发的精益数字化工厂布局仿真技术已在实际工作中进行了初步的应用,成功实现了对新厂房部分工区进行合理的布局规划、调整及测算工作,应用效果良好。该仿真技术也具有一定的推广价值,值得借鉴。
参考文献:
[1]数字孪生视角的数字工厂建设卢阳光、马逢伯、漆书桂(技术热点TechnicalFocus)2019(6):35-39;
[2]数字化工厂管理系统[J]. 赵子梁,贺刚,李海明. 机械设计与制造工程. 2020(01)
[3]数字化工厂与虚拟制造的关系研究[J]. 赵荣泳,张浩,樊留群,王骏,翁松伟,石庆宗. 计算机集成制造系统. 2019(S1)