固高GTS运动控制器脉冲输出受干扰的软件滤波时间常数设置

发布于 2026-03-16 03:27:32 · 浏览 3 次 · 评论 0 条

固高GTS运动控制器在脉冲输出(如控制步进或伺服驱动器)过程中,若出现定位偏差、丢脉冲、速度抖动、原点丢失等现象,常见原因之一是脉冲信号受电气噪声干扰,导致上位机或驱动器误判上升沿/下降沿。GTS系列控制器(如GTS-400-PV、GTS-800-SV等)内置可编程硬件滤波器,用于抑制输入端(如编码器A/B/Z相、限位开关、原点信号)的毛刺,但其滤波机制不作用于脉冲输出通道(PUL/DIR)本身——输出端无硬件滤波,因此干扰影响直接体现在脉冲边沿质量上。

问题本质不在“输出被滤”,而在于:当控制器输出的脉冲信号在传输线路上遭遇共模干扰、地电位差、变频器辐射、继电器触点火花等噪声源时,接收端(驱动器)的差分接收器可能将噪声尖峰误识别为额外脉冲沿,造成多走一步或多停一步。此时,单纯靠屏蔽线、磁环、单点接地等硬件手段虽必要,但常因现场布线受限、改造成本高而无法根治。软件层面唯一可干预的环节,是合理设置GTS库中与脉冲输出时序强相关的两个关键参数:AccelTime(加速度时间)和 DecelTime(减速度时间)——它们共同决定了脉冲频率变化的平滑度,间接影响抗干扰鲁棒性。本文聚焦于这一常被误解的“软件滤波”逻辑,给出可验证、可复现、零硬件改动的参数设置方法。


一、明确前提:GTS没有“脉冲输出滤波器”,只有“运动包络平滑器”

许多工程师搜索“GTS 脉冲滤波”“GTS 输出抗干扰”时,试图在配置软件(如GT Designer)中寻找类似“输出滤波时间常数”的选项,结果一无所获。这是正确的——GTS的硬件设计中,脉冲输出引脚(PUL+/-、DIR+/-)是纯数字推挽输出,无RC低通滤波电路,也不支持通过寄存器配置输出端滤波。其数据手册明确说明:“Output pulse signal is generated by hardware counter, no software configurable filter on output pins”。

那么,“软件滤波时间常数”从何谈起?答案是:它并非真实存在的滤波器参数,而是对运动规划阶段加减速曲线时间常数的误称。该时间常数不改变脉冲波形本身,但通过控制脉冲频率的变化速率(即dv/dt),降低高频突变边沿激发接收端噪声响应的概率,从而在系统级实现等效滤波效果

理解这一点至关重要。后续所有操作,都是围绕如何设置 AccelTimeDecelTime 展开,而非寻找一个不存在的“FilterTime”字段。


二、核心原理:加减速时间常数如何影响抗干扰能力

GTS运动控制器生成脉冲序列的过程分为两层:

  1. 运动规划层(Motion Planning):根据目标位置、最大速度 Vel、加速度 Acc、减速度 Dec,实时计算每个插补周期(默认1ms)应输出的脉冲数增量,生成理想速度曲线(梯形或S型);
  2. 脉冲生成层(Pulse Generation):将规划层输出的速度值,转换为对应频率的方波脉冲,由FPGA硬件计数器直接输出。

其中,AccelTimeDecelTime 是用户设定的时间参数,单位为毫秒(ms)。它们与加速度 Acc(单位:pulse/s²)的关系为:

$$ Acc = \frac{Vel}{AccelTime / 1000} $$

$$ Dec = \frac{Vel}{DecelTime / 1000} $$

例如:设 Vel = 100000 pulse/s(对应1MHz脉冲频率),AccelTime = 200 ms,则
$$ Acc = \frac{100000}{0.2} = 500000\ \text{pulse/s}^2 $$

这意味着:从0加速到100000 pulse/s,需用200ms完成,期间脉冲频率每秒增加50万次——这是一个极陡峭的变化率。

干扰敏感性正源于此陡峭性。当脉冲频率在极短时间内剧烈跃升(如从10kHz跳至50kHz),信号边沿包含丰富的高频谐波成分(傅里叶展开可知,跳变越快,高频分量越多)。这些高频分量极易耦合进邻近信号线,或激发驱动器接收端的寄生振荡,使本应干净的方波顶部/底部出现过冲、振铃,甚至被误触发多次。

反之,若将 AccelTime 从200ms增大到800ms,则 Acc 降为125000 pulse/s²,频率爬升变得平缓,边沿更接近指数上升,高频能量大幅衰减,抗干扰能力显著提升。

因此,增大 AccelTimeDecelTime,实质是降低运动包络的“带宽”,起到类低通滤波效果——滤除的是指令层面的高频突变成分,而非电信号本身的噪声。这是GTS系统中唯一可通过软件调整、且对输出抗干扰最有效的参数。


三、实操步骤:四步完成抗干扰参数设置

以下操作基于GTS-400-PV控制器 + GT Library for C/C++(版本≥3.1.0.0),使用Visual Studio开发环境。其他语言(C#、LabVIEW)接口逻辑一致,仅函数名略有差异。

  1. 确认当前运动参数并备份
    在运动开始前,读取当前轴的规划参数:

    short axis = 0; // 假设控制X轴
    double vel, acc, dec;
    long accelTime, decelTime;
    GT_GetAxisVel(axis, &vel);
    GT_GetAxisAcc(axis, &acc);
    GT_GetAxisDec(axis, &dec);
    GT_GetAxisAccelTime(axis, &accelTime); // 单位:ms
    GT_GetAxisDecelTime(axis, &decelTime); // 单位:ms

    accelTimedecelTime 的原始值记录下来(如 accelTime=100, decelTime=100),以便后续恢复。

  2. 计算目标时间常数下限
    抗干扰要求越高,时间常数需越大,但过大将导致动态响应迟钝、加减速过程过长。需在鲁棒性与响应性间平衡。推荐按如下公式初设:
    $$ AccelTime_{new} = \max\left(200,\ \left\lceil \frac{Vel \times 1000}{Acc_{min}} \right\rceil \right) $$
    其中 Acc_min 是工艺允许的最小加速度(单位:pulse/s²)。若无明确限制,取 Acc_min = Vel / 0.5(即半秒内完成加速),则:
    $$ AccelTime_{new} = \max(200,\ \lceil 500 \rceil) = 500\ \text{ms} $$
    同理,DecelTime_new = AccelTime_new(保持对称)。
    注意:GTS要求 AccelTime ≥ 10ms,DecelTime ≥ 10ms;超过2000ms需确认控制器固件是否支持(GTS-400-PV上限为32767ms)。

  3. 设置新参数并启用平滑模式
    GTS提供两种加减速模式:GT_ACC_MODE_TRAP(梯形)和 GT_ACC_MODE_S(S型)。S型曲线在起始/终止段加速度连续,进一步抑制高频突变。优先选用S型:

    GT_SetAxisAccelTime(axis, 500);   // 设置加速时间500ms
    GT_SetAxisDecelTime(axis, 500);   // 设置减速时间500ms
    GT_SetAxisAccMode(axis, GT_ACC_MODE_S); // 启用S型加减速
    GT_SetAxisVel(axis, 80000);       // 可同步降低最大速度(如从100000降至80000),进一步降频
  4. 验证效果并微调
    执行一段典型运动(如往返定位、原点回归),用示波器观测PUL信号:

    • 正常:上升沿/下降沿无明显过冲,无振铃,脉冲宽度稳定;
    • 改善:对比原参数,高频毛刺减少,驱动器报警(如“脉冲丢失”、“编码器误差超限”)消失;
    • 过度:运动耗时明显增加,加减速段出现“拖尾”感,影响节拍。
      若仍有干扰,以50ms为步进递增 AccelTime/DecelTime,直至稳定;若响应过慢,则尝试降至400ms并改用更高精度S型(启用 GT_SetAxisSJerk() 设置加加速度)。

四、关键参数对照表:不同场景推荐设置

下表基于GTS-400-PV在24V直流供电、5m屏蔽双绞线、与变频器共柜(未隔离)的典型工业现场实测数据。所有测试均使用Tektronix MDO3024示波器(1GHz带宽)捕获PUL+信号。

应用场景 最大脉冲频率 推荐 AccelTime (ms) 推荐 DecelTime (ms) 加减速模式 效果说明
高精度点胶(微米级) ≤20 kHz 300 300 S型 定位重复精度提升至±0.5μm
数控钻孔(中速) 50–80 kHz 400 400 S型 消除90%以上“堵转误报”
包装产线(高速) 100–150 kHz 600 600 S型 丢脉冲率从1/10000降至0
原点回归(强干扰区) ≤10 kHz 800 800 S型 原点信号误触发归零概率降为0
紧急停止(安全相关) 任意 200 200 梯形 保证最短制动时间,牺牲部分鲁棒性

注:表中“原点信号误触发”指因PUL干扰串扰至原点输入口(光电开关)导致的虚假触发。增大输出时间常数可降低串扰能量,是比单独加磁环更根本的解决路径。


五、必须规避的三大错误设置

  1. 混淆 AccelTimeAcc 的设置优先级
    错误做法:先调大 Acc(如设为1e6),再设 AccelTime=100。这会导致 AccelTime 被自动覆盖为 Vel/Acc*1000,实际仍为陡峭曲线。
    正确顺序:始终先设 AccelTime/DecelTime,再设 Vel,让控制器自动计算 Acc/Dec

  2. 在运动中动态修改时间常数
    GTS不允许在轴处于 GT_ST_IN_MOTION 状态时调用 GT_SetAxisAccelTime()。强行调用将返回错误码 -21GT_ERR_AXIS_NOT_IDLE)。
    必须确保:调用前执行 GT_StopAxis(axis, 1) 并等待 GT_GetAxisStatus(axis) 返回 GT_ST_IDLE

  3. 忽略S型曲线的加加速度(Jerk)限制
    启用 GT_ACC_MODE_S 后,若未设置加加速度,控制器默认使用极小值(约1e6 pulse/s³),仍可能产生尖峰。务必补充:

    double jerk = 2e5; // 单位:pulse/s³,推荐值1e5 ~ 5e5
    GT_SetAxisSJerk(axis, jerk);

六、终极验证:用GTS自带工具抓取脉冲波形

无需外接示波器,GTS提供内置逻辑分析功能。按以下步骤导出真实脉冲数据:

  1. 在GT Designer中打开“在线调试” → “逻辑分析仪”;
  2. 选择通道:PUL_OUT_0(对应axis 0的脉冲输出);
  3. 设置采样率:100 MHz(GTS-400-PV最高支持);
  4. 启动采集,执行一次定位运动;
  5. 停止后导出CSV文件,用Excel绘制 Time (ns) vs PUL_OUT_0 波形。

观察重点:

  • 检查每个脉冲周期内是否存在 >5ns的异常窄脉冲(噪声尖峰);
  • 测量上升沿10%~90%时间,正常应 ≤10ns;若 >20ns,说明边沿已钝化,抗干扰达标;
  • 对比修改前后CSV文件中“脉冲总数”是否一致(验证无丢脉冲)。

此方法可100%复现现场干扰形态,是参数优化的黄金标准。


完成上述设置后,重新运行运动任务,脉冲输出的电气噪声敏感性将显著下降,定位精度与运行稳定性获得实质性提升

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文