介绍
在之前的文章中主要介绍了很多的零件模块,在Baffalo中各个零件是允许自由拼装的,随着零件模块的增加,Baffalo可以处理很复杂的问题。这也是我设计整个框架的原因,就像做一个产品,各个零件有不同的部门评估,平台负责组装,因此Baffalo的框架也更契合企业的发展,他会比目前市面上所有的有限元参数化工具更为强大。
建模
叠片联轴器用来连接两个轴,主要的零件包含轴、螺栓、法兰、叠片和中间套筒
零件建模
零件建模所需要的模块在我之前的文章中都有所介绍:
零件 | 所需模块 | 链接 |
---|---|---|
轴、套筒 | CommonShaft | https://www.feacat.com/2025/02/20/Commonshaft/ |
螺栓 | Bolt | https://www.feacat.com/2025/05/15/Bolt/ |
叠片 | CouplingMembrane | https://www.feacat.com/2025/03/09/CouplingMembrane/ |
法兰 | BossPlate | https://www.feacat.com/2025/03/08/BossPlate/ |
装配
上一节主要完成了零件的建模,此时我们要去将仓库里零件取出,来装配成一个系统,Baffalo中的Assembly类负责装配,只需将一个个零件取出,并按照网格装配的规则,比如接触、刚性连接、柔性连接等组装为一个整体。
主要函数 | 说明 |
---|---|
AddAssembly | 添加装配体,Baffalo支持装配体的嵌套 |
AddET | 添加单元类型 |
AddCon | 添加接触 |
SetRbe2 | 设置刚性连接 |
SetRbe3 | 设置柔性连接 |
AddSolu | 添加求解方式 |
这里我们从仓库取18个膜片,每边9个,8个螺栓,2个法兰,1个套筒和2个轴,进行组装 |
%% Component 读入零件
% 1. Component1
% Component1=load('.\Component1\Component1.mat').Component1;
%% Component plot 零件绘制
if ComponentPlotFlag==1 % Plot Component
% Plot3D(Component1)
end
%% Assembly 总装
Ass=Assembly('New_Assembly');
% 1. Add Component1 添加零件
% position=[0,0,0,0,0,0];
% Ass=AddAssembly(Ass,Component1.output.Assembly,'position',position);
%% Define Element Types 定义单元类型
ET1.name='185';ET1.opt=[];ET1.R=[];
Ass=AddET(Ass,ET1);
ET3.name='173';ET3.opt=[5,3;9,1;10,2;12,5];ET3.R=[]; % Bonded contact
Ass=AddET(Ass,ET3);
ET6.name='170';ET6.opt=[];ET6.R=[];
Ass=AddET(Ass,ET6);
Acc_ET=GetNET(Ass);
mat1.table=["MU",0.15];
Ass=AddMaterial(Ass,mat1);
Acc_Mat=GetNMaterial(Ass);
%% Define Contacts 设置接触
% 1. Component1 - Component2
% ConNum=GetNContactPair(Ass)+1;
% Ass=AddCon(Ass,Component1_Assembly_Num1,1);
% Ass=AddTar(Ass,ConNum,repmat(ReinforcedRing_Assembly_Num1,2,1),[103;104]);
% Ass=SetConMaterial(Ass,ConNum,Acc_Mat);
% Ass=SetConET(Ass,ConNum,Acc_ET-1);
% Ass=SetTarET(Ass,ConNum,Acc_ET);
%% Plot Contacts 绘制接触
if ContactPlotFlag==1
for i=1:GetNContactPair(Ass)
PlotCon(Ass,i);
end
end
%% Define Connections 定义连接
% 1. Connection1
% Acc_Cnode=GetNCnode(Ass);
% Acc_Mas=GetNMaster(Ass);
% Acc_Sla=GetNSlaver(Ass);
% Ass=AddCnode(Ass,0,0,Params.Component1_Couple_Height1);
% Ass=AddMaster(Ass,0,Acc_Cnode+1);
% Ass=AddSlaver(Ass,Component1_Assembly_Num,'face',1);
% Ass=SetRbe3(Ass,Acc_Mas+1,Acc_Sla+1);
% Ass=SetCnode(Ass,Acc_Cnode+1,Acc_ET-5);
%% Boundary 定义边界条件
% BoundNum=GetNBoundary(Ass);
% Bound1=[1,1,1,0,0,0];
% Ass=AddBoundary(Ass,Component1_Assembly_Num,'No',1);
% Ass=SetBoundaryType(Ass,BoundNum,Bound1);
%% Assembly Plot 绘制总装图
if AssemblyPlotFlag==1 % Plot Assembly
% Plot(Ass,'connection',1,'boundary',1);
% sec.pos=[0,0,0];
% sec.vec=[1,0,0];
% Plot(Ass,'section',sec);
end
%% Solution 定义求解类型
% opt.ANTYPE=0;
% opt.NSUBST=20;
% opt.AUTOTS="OFF";
% opt.NLGEOM=1;
% opt.ARCLEN=1;
% opt.OUTRES=["ALL","ALL"];
% opt.OMEGA=[0,0,w];
% Ass=AddSolu(Ass,opt);
% Ass=AddSensor(Ass,'U',1);
%% Output to ANSYS 导出到ANSYS
if OutputFlag==1
ANSYS_Output(Ass);
end
接触绘制
通过PlotCon可以实现接触对的预览:
轴与法兰接触对:
叠片间的接触对:
衬套与叠片的接触:
计算
总装完毕后,可导出到ANSYS计算,其中螺栓的预紧会在Assembly模块中自动施加,也就说一旦你完成了螺栓选型,你也已经完成了螺栓网格和预紧设置。在ANSYS中查看预紧工况,可以看出螺栓预紧已正常施加。
参考文献
[1] https://www.feacat.com/2025/05/15/Bolt/
[2] https://www.feacat.com/2025/02/20/Commonshaft/
[3] https://www.feacat.com/2025/03/09/CouplingMembrane/
[4] https://www.feacat.com/2025/03/08/BossPlate/
本网站基于Hexo 3-Hexz主题生成。如需转载请标注来源,如有错误请批评指正,欢迎邮件至 392176462@qq.com