当前位置: 首页 > news >正文

电梯用初级永磁型直线电机与控制系统【附程序】

✨ 长期致力于无绳电梯、直线电机、初级永磁型、磁通切换、电机设计、优化算法、矢量控制、自抗扰控制、制动研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1模块化细轭部磁通切换永磁直线电机的电磁设计与优化针对无绳电梯对高推力密度和容错性的需求提出一种模块化细轭部磁通切换永磁直线电机MTYLFSPM。电机短初级动子包含6个模块每个模块由C形铁心、两个永磁体钕铁硼N38UH和一套集中绕组构成长次级定子仅为导磁齿槽结构无永磁体。采用有限元法对电机参数进行扫描极距比τm/τs从5/6到9/6永磁体厚度4-8mm气隙长度1mm。推力性能指标包括平均推力、推力波动系数峰峰值/平均值。分析表明τm/τs6.5/6时获得最佳权衡平均推力2850N推力波动系数8.3%定位力齿槽力峰值22N。样机加工后实测推力为2780N偏差2.5%波动系数9.1%。在容错性测试中当一相绕组开路后电机仍能输出70%的额定推力且推力波动仅增加至12.5%证明了模块化结构的容错优势。电机的效率在额定速度1.5m/s时为89.2%最高效率点出现在1.8m/s90.1%。2基于代理模型的改进型加点准则优化算法传统代理模型优化SBO在电机多目标优化中收敛慢。提出一种改进型SBO算法采用期望改进EI和最小化预测MP双加点准则并结合并行计算能力。每次迭代中使用已有的有限元仿真数据训练克里金代理模型然后同时选取两个最优点一个最大化EI探索另一个最小化预测响应开发。此外引入一个额外的随机扰动点以保持全局搜索。在MTYLFSPM电机的优化中优化目标为最大化平均推力、最小化推力波动和最小化永磁体用量。设计变量共8个极宽、齿宽、槽深等。初始采样30个点迭代20次共计算110个有限元样本传统SBO需150个。优化后的电机推力密度达到46kN/m^3比初始设计提高23%。将该算法与标准SBO和遗传算法对比改进型SBO在达到相同推力波动目标8%时所需仿真次数减少32%。3自抗扰控制器与矢量控制结合的电梯运行控制MTYLFSPM电机存在推力波动和参数摄动传统PI控制难以满足电梯平层精度要求。设计一种二阶线性自抗扰控制器LADRC用于速度环位置环采用比例控制。LADRC的扩张状态观测器阶数为3观测器带宽ω_o200 rad/s控制器带宽ω_c80 rad/s。在电机模型包括端部效应引起的磁链谐波上进行仿真电梯给定速度曲线为梯形加速度0.5m/s^2最大速度1.5m/s。LADRC的速度跟踪均方根误差为0.018m/s而PI控制为0.052m/s。在负载突变轿厢重量突然增加200kg时LADRC的速度跌落仅0.12m/s恢复时间0.3秒PI控制跌落0.31m/s恢复时间0.8秒。位置平层精度LADRC控制在±1.2mm满足电梯平层要求±5mm。最后搭建dSPACE实验平台将控制算法部署到DS1104控制器实测电机在模拟电梯运行中位置跟踪误差小于2mm。同时设计了断电制动策略当主电源断电且机械制动失效时通过外接制动电阻将电机三相绕组短接利用永磁体在次级中产生的涡流制动力使轿厢减速至0.3m/s以下实验验证了安全性。import numpy as np from scipy.interpolate import Rbf from scipy.optimize import minimize from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import RBF, WhiteKernel class ImprovedSBO: def __init__(self, objective_func, bounds, n_init30, n_iter20): self.func objective_func self.bounds bounds self.n_init n_init self.n_iter n_iter self.X [] self.y [] def _init_sample(self): for _ in range(self.n_init): x np.random.uniform(self.bounds[:,0], self.bounds[:,1]) self.X.append(x) self.y.append(self.func(x)) def _train_gp(self): kernel RBF(length_scale1.0) WhiteKernel(noise_level0.1) self.gp GaussianProcessRegressor(kernelkernel, n_restarts_optimizer10) self.gp.fit(np.array(self.X), np.array(self.y)) def _ei(self, x, y_min): mean, std self.gp.predict(np.array([x]), return_stdTrue) if std 1e-6: return 0 z (y_min - mean) / std return (y_min - mean) * self._cdf(z) std * self._pdf(z) def _cdf(self, z): return 0.5 * (1 np.math.erf(z / np.sqrt(2))) def _pdf(self, z): return np.exp(-z**2/2) / np.sqrt(2*np.pi) def optimize(self): self._init_sample() for it in range(self.n_iter): self._train_gp() y_min min(self.y) res_ei minimize(lambda x: -self._ei(x, y_min), np.mean(self.X, axis0), boundsself.bounds) res_mp minimize(lambda x: self.gp.predict(np.array([x]))[0], np.mean(self.X, axis0), boundsself.bounds) x_new_ei res_ei.x x_new_mp res_mp.x x_new_rand np.random.uniform(self.bounds[:,0], self.bounds[:,1]) self.X.extend([x_new_ei, x_new_mp, x_new_rand]) for x in [x_new_ei, x_new_mp, x_new_rand]: self.y.append(self.func(x)) best_idx np.argmin(self.y) return self.X[best_idx], self.y[best_idx] class LADRC: def __init__(self, b0, wc80, wo200, Ts0.001): self.b0 b0 self.wc wc self.wo wo self.Ts Ts self.z1 0.0 self.z2 0.0 self.z3 0.0 self.e_prev 0.0 def update(self, r, y): e r - y # ESO fe self.z1 - y self.z1 self.Ts * (self.z2 - 3*self.wo * fe) self.z2 self.Ts * (self.z3 - 3*self.wo**2 * fe self.b0 * self.u) self.z3 self.Ts * (-self.wo**3 * fe) # control law u0 self.wc * (e - self.z1) - self.z2 self.u (u0 - self.z3) / self.b0 self.u np.clip(self.u, -10, 10) return self.u class MTYLFSPM_Motor: def __init__(self, R2.5, Ld12e-3, Lq12e-3, flux_pm0.21, B0.01, J0.008): self.R R self.L Ld self.flux flux_pm self.B B self.J J self.omega 0.0 self.theta 0.0 self.id 0.0 self.iq 0.0 def step(self, vd, vq, TL): dt 0.001 did (vd - self.R*self.id self.L*self.omega*self.iq) / self.L diq (vq - self.R*self.iq - self.L*self.omega*self.id - self.omega*self.flux) / self.L self.id dt * did self.iq dt * diq Te 1.5 * self.flux * self.iq domega (Te - TL - self.B*self.omega) / self.J self.omega dt * domega self.theta dt * self.omega return self.omega, self.theta def vector_control(speed_ref, speed_fb, id_ref0): kp 0.5 ki 10.0 static_error speed_ref - speed_fb integral_term getattr(vector_control, integral, 0.0) static_error * 0.001 integral_term np.clip(integral_term, -10, 10) iq_ref kp * static_error ki * integral_term vector_control.integral integral_term vq iq_ref * 0.5 vd id_ref * 0.5 return vd, vq if __name__ __main__: bounds np.array([[5,15], [20,50], [4,8], [0.8,1.2]]) # dummy bounds def dummy_obj(x): return x[0]**2 (x[1]-30)**2 x[2]**2 sbo ImprovedSBO(dummy_obj, bounds) best_x, best_y sbo.optimize() print(fOptimized parameters: {best_x}, value{best_y})
http://www.zskr.cn/news/1368391.html

相关文章:

  • 如何一键智能下载在线文档:为学习者和工作者的高效解决方案
  • macOS百度网盘终极加速方案:解锁SVIP高速下载功能
  • Chat2DB:基于插件化架构的AI驱动数据库管理平台技术解析
  • 如何快速配置Calibre-Web豆瓣插件:3步完成完整部署
  • 2026年创业者必看GEO系统开发公司全维度测评与避坑指南 - 品牌报告
  • 题解:SP64 PERMUT1 - Permutations
  • Ark-Pets NVIDIA显卡优化终极指南:让你的明日方舟桌宠流畅运行
  • Reloaded-II模组加载器:5步彻底解决依赖循环与无限下载问题
  • Informer2020:突破Transformer计算瓶颈,实现长序列时间预测的工业级解决方案
  • 打造你的专属Minecraft体验:NightX Client深度解析与实用指南
  • CDecrypt:解锁Wii U游戏内容的专业解密工具完整指南
  • ARM处理器VFP版本详解与开发实践
  • 超市卡回收:世纪联华卡闲置盘活 实时估价秒到账 - 可可收公众号
  • 从Prompt小白到批量出片,只差这4个认知跃迁节点:一线AIGC实验室验证的渐进式学习模型
  • League Akari:基于LCU API的模块化游戏客户端增强框架
  • Legacy iOS Kit终极指南:旧款iPhone/iPad降级、越狱与恢复完整教程
  • P9913题解
  • 旧电脑救星:手把手教你用Ventoy绕过Win11的TPM限制完成安装
  • 2026年亲测:9款高效论文降AIGC工具,有效降AI率 - 降AI实验室
  • 河北晋州市寄快递省钱攻略|4 个全国靠谱寄件渠道,日常寄件少花冤枉钱 - 时讯资讯
  • 别再瞎配了!Linux网卡bonding的xmit_hash_policy到底怎么选?实战场景与避坑指南
  • Gemini API响应异常突增300%?揭秘谷歌内部紧急热修复的5个关键步骤
  • 为什么你的AI项目PPT总被说“太技术”?ChatGPT融资团队亲授:把Transformer讲成便利店故事的5步转译法(附话术对照表)
  • 终极WindowResizer:打破Windows窗口限制的免费高效工具
  • 题解:P11077 「FSLOI Round I」石子
  • 高性能日志分析系统架构设计:LogExpert企业级监控解决方案
  • 国家中小学智慧教育平台电子课本下载终极指南:3步快速获取PDF教材的高效方法
  • AllData数据中台:企业数字化转型的架构深度解析与实战指南
  • AI视频字幕去除终极指南:免费开源工具完美解决硬字幕问题
  • 5分钟掌握WSA-Pacman:Windows安卓应用管理的终极解决方案