去年在给某包装设备厂商做自动化升级时,遇到个有意思的需求——要在触摸屏上实现五角星轨迹的视觉引导定位。客户要求这个五角星不仅要能动态调整大小,还要能根据产品位置实时偏移。作为工控老鸟,我第一反应就是用三菱QD75定位模块的直线插补功能来实现,没想到实际操作中踩了不少坑。
QD75系列作为三菱FX/Q系列PLC的专用定位模块,在半导体设备、激光切割等领域应用广泛。其最大支持4轴联动,自带直线/圆弧插补功能,理论上画个五角星应该不难。但真正动手时才发现,从数学建模到参数配置处处是细节,特别是如何处理五角星的五个顶点坐标转换,以及如何优化插补运动的加减速曲线。
标准的正五角星可以看作是由五个外顶点和五个内顶点交替连接而成。假设外接圆半径为R,内接圆半径为r,则顶点坐标可通过三角函数计算:
其中k=0,1,2,3,4。内接圆半径r与外接圆半径R的关系为r=R*cos(π/5)/cos(π/10)。
实际项目中我采用R=100mm作为基准尺寸,通过比例系数实现动态缩放。这里要注意QD75的脉冲当量设置——如果伺服电机每转对应10000脉冲,丝杠导程10mm,那么1mm移动量=1000脉冲。
由于设备实际坐标系可能与数学坐标系存在方向差异,需要做以下转换:
在PLC中通过建立转换矩阵实现:
code复制X' = a*X + b*Y + c
Y' = d*X + e*Y + f
参数a~f根据现场标定结果确定。我专门写了个FB块来处理这个转换,避免每次都在定位指令中重复计算。
使用QD75P4模块时需注意:
五角星轨迹需要用到直线插补(IP)指令:
structured复制// 三菱PLC程序示例
MOV K100 D0 // 设置半径R
MOV K0 D100 // 初始化顶点索引
LOOP:
CMP K5 D100 // 判断是否完成5个顶点
= M0
CALL P_GEN_POINT // 生成当前顶点坐标
MOV D10 D200 // X坐标
MOV D11 D201 // Y坐标
DRVI D200 D201 K500 K300 // 直线插补运动
INC D100 // 顶点索引+1
JMP LOOP
关键点:每次插补运动前要确认前段运动已完成(M代码或完成标志检测),否则会出现轨迹断裂。
现象:五角星转角处出现明显停顿或圆角
解决方法:
现象:调整半径后五角星形状扭曲
排查步骤:
优化方案:
典型错误:
structured复制// 应用偏移量前先转换到基准坐标系
MOV K0 D300 // 清零偏移
ADD D20 D300 // X偏移
ADD D21 D301 // Y偏移
CALL P_COORD_TRANSFORM
优化技巧:
通过以下措施将重复定位精度控制在±0.02mm:
经过测试对比不同参数组合:
| 参数组合 | 周期时间(s) | 振动情况 |
|---|---|---|
| 默认参数 | 8.2 | 明显 |
| S曲线+降增益 | 7.5 | 轻微 |
| 前馈控制 | 6.8 | 无 |
最终采用前馈控制方案(参数#2015=1),同时将预测步数设为3(参数#2016)。
通过以下结构实现运行时参数修改:
structured复制// HMI写入新参数
MOV HMI_R D50 // 新半径值
MOV HMI_X D60 // X偏移
MOV HMI_Y D61 // Y偏移
// 运动过程中检测参数变化
LD<> D50 D500 // 半径变化检测
OR<> D60 D600 // X偏移检测
OR<> D61 D601 // Y偏移检测
OUT M100
// 参数更新子程序
IF M100 THEN
CALL P_UPDATE_PARAM
RST M100
END_IF
这套方案经过调整可应用于:
特别是在需要频繁更换图案的场景下,只需修改坐标生成算法即可快速适配。比如将五角星顶点坐标改为从CSV文件读取,就能实现任意多边形轨迹。
最后分享一个调试小技巧:用QD75的轨迹记录功能(#25到#28特殊寄存器)可以导出实际运动曲线,与理论值对比时非常直观。我通常先用Excel生成理想轨迹图,再叠加实际数据快速定位问题点。