多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

伺服压机控制实时性:采样周期、力闭环与工艺场景如何匹配

伺服压机控制实时性:采样周期、力闭环与工艺场景如何匹配 前几年我经常被客户问到一个看起来很直接的问题你们伺服压机控制系统的实时性要求是什么采样周期多少毫秒算够刚开始我还会脱口而出“1毫秒”后来发现这个回答坑了不少人。同样是伺服压机有的产线用5毫秒采样也压得很稳有的项目采样周期提到0.5毫秒还是做不出合格的力-位移曲线。问题不在系统快不快而在于你对“实时性”三个字的理解是哪种实时。剥开看伺服压机里的采样周期至少牵涉三层压力信号从传感器出来的ADC采样周期、控制器运动控制环路的刷新周期、以及上位机状态机拿数据的通讯周期这三层经常被混成一句话谁最慢谁才是真正的瓶颈。这篇文章把这些掰开揉碎按工艺场景给出建议值和实测方法希望你看完能直接套到自家设备上。1. 讨论实时性之前先看伺服压机到底在干什么1.1 压装工艺的“力-位移窗口”是实时性的最终裁判伺服压机也叫伺服压力机、伺服压装机核心动作就是伺服电机驱动丝杠或曲柄把压头按设定轨迹往下压。光看动作本身它和伺服电缸没什么区别真正的技术含量在压装过程中对力与位置关系的感知和处理。绝大多数伺服压机的质量判定不是看“压到某个位置”而是看“在什么位置产生了多大的力”。典型工艺是力-位移窗口判断压头走到某个位移点时压力必须落在规定的上下限区间曲线斜率、峰值力、终止位置也都可能是合格项。比如过盈联接的轴承压装压入力会在某个位移点突然上升这个“突跳”出现的位移位置和斜率大小直接决定装配是否合格。说了这么多是想引出第一层结论实时性的最终裁判是力-位移窗口的时间尺度而不是拍脑袋定的一个毫秒数。窗口越窄运行速度越快留给系统的采样机会就越少。举个例子压头速度100毫米每秒意味着每毫秒移动0.1毫米如果某一关键特征只存在于0.5毫米的位移区间里那么它能持续的时间只有5毫秒。采样周期10毫秒很可能一个有效点都采不到特征直接丢失。反过来慢速压装5毫米每秒时同样0.5毫米的窗口能持续100毫秒哪怕采样周期拉到20毫秒也能在窗口内采到好几个点。所以回答“多少毫秒算够”之前必须先算清楚自己工艺的特征时间尺度这个比任何规格书都权威。1.2 三种典型任务对时间的敏感度完全不同伺服压机的活大致能分成三类每一类对采样周期的敏感度差一个数量级。第一类是恒力保压压到位置或者压到力之后保持一段时间。这个场景对采样周期的要求很低因为系统处于稳态关注的是力的波动幅度。采样周期5到10毫秒完全够用真正影响波动的是压机的机械刚性和伺服驱动器的力闭环带宽不是采样够不够快的问题。第二类是装配型的位移驱动压装包括轴承压装、销钉压装、壳体压装等。压头按速度或位置模式运动压装过程中只测力、判断曲线是否合格。这一类敏感度取决于压装速度慢速产线20毫秒采样也可能很稳高速产线或者节拍快的转盘线2毫秒都不一定够。第三类是力闭环精密压装和动态成形比如精密齿轮压装、弹性体压缩、金属薄板成形等。系统需要在压装过程中实时根据力反馈调整位置或速度实现恒定力控制或复杂轨迹跟踪。这一类的采样周期实质上就是力闭环的控制周期1毫秒往往只是及格线很多设备已经做到250到500微秒。很多项目报需求时只写一句“实时性要高”完全不区分这三类最后要么选型过度多花钱要么选轻了达不到节拍。我建议你按工艺类型反过来推需求先确定自己的压装任务属于哪一类再往下看采样周期和总线选型。2. 采样周期从哪里来控制环路、总线周期与ADC采样别混为一谈2.1 控制器的内环外环位置环、速度环、力环各有各的脾气很多人以为采样周期就是控制器读数据的快慢其实伺服压机系统里有好几条并行运行的闭环环路周期各不相同。位置环和速度环通常在伺服驱动器内部完成刷新率动辄几千赫兹。市面主流伺服驱动器速度环刷新率在1到8千赫兹也就是0.125到1毫秒一个周期。这部分基本不用你操心选型时关注驱动器的速度环带宽是否满足压机动态响应即可。力环就复杂了。压力传感器输出信号经过ADC采样进入控制器控制器在每个采样周期计算一次力误差并输出目标扭矩或速度给驱动器。如果这个力闭环放在外部运动控制器里那么采样周期就是力环的控制周期如果放在驱动器内部采样周期则由驱动器的压力反馈接口决定。这里最常见的问题是项目指标里写“采样周期1毫秒”实际压力传感器信号走的是普通PLC的模拟量输入模块模块刷新周期5到10毫秒加上信号滤波和PLC程序扫描时间真实力环可能要到20到30毫秒才更新一次。这不是采样周期的问题是整个力闭环架构的问题。2.2 EtherCAT、脉冲、模拟量三种信号通路决定数据能不能按时到达控制系统读到的任何数据都要经过一条物理通道这个通道的延迟和刷新率直接决定“周期”能不能成立。EtherCAT是目前伺服压机领域最主流的方案支持分布式时钟同步各从站节点间的同步误差能控制在微秒级。常见周期有125微秒、250微秒、500微秒、1毫秒和2毫秒主站任务周期设多少压力采集模块和伺服驱动器就按这个周期同步刷新。如果你用这种方式采样周期写1毫秒是实打实的。脉冲方向控制是很多老压机的方案驱动器靠脉冲流接收位置指令压力反馈走模拟量输入。脉冲方式没有全局时钟同步压力采集和位置指令天然存在不确定性做慢速恒力保压可以做高速力-位移曲线判断就非常吃力。模拟量直接进PLC或采集卡是最常见的低成本方案同时也是最容易被低估的方案。PLC模拟量模块的刷新周期通常在毫秒到十几毫秒之间再叠加内置数字滤波实际延迟比采样周期还要大。这种架构下你别看系统变量里确实每隔固定时间更新一次力值但这已经是“滤波后的结果”而不是原始事件。还有一条路是走上位机TCP或串口这根本不适合作为闭环通道。串口一帧数据动辄几十毫秒TCP又受系统调度影响只适合做监控和参数下发。我见过有项目试图把力值通过网口每秒传200个点再算压装曲线结果曲线尾巴拖得又长又平判定结果忽好忽坏这就是通路没选对。2.3 ADC采样周期背后的玄机分辨率、滤波与有效带宽既然提到模拟量就必须单独讲一下ADC采样周期。这也是很多工程师容易卡住的地方。2.3.1 ADC采样周期不等于控制周期应变式压力传感器的输出是毫伏级差分电压需要仪表放大器和高分辨率ADC转换成数字量。工业上常见的24位Sigma-Delta型ADC比如ADS1256、CS5532之类原始过采样率非常高但内部数字滤波器会把数据率压下来以获得更高的有效分辨率和更低的噪声。很多人看到芯片手册写着“采样率30kSPS”就认为系统采样周期是30微秒。实际上Sigma-Delta ADC内部有SINC数字滤波器输出数据的建立时间是多少ADS1256在低数据率下有效分辨率极高但它的SINC滤波器阶数和抽取率是绑定在一起的要等到滤波器完全建立后才能拿到准确读数。如果你设置的数据率很高分辨率会下降数据率很低建立时间可能长达几毫秒甚至几十毫秒。这时候真正的有效采样周期不是“多少微秒一次转换”而是“滤波器对阶跃输入建立到位需要多少时间”。2.3.2 SINC滤波器与平均滤波会吃掉力信号的尖峰Sigma-Delta ADC的SINC滤波器本质上是低通特性数据率越低对高于奈奎斯特频率的力信号衰减越厉害。这对恒力保压没影响但对高速压装的力突变点影响非常大。压力信号从0跳到满量程如果ADC数据率和滤波器配置不当读出值可能被削成一个缓慢爬升的斜坡峰值和斜率全部失真。软件端同样会踩这个坑。工程师喜欢在采样值上再做移动平均比如取50个点平均。假设ADC原始采样率20千赫取50点平均后等效噪声滤掉了但平均窗口长度2.5毫秒信号延迟2.5毫秒。压力特征点原本在5毫秒内完成平均滤波后等于把特征点拖到7.5毫秒判定窗口稍微一窄就会超差。ADC采样周期这个热词背后真正要理解的是有效带宽和信号延迟。配置ADC时优先看“输出数据率滤波建立时间”这个组合而不是单纯追求最高采样率。除非你后续对信号做动态补偿否则高采样率配合低数据率输出反而会让系统看起来“很慢”。3. 多少毫秒算够按工艺场景分级再也别信“越短越好”这种话3.1 常规压装5毫秒完全够用瓶颈根本不在采样周期先说最大众化的场景电机端盖压装、轴承压装、衬套压装、销钉压装。压装速度通常在5到20毫米每秒压入力从几百公斤到几吨质量判定窗口怎么也有1到2毫米换算成时间就是50毫秒以上。这个场景下2到5毫秒的采样周期已经非常充裕。真正决定压装质量的反而是机械结构比如压头导轨间隙、传感器安装刚性、设备基础振动。我调过一台压机采样周期从5毫秒改到0.5毫秒力波形毛刺反而变多报警率不降反升。后来发现是压机自身振动通过传感器安装座串进来了把采样周期调慢一点加个滤波反而更干净。所以常规压装里如果你正在纠结“要不要把采样周期从5毫秒改成2毫秒”我建议先确认信号链路里有没有低通滤波有没有做屏蔽接地再去折腾采样周期。3.2 精密力控压装1毫秒是及格线趋势判断比单点精度更要紧到了精密电子、医疗器械、精密齿轮这类领域压入力窗口可能只有几公斤力压入位移窗口可能只有几十微米而且还要判断曲线斜率、有没有卡滞、有没有压裂。这类设备往往需要力闭环控制采样周期建议做到1毫秒以内。注意这里比“采样周期”更关键的是“力控刷新周期”因为控制律的积分项、微分项都依赖固定周期的力值更新周期抖动会直接体现在压力波动上。此外精密压装非常依赖趋势信息。只用单点力值判断合格样品稍有污染或润滑差异就会误判。更好的做法是每1毫秒采样一点同时对数据做轻量的滑动窗口斜率计算识别力-位移曲线在局部窗口内的变化方向。这个趋势判断至少需要窗口内有5到10个点因此有效采样周期反而从“1毫秒能采到数据”退化成“需要连续多个周期数据都稳定”。如果系统采样周期有严重抖动斜率计算结果就会跳动报警逻辑就没法做。3.3 高速冲压、动态成形这些极端场景125到500微秒才是能用的如果压装速度超过100毫米每秒或者工艺是冲压成形、动态顶出那么力特征点可能只有1到2毫秒的生命周期。这时候采样周期必须压到500微秒以内部分高速冲压机甚至用125到250微秒。这种场景对系统架构的要求是整体性的EtherCAT同步周期得短压力采集模块要支持高速数据流输出控制器的力控任务要跑在最高优先级上位机绝不能插手闭环。市面上能做到250微秒力闭环的伺服压机控制器通常是把力控直接做在运动控制器里压力信号通过EtherCAT端子或内部高速背板同步进入不走普通模拟量输入。顺带提醒一句采样周期做到125微秒不代表压装判定就用这些原始点而是给控制算法留出充分的判断空间。真正对外输出的曲线特征点常常还会经过重采样比如每5个原始点取一个代表点既能保留特征又不让历史数据文件爆炸。3.4 一张参考表场景、采样周期与典型配置下面这张表是我实际项目里反复验证的参考值可以当作方案初期的起点。工艺场景典型压装速度力特征时间尺度推荐采样周期推荐信号架构低速装配、恒力保压5-20毫米/秒50-200毫秒5-10毫秒PLC模拟量模块驱动器常规装配压装、窗口判定20-60毫米/秒10-50毫秒1-2毫秒EtherCAT端子运动控制器精密力控压装10-50毫米/秒10-50毫秒0.5-1毫秒EtherCAT同步力控任务高速压装、动态成形100-200毫米/秒1-5毫秒0.125-0.5毫秒高速EtherCAT外部高速采集表格只是个起点真正选多少还得结合你的曲线判定算法。如果算法需要做曲线二次微分采样周期还要再收紧一点否则求导噪声大得没法用。4. 实测方法怎么判断当前系统的采样周期是否吃得住产线4.1 用高速录波抓一条力-位置曲线的真实时间戳想知道系统实际采样周期是多少别只看控制器里配置的那个数要用录波工具抓带时间戳的真实数据。很多EtherCAT运动控制器自带Scope或录波功能打开后把压力信号、压头位置、控制指令三个变量同时记录下来每组数据都带毫秒或微秒级时间戳。抓完数据后第一件事不是看曲线而是统计相邻两个时间戳的差值。如果差值基本稳定在你设定的周期附近说明系统调度正常如果差值忽大忽小出现两倍甚至三倍周期的大间隔说明有更高优先级的任务抢占了CPU或者总线上有站掉线重连。我之前用一段简单的Python脚本处理录波日志效果很好import numpy as np import pandas as pd df pd.read_csv(force_curve_log.csv) ts df[timestamp_ms].to_numpy(dtypenp.float64) dt np.diff(ts) * 1000 # 转成微秒 print(平均周期: %.2f us % np.mean(dt)) print(最大周期: %.2f us % np.max(dt)) print(最小周期: %.2f us % np.min(dt)) print(周期3σ抖动: %.2f us % (np.std(dt) * 3)) # 找出所有超过设定周期1.5倍的间隔并打印位置 bad np.where(dt np.median(dt) * 1.5)[0] print(异常间隔数量: %d % len(bad))跑一遍基本就知道系统有没有丢周期。只统计平均值没有意义平均值好看但偶尔丢一两个周期对压装判定来说一样是致命的。4.2 检查控制器和固件的任务调度别被上位机HMI骗了如果录波数据里时间戳乱跳下一步就要区分是上位机问题还是控制器问题。上位机层面的坑最多。很多压机软件把曲线显示和工艺逻辑放在同一台Windows工控机上人机界面定时器一刷新CPU占用上去采样循环就被卡住。工控机跑WindowsTimer分辨率默认只有15.6毫秒别拿它做实时统计。如果工艺逻辑必须跑在上位机请改用工控机上安装的实时扩展或者把关键路径挪到独立运动控制器里。控制器层面的排查则要看任务配置。运动控制器里通常有多个周期任务比如IO刷新任务、运动任务、插补任务、通讯任务。确保负责力控和曲线采样的任务被分配了最高优先级并且该任务的CPU执行时间余量足够。用控制器软件查看各任务的循环时间和最长执行时间如果最坏执行时间接近任务周期说明CPU已经太满采样周期再短也撑不住。4.3 加示波器抓物理信号验证最坏情况下的抖动软件层面的时间戳可能受到日志缓存影响最可靠的办法是硬件实测。方法是把控制器里某个空闲的DO输出口在采样任务的开始和结束各翻转一次用示波器或逻辑分析仪同时捕捉这个DO信号和压力传感器的原始电压信号。这样一来示波器上能看到两条信号一条是方波表示“控制器任务运行间隔”另一条是模拟波形表示压力变化。测量方波的周期得到的就是控制器执行采样任务的真实周期对比方波高电平与模拟量骤变点之间的相对时间得到的就是信号从传感器进入控制器的总延迟。EtherCAT系统还可以直接读主站诊断里的周期偏差寄存器查看每个周期实际运行时间与理论周期的差值。抖动如果超过设定周期的10%就要认真处理了。把周期从1毫秒降到0.5毫秒时抖动上限会从100微秒压缩到50微秒这往往比采样本身更考验控制器的实时性能。5. 采样周期设错工期多惨三个真实案例复盘5.1 案例一压装曲线关键拐点采不到过盈判定反复误报某汽车零部件产线做衬套过盈压装压装速度不低节拍要求12秒一件其中有效压装时间只有2秒。客户最初把采样周期配置成10毫秒现场反馈压力曲线经常少一段过盈判定的峰值力时有时无。排查链路是这样的先怀疑压力传感器换了一个全新的故障依旧。又怀疑机械卡顿清了导轨重新打表还是没解决。最后我拿示波器直接抓传感器电压发现真实压力有一个明显拐点持续约30毫秒按10毫秒采样最多只能采到3个点而且这3个点落在拐点前后不同高度上峰值力自然忽高忽低。把采样周期调整到2毫秒同时给压力模块开了数字滤波但保留原始数据用于曲线判定问题才彻底消失。这个案例给我的教训是判断采样周期够不够一定先用示波器看真实信号持续时间再决定周期。5.2 案例二ADC SINC滤波把力信号“洗”平了超调报警乱响一套精密压装机用力闭环压装薄壁零件控制器配置了高精度采集模块为了获得更高分辨率把数据率调得很低同时启用了采集模块内部的SINC滤波。稳态时力很平稳但每次压入瞬间控制器都会报“压力超调”连续几次还可能触发急停。排查时先是怀疑控制参数超调把PID增益一路往低调超调不降反增曲线变得更肉。后来用独立采集卡同步对比发现控制器读到的力值总比外部采集卡慢半拍且峰顶被削平。问题正是出在采集模块的低数据率SINC滤波器上它对快速阶跃力进行了大量平滑控制器看到的“超调”其实是滤波后曲线变钝闭环为了追目标值持续加大输出等滤波器反映过来目标力早就冲过头。解决方法是把采集模块的数据率提高到几百千赫级别减少SINC抽取比关闭额外的移动平均改用在控制器任务里做轻量中值滤波。调整后真实超调幅度回归正常报警消失。这个案例说明采样周期的“快”必须配合信号通路的“真”滤波拉的延迟比采样率低还可怕。5.3 案例三EtherCAT周期1毫秒看着很美上位机攒了5毫秒才发指令某个多工位压装工作站用了EtherCAT方案控制周期1毫秒压力采样走独立高速端子理论上非常完美。实际运行中设备每隔几件就出现一次压装位置偏差但记录到的曲线又看不出压力异常。排查过程比较曲折。先看驱动器报警和事件日志没有异常再看EtherCAT从站诊断周期偏差也很小。最后我们给运动任务加了DO翻转信号示波器抓出来发现EtherCAT网络上的数据虽然是1毫秒刷新一次但运动指令的更新任务实际每4到5毫秒才执行一次。原因是上位机软件把多工位状态机、配方管理、数据上传全部塞进了控制器主循环主循环执行时间被拖到5毫秒运动任务只能排队等。解决办法是把状态机切成独立的低优先级任务让1毫秒周期任务只做运动和力控状态机在5到10毫秒任务里跑数据上传再降到几十毫秒。压装位置偏差随即消失。这个案例的关键在于系统实时性是一条链网络周期短不等于控制任务周期短中间任何一级排队都会让最终的实际周期变长排查时一定要把控制器任务配置表打开逐项看。6. 选型时怎么提实时性需求避免二轮开发6.1 需求书里别只写“实时性要高”要写清楚具体参数很多设备采购需求书里关于实时性的描述只有一句话控制系统需满足高实时性要求支持高速数据采集。这句话到选型阶段等于没说。我建议需求书至少把这几个数字写清楚压力信号ADC采样周期、力闭环刷新周期、位置/速度环刷新周期、EtherCAT同步周期、IO触发同步误差、事件记录时间戳分辨率。例如压力采样周期0.5毫秒24位ADC单通道有效分辨率不低于18位力闭环刷新周期1毫秒闭环内不经过上位机位置环/速度环由伺服驱动器内部实现刷新率不低于4千赫总线周期EtherCAT同步周期1毫秒从站同步偏差小于1微秒力曲线事件记录时间戳分辨率不高于0.1毫秒这样供应商拿到需求后可以直接对应到硬件选型上而不是再反问你“采样周期是什么意思”。6.2 控制器平台怎么选运动控制器、伺服驱动器内置力控还是PLC加驱动器当前做伺服压机实时控制主要有三条技术路线。第一条是独立运动控制器加EtherCAT伺服和压力模块适合高速和精密压装。控制器负责力闭环和曲线判定压力数据通过总线同步进入周期可做到0.5毫秒甚至更低。这种架构灵活算法可以自己写调试门槛也最高。第二条是利用伺服驱动器内置的压力闭环接口。很多高端伺服驱动器支持模拟量压力反馈或专用压力信号接口力环在驱动器内部跑1毫秒以内外部控制器只下发目标力或位置轨迹。架构稳定、响应快但曲线判定逻辑得在上位机或控制器里做压力原始数据的导出能力要看驱动器固件。第三条是PLC加普通伺服驱动器。适合低速保压和简单窗口判定压力进模拟量模块PLC周期扫描。成本低、维护方便但采样周期很难稳定低于5毫秒精密高速压装不要选这条路。选型时还有一个隐性成本要算清楚第一和第二条路线的控制系统开发周期通常比第三条长但调试和改工艺的时间短得多。高速产线一旦压装速度提到100毫米每秒以上PLC加驱动器的架构很可能直接干不了到时候要整体换控制器成本反而最高。6.3 我个人的几个习惯性设置和经验值项目做多了之后我形成了一套相对固定的初始配置在这里直接分享出来当参考。常规压装项目优先级最高的是稳定性和可维护性。配置1毫秒EtherCAT周期压力采集模块每毫秒同步刷新一次力控任务跑在控制器实时任务里曲线判定基于1毫秒原始点但对外输出重采样到5毫秒一个特征点。这样数据量小历史曲线稳定调试时也容易排查。精密力控项目会把采样周期压到0.5毫秒。压力信号进入控制器前不加额外数字滤波最多做3点中值滤波因为这种滤波器不引入相移适合特征点检测。控制输出的平滑放在PID被控量一侧而不是放在反馈桥上。高速压装项目有两个习惯一是在压力模块上开快速的原始数据流通道避免经过上位机缓存二是在控制任务里加一个粗同步标志当检测到力值快速上升时立刻打一个时间戳这个时间戳和位移插补值绑定用来反推精确的位置-力对应点能弥补采样周期带来的定位误差。最后分享一个每次验收必做的测试压装过程中在外部触发一个阶跃信号阶跃接在某一路空闲输入上控制任务同时记录输入时间戳并翻转一个DO口输出用示波器同时看这个输入、DO输出和压力波形统计从外部事件到系统产生响应的完整链路时间。这个端到端测试比看任何规格书都实在。规格书写采样周期1毫秒实际链路延迟可能只有0.3毫秒也可能是1.8毫秒只有测过你心里才有底。
返回列表