MATLAB刮板输送机软启动仿真与传动系统动力学建模

MATLAB刮板输送机软启动仿真与传动系统动力学建模 简介围绕重型刮板输送机启动困难、振动冲击大及各驱动电机输出功率不平衡等问题这份PDF论文以MATLAB为工具对刮板输送机软启动特性展开仿真研究。文章来自《江西煤炭科技》2021年第3期先建立传动系统动力学模型涵盖驱动电机、液力耦合器、减速器和链传动等关键环节再借助MATLAB仿真分析液力耦合器充液流量对峰值力矩的转化作用、启动力矩的提升效果以及链传动阻尼对链条速度衰减的影响为软启动系统优化和启动稳定性提升提供依据。资源包内含1个PDF文件约2.28MB即论文全文便于直接阅读、引用与存档。目前已有156人学习下载适合煤矿机械、机电传动控制及MATLAB仿真方向的学生、教师和工程技术人员参考可从中获取传动系统建模思路、关键方程推导与仿真结论作为课程设计、课题研究或工程优化的文献支撑。1. 满载启动那一下为什么要用 MATLAB 把整条传动链拆成方程综采工作面重型刮板输送机满载启动的头几秒电机电流能冲到额定值的数倍链条被拉得咯吱作响断链、轮齿压溃这类事故大多就发生在这个窗口。软启动系统名义上有三件套——驱动电机、液力耦合器、减速器可启动曲线到底柔不柔和光靠井下试凑很难判断改一次充液流量、换一次阻尼件停面成本都不低。《基于MATLAB的刮板输送机软启动仿真研究》给出的路子是把传动链拆成电机机械特性、液力耦合器特性方程、链传动有限段单元三块用 MATLAB 做数值积分先把不同充液流量、不同链条阻尼下的力矩曲线和链速曲线跑出来再决定井下怎么调。这套思路对做电机仿真、机电耦合建模的人同样受用只要结构能写成 Mx″Cx′KxF 的形式MATLAB 就能把参数扫描的活接过去。2. 传动系统动力学模型怎么变成 MATLAB 能算的方程2.1 驱动电机机械特性为什么要线性化成一条直线完整的异步电机 dq 轴模型要磁链、互感、转子时间常数一堆参数井下现场根本测不全。工程上常用的简化是只保留稳定工作段用一条直线代替机械特性曲线Td Te * (vd - v0) / (ve - v0)Te 是额定输出力矩v0 是同步转速转差率为零对应的转速ve 是额定转速vd 是当前实际转速。这条线在 vd v0 处出力为零在 vd ve 处出力等于额定值中间线性插值。判断启动力矩量级、峰值冲击够用但它算不了堵转和转子发热选型校核阶段别拿它当唯一依据。function Td motor_torque(w, Te, w0, we) % w : 当前转子角速度 rad/s % Te : 额定输出力矩 N*m % w0 : 同步角速度 rad/s % we : 额定工况角速度 rad/s if w w0 Td 0; % 超过同步转速进入回馈制动这里按零处理 else Td Te * (w - w0) / (we - w0); end end参数说明w0 与 we 必须用同一单位这里统一 rad/s铭牌上的 r/min 乘 2π/60 换算否则斜率反号仿真的第一帧就会给出负力矩后面全是废数据。2.2 液力耦合器特性方程与 μ、δ 的物理含义耦合器这一段是全文的核心。原文给出的特性方程里μ 和 δ 是拟合常数取 μ2.5、δ8.72ρ 是实际充液量ρ0 是理论充液量j 是减速器传动比。方程中那个指数分式(e^-δ(j-1) - e^δ(j-1)) / (e^-δ(j-1) e^δ(j-1))数值上等价于 -tanh(δ(j-1))。直接用 exp 写当 δ 取 8.72、j 略大于 1 时e^δ(j-1) 会迅速冲到 1e5 量级分子分母同时溢出MATLAB 返回 NaN。换成 tanh 实现既不会溢出求导也连续ode45 好走。function Tc coupling_torque(w_in, w_out, p) % w_in : 泵轮角速度 rad/s % w_out : 涡轮角速度 rad/s % p : 参数结构体含 mu、delta、rho、rho0、j、Te j p.j; x p.delta * (j - 1); phi -tanh(x); % 等价于原文的指数分式 Tc p.mu * p.Te * (p.rho / p.rho0) * phi * (w_in / max(w_out, 1e-3))^2; Tc abs(Tc); % 传动方向恒为泵轮指向涡轮 endρ/ρ0 这一项直接决定传递力矩的幅值也是第三章要扫的变量。max(w_out,1e-3) 是防除零的兜底启动瞬间涡轮转速为零不兜底会出 Inf。2.3 链传动有限段单元离散与 M、C、K 矩阵组装链条只承受拉力启动前要做预紧所以可以按线性结构处理用有限段单元法把整条链切成 N 段集中质量。每段之间用等效刚度 k 和等效阻尼 c 连接组装出来的动力学方程就是标准的 Mx″Cx′KxFx。M 是对角质量矩阵K 是三对角刚度矩阵C 在主对角和次对角上。N 20; % 链条离散段数段数越多高频越准代价是步长更小 m 12; % 单段集中质量 kg k 2.5e6; % 段间等效刚度 N/m c 3.0e4; % 段间等效阻尼 N*s/m M m * eye(N); K gallery(tridiag, N, -k, 2*k, -k); % 首末段按半刚度修正 K(1,1) k; K(N,N) k; C gallery(tridiag, N, -c, 2*c, -c); C(1,1) c; C(N,N) c;参数说明k 的量级由刮板链的弹性模量和有效截面积折算取值偏大会让系统变成刚性方程ode45 步长被压到 1e-8 以下跑一分钟仿真要几分钟段数 N 取 1525 之间链速曲线的低频振荡形态基本就稳定了再往上加只增加计算量。2.4 用 ode45 组装仿真回路把电机、耦合器、链条三段拼成一个状态向量 y [w1; w2; x(1:N); v(1:N)]长度 N4交给 ode45 积分。写成一个函数句柄传给求解器参数统一塞进结构体 p。function dy conveyor_dyn(~, y, p) N p.N; w1 y(1); w2 y(2); x y(3 : 2N); v y(3N : 22*N); Tm motor_torque(w1, p.Te, p.w0, p.we); Tc coupling_torque(w1, w2, p); F zeros(N,1); F(1) p.j * Tc / p.R; % 经减速器折算到链条上的驱动力 F(end) -p.Ft; % 机尾预紧力 a p.M \ (F - p.C * v - p.K * x); dy [ (Tm - Tc) / p.J1 ; % 泵轮 (Tc - p.j * (p.k * x(1)) / p.R) / p.J2 ; % 涡轮 v ; a ]; end逻辑说明前两行是泵轮、涡轮的转动方程J1、J2 是两侧转动惯量中间直接把 v 抄进导数因为位移的导数就是速度最后一行用左除解线性方程组比 inv(M)* 快也更稳。参数 R 是链轮节圆半径j 用来把旋转量折算到直线运动上。初始条件一般给 w1 0、w2 0、x 全零、v 全零对应满载静止启动工况。3. 充液流量扫描150 L/min 与 100 L/min 的峰值力矩差在哪3.1 充液量 ρ 与充液流量 Q 的换算现场能调的是充液泵的流量 Q单位 L/min模型里要的是充液量 ρ。常见做法是假定充液过程线性按 ρ ρ0 · Q / Q_full 折算Q_full 取耦合器腔体充满对应的流量。这个假设忽略了充液初期的自由射流段对峰值力矩的判断影响在 5% 以内做趋势分析够用。要更准就得把充液过程本身写成微分方程那是另一个工作量。3.2 参数扫描脚本与求解器选项主体脚本就三步改 ρ、跑 ode45、提峰值。关键是给求解器设好相对误差和绝对误差默认的 1e-3 在刚性链传动上会漏掉高频振荡。p struct(N,20,Te,6500,w0,157,we,148,J1,3.2,J2,5.6, ... mu,2.5,delta,8.72,rho0,1.0,j,20,R,0.35, ... Ft,1.2e5,k,2.5e6,c,3.0e4, ... M,M,K,K,C,C); Q_list [80 100 120 150 180]; % L/min Q_full 200; opts odeset(RelTol,1e-6,AbsTol,1e-8,MaxStep,1e-3); peakT zeros(size(Q_list)); settleT zeros(size(Q_list)); y0 zeros(p.N*2 2, 1); for i 1:numel(Q_list) p.rho p.rho0 * min(Q_list(i)/Q_full, 1); [t, Y] ode45((t,y) conveyor_dyn(t,y,p), [0 6], y0, opts); peakT(i) max(abs(Y(:,3N:22*p.N)), [], all); % 链速峰值 settleT(i) t(find(abs(Y(:,3)) 1e-3, 1, last)); end参数说明RelTol 设 1e-6 是链传动这类中频振荡系统的底线再松曲线会毛刺MaxStep 限到 1e-3 秒是为了让 10 Hz 上下的链速波动至少每周期有 100 个采样点否则画出来的波形是假的。Q_list 里 100 和 150 这两个点对应原文实测其余是外插。3.3 峰值力矩与链速曲线的读取校验跑完之后先看数再看图。原文给出的两个标定点是充液流量 150 L/min 时电机峰值力矩约 7700 N·m100 L/min 时约 7100 N·m。差 600 N·m折合约 8.5%。这说明充液流量对启动力矩的调节是单调的但斜率不高——想靠加流量把启动力矩拉上去泵和腔体的负荷先受不了。| 充液流量 Q (L/min) | 电机峰值力矩 (N·m) | 备注 | | 100 | 7100 | 折算 ρ/ρ0 0.5链条蠕动时间长 | | 150 | 7700 | 折算 ρ/ρ0 0.75启动力矩明显抬升 | | Q 继续降低 | 峰值同步下降 | 耦合器滑差增大油温上升快 |画图用 plot(t, Y(:,1)) 直接出电机转速曲线链条速度用 plot(t, Y(:,3))。两条曲线叠在一张图上能直观看到转速爬升段和链速起振段的时间差。用 matlab 画图时把 XMinorTick 打开启动那 0.5 秒的细节才看得清。4. 链条阻尼与仿真发散从 ode45 换到 ode15s 的判断依据4.1 阻尼矩阵怎么定Rayleigh 阻尼与链速衰减的关系工程上不直接给 C 的元素而是用 Rayleigh 阻尼 C αM βK 生成α 管低频、β 管高频。对链条这种以轴向刚度为主的系统把 α 拿小、β 拿大效果是高频振荡衰减快、低频蠕动保留。原文的结论也在这里阻尼系数越大链条速度震荡衰减越快工作稳定性越高。扫 β 从 1e-5 到 1e-3链速包络的衰减时间常数会明显变化。beta_list [1e-5 5e-5 1e-4 5e-4]; for b beta_list C 0.05*M b*K; % alpha 固定 0.05只扫 beta p.C C; [t, Y] ode45((t,y) conveyor_dyn(t,y,p), [0 6], y0, opts); env movmax(abs(Y(:,3)), 50); % 链速包络 semilogy(t, env); hold on; end legend(beta1e-5,beta5e-5,beta1e-4,beta5e-4);逻辑说明movmax 取滑动最大值当包络比直接画瞬时链速更容易比较衰减速度semilogy 是为了把不同量级的包络放在同一张图里看趋势。这里 C 每次循环重建不要用 C(:) ... 就地改避免 ode45 还在用旧句柄。4.2 刚性方程、步长与求解器选择链传动刚度取到 1e6 以上配上小质量单元特征频率能到几千赫兹整个系统就变成刚性方程。ode45 不是不能跑是步长会被迫压到 1e-7 秒量级一段 6 秒的仿真要跑几十分钟。换成 ode15s 或 ode23t同样的精度下耗时能降到十分之一左右。判断依据跑完之后看 t 向量的长度如果点数超过 1e6且曲线本身并不需要这么密的采样就该换求解器。[t, Y] ode15s((t,y) conveyor_dyn(t,y,p), [0 6], y0, opts); fprintf(步点数 %d末态链速 %.4f m/s\n, numel(t), Y(end,3));4.3 几种典型发散与报错的排查仿真发散基本跑不出下面几类按顺序排查通常五分钟内定位| 现象 | 常见原因 | 处理 | | 第一步就 NaN | 耦合器 exp 溢出、除零 | 换 tanh 形式分母加 1e-3 | | 力矩曲线锯齿 | RelTol 太松、MaxStep 太大 | RelTol 收到 1e-6MaxStep 1e-3 | | 链速无限增大 | 驱动力折算漏了 R 或 j 用反 | 核对 F(1) 的量纲 | | 跑到一半卡死 | 刚性系统用 ode45 | 换 ode15s | | 结果与原文差一截 | 单位混用L/min 未换算成 m³/s | 全流程统一 SI |有一类发散容易误判曲线看起来在涨其实是预紧力 Ft 给反了方向链条一直被推而不是被拉。检查方法很简单把 Ft 置零跑一遍如果链速立刻正常就是符号问题。4.4 阶跃输入的处理启动指令是阶跃但直接给阶跃会在 t0 处引入不可导点ode45 的误差控制器会反复缩步长。工程做法是把充液流量写成带上升沿的平滑函数比如 Q(t) Q0·(1-exp(-t/τ))τ 取 0.050.2 秒。这样既保留了启动冲击的主要特征又不会让求解器在零时刻死磕。做 matlab 阶跃响应对比时这条技巧尤其省时间。5. 把单工况脚本改成批量扫描工具的三个细节第一个细节是参数集中。所有可调项塞进一个 p 结构体函数签名只留 (t, y, p)这样换工况时不用碰主逻辑。第二是并行。Q_list 和 beta_list 做笛卡尔积之后工况数很容易上到几十个用 parfor 替换 for注意 parfor 里不能改 p 的字段要在循环体内重新构造局部参数结构否则 MATLAB 会报分类错误。Q_list 80:10:180; beta_list [1e-5 5e-5 1e-4 5e-4]; results cell(numel(Q_list), numel(beta_list)); parfor i 1:numel(Q_list) for k 1:numel(beta_list) pl p; % 每个 worker 一份独立副本 pl.rho pl.rho0 * min(Q_list(i)/Q_full, 1); pl.C 0.05*pl.M beta_list(k)*pl.K; [t, Y] ode15s((t,y) conveyor_dyn(t,y,pl), [0 6], y0, opts); results{i,k} struct(Q,Q_list(i),beta,beta_list(k), ... t,t,peak,max(abs(Y(:,3))),Y,Y); end end第三是落盘。results 里存了完整的时间序列全量写 .mat 会到几百兆建议只留峰值、稳态时间这类标量把曲线拆出去单独存。用 writetable 导成 CSV后续在 MATLAB 或表格软件里做拟合都方便T cell2mat(cellfun((s) [s.Q, s.beta, s.peak], results, UniformOutput, false).); T reshape(T., 3, []).; writetable(array2table(T, VariableNames, {Q,beta,peakChainSpeed}), scan.csv);一个省时间的技巧先用粗网格Q 步长 20、β 取两个量级跑一遍看峰值对哪个参数更敏感再在敏感方向加密。多数工况下峰值对 Q 的响应接近线性用 polyfit 拟合三点就能外推出邻近工况的峰值力矩不必每个点都跑满 6 秒。把外推值和实跑值对一遍偏差超过 5% 的点再回到精网格重算整轮扫描的机时通常能砍掉一半。本文还有配套的精品资源点击获取