2026/4/11 4:47:19
网站建设
项目流程
网站开发的技术要求,网站年费怎么做分录,网络加速器免费永久版,百度开户返点✅ 博主简介#xff1a;擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导#xff0c;毕业论文、期刊论文经验交流。 ✅成品或者定制#xff0c;扫描文章底部微信二维码。 (1) 基于势能法的点蚀裂纹几何参数化刚度计算
针对齿轮传动系统中点蚀和裂纹两种典…✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅成品或者定制扫描文章底部微信二维码。(1) 基于势能法的点蚀裂纹几何参数化刚度计算针对齿轮传动系统中点蚀和裂纹两种典型失效形式对时变啮合刚度的影响,本研究建立精细化的几何参数化故障模型并推导解析刚度公式。齿轮啮合刚度反映轮齿在载荷作用下的变形抗力,包含弯曲刚度、剪切刚度、赫兹接触刚度和齿基刚度等多个分量的串联组合。势能法通过计算轮齿在单位载荷下的弹性变形能,利用卡氏定理求导获得综合刚度。点蚀故障建模采用圆柱空洞近似,通过半径、深度和位置参数描述点蚀坑的几何特征,多个点蚀坑通过空间分布和数量参数组合形成复合点蚀模式。点蚀区域材料缺失导致局部刚度削弱,推导刚度修正公式时将点蚀坑视为应力集中源,通过积分点蚀区域的应变能增量计算刚度降低量。裂纹故障分为齿根裂纹和齿面裂纹两类,齿根裂纹沿齿宽方向扩展采用直线裂纹简化,通过裂纹深度和倾斜角度参数化描述,齿面裂纹沿齿廓法向发展通过起始位置和扩展长度定义。裂纹的存在改变轮齿的有效承载截面,采用削弱面积法计算等效截面模量,结合应力强度因子理论评估裂纹尖端的应力奇异性对整体刚度的影响。有限元验证采用实体建模软件构建包含故障特征的精确齿轮模型,通过静态加载仿真提取接触应力和变形数据,将有限元计算的刚度曲线与解析模型对比验证一致性,误差控制在百分之五以内确保模型可靠性。(2) 多位置关系复合故障的刚度耦合效应分析考虑到实际运行中齿轮可能同时存在多种故障模式,本研究系统分析点蚀与裂纹复合故障下的刚度特性。根据点蚀坑和裂纹的相对位置关系将复合故障分为同侧叠加型、异侧分离型和交叉耦合型三大类。同侧叠加型指点蚀和裂纹位于同一齿面且空间位置邻近,此时两种故障的刚度削弱效应相互强化,局部应力集中加剧导致刚度降低幅度大于单故障线性叠加。异侧分离型指点蚀位于齿面工作侧而裂纹位于非工作侧或齿根,两者在空间上分离但通过齿体传递应力相互影响,刚度降低呈现弱耦合特性。交叉耦合型指点蚀坑边缘诱发裂纹扩展或裂纹路径穿过点蚀区域,此种情况下应力场分布复杂,需要通过断裂力学和疲劳累积损伤理论联合建模。复合故障刚度计算采用分步解耦策略,首先计算单一点蚀故障导致的刚度削弱,然后在削弱后的基础上引入裂纹效应,通过迭代修正获得稳定的复合刚度曲线。不同故障程度的参数化扫描通过改变点蚀半径、裂纹深度等变量,绘制刚度随故障程度的演化趋势图,揭示刚度降低的敏感性和非线性特性。对比健康齿轮、单故障齿轮和复合故障齿轮的刚度曲线,分析啮合周期内刚度波动幅度、平均值偏移和波形畸变特征,为故障诊断提供刚度域特征指标。(3) 复合故障激励下的系统动力学响应与频域特征将计算得到的复合故障齿轮时变啮合刚度作为动态激励源,建立齿轮传动系统的集中质量动力学模型求解系统响应。动力学模型采用扭转振动简化,主动轮和从动轮简化为刚体,齿轮副通过时变刚度和阻尼元件连接,考虑齿侧间隙和齿面摩擦的非线性因素。运动微分方程采用Runge-Kutta数值积分求解,获得系统的角位移、角速度和动态啮合力时间历程。时域分析通过观察振动波形的周期性、冲击特征和调制现象,区分不同故障模式的振动特性,点蚀故障导致周期性脉冲,裂纹故障引起呼吸效应产生调幅调频现象。频域分析对动态响应信号进行快速傅里叶变换,提取频谱中的啮合频率及其倍频成分,边频带分布反映故障的调制特性,边频间隔对应故障特征频率。复合故障下的频谱呈现多峰值和边频簇密集分布,通过峰值幅值和频率位置的变化量化故障程度。为验证理论模型,搭建齿轮传动试验台采集振动加速度信号,通过对比仿真与实验的时频域特征验证动力学模型的准确性。import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint from scipy.fftpack import fft, fftfreq class GearMeshingStiffness: def __init__(self, base_stiffness1e8, num_teeth30): self.base_stiffness base_stiffness self.num_teeth num_teeth self.tooth_period 2 * np.pi / num_teeth def healthy_stiffness(self, theta): k_avg self.base_stiffness k_var 0.1 * k_avg stiffness k_avg k_var * np.sin(self.num_teeth * theta) return stiffness def pitting_stiffness(self, theta, pit_radius0.001, pit_depth0.0005, pit_positionnp.pi/4): k_healthy self.healthy_stiffness(theta) pit_influence np.zeros_like(theta) pit_width pit_radius * 4 for i, angle in enumerate(theta): distance np.abs(angle - pit_position) if distance pit_width: reduction_factor pit_depth * (1 - distance / pit_width) pit_influence[i] reduction_factor k_pitting k_healthy * (1 - pit_influence * 0.3) return k_pitting def crack_stiffness(self, theta, crack_depth0.002, crack_positionnp.pi/3): k_healthy self.healthy_stiffness(theta) crack_influence np.zeros_like(theta) crack_width 0.1 for i, angle in enumerate(theta): distance np.abs(angle - crack_position) if distance crack_width: reduction_factor crack_depth * 500 * (1 - distance / crack_width) crack_influence[i] reduction_factor k_crack k_healthy * (1 - crack_influence * 0.5) return k_crack def composite_fault_stiffness(self, theta, pit_params, crack_params, interactionadditive): k_base self.healthy_stiffness(theta) k_pit self.pitting_stiffness(theta, **pit_params) k_crack self.crack_stiffness(theta, **crack_params) if interaction additive: reduction_pit (k_base - k_pit) / k_base reduction_crack (k_base - k_crack) / k_base total_reduction reduction_pit reduction_crack k_composite k_base * (1 - total_reduction) elif interaction multiplicative: k_composite (k_pit / k_base) * (k_crack / k_base) * k_base else: k_composite np.minimum(k_pit, k_crack) return k_composite class GearDynamicsSimulator: def __init__(self, stiffness_func, damping100, inertia10.01, inertia20.015): self.stiffness_func stiffness_func self.damping damping self.inertia1 inertia1 self.inertia2 inertia2 self.torque_input 50 self.torque_load 40 def dynamics_equations(self, state, t): theta1, omega1, theta2, omega2 state relative_displacement theta1 - theta2 k_mesh self.stiffness_func(theta1) mesh_force k_mesh * relative_displacement self.damping * (omega1 - omega2) alpha1 (self.torque_input - mesh_force) / self.inertia1 alpha2 (mesh_force - self.torque_load) / self.inertia2 return [omega1, alpha1, omega2, alpha2] def simulate(self, duration2.0, fs2000): t np.linspace(0, duration, int(duration * fs)) initial_state [0, 10, 0, 10] solution odeint(self.dynamics_equations, initial_state, t) theta1 solution[:, 0] omega1 solution[:, 1] theta2 solution[:, 2] omega2 solution[:, 3] relative_displacement theta1 - theta2 dynamic_force np.array([self.stiffness_func(angle) * disp for angle, disp in zip(theta1, relative_displacement)]) return t, theta1, omega1, theta2, omega2, dynamic_force def frequency_analysis(signal, fs): n len(signal) freq fftfreq(n, 1/fs) fft_vals fft(signal) magnitude np.abs(fft_vals) positive_freq_idx freq 0 freq_positive freq[positive_freq_idx] magnitude_positive magnitude[positive_freq_idx] return freq_positive, magnitude_positive def compute_statistical_features(signal): features {} features[rms] np.sqrt(np.mean(signal**2)) features[peak] np.max(np.abs(signal)) features[kurtosis] np.mean((signal - np.mean(signal))**4) / (np.std(signal)**4 1e-8) features[skewness] np.mean((signal - np.mean(signal))**3) / (np.std(signal)**3 1e-8) features[crest_factor] features[peak] / (features[rms] 1e-8) return features stiffness_model GearMeshingStiffness(base_stiffness1e8, num_teeth30) theta_range np.linspace(0, 2*np.pi, 1000) k_healthy stiffness_model.healthy_stiffness(theta_range) k_pitting stiffness_model.pitting_stiffness(theta_range, pit_radius0.002, pit_depth0.001) k_crack stiffness_model.crack_stiffness(theta_range, crack_depth0.003) k_composite stiffness_model.composite_fault_stiffness( theta_range, {pit_radius: 0.002, pit_depth: 0.001, pit_position: np.pi/4}, {crack_depth: 0.003, crack_position: np.pi/3}, interactionadditive ) simulator_healthy GearDynamicsSimulator(stiffness_model.healthy_stiffness) t_healthy, theta1_h, omega1_h, theta2_h, omega2_h, force_h simulator_healthy.simulate(duration1.0, fs5000) def composite_stiffness_wrapper(theta): return stiffness_model.composite_fault_stiffness( theta, {pit_radius: 0.002, pit_depth: 0.001, pit_position: np.pi/4}, {crack_depth: 0.003, crack_position: np.pi/3} ) simulator_fault GearDynamicsSimulator(composite_stiffness_wrapper) t_fault, theta1_f, omega1_f, theta2_f, omega2_f, force_f simulator_fault.simulate(duration1.0, fs5000) freq_h, mag_h frequency_analysis(force_h, fs5000) freq_f, mag_f frequency_analysis(force_f, fs5000) features_healthy compute_statistical_features(force_h) features_fault compute_statistical_features(force_f) print(Healthy Gear Features:) for key, value in features_healthy.items(): print(f {key}: {value:.4f}) print(\nFaulty Gear Features:) for key, value in features_fault.items(): print(f {key}: {value:.4f}) print(f\nRMS Increase: {(features_fault[rms] - features_healthy[rms]) / features_healthy[rms] * 100:.2f}%) print(fKurtosis Increase: {(features_fault[kurtosis] - features_healthy[kurtosis]) / features_healthy[kurtosis] * 100:.2f}%) mesh_frequency 30 * 10 / (2 * np.pi) print(f\nExpected Mesh Frequency: {mesh_frequency:.2f} Hz) peak_indices_h np.argsort(mag_h)[-5:] peak_indices_f np.argsort(mag_f)[-5:] print(f\nTop 5 Frequency Peaks (Healthy): {freq_h[peak_indices_h]}) print(fTop 5 Frequency Peaks (Faulty): {freq_f[peak_indices_f]})如有问题可以直接沟通