简介:这是一篇关于神经网络控制算法在气动伺服系统中应用的学术论文,面向自动化控制、机电一体化领域的研究者与工程师。针对气动系统因空气可压缩性、摩擦力等非线性因素导致数学模型建立困难、传统PID控制精度不足的问题,论文基于BP神经网络设计了神经网络PID控制器,通过实验数据训练网络权重,实现对无杆气缸运动的高精度控制,并对比分析了该策略在抑制运动误差方面的优势。资源为PDF格式,共1个文件,大小559KB,内容包含摘要、引言、系统原理、控制器设计、实验分析等完整章节。目前已有104人学习,适合需要了解数据驱动控制、神经网络在非线性系统中的应用方法,并用于课题研究或论文撰写的读者。
1. 气动伺服运动分析为什么绕不开神经网络——先弄清这张 PDF 的落脚点
气动伺服系统(比例方向阀加无杆气缸加位移传感器)有一个让工程师头疼的特性:气体可压缩、摩擦力随速度和位置漂移、阀口存在死区和饱和,想用同一套 PID 增益通吃所有工况,基本靠玄学。神经网络控制算法的价值,恰恰是把这些“机理上说不清”的非线性交给数据去拟合,让运动分析从依赖调试手感,变成可复现、可迁移的模型行为。这张 PDF 不是推导数学定理,而是给出一条可行路径:怎么搭建神经辨识模型、怎么选网络结构、怎么把轨迹跟踪误差压到工艺容差内。适合正在做气动执行器高精度定位、机器人柔顺关节或气动位置伺服诊断的工程师,也适合想把仿真结果搬到实物设备上验证的人。
2. 气动伺服系统建模:机理模型的失效点与神经网络辨识的嵌入位置
2.1 气体压缩与摩擦力:两个让固定增益控制集体失效的非线性来源
气动伺服系统的动态特性由三块构成:阀口流量、气缸两腔压力变化、负载和摩擦力的相互作用。阀口流量满足节流公式,流动进入临界状态后质量流量与上游压力的关系不再线性,压比跨越临界点时流量曲线出现明显折点。气缸腔内压力变化按热力学过程近似,理论绝热指数是 1.4,实际工作腔室壁面存在热交换,等效指数随工况偏移。两个因素叠加,让同一套控制参数在不同供气压力和阀开口组合下,表现出完全不同的动态响应。
摩擦力则是更大的黑匣子。Stribeck 曲线揭示出静摩擦、库仑摩擦和粘性摩擦在低速区有一段负斜率区域,正负速度换向时还伴随摩擦记忆效应。在这个区域里,气缸会出现爬行现象,速度曲线在时域上呈现一断一断的锯齿,运动分析里能看到加速度信号的高频抖动,这些抖动在机理模型里几乎无法精确预测。传统 PID 在低速段主要靠积分项硬扛,而积分项的饱合会在速度反向时引入明显的超调,这正是运动分析中最常见的跟踪误差来源。
对比液压伺服,气动系统的刚度低,同样的负载扰动会造成更大的位置偏移,且气体质量流量的响应比油液快但阻尼小。做运动分析时,必须把气压波动当成系统内部状态,而不是外部扰动忽略掉。神经网络捕捉这类多状态耦合的天然优势就在这里——它不需要人类先写出精确的偏微分方程组,只要训练数据覆盖足够的压差、速度和负载范围,网络会自行构造一个隐状态映射来描述这些非线性关系。
2.2 前馈逆模型和反馈补偿:神经网络在气动回路里的两种角色
神经网络进入气动伺服控制回路,最常见的安装位置是两个:前馈通路和反馈补偿通路。前馈通路的做法是训练一个逆模型网络,输入期望位置、期望速度和期望加速度,输出阀电压指令。逆模型的意义在于,它本质上是对整个被控对象做了一个反向的非线性逼近,让控制器在动作之前就预判需要多少阀开口,而不是等误差出现后再修正。
反馈补偿的接法是 PID 输出和网络输出并联,把位置误差、速度误差、两腔压差输入网络,网络输出一个补偿电压叠加到 PID 输出之上。这种结构更依赖实时状态,好处是能抵抗模型失配和外部扰动,坏处是网络推理延迟和采样周期直接耦合,实时性要求高的场合需要把网络推理时间限定在几十微秒以内。
从运动分析的目标来看,前馈逆模型的价值明显更大。运动分析要求的不是位置稳定,而是让速度曲线和加速度曲线贴合期望。逆模型把期望轨迹映射到阀指令,相当于为整个系统构造了一个前馈控制器,加速度段不会像反馈控制那样出现相位滞后。我一般会把前馈和反馈结合使用:前馈承担主要补偿,反馈只负责修正未建模的残差,这样运动分析的跟踪误差里看不到明显的相位差,残差功率谱也更干净。
2.3 从运动数据到训练集:采集、滤波与归一化的详细做法
训练神经网络的前提是一份覆盖完整工况的气动运动数据。常见做法是给气动伺服系统施加扫频激励,从 0.1Hz 到 5Hz 的正弦信号,幅值从 5mm 到全行程;另外再混入三角波、阶跃和梯形轨迹,确保速度方向突变和数据频段都覆盖到。同步采集期望位置、实际位置、阀指令、两腔压力和供气压力,每个通道标记清晰的时间戳。
采集时要注意,速度不能直接用位置差分,差分会把量化噪声放大成一个毛刺密集的信号。我一般会先对位置做零相位低通滤波,再用中心差分求速度,最后对速度做一次同参数滤波,避免相位偏移污染训练标签。
import numpy as np from scipy import signal data = np.loadtxt('pneu_run01.csv', delimiter=',', skiprows=1) t = data[:, 0] pos_ref = data[:, 1] pos_fb = data[:, 2] valve_u = data[:, 3] fs = 1000.0 # 采样率:气动回路推荐 500Hz~1kHz b, a = signal.butter(2, 30 / (fs / 2), 'low') pos_filt = signal.filtfilt(b, a, pos_fb) # 零相位滤波,不产生相位延迟 vel = np.gradient(pos_filt, t) acc = np.gradient(vel, t) feat = np.column_stack([pos_filt, vel, acc]) mean_f, std_f = feat.mean(axis=0), feat.std(axis=0) X = (feat - mean_f) / std_f # 每个通道单独归一化 y = (valve_u - valve_u.mean()) / valve_u.std() np.savez('train_set.npz', X=X, y=y, mean=mean_f, std=std_f, valve_mean=valve_u.mean(), valve_std=valve_u.std())这段代码的重点是归一化统计量必须保存。网络部署后再读入新数据,如果直接用新数据的 mean 和 std 重新归一化,等于换了输入分布,训练好的权重全部失效。保存 mean、std 这个动作我称为“给模型配身份证”,它和网络结构权重同等重要。采样频率低于 500Hz 时,气动换向瞬间的压力瞬态会被严重欠采样,训练出的模型无法学到高速反向时的摩擦突变,这也是不少复现失败案例的根源。
2.4 训练损失函数怎么设计:位置、速度、加速度三通道对齐
很多初做神经网络运动分析的工程师,损失函数只放位置误差一项,指望位置误差小了速度和加速度自然正确。这个想法在气动伺服领域不成立。位置误差小只能说明曲线贴合,但速度误差可能在换向点冲出一个尖峰,加速度误差则体现为高频抖振。运动分析要求的是整条轨迹的动态特性贴合,因此损失函数要同时约束位置、速度和加速度三个通道。
import torch dt = 0.001 # 采样周期,与训练集 fs 对应 lambda_pos, lambda_vel, lambda_acc = 1.0, 0.4, 0.08 def trajectory_loss(pred_seq, true_pos_seq, true_vel_seq, true_acc_seq): pos_err = (pred_seq - true_pos_seq) ** 2 vel_pred = torch.diff(pred_seq, dim=0) / dt vel_err = (vel_pred - true_vel_seq[1:]) ** 2 acc_pred = torch.diff(vel_pred, dim=0) / dt acc_err = (acc_pred - true_acc_seq[2:]) ** 2 return lambda_pos * pos_err.mean() + lambda_vel * vel_err.mean() + lambda_acc * acc_err.mean()这里的关键点在于,pred_seq 是网络预测的期望位置序列,不是阀电压,这样速度加速度才能直接由轨迹差分求得,梯度也才能全部回流到网络参数。如果让网络输出阀电压,就必须有一个可微的被控对象模型把阀电压换算成位置,否则速度加速度损失项的梯度是断开的。这个误区我早期踩过:离线训练时速度误差死活不降,最后定位到梯度根本没有通过简化模型传播,属于典型的“看起来在工作,实际没在学”。
3. 神经网络控制算法选型:BP、LSTM 与预测控制在气动回路的分工
3.1 前馈神经网络做逆模型:层数、节点数与激活函数的选择
逆模型网络的默认起点是三层全连接前馈神经网络:输入层接收期望位置、速度、加速度三个归一化特征,隐藏层从 32 到 128 个节点,输出层一个节点表示阀电压。激活函数 hidden 层用 tanh 或 ReLU 都行,tanh 在气动小样本场景下收敛更平滑,ReLU 在训练数据量足够大时更快。隐藏层层数不要超过三到四层,气动回路的有效特征维度并不高,加深网络带来的收益微薄,反而加大过拟合和部署时的推理开销。
前馈网络做逆模型有一个先天约束:它学的是静态非线性映射,不包含任何时序记忆。只要气管长度够短、气缸容积不大,这个假设基本成立。但如果你在数据里看到明显的滞环——同一位置、同一速度在不同运动方向下需要不同的阀电压——说明系统有时序记忆,单纯前馈网络拟合滞环会出现平均化,补偿效果被摊薄。识别方法是看训练误差的残差:如果残差在换向点两侧有方向性偏差且无法下降,就该换带时序能力的结构。
训练时我建议用 Adam 优化器,学习率从 1e-3 起步,批大小取 32 或 64。气动数据相邻样本高度相关,随机打乱后训练可以打破时序相关性,但打乱后要注意验证集必须按时间顺序切分,不能用随机抽样,否则验证集会混入训练集相邻时刻的信息,让评估结果虚高。
3.2 BP 网络做摩擦补偿:低速样本分层采样才是关键
BP 神经网络在气动伺服领域常被用来做摩擦补偿的建模工具。结构上它和普通前馈网络没有本质差别,误差反向传播只是训练手段,并不代表某种特殊的网络类型。工程方案里通常拿它拟合摩擦电压补偿项,输入取速度、两腔压差和位置,输出附加的补偿阀电压。
做摩擦补偿最常遇到的问题是训练数据里低速样本占比太小。气动缸运动时,高速段占比大、低速爬行段占比小,按时间等比例采样的话,低速样本在损失函数里的权重微乎其微。网络的优化方向会被高速段主导,补偿结果在低速段严重不足,爬行现象原封不动保留下来。我一般按速度区间分层采样:把速度范围切成低速段、过渡段、高速段三段,每段按相同样本数抽取,低速段权重不低于总损失的 40%。
import numpy as np # 按速度分层采样,保证低速段不被淹没 vel = np.gradient(pos_filt, t) mask_low = np.abs(vel) < 10 # 低速段,单位 mm/s mask_mid = (np.abs(vel) >= 10) & (np.abs(vel) < 80) mask_high = np.abs(vel) >= 80 # 高速段 n_per_seg = min(mask_low.sum(), mask_mid.sum(), mask_high.sum()) idx = np.concatenate([ np.random.choice(np.where(mask_low)[0], n_per_seg, replace=False), np.random.choice(np.where(mask_mid)[0], n_per_seg, replace=False), np.random.choice(np.where(mask_high)[0], n_per_seg, replace=False) ]) np.random.shuffle(idx) X_balance = X[idx] y_balance = y[idx]分层采样的核心是让损失函数不再被高速段绑架。低速段样本数少,所以抽取时要把它们整个保留,再对高速段做随机抽样削减。如果低速段原始样本实在稀缺,就用插值生成虚拟样本,但插值后的速度序列要保持平滑,不能人为制造高频台阶。训练完成后,要单独拉出低速段验证集看补偿后的误差抖动是否被抑制,不看整体 RMSE,才能看出补偿是否真的对爬行段生效。
3.3 LSTM 与预测控制:带长管的时序迟滞回路怎么补
气动伺服带长管或大容积腔室时,阀口的压力波需要上百毫秒才能建立,位置响应相对阀指令有明显滞后。逆模型前馈网络在这种回路上表现不好,因为它把当前状态映射到当前阀电压,时序错位突破不了。常见做法是引入 LSTM 神经网络,让网络把最近 N 步的轨迹误差和阀指令作为序列输入,输出未来一步的预测误差补偿量。这正是预测控制算法里的预测模型角色:网络负责预测动态,滚动优化部分仍用传统方法完成。
import torch import torch.nn as nn class GasLSTMCompensator(nn.Module): def __init__(self, input_dim=4, hidden=32, num_layers=1): super().__init__() self.lstm = nn.LSTM(input_dim, hidden, num_layers, batch_first=True) self.fc = nn.Linear(hidden, 1) def forward(self, x): # x: [batch, horizon, input_dim] out, _ = self.lstm(x) return self.fc(out[:, -1, :]) # 构建序列样本:最近 10 步的(位置误差, 阀指令, 两腔压差, 速度)预测下一步误差 horizon = 10 # 采样率 1kHz 下对应 10ms 历史窗口 X_seq = np.lib.stride_tricks.sliding_window_view(feat_all, horizon, axis=0) y_seq = pos_err_next[:X_seq.shape[0]]horizon 的取值决定 LSTM 看到多长时间的历史。气动回路滞后大时取 20 到 30 步,滞后小时取 8 到 15 步。取太大,网络会引入相位超前,补偿动作提前于真正的误差产生,反而激励系统;取太小,时序信息不够,LSTM 退化成普通前馈网络。我调参的经验是离线做一次滞后扫描:把 horizon 从 5 到 40 画一条验证误差曲线,取误差最低点的值,再往小退 15% 留出鲁棒余量。
LSTM 在气动回路上的训练收敛比前馈网络慢,遗忘门会吃掉部分梯度信号。学习率建议从 5e-4 起步,梯度裁剪设到 1.0,序列数据按工况分段来切,不让一个 batch 跨两个完全不同的运动模式,否则网络在模式切换附近会学到平均化映射。
3.4 选型对照表与三组不推荐的网络结构
做气动伺服运动分析时,网络结构不是越多越好。下表的选型参考,我在多个气动位置回路里反复验证过。
| 场景 | 推荐结构 | 输入特征 | 输出 | 关键参数 |
|---|---|---|---|---|
| 静态逆模型前馈 | 前馈全连接 3 层 | 期望位置、速度、加速度 | 阀电压 | hidden 64, lr 1e-3 |
| 摩擦补偿 | BP 全连接 3 层 | 速度、两腔压差、位置 | 补偿电压 | hidden 32, 分层采样 |
| 长管迟滞补偿 | LSTM 1 层 | 误差、阀指令、压差、速度 | 误差预测 | horizon 10~30, hidden 32 |
| 气源压力波动抑制 | 前馈 4 层带压特征 | 位置、速度、压差、供气压力 | 阀电压修正 | hidden 64~128, lr 5e-4 |
三组不推荐的场景也说明一下。卷积神经网络不用在气动运动分析主回路上,除非把压力波形做成频谱图做故障分类,它的平移不变性优势在时域轨迹上发挥不出来;图神经网络在这个任务里没有明确的拓扑关系可以建模,纯属过度设计;Transformers 在几千条样本级别的小数据集上训练不稳定,推理延迟也远超伺服周期。选型原则还是看样本量和时序性:样本量在几千条级别,用前馈或 BP;回路有明显时序记忆,用 LSTM;需要在线自适应时加一个轻量的在线更新层,而不是把整个网络推倒重训。
4. 把运动分析跑起来:离线仿真、闭环平台与误差评估代码
4.1 离线仿真验证优先:为什么别一上来就接实物闭环
神经网络控制算法上气动闭环,最大的风险不在算法不收敛,而在网络输出与实物响应之间的时延把系统逼成振荡。我一般会先离线验证:把训练好的网络当作前馈控制器,在仿真环境里输入同一段期望轨迹,算出阀指令序列,用采集到的真实数据或半物理模型预测位置响应,然后比较预测轨迹和实测轨迹的误差。这一步不连接实物,时间戳对齐问题都能在离线暴露。
离线仿真里的被控对象模型不要用理想积分环节,要加入气压延迟和阀饱和。阀指令超出比例阀实际范围的部分要截断并计数。截断次数是一个重要的健康指标:如果网络频繁输出超过阀范围的指令,说明训练数据里没有覆盖到这种工况,或者逆模型学到了不合理的增益。截断次数在在线运行时也要记录,一旦超过阈值就自动降低前馈增益,避免破坏性振荡。
4.2 最小闭环验证平台:气路、传感器和实时控制器的连接
离线仿真通过后搭建实物闭环。最小平台组成:比例方向阀一只、无杆气缸一只、磁致伸缩位移传感器一支、压力传感器两路(两腔各一路)、实时控制器一台。供气压力常见范围 0.4MPa 至 0.6MPa,比例阀控制电压标准是 0 到 10V,位移传感器输出模拟量或数字量。
控制循环以 500Hz 到 1kHz 运行,每个周期做四件事:读取位移和压力、计算控制量、限幅输出阀电压、记录状态到环形缓冲区。关键一点是采集与指令的同步,AD 采集和 DA 更新必须由同一中断源驱动,否则指令和反馈之间出现不确定的时序抖动,速度曲线上会看到固定频率的波纹,这是任何运动分析指标都解释不了的虚假误差。
4.3 运动分析核心代码:误差分解、相位滞后和频谱评估
运动分析不能只画两条曲线就说“跟踪效果不错”,要输出量化指标。位置跟踪误差的均方根值、最大绝对值、系统偏差、相位滞后角度和对误差功率谱是五项基本输出。
import numpy as np from scipy import signal def motion_report(t, pos_ref, pos_fb, fs, scan_freq, v_cut=1.5): err = pos_ref - pos_fb vel = np.gradient(pos_fb, t) mask = np.abs(vel) > v_cut # 只看运动段,静止段的误差无意义 e = err[mask] rmse = np.sqrt(np.mean(e ** 2)) peak = np.max(np.abs(e)) bias = np.mean(e) pref = pos_ref - pos_ref.mean() pfb = pos_fb - pos_fb.mean() corr = signal.correlate(pref, pfb, mode='full') lag = np.argmax(corr) - (len(pref) - 1) phase_deg = lag / fs * 360.0 * scan_freq # scan_freq 为扫描正弦频率 f, pxx = signal.welch(e, fs=fs, nperseg=1024) return {'rmse_mm': rmse, 'peak_mm': peak, 'bias_mm': bias, 'phase_deg': phase_deg, 'spec': (f, pxx)}这套指标里相位滞后最容易被忽视。误差的 RMSE 可能因为平均而显得好看,但如果相位滞后大,说明系统在整体延迟,高速运动的工艺场景里这个滞后会产生批量超差。误差功率谱的观察重点:某个频点能量特别高,通常是 50Hz 电气噪声或 200Hz 到 400Hz 的气路共振,前者靠屏蔽线改善,后者要查气管长度和阀的安装刚度。v_cut 取值 1 到 2mm/s,低于这个阈值时气动缸处于静止或爬行段,误差没有运动学意义,进统计会拉低 RMSE 的参考价值。
4.4 参数标定顺序:阀死区、气源压力与零漂的前置修正
把训练好的网络接到实物前,有三级标定必须做,顺序不能反。第一级是阀死区标定:对比例阀施加从 0 开始缓慢上升的电压,记录位移开始可见变化时的电压门限,通常在 0.2V 到 0.5V 之间。这个死区要设成查表修正,网络前馈输出的所有电压指令先减死区偏移再输出,不然网络输出 0.3V 的小补偿量时阀根本没有动作,训练出的期望效果全被死区吞掉。
第二级是气源压力标定:把供气压力纳入状态特征或做前馈修正。气罐压力在压缩机启停阈值之间波动,同一阀电压在不同供气压力下产生的推力不同。如果不在控制里修正,运动分析的重复性会变差,同一个轨迹上午能跟上、下午误差翻倍。最简单做法是把供气压力作为一个扩展输入送到网络里,让网络学出压力到推力的映射;如果不想动网络结构,就在前馈输出上乘以当前压力与标称压力的比值。
第三级是传感器零漂标定:位移传感器和压力传感器都要在每次实验前记录零位,在线运行时实时扣除。零漂会让网络训练集的标签整体偏移,模型学到的映射带一个隐藏偏差。实测中,连续运行两小时后压力传感器零漂可达到满量程的 1% 到 2%,对高精度运动分析已经不可忽视。
5. 气动伺服运动分析的 6 个典型坑:相位滞后、零漂、过拟合与复现失败
5.1 相位滞后:补偿方向对但时序错位,误差反而变大
现象:离线仿真误差很小,接上闭环后跟踪误差没减小反而变大,速度曲线看起来整段右移。原因:网络输出的是当前时刻的阀电压,气动压力建立需要延迟,这个电压实际作用在几十毫秒之后的位置上。网络用“此刻的状态”预测“此刻的补偿”,在时序上等于超前作用,叠加上去就成了激励。解决:把网络输入序列整体前移 horizon 步,让 t 时刻的输入对应 t+horizon 时刻的目标;或改用 LSTM 让网络自动学习滞后关系。horizon 先用回路时间常数估算,再做一次 5 到 40 的离线网格扫描,取误差最低点。
5.2 零漂:网络一直在学瞬态,训练集越学越偏
现象:训练集误差单调上升或下降,验证误差和测试误差差异极大。原因:位移传感器零位漂移,实际零位与标定零位偏离了几个毫米,网络把漂移后的数据当成真实数据学,映射带上了隐藏偏置。解决:采数据前后各做一次零位测量,把漂移按时间线性插值补偿掉。更稳妥的做法是在网络里加一个零漂状态输入,让网络专门学出一条偏置项,在线运行时用静止段的平均误差实时估计这个偏置并反馈进网络输入。
5.3 过拟合:训练数据全是一种波形,换轨迹就翻车
现象:正弦扫频训练的模型,换三角波或阶跃轨迹时,在换向点明显过冲。原因:正弦轨迹的速度是余弦,加速度变化平缓,网络没有见过高速反向时的剧烈加速度变化,对摩擦突变的知识是空的。解决:训练集混合正弦、三角波、阶跃和梯形轨迹,阶跃换向样本的权重提高一倍。验证集也要按轨迹类型分层,只有一种波形的验证集无法暴露过拟合,必须保证每种轨迹在验证集中都有代表。
5.4 采样率不匹配:气压瞬态全被滤波抹平,网络学不到换向
现象:位置预测误差稳定,但两腔压差的预测结果和实测差异巨大。原因:压力通道经过了低频滤波或采样率不足,阀切换瞬间毫秒级的压力瞬态被抹平。气动系统的压力变化在阀切换时是毫秒级事件,采样低于 500Hz 基本丢失换向特征。解决:全通道统一到 1kHz 采样率,压力通道滤波截止频率放到 100Hz 以上,宁要一点电气噪声也不要丢掉真实瞬态。检查方法是看压力波形在阀切换点是不是有陡峭沿,没有陡沿就是被滤掉了。
5.5 复现失败:归一化参数没打包,模型换平台就废
现象:训练机器上验证很好,部署到工控机上误差骤增。原因:部署代码里重新计算了当前批次数据的 mean 和 std,和训练时的归一化统计量对不上,输入分布偏移后网络表现完全变质。解决:训练结束把各通道 mean、std、死区修正表、零漂系数、限幅阈值全部打包进一个 npz 文件,部署端强制从文件加载并打印校验码,绝不允许在部署端重新计算。再一个细节是部署前的数据通道顺序要和训练时完全一致,通道顺序错位会制造出难以察觉的错误映射。
5.6 输出不设限幅:换向瞬间指令冲顶,气缸直接撞端盖
现象:换向点附近突然出现大误差,网络输出饱和电压,气缸以高速冲向机械限位端盖。原因:误差微分在换向时刻很大,网络预测的补偿量外推到训练覆盖范围之外,出现不合理的巨大输出。解决:网络输出层用 tanh 激活并乘以上限值,让输出有一个天然边界。物理输出再做 soft 限幅:超过上限时按比例衰减而不是硬截断,避免临界点的阶跃扰动。限幅参数放进配置文件单独管理,现场调试时不用翻代码,改一个数值就能生效。
6. 硬件在环验证与运动精度评估:我压箱底的部署习惯
硬件在环(HIL)验证是把训练好的神经网络部署到实时控制器上,被控对象先用上一轮采集的实测数据模型或气动机理模型代替,做闭环虚拟验证,再切换到实物阀和气缸。我习惯先在 HIL 上跑三个用例:低频大行程扫描、高频小幅值抖动、阶跃切换。每个用例都输出前面那套指标,对比离线仿真结果,差异来源很快就能定位——是模型不准还是时序错位。
指标不要只看 RMSE。气动伺服的运动分析最终要看最大跟踪误差是否落在工艺容差内、相位滞后是否稳定、误差功率谱有没有异常尖峰。我还额外记录“截断次数”和“限幅触发次数”,这两项最能暴露控制器的真实余量。一次完整的部署,打包文件里要包含说明各种标定参数使用条件的文档,否则三个月后重新调参,谁都记不得零漂系数是哪个工况下标定的。
我的习惯是每调一次模型就导出一份完整报告,包含训练数据统计量、网络结构、损失曲线、验证指标和部署机签名哈希。这个文档在调试出问题时会省掉大量排查时间,相当于给控制算法做了一颗后悔药。气动伺服系统本身非线性强、部件磨损快,神经网络模型的价值恰恰在它可以用新数据持续微调,而不需要推倒重建。希望这些经验和习惯能帮你在实际回路上少走几轮弯路。
本文还有配套的精品资源,点击获取