FX5u控制4个伺服,一个完整的项目 程序用 标签分层,说明了定位控制中的公共参数设定、回原点、JOG手动、绝对定位、相对定位、控制等部分,威纶程序报警界面.多个机种选择,手动,自动,暂停,包括有: 1、plc程序一份 2、设备说明书一份 3、电路图一份 4.威纶屏程序一份 5.io表一份 6.电气清单一份

车间新到的四轴定位设备调试完成,趁着手还热乎,把项目里的干货整理出来。这套系统用FX5U-64MT控制四个MR-JE-20A伺服,威纶TK8071IP触摸屏做交互,咱们直接拆解程序架构。
全局参数设定
伺服参数配置是地基,先看这段全局标签配置:
structuredtext
//轴参数结构体
AxisPara[0].PLS_MODE = K4 //4倍频
AxisPara[0].INPOS_RANGE = 50 //到位判定范围
AxisPara[0].ACC_TIME = 300 //加速时间ms
AxisPara[0].DEC_TIME = 300 //减速时间ms
每个轴单独配置结构体参数,用FOR循环批量处理公共参数。这里有个坑要注意:电子齿轮比换算必须放在PLC首次扫描周期完成,否则上电时伺服的尖叫能把你送走。
原点回归的精髓
回原不是简单碰个开关就完事,这是调试时掉过坑的版本:
ladder
|-[DSZR K5000 X0 Y0]-[ZRN K3000 Y0]-[ZP.Y0]-|
| 原点搜索 | 爬行速度 | 完成标志
这里用了双保险策略------先高速搜索原点标记,碰到限位后自动切换低速爬行。调试时发现部分轴会过冲,后来在伺服参数里把GridMask灵敏度调高才解决。
手动模式的防呆设计
JOG操作看似简单,但安全联锁必须到位:
structuredtext
IF NOT bAutoMode AND NOT bAlarm THEN
JOG+ := X10 AND NOT X11
JOG- := X11 AND NOT X10
TON(T_JOGStop, 500) //持续5秒自动停止
END_IF
加了三个互锁条件:非自动模式、无报警状态、正反转互锁。调试时操作工反馈按钮卡顿时,发现是T_JOGStop定时器预设值太小导致频繁启停。
绝对定位的曲线控制
核心移动指令藏着玄机:
ladder
-[DDRVI K500000 Y0 Y10]-[M8029]-[MOVP K0 D10]
| | | |
| 目标脉冲 完成标志 速度模式切换
这里用脉冲+方向控制时,发现伺服偶尔会丢步。后来在威纶屏上加了个实时位置补偿按钮,用DHSFR指令做平滑滤波才稳定下来。
威纶屏的报警矩阵
报警界面用二维数组实现多语言切换:
ladder
报警代码 := D1000
报警信息 := "Err_" + Language + "_" + Str(D1000)
触摸屏里做了个滑动式报警历史记录,用FIFO指令存储最近20条报警。调试时发现中文乱码,原来是字体没选GB2312编码。

FX5u控制4个伺服,一个完整的项目 程序用 标签分层,说明了定位控制中的公共参数设定、回原点、JOG手动、绝对定位、相对定位、控制等部分,威纶程序报警界面.多个机种选择,手动,自动,暂停,包括有: 1、plc程序一份 2、设备说明书一份 3、电路图一份 4.威纶屏程序一份 5.io表一份 6.电气清单一份

项目交付时除了程序本体,这几个文档是甲方重点检查的:
- IO表里标注了每个传感器滤波时间
- 电气清单细化到线号管的颜色标准
- 电路图的伺服电源单独用黄色高亮
- 说明书里的紧急停止回路用红框强调
这套架构后来被复制到三个类似项目,最骚的操作是用了条件编译------通过修改全局变量中的机型代号,同一套程序能自动切换不同机构的参数配置。当然,这招要慎用,上次有个新人误改机型参数差点让气缸飞出来...
(源码和图纸已做脱敏处理,关键参数用变量代替)