SAP 2000二次开发在立体式钢货架中的应用
2019-04-03文/瞿燕
文/瞿 燕
与普通货架相比,立体货架的空间利用率较高。目前,常见的立体式钢货架有多种,主要分为横梁式、牛腿式、穿梭式等。钢货架结构的设计有一定的过程。首先,有必要建立一个模型,以确保模型在几何上不变,明确连接节点是铰接的还是刚性的,并确保结构的稳定性,这就涉及到结构力学。其次建立模型后,必须输入载荷,这是钢结构设计的重要部分。它将外部载荷转化为结构的内力效应(剪力、弯矩、轴力等),当进行结构设计时,一定要清楚荷载取值和如何组合,荷载取值的准确与否,直接影响计算内力的准确性。钢结构的设计,有一定的结构体系。它不是以结构软件为主的,软件只是服务于结构工程师,在大多数情况下,结构工程师需要对结构的概念设计做出判断,假设输入了一个载荷,软件无法判断它是什么载荷,需要结构工程师做出转化并输入。
目前,结构设计和分析面临的新问题是:复杂的结构体系,大量的计算和分析,由于设计时间不足,现有功能不能完全满足工程要求,传统结构分析模式通常采用图形界面下的手动操作,工作效率低下等;对此,本文提出的解决方案是通过编程方式处理大量数据,完成复杂结构的建模。例如,将API与编程结合使用就可以大大取代手动操作。实际上,工程师的主要任务是将复杂的工程问题转化为简单的数学模型,用VBA语言组织命令,编写参数化设计程序,与SAP2000连接,并完成有限元建模。
一、设计背景
本文以横梁式立体式货架为例,横梁式立体式货架又分为单深和双深。按类型选项可分为:横梁式单深边列、横梁式单深中列、横梁式双深边列、横梁式双深中列等,如图1、2。如果是横梁式单深边列,还要设置加强柱,保证结构的稳定性。货架立柱片横斜撑布置常见的类型有W型、X型、Z型等,如图3。常用的步距(横斜撑高差)600mm、750mm,一般下立柱采用步距较小的600mm,上立柱采用750mm,货架立柱长度规范一般为12m,所以超过12m就要分段。
图1:横梁式单深边列、中列布置图
图2:横梁式双深边列、中列布置图
图3:货架立柱片横斜撑布置图(从左到右依次为X型、W型、Z型)
图4:背拉杆布置图
图5:水平拉杆布置图
横梁式货架沿巷道方向的布置分为有支撑体系和无支撑体系。无支撑结构体系,沿巷道方向的稳定性由梁柱节点转动刚度提供。有支撑结构体系,作用于前部和背部平面内的作用力传至货架背拉杆,背拉杆的稳定效应一般通过平面支撑传递给位于货架前部和后部的各无支撑立柱,一般货架沿高度方向全高设置支撑,有背拉布置的位置均设置水平拉杆,形成空间传力体系,以横梁式双深中列为例,如图4、5。有支撑体系和无支撑体系,垂直于巷道方向的稳定性均由立柱组提供支撑,横梁立体式货架节点刚度设置原则,如表1。建模分析时节点刚度设置的准确性,会直接影响构件选型。
横梁式货架的荷载类型分为直接荷载、间接荷载。例如作用在货架上的直接荷载有恒载(自重)、活载(托盘货物荷载)、 水平静荷载(由初始弯曲、安装偏差等所引起的水平力)等。间接荷载,例如:地震荷载等。 地震常用的计算方法有底部剪力法、振型分解反应谱法,按照中国建筑设计规范,重力荷载代表值中的质量源一般取1.0恒荷载+0.8活荷载。
基于以上荷载,钢货架结构设计通常采用的荷载组合包含8 种(D 表示纵向,C 表示横向;1 表示静力,2 表示动力;-Ser表示正常使用极限状态组合),详见表2。
二、立体式货架参数化建模
将参数化建模的思想引入有限元分析工程,可以大幅提升工作效率。根据实际工程输入货架设计参数(立柱片高度、立柱片深度、横梁长度、约束条件、单个托盘货物重量、地震参数、立柱、横梁截面初选等),立体式货架的相关参数(几何参数、加载参数)自动保存在Excel中,通过调用VBA编译的代码,由映射算法,将其转化成SAP2000可识别的接口文件 ,在VBA二次开发的平台上,成功完成Excel和SAP2000无缝对接,快速高效地完成立体式货架参数化建模。
1.SAP2000二次开发
SAP2000是由美国CSI公司开发的通用结构分析设计软件。SAP2000的优势在于提供了开放的接口,SAP2000的API接口语言有很多种,其中最容易上手的是VBA,因为VBA可以直接连接到微软的Excel。用户不仅可以用图形界面来建模,还可以通过编写接口语言来建模。对于复杂结构,采用后者可以减少大量的工作量,从而缩短设计工期,在行业内形成竞争优势。
2.货架结构设计流程
货架结构设计流程的有限元前处理,第一步是定义参数:货架类型(String)、截面类参数(String)、荷载参数(Double)、 地震计算方法(String)、荷载组合(Double)、节点刚度(D o u b l e)、质量源(Double)等。第二步是数据导入:通过Cells定位到Excel对应的单元格,读取横梁式货架的输入参数,并赋值给相应的参数;如果参数对应的单元格很多时,逐一添加很耗时,可以通过循环语句来实现赋值。第三步是把输入数据转化为模型参数,通过循环语句实现几何尺寸的累加并计数,这个步骤很重要;如果数据转化成模型参数时有问题,直接影响建模的准确性,所以需要添加数据校核,通过Debug.Print自行校核模型参数转化的准确性,此时需要打开立即窗口来检查结果。
通过上述输入数据,可以完成钢货架的有限元前处理。VBA提供了大量函数来完成前处理。结构分析前处理,如约束类型、载荷模式、载荷组合、截面参数和分析条件等,都可以通过VBA实现。不同立体式钢货架的结构建模有很大差异,钢货架建模可以从三个方面完成主体结构、支撑结构和部件特性;以横梁货架为例,货架结构参数模型的层次结构分析,如图6。
3.主过程与子过程
考虑到横梁式货架建模的复杂性,VBA程序相对较大,为了使VBA程序易于编写、理解和更改,有必要有序地执行结构化编码。我们所需要做的就是将大问题分成若干个小问题,这些小问题可以同时存在,本文通过VBA创建一个主过程和多个子过程来实现它,用关键字sub来声明它们;主过程可以调用子过程并将参数传递给它们。其中子过程大致分为几何模块和加载模块两类。几何模块的子过程以单个部件为模块划分为柱、横梁、背拉杆、连杆、水平拉杆、斜补等,加载模块的子过程里包含荷载及组合等。几何模块的子工程编程的一般思路大致为:通过循环语句快速实现单个部件的几何建模,赋予杆件截面属性FrameObj.SetSection、材料属性PropMaterial.SetMaterial,并设置节点刚度FrameObj.SetReleases,完成单部件的定义;其中,单部件背拉杆由于只拉不压,可以采用命令FrameObj.SetTCLimits("1", True, 0, False, 0, 2)进行控制。
加载模块编程大致思路如下:第一步,添加荷载模式LoadPatterns.Add,自重Dead,托盘荷载Live,水平静荷载Live(两个方向),地震荷载Quake(两个方向),当计算方法采用底部剪力法时,通过LoadPatterns.AutoSeismic.SetChinese2010赋值。第二步,添加荷载工况,模态工况Modal,自重工况(Linear Static)、托盘荷载工况(Linear Static),水平静荷载工况 (Linear Static),地震工况 (Linear S t a t i c)。第三步,添加荷载组合RespCombo. SetCaseList,通过给荷载工况赋予对应的分项系数,完成荷载组合定义,通过矩阵函数array实现。第四步,给荷载工况赋值,托盘荷载按分布荷载FrameObj.SetLoadDistributed添加,水平静荷载按点荷载FrameObj.SetLoadPoint添加;当计算方法采用振型分解反应谱法时,通过Func.FuncRS.SetUser赋值。 第五步,添加分析模式,复杂结构一般采用非线性分析,通过LoadCases. StaticNonlinear.SetGeometricNonlinearity赋值。
主过程通过调用子过程实现单个部件组装成三维模型,在VBA平台上,完美地实现了EXCEL与SAP2000的无缝连接,把复杂的建模参数化,大大提高了工作效率。
表1:节点刚度
表2: 荷载组合
图6:货架参数化模型
4.代码实现
最后在这里分享一小段柱片横斜撑的小程序,之前有提到过常用的横斜撑的三种形式:W、X、Z,具体通过FrameObj.AddByCoord函数来实现,部分代码如下:
三、结语
工程结构设计过程是灵活运用各种知识解决实际问题的过程,所有的软件只是结构工程师的工具,只有熟练掌握结构的概念设计,并且逻辑非常清楚,软件才能轻松地用于工程应用中供自己使用,从而提高工作效率。通过通用办公程序Excel的VBA,结合项目的实际需要,进行简单的二次开发,避免了大量重复操作,实现了参数化建模,大大提高了工作效率。