基于C#的桥式起重机数字化设计与云开发
2022-09-19张宇廷王宗彦赵鹏宇范浩东王曦
张宇廷,王宗彦,2,赵鹏宇,范浩东,王曦
(1.中北大学机械工程学院,山西太原 030051;2.山西省起重机数字化设计工程技术研究中心,山西太原 030051)
0 前言
随着起重机行业的发展壮大,以桥式起重机为主的起重机已经在工程运输、重型机械加工以及房屋建造等方面应用广泛。日益增长的市场竞争和信息化的冲击,使得起重机行业不断适应时代的变化,开始向轻量化、数字化、智能化的趋势靠拢。郭小雷等以VB6.0作为开发语言,实现了对SolidWorks三维模型的驱动,并根据简化算法,设计出能够快速提供报价服务的桥式起重机参数化设计系统。何仕永等针对桥式起重机中小车架部分进行优化设计,大大提升了起重机的生产效率,降低成本。刘春桐等使用ADAMS与SolidWorks联合仿真,实现桥式起重机的消振控制。
综合国内研究现状,我国起重机设计模式还较为单一:(1)由于市场上大多企业还在采用传统的人工设计方法,根据经验进行设计与选型,不仅流程繁琐,而且设计成本较高。(2)设计的起重机不具有实时通用性,无法保证客户与生产厂家的实时对接,没有做到协同化设计。
本文作者基于Visual Studio 2013的开发软件,使用C#语言对桥式起重机进行智能化云平台开发。该系统通过输入各结构的基本参数,实现模型驱动,并且自动生成工程图纸,调整工程图,生成BOM表与计算书,最终实现在云服务器上的协同设计开发。不仅如此,根据企业的不同需求,可以使用户在原有系统基础上进行多次开发。
1 桥式起重机云平台系统的搭建
1.1 总体设计基本思路
此系统主要分为两大设计板块:(1)参数化设计;(2)云开发设计。参数化设计部分采用模块化方式,云开发设计部分采用SaaS的服务模式。模块化是指将桥式起重机的具体设计分为四大模块,分别为用户界面管理模块、设计轻量化计算模块、数据管理模块以及后台开发模块。SaaS的含义为“软件即服务”,是指用户只需要通过购买或者租赁就可以使用互联网中软件的设计权限,不需要单独购买软件,流通性更加广泛,可以提供在线服务。该系统的总体结构如图1所示。
图1 总体设计框架
参数化设计与云开发设计使用云服务器进行连接,并不相互独立,而是可以同时在本地服务器端或者网络端打开相应的界面,以实现快速、高效的协同化设计。
1.2 网络云开发平台
网络云开发平台(Web Development Platform)是指使用与创建可应用程序虚拟数字化技术的平台,具有网络浏览、资源可视化处理、云数据管理、自动备份等多种功能于一体的多元开发平台。通过该平台,使应用软件不会与系统开发平台产生兼容问题,达到广泛使用、充分利用网络可视化资源的目的。
网络云开发简称云开发,一般有两种基本开发模式:一种是基于C/S结构的云开发,即客户机/服务器模式;一种是基于B/S结构的云开发,即浏览器/服务器模式。C/S结构下的云开发具有更丰富的界面功能拓展和产品开发手段,只有一层交互对接,使用方便,但是只限于局域网内的使用,客户与生产厂家不能迅速协同设计与对接。B/S结构的云开发则不需要安装客户端,对Windows环境下的.Net Framework基础软件环境没有要求,只需要在网页端就能打开系统,操作简单,但是可能会降低系统的基础开发性能。本文作者采用B/S结构的云开发平台,并对其进行了结构优化,实现三维预览跨浏览器的兼容以及自带驱动插件的功能。
2 云平台系统设计关键技术
2.1 二次开发关键技术
(1)SolidWorks参数化二次开发
三维驱动模型的配置是二次开发的关键与基础。SolidWork本身具备强大的三维设计服务,可以配合关系使用内嵌的API函数实现驱动桥式起重机各部分结构草图,分别生成三维模型的装配关系,再通过得到的模型进行减速器、卷筒、滑轮组的选型和总体的排布选型设计,最后经过优化计算得到桥式起重机的轻量化模型。文中的数字化开发设计不同于VB的二次开发设计,引入自编程的Solidwork工具类库的概念。以下为C#开发关键代码:
打开三维模型代码:
SldWorks.SldWorksswApp=new SldWorks.Sl-
Works();
swApp.Visible=true;
int errors=0;
int warnings=0;
bool boolstatus=false;
string DocName2=
@"C:Users桥起.SLDASM ";
驱动草图尺寸关键代码:
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)工程图调整开发
不同于参数化二次开发,工程图调整需要根据不同的实际使用情况,设置不同的图纸标准。该系统采用层层检索模式,套用API函数的循环语句,遍历整个工程图纸的图层、视口位置、尺寸,使工程图调整达到标准化程度。
打开工程图代码:
swDraw=swApp.OpenDoc6(@"C:Users小车工程图.SLDDRW",3,0,"",ref errors,ref warnings);
ModelDoc2 swModel=swApp.ActiveDoc;
swView=(SldWorks.View)swDraw.GetFirstVi-
ew();
调整视图位置代码:
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 };
获取图层、调整尺寸代码:
object obj=(object)obj_loopVariable;
DisplayDimensioncurr DisplayDimension=
(DisplayDimension)obj;
Annotation ann=currDisplayDimension.GetA-
nnotation();
double[]m=ann.GetPosition();
(3)Office的二次开发
在该系统中需要使用Word与Excel文档,使用Word自动生成机构计算书,使用Excel生成BOM表。使用C#将Word与Excel内置的VBA类型的API函数进行类别转换与调用,创建OfficeTool的类库,将驱动Word与Excel的程序分别写入不同的类中,实现创建打开文档、激活图表、读取单元格文本、添加公式等功能。生成的计算书与BOM表需要统一字体,公式需要按照起重机设计手册规范。具体要求如图2所示。
图2 Office类库的实现
2.2 轻量化设计关键技术
现阶段的桥式起重机轻量化设计大多是主梁的优化设计,原因在于主梁的结构简单,设计方便,运用多目标优化算法可以直观看到主梁轻量化实验之后的效果。所以文中重点为基于NSGA-II算法的主梁轻量化设计方案。
遗传算法是一种基于自然界与遗传的随机搜索算法,模拟与搜索进化过程中的最优解,利用由多个染色体组成的初始化群体,交换信息重新组合成为新的群体。遗传算法基本的操作步骤为遗传、交叉、变异。缺点是编码存在不可靠程度高的问题,结果具有随机性,在定量分析方面还没有统一的标准。
NSGA-II算法是基于NSGA提出的多目标遗传优化算法,引入了拥挤度的概念,拥挤度大的样本个体会被保留下来,拥挤度小的样本个体则会被淘汰。相比于传统的遗传算法,它的运行速度快,帕累托解集的收敛性更好,降低了一些非劣个体在遗传进化过程中的淘汰率,鲁棒性更强。NSGA-III算法沿用了NSGA-II算法的框架,基于参考点的方法实现三目标以上的优化问题,但是如果拥挤程度过高,则会降低计算解集的收敛性,陷入局面最优的问题。因此作者最终选择NSGA-II算法作为实现主梁多目标优化的基础。
将主梁的参数化结构简化为上盖板、左右对称腹板、下盖板、板间跨度、长度,如图3所示。
图3 主梁简化截面
结合NSGA-II算法,在参数驱动程序中将不同的封装函数进行嵌套处理,给定主梁上盖板和板间跨度,运用交叉、变异的进化策略分别将腹板与下盖板的厚度通过最优解收敛成集合的形式,在编程中使用数组嵌套,分别将各自的优化情况返回到参数设置程序中,提示用户某一优化范围下左右对称腹板的跨度,在材料许用应力满足的情况下,最大限度地简化尺寸,节省生产用料。图4为NSGA-II算法实现主梁优化流程。
图4 基于NSGA-II算法的主梁轻量化流程
2.3 云平台开发关键技术
云平台开发是在物联网与互联网的基础之上,将所有的可视化数据上传到云服务器端,通过云平台的接口调用需要的数据。通过网络和终端实现高效、有序、智能的先进技术开发方式。
文中的云开发过程是基于SaaS云开发的服务模式,为用户提供多租户数据连接服务,将本机作为终端服务器和数据处理器,将生成的工程图和三维驱动模型上传到云端并返回所需的API轻量化文件,调用XML文件调取需要的初始化文件,将最终生成的模型与图纸预览地址转换为可被浏览器识别的HTML的原文件,将HTML文件自动调用到Web窗体上显示。具体过程如图5所示。
图5 云开发关键流程
3 应用实例
3.1 系统界面设计
将云端服务器与Visual Studio 2013中建立的ASP.Net.Core的环境相互链接,点击启动按钮,激活Form窗体,C#程序中引用SldWorks Library Type接口实现SolidWorks二次开发功能与工具类库的调用,使用接口Newtonsoft.Json调取用户的企业ID来连接云服务器,配置好关键接口后按照提示需要输入用户名与密码。界面设置有5项基本服务,打开文件、帮助、浏览器访问、后台开发以及文件加密。图6为云平台初始开发界面。
图6 系统初始化界面
3.2 参数化驱动与轻量化设计
打开初始化界面之后,进行起重机基本参数选择与尺寸设计计算。参数化驱动部分运用模块化设计思路分为总装设计、小车设计、大车设计3个模块。
首先进行桥式起重机的总装设计。以小车为双起升机构的桥式起重机为例,需要先设置它的工作级别,工作精度,起重机所处温度、海拔,司机室的布置情况;根据这些外在因素调用不同的封装函数并对起重机强度载荷、疲劳状况、轻量化开发进行更精确的优化计算,节约不必要的时间损耗与开发成本,如图7所示。
图7 总装设计界面
输入界面需要提供基本尺寸与排布尺寸,然后进行电动机、减速器、吊钩等外构件的选型,根据设计公式检查参数与选型是否合理;当所有设计都趋于合理时,系统会显示绿色的计算结果,包括载荷强度、尺寸规划和轻量化结果;当出现红色的提示,说明设置不合理,需要重新设置参数,否则无法进行下一步。起重机小车的载荷计算结果如图8所示。
图8 起升机构载荷计算界面
在所有的参数与验证校核都合理时,在每个模块的最后板块会根据界面输入的数据自动生成Word格式的计算书与Excel格式的BOM表。在主梁的轻量化设计中,该系统运用了NSGA-II的多目标优化算法,可以分别对主梁的左右腹板与上下盖板进行轻量化设计,并不只限于尺寸与厚度的优化。生成的计算书中会提出优化方案,方便用户查看。图9为主梁设计界面。
图9 主梁轻量化设计界面
最后生成模型驱动后的工程图纸,根据实际需求调整图纸的图层、尺寸、序号等具体标注,调用不同的型号的工程图纸。具体操作为使用驱动程序捕捉视图位置与图框,根据图框进行尺寸、序号的遍历,再将尺寸归于图层,实现标准化的生产图纸,最后将图纸自动保存为DWG格式。
3.3 云端开发设计
此系统中的云平台开发基于B/S架构,在Web界面的参数化设计操作以及云服务器调取所需数据,使用XML调取云端的数据信息,将生成的三维模型与工程图纸直接下载到客户的计算机中。初始三维模型是“自顶向下”创建模式,也就是将模型中的装配零件转换为虚拟零件形式,保存在同一装配体中,目的是为了保持整个构件的装配关系。
以小车架为案例,首先点击初始界面的云端开发选项,点击界面中的调用接口按钮,调用到FTP端口,获取网络云端域名,返回需要转换的云端服务网址;再通过C#转换驱动程序将三维模型转换成x_t格式的轻量化文件上传到云端服务器中,经过两次的MD5加密后作为临时文件储存到云数据库中;将网页客户端的数据通过Base64解码成网页编码格式字符串,最后返回HTML格式的网址文件。用户可以调用临时网址对需要的模型与工程图进行下载。图10为驱动完成后使用网址打开的桥式起重机小车架模型。
图10 网页HTML版小车架三维模型
生成的网络版三维模型还保持原有的装配关系与属性,便于实时的设计检测;若需要再次驱动模型的尺寸,则会在临时网址刷新,重复上述步骤,完成云平台的各项驱动;最后可以将网页端的数据模型下载到本地预览。
4 总结
本文作者使用Visual Studio 2013的ASP.NET为开发环境,使用API函数将B/S框架嵌套到数字化系统开发中,在网页端可以实现图纸的驱动,供用户下载使用。该系统创新之处在于:
(1)对于复杂参数化装配体而言,云平台中的三维模型还保存原有的装配关系,没有受到开发环境的影响。
(2)使用NSGA-II算法转换成驱动开发程序,实现主梁轻量化设计与精确校核计算。
(3)设置封装函数,用户可以根据企业需求在开发基础上进行自己的云平台拓展与研发。
文中研究对于大批量化生产起重机的中大型企业来说具有重要的意义,极大地缩短了开发周期,节省了设计计算的时间。此系统已经应用于多家企业中,得到了大量认可,该系统为起重机云平台开发设计提供了参考。