高效稳定的六轴机械手程序:信捷XD5和威纶触摸屏编写,成熟可靠且具有借鉴价值高,附带详尽注释
这玩意儿已经在十几台设备上跑了大半年没出过幺蛾子,程序注释写得比小说还详细,适合拿来当模板用。这里用到了信捷特有的ZRN指令,D200存回归速度,X0是原点传感器,Y0对应脉冲输出口。通信部分有个坑得注意,威纶屏的数值元件默认是16位整数,处理32位数据时要勾选"32-bit Data"选项。之前有次位置数据溢出,机械手直接来了段街舞,吓得操作工差点按急停。此程序已经实际设备上批量应用,程序成熟可
六轴机械手程序 用信捷XD5和威纶触摸屏编写。 此程序已经实际设备上批量应用,程序成熟可靠,借鉴价值高,程序有注释。
最近在车间摸鱼的时候翻到一个挺有意思的六轴机械手项目,用的是信捷XD5 PLC配威纶TK8071iQ触摸屏。这玩意儿已经在十几台设备上跑了大半年没出过幺蛾子,程序注释写得比小说还详细,适合拿来当模板用。

先说说硬件架构。六个伺服轴全挂在XD5本体脉冲输出口,Y0-Y5分别对应1-6轴,原点信号接在X0-X5。威纶屏通过COM2口和PLC做数据交互,关键参数都做了掉电保持,设备重启也不用重新设置。
原点回归程序写得有点讲究,看这段代码:
//轴1原点回归
RST M0 //复位运行标志
MOV K3 D200 //回归速度300mm/s
ZRN D200 X0 Y0 //执行原点回归
WAIT M8029 //等待完成信号
MOV K0 D50 //到位后偏移量清零
这里用到了信捷特有的ZRN指令,D200存回归速度,X0是原点传感器,Y0对应脉冲输出口。注意最后那个D50清零操作,之前调试的时候有遇到过累计误差问题,加上这个偏移量补偿才搞定。

运动控制部分用了批量示教点位,触摸屏上存了30组预设坐标:
MOV U0 D100 //读取HMI选择的点位编号
* D100 K6 D200 //计算数据偏移量(每个点位6个轴数据)
MOV D200 D0 //传输到D0-D5寄存器
DRV D0 D1 D2 D3 D4 D5 //六轴联动执行
这里用到了变址寄存器批量搬运数据,*指令做乘法偏移贼方便。之前试过用FOR循环搬运,结果执行时间多了20ms,流水线上直接翻车...
六轴机械手程序 用信捷XD5和威纶触摸屏编写。 此程序已经实际设备上批量应用,程序成熟可靠,借鉴价值高,程序有注释。

触摸屏这边做了个挺骚的操作,用宏指令实现防呆:
macro_command main()
//检查坐标是否超限
if (GetData(a1_pos, "XD5", D100, 1) > 3000) then
SetData(1, "Local HMI", LB0, 1)
PlaySound("error.wav")
endif
end macro
这个实时坐标监控功能救了老命了,新员工乱输参数也不会撞机。注意用PlaySound要提前把音频文件塞进触摸屏的存储器,文件名别带中文。
通信部分有个坑得注意,威纶屏的数值元件默认是16位整数,处理32位数据时要勾选"32-bit Data"选项。之前有次位置数据溢出,机械手直接来了段街舞,吓得操作工差点按急停。

调试时最实用的还是这个状态监控程序:
MOV K4 D500 //心跳间隔4秒
DHTIMER D500 M100 //定时器触发
MOV M100 D501 //心跳信号
MOV Y0 D502 //脉冲输出状态
MOV M8029 D503 //完成标志位
这几个寄存器接到触摸屏的指示灯元件,设备卡在哪个步骤一目了然。有次夜班维修,靠这个五分钟就定位到是4号轴驱动器过热报警。
程序里还藏了个彩蛋,在HMI连续点击版本号五次会弹出高级参数设置界面。别问我怎么知道的,厂家工程师喝大了自己说的...(其实注释里写着呢,但没几个人看完三万行注释)

更多推荐

所有评论(0)