PLC运动控制精准调参:实现伺服电机重复定位精度小于0.01毫米
0.01mm重复定位不是单靠把增益拉高,而是“机械分辨率够、回零一致、电子齿轮准、位置环/前馈/滤波协同”。丝杠导程10mm、编码器17位以上、总线1~4ms控制周期,半闭环可做到微米级重复;要求更严再加光栅全闭环。PLC侧用工艺对象封装轴,驱动器侧调刚性、前馈、陷波,分工调才不出怪病。
一、PLC使能、回零、绝对定位
S7-1200/1500建定位轴TO,PROFINET用标准/扩展报文,PTO则算脉冲当量。上电使能后必须先回零,再用MC_MoveAbsolute走固定点:
VAR Power:MC_Power; Home:MC_Home; Move:MC_MoveAbsolute; Read:MC_ReadActualPosition; END_VAR
Power(Axis:="Axis1", Enable:=TRUE);
IF Power.Status AND NOT Home.Done AND HomeTrig THEN
Home(Axis:="Axis1", Execute:=TRUE, Position:=0.0, Mode:=2); // 被动原点/DOG,主动回零可换Mode
END_IF;
IF Power.Status AND Home.Done AND MoveReq THEN
Move(Axis:="Axis1", Execute:=TRUE, Position:=100.000, Velocity:=80.0,
Acceleration:=400.0, Deceleration:=400.0, Jerk:=2000.0);
END_IF;
Read(Axis:="Axis1", ActualPosition=>#act);
回零分两段最利于一致性:高速找DOG、低速爬行进Z/原点边沿;垂直轴回零后保持使能、不松抱闸。 软限位设在硬限位内侧10~20mm,避免回零冲开关。
二、重复精度判定与补偿
不要看单次到位,跑固定点往返50次,取“目标−实际”最大绝对值:
IF Move.Done THEN
#err := ABS(#target - #act);
IF #err > 0.010 THEN #tuneAlarm := TRUE; END_IF; // 超0.01mm触发再调
#maxErr := MAX(#maxErr, #err);
END_IF;
丝杠全行程误差用驱动器/PLC螺距补偿表;分段线性偏差按位置写入偏移。若整行程系统性偏大约2%,先校正电子齿轮/脉冲当量:实测走10mm只走9.98mm,按“目标/实测”微调当量,不重新改机械。 反向回差大的轴,回零后正反向各空走2~3次再投自动,避免间隙导致首点偏。
三、驱动器调参顺序
PLC只发目标,真正“跟不跟得上”在驱动器三环:先机械锁紧、做惯量自整定,再速度环、位置环、前馈、陷波。
速度环刚性:响应太软跟随误差大,太硬啸叫;空载JOG无啸叫为初值,再按负载微升;
位置环增益:从小加到“到位快、轻微过冲”,再回撤10%~20%,重复定位最稳;
速度/加速度前馈:匀速、长行程、频繁启停必开,可显著降低跟随误差,前馈过大退出指令会冲击,按70%~90%试;
陷波滤波:某段速度啸叫、某位置共振,用驱动器共振扫描取频率,陷波宽度窄一些,不靠降增益掩盖;
加减速用S曲线/Jerk限制,急启急停会造成丝杠弹性回弹,0.01mm级必须抑振。
三菱脉冲方案同理:DDRVA发绝对脉冲,D区存目标mm÷脉冲当量,软限位比较目标脉冲,S曲线加减速避免过冲。
四、工程闭环要点
编码器:0.01mm以下优先绝对值+高分辨率,断电不丢零;增量系统每班回零一次;
通信:PROFINET/EtherCAT控制周期1~4ms,PTO注意最高频率与脉冲当量,高速小位移用总线更稳;
INP处理:收到定位完成先延时5~10ms再夹取/送料,垂直轴保持锁止;
Trace验证:抓目标位置、实际位置、跟随误差、扭矩,重复定位看“多循环最大偏差”而不是单点读数;
机械优先:联轴器、丝杠预压、导轨平行度没调好,调参数永远到不了0.01mm。
按“TO绝对坐标+两段回零+当量/螺距补偿+位置环小过冲+前馈减跟随+陷波抑共振”的闭环,单轴半闭环可稳定进入0.01mm重复区间;再严可接光栅全闭环,把丝杠温漂和反向间隙从软件层再削一层。





