工业机器人是计算机技术出现后发展起来的一种新型机械结构,工作效率和机动性比传统机械高很多。随之而来的是,机器人的结构设计在减少质量、提高刚度方面比传统机械结构有更高的要求。在设计工作中,结构的最优化显得更为重要。
在结构的优设计中,有限元法是一个比较有效的方法。通常,建立模型和模型的修改都是手工完成的。对于结构比较复杂或者需要修改的地方很多的情况下,优化的时间比较长。其中计算时间相对较少,建模和结构修改所占比重较大。如何减少建模和结构修改的的时间,是提高结构优化效率的关键。
APDL语言 是ANSYS软件提供给用户的一个依赖于ANSYS程序的交互式软件开发环境。APDL语言具有类似一般计算机语言的常见功能 ,如类似于常数定义、变量定义和赋值的参数定义,分支和循环控制语句,类似于子程序调用的宏调用等功能。除此以外,还包含有比较强的数学运算能力,如算术运算、比较、取整和标准FORTRAN的三角函数、指数函数、双曲函数等。利用APDL语言还可以读取ANSYS程序数据库中的数据进行数学运算,以及建立分析模型,控制ANSYS程序的运行过程等功能。
图1所示是一个三杆并联的机器人结构的原始设计方案。机器人的机座采用门式结构,三个驱动杆的长度可变,使得末端件能够完成指定的运动。由于采用三个驱动杆,上横梁的核心部分呈等边三角形,如图2所示。结构沿立柱平面无法设计成对称形式,横梁在两个立柱之间沿x方向的位置难以确定。而且,原始设计方案的有限元分析结果表明,横梁与1驱动杆相联的悬伸端沿z向变形比较大,刚性比与2、3杆相联的部分弱很多,约为其它两个杆所在部位刚度的十分之一。这种刚度的不一致性给末端件在高工作载荷下的运动精度带来一定的影响。确定上横梁沿x方向的位置是很有必要的。
对于上述问题,一般的优化策略是不断地改变撕崃旱奈恢茫经多次试算,最终找到一个合适的位置。每次试算,都要根据计算结果修改模型,重新建模。手工操作迭代过程,如果迭代次数比较多,很难避免出现失误,优化失败的几率比较高。模型修正以后,上横梁的壁板和筋板形状会发生变化。由于上横梁的内部结构形状比较复杂,税搴徒畎逍巫吹谋浠对上横梁刚度的影响难以预测,试算的次数比较多,修改模型的工作量也相应比较大。
本文利用ANSYS程序的APDL语言对上述的横梁位置优化问题给出了一个优化策略。在第一次的分析模型建立起来后,利用命令记录文件中生成的建模指令构造用户的优化酥瞥绦颍后续的迭代优化过程都由APDL语言编写的用户控制程序完成,不再需要人工干预。对图1所示的模型进行修改所需的时间减少到可以忽略的程度,整个优化过程的效率有很大提高。
2. 分析模型的建立
图1所示结构由三部分组成:两个立柱,一个横梁和三个驱动杆。立柱和横梁通过图1所示立柱上部第一个水平筋板处的螺钉联接。由于主要考虑横梁的变形,驱动杆部分可以略去,在联接部位代之以等效力。
横梁部分的核心是三个与驱动杆联接的部位和中间的有特殊用途的孔,尺寸必须保证。其它部分则与立柱能有效联接即可。为建模的方便,在ANSYS程序中将横梁的核心部分做成一个元件(component)。在优化过程中,这一部分几何形状保持不变,只改变它与立柱沿x轴的相对位置,即只改变联接部分的几何形状。需要注意的是,联接部分在优化迭代过程中只改变几何尺寸,不改变拓扑结构,可以通过程序自动完成。
横梁与每个立柱通过六个螺栓联接。在螺栓联接部位,结点应当耦合。在非螺栓联接部位,结合面不能承受拉应力,应设置接触单元。模型中包含接触单元以后,求解过程需要大量的非线性迭代计算,机时增加很多。将横梁与立柱作为一体进行的试算表明,立柱的外侧受拉,内侧受压。考虑到主要分析对象是上横梁与三个驱动杆处的联接刚度,可以将接触单元略去,在立柱外侧建立图2所示的联接面几何模型。横梁与立柱的联接处,有螺栓的部位,上下面共享一个关键点,没有螺栓的部位,上下面各自拥有一个关键点。这样做的好处是,网格剖分时,在公共关键点处自动生成一个结点,建立起立柱和横梁之间的耦合关系。在非公共关键点处,横梁和立柱上的结点则不会有这种耦合关系。在立柱的内侧,立柱与横梁在接触面上联成一体,所有结点都将是耦合的,立柱和横梁共享这些结点,而不仅仅是在螺栓联接处。这样做的好处是,笔∪チ私哟サピ,又能反映螺栓联接的特点。
立柱底部与基础的联接处理成刚性的全约束。
分析的主要目标是横梁的刚性,可以认为上横梁在与三个驱动杆的联接处承受相同的载荷。这样可以根据计算得到的变形结果,直接评价三个联接部位的刚度。
苯峁共捎帽”谥件,在分析模型中采用板壳单元shell63模拟。结构的外壁与筋板厚度不同,需要为板壳单元设置两组不同的实常数(real constant)。
同样,为了建模的方便,将两个立柱做成另一个元件。进而将立柱核心部分建立的元件与立柱元件做成一个部件(assembly薄U庋,在修改模型的时候,可以很容易地将立柱与横梁的联接部分选择出来,完成修改过程。
经过上述的处理,可以建立类似图1所示的分析模型。由于模型和载荷的对称性,实际计算可以只取一半,总的单元数就只有8927个,总结点数为4341个,全部使用三角形网格剖分。
3. 优化策略
优化过程本质上是一个试算-修改的迭代过程。以原始设计方案作为迭代计算的初始条件,迭代过程结束的条件是:三个驱动杆联接处的刚度接近相等或者迭代次数过多。对于这个具体问题,可以预知三个联接部位刚度相等时的横梁位置是存在的,如果迭代不收敛,只能是移动量不合适或者初始位置不合适。为了迭代过程能够快速有效地收敛,采用对分搜索的变步长算法,自动修正移动量。算法稍微复杂一些,但是对初值的要求不高,有比较好的通用性。
下面给出优化策略的控制流程。
1. 从备份文件中读出横梁在初始位置时的模型数据;
2. 修改横梁的位置;
3. 求解修改后的模型;
4. 读出与三个驱动杆联接部位的变形;
5. 判断是否满足收敛条件,不满足,修改移动量后返回3,满足,则退出循环;
6. 存储求解结果后退出。
下面是程序的主要控制代码及其功能的注释。其中具体的建模指令被省略,代之以省略号,为了便于同控制流程对照,加了部分必要的注释。
/BATCH ANSYS的批处理文件标记
RESUME,,robbak,db,,0 从备份文件robbak.db中读入原始数据
/PREP7 进入前处理器,
。。。 删除横梁与立柱的联接部分
。。。 将横梁核心元件移动一个初始step
。。。 在几何模型上施加载荷和约束
。。。 网格划分
FINISH 退出前处理器
/SOLU 进入求解器
SOLVE 求解
FINISH 退出求解器
/POST1 进入后处理器
*GET,front,NODE,2013,U,Z 读第一个驱动杆联接处的结点变形至front
*GET,back,NODE,1441,U,Z 读第二个驱动杆联接处的结点变形至back
lastdif=1 上一次front与back差值的绝对值
flag=-1 优化结果可行性的标记
step=0.05 从初始位置到最优位置的移动量初值
*DO,I,1,10,1 迭代循环开始,循环变量I,取值范围1~10,步长1
dif=abs(front-back) 本次计算结果中front和back的差的绝对值
*IF,dif,LE,1.0E-6,THEN 判断差值dif是否满足要求
flag=1 满足,则标记置1
*EXIT 退出迭代计算
*ELSEIF,dif,GE,lastdif,THEN 判断差值dif是否变大
flag=2 差值变大,标记置2
。。。 对分法修改step
。。。 继续以前一次位置作起点,以修改后的step为当前step,开始新一轮
迭代计算
*ELSE 差值不小于期望值,且逐渐变小,萍绦移动上横梁
。。。 从备份文件中读入初始状态数据
。。。 进入前处理器
AGEN, ,P51X, , , ,step, , , ,1 移动上横梁的核心部分,移动量step
。。。 构造横梁和立柱的联接部分
。。。 施加载荷和约束
。。。 网格划分
FINISH 退出前处理器
/SOLU 进入求解器
SOLVE 求解
FINISH 退出求解器
/POST1 退出后处理器
*GET,front,NODE,2013,U,Z 给front赋值
*GET,back,NODE,1441,U,Z 给back赋值
lastdif=dif 更新lastdif
*ENDIF if-else 语F的结尾
*ENDDO *DO 循环语句的结尾
上面这个文件比较长,约1000行。主要目的是为了使程序的结构清晰。有很多代码是复用的,如一些建模指令和后处理指令。使用时,可以将这些指令构成相应的宏在主程序中调用,能有效地缩短主程序的长度。此外,文件中多数F体的建模指令是从ANSYS程序的命令记录文件中复制过来的,包含很多在图形界面下才用到的指令。以ANSYS的批处理方式使用时,可以将这些命令删除,也能缩短文件长度。
在上述程序中,模型指定部位的变形是通过结点读取的。在网格剖分中,为了确保剖分成功,并且不产F形状恶劣的单元,不得已使用了三角形网格。优化过程的每一步迭代,模型的立柱和横梁核心联接部分的几何形状都会不同,这会使剖分出来的网格数量有所不同,指定位置处的结点编号就有可能不同。依据结点编号从数据库中读取的数据就有可能不是指定位置的数据。为此,需要首先剖F横梁的核心部分,这样,横梁上的结点编号在每次迭代过程中都是固定的。
迭代的最终结果是否是一个可行的结果,需要通过查看参数flag判定。只有flag=1,计算结果才是可行的,否则表示迭代过程并没有找到最佳位置。横梁的移动量存储在参数step中。如果计算结果是可F的,step的值就是横梁从原始设计位置到最优位置的移动量。总的迭代次数存放在参数I中,通过I的最终值,可以估计分析结果的可行性和初始条件是否合适。
4. 分析结果
优化过程总共进行了7次迭代,耗费机时约2小时37分钟,找到了最优位置。由于机器读入F令的过程比人工修改模型的速度快得多,修改模型的时间基本可以忽略。优化过程所需时间取决于求解时间。与人工完成的优化过程相比,效率有了较大提高,而且避免了复杂模型在建模过程中容易出现的人为失误导致后续迭代计算出错或偏离优化目标等问题。
5. 结论
分析结果表明,本文给出的优化方法是有效的,达到了预期的优化目的。该方法的优点是可靠性高,优化过程不易出错。其次是通用性比较好,在类似的结构优化设计中,文中给出的控制代码无需作大的改动即可移植使用。缺点是在优化过程中不能改变优化对象的拓扑结构。在不改>拓扑结构的条件下,修改模型的工作量越大,越能体现出该方法的优越性。另外,对于需要改变拓扑结构的优化问题,可以使用ANSYS程序提供的拓扑优化功能。如果将本文的方法与之结合,可以取得更好的优化效果。