当前位置:首页 > 工业控制 > 工业控制
[导读]CODESYS SoftMotion 是中小型多轴设备(3–5 轴点胶、雕铣、SCARA、Delta)的主流方案——NC 通道 + SMC_Interpolator 插补 + SMC_Controller 位置环,挂到 CODESYS Control Runtime(Windows/Linux RT)上跑。插补参数没调好,拐角处过冲、小线段抖动;实时性没验,高速小线段下 Axis 跟丢、轨迹锯齿。下面以 4 轴点胶机(X/Y/Z + 点胶阀,总线伺服用 EtherCAT,IPO 4 ms)为主线。

CODESYS SoftMotion 是中小型多轴设备(3–5 轴点胶、雕铣、SCARA、Delta)的主流方案——NC 通道 + SMC_Interpolator 插补 + SMC_Controller 位置环,挂到 CODESYS Control Runtime(Windows/Linux RT)上跑。插补参数没调好,拐角处过冲、小线段抖动;实时性没验,高速小线段下 Axis 跟丢、轨迹锯齿。下面以 4 轴点胶机(X/Y/Z + 点胶阀,总线伺服用 EtherCAT,IPO 4 ms)为主线。

一、插补参数三件套:V / A / Jerk + LookAhead

SMC_Interpolator 的核心可调参数在 SMC_INTERPOLATOR_PAR 结构体里,决定了"给定轨迹"的光滑程度:

VAR

   interpPar : SMC_INTERPOLATOR_PAR;

END_VAR

interpPar.uiVersion := SMC_INTERPOLATOR_PAR_VERSION;

interpPar.fVelMax  := 200.0;   (* X/Y 平面最大合成速度 200 mm/s *)

interpPar.fAccMax  := 800.0;   (* 最大加速度 *)

interpPar.fJerkMax := 4000.0;  (* 加加速度,拐角平滑度关键 *)

interpPar.nLookAhead := 200;   (* 前瞻段数,小线段密集处要 150+ *)

interpPar.fCornerDist := 0.5;  (* 拐角半径 <0.5mm 仍减速,防过冲 *)

SMC_Interpolator(

   pIntr := ADR(interpolator),

   pPar := ADR(interpPar),

   bEn := TRUE

);

三个调参经验:

• Jerk(加加速度):Jerk 越小拐角越"软",但加减速拖得长、效率降;Jerk 大拐角锐利但电机抖。点胶机 200 mm/s 下 Jerk=3000–5000 mm/s³ 是甜点,雕铣要高 Jerk(8000+)保效率,但伺服调教要好

• LookAhead(前瞻):G 代码小线段(每段 2–5 mm)密集时,LookAhead < 50 会让每段都"刹-加",速度起不来;点胶/雕铣给 150–300 段,Runtime 能吃的就给够

• CornerDist:拐角小于此值仍按"拐角速度"走(不是停,是降速过拐),防过冲。点胶 0.3–0.8 mm,雕铣 0.1–0.3 mm(精度优先)

二、位置环与控制周期

插补周期是 IPO(4 ms),但伺服本身位置环周期更短(EtherCAT DC 通常 1 ms 或 250 μs),CODESYS 侧位置给定更新率 = IPO 周期,伺服内再做细分。SMC_Controller(或你挂 PID 在 Task)的周期要 ≤ IPO:

(* 运动任务,挂到 4ms Task 上 *)

MotionTask: SMC_Controller;

MotionTask(

   Axis := g_axisX,

   fSetPos := interpolator.fX,   (* 插补给的 X 给定 *)

   fActPos := g_axisX.fActPos,

   fVelMax := 200.0,

   fKp := 80.0, fKi := 0.5, fKd := 2.0,

   Cycle := T#4ms

);

⚠ 4 轴 + 前瞻 200 段时,IPO 4 ms 在 Cortex-A7(RK3568 跑 CODESYS RT)上 CPU 单核约 35%;如果换 IPO 2 ms,单核能到 65%——实时性要留余量,别把周期压到极限。

三、实时性校验:Trace + 抖动看三样

CODESYS 自带 Trace(在线跟踪),是验实时性最好用的工具,不用额外示波器:

1. Axis.fActPos vs Axis.fSetPos:抓跟随误差 e = fSetPos - fActPos,匀速段 e < 0.02 mm(丝杠 5 mm/rev、编码器 20 bit 下),拐角处 e 尖峰 < 0.08 mm

2. IPO 任务周期抖动:Trace 里抓 Task.TimeLast)的 min/max/mean,4 ms 任务抖动应 < ±200 μs(Linux RT 打了 PREEMPT_RT 补丁+isolcpus 的情况下)

3. EtherCAT 帧抖动:抓 SMC_EtherCAT.FrameDelay,DC 同步下帧间抖动 < 100 ns,超 500 ns 说明 CPU 抢占了 EtherCAT 主栈

(* Trace 触发条件:拐角过冲检测 *)

IF ABS(g_axisX.fSetPos - g_axisX.fActPos) > 0.1 THEN

   Trace_Trigger(TRUE);

END_IF

Linux RT 侧的配套(以 RK3568 为例):

• 内核开 PREEMPT_RT,cat /proc/cmdline 看 isolcpus=3(把 CODESYS Runtime 绑核 3)

• CODESYS Control RTE 的 .cfg 里 CpuAffinity=0x08(对应核 3)

• 关 CPU 调频:echo performance > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor

四、三个翻车高发点

• LookAhead 给 50、G 代码每段 2 mm:速度永远起不来,4 轴点胶机标称 200 mm/s 实测 60 mm/s,因为每段都在刹-加。LookAhead 按"总路径长度 / 平均段长 × 1.5"估,200 段是底线

• Jerk 太大 + 伺服刚性不够:雕铣拐角处 Axis 抖,Trace 里 e 尖峰 0.15 mm,工件拐角有"锯齿"。Jerk 减半 + 伺服 Kp 降 20% 能消,但效率掉——要平衡

• IPO 4 ms 但 EtherCAT DC 1 ms 不同步:插补给定 4 ms 一刷、伺服 1 ms 一算,没问题,但 DC 的 ShiftTime 要设成 IPO 周期的 1/4(1 ms),否则 DC 同步漂移 → 跟随时而跳

高速小线段(如 3D 打印、激光雕)要换 SMC_Interpolator.HighSpeed=ON + LookAhead 500+,并把 IPO 压到 2 ms(RK3588 / i5 这种能扛),否则 100 mm/s 以上拐角会"切圆变多边形"。

CODESYS 多轴插补的真谛:V/A/Jerk + LookAhead 三件套按"拐角平滑 vs 效率"平衡、IPO 周期 4 ms 起步(高速 2 ms)、Trace 抓跟随误差 + 任务抖动 + EtherCAT DC 三样验实时、Linux RT 要 PREEMPT_RT + isolcpus + 关调频。这套走完 4 轴点胶 200 mm/s、拐角 0.5 mm 不溢胶、Trace 跟误差 < 0.02 mm 匀速 / < 0.08 mm 拐角,雕铣 300 mm/s + 小线段也能跑。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在基于CODESYS Runtime的软PLC(如倍福CX、WAGO、汇川AM600、自家移植Runtime)项目中,开发流程与三菱/西门子硬PLC有明显差异——更强调设备描述(EDS/XML)、任务配置与IEC 611...

关键字: CODESYS PLC

德国赫优讯智能网络控制器netX的控制技术于近日完成产品升级,目前针对CoDeSys运行时与开发系统升级至V3.5版本。通过此次升级,用户可以在标准CoDeSys环境下组态现场总线网络,而不再需要使用赫优讯额外的插件SY...

关键字: CODESYS NET PLC技术 ETX
关闭