基恩士PLC与松下伺服驱动器配合运动控制,自动下料组装机威纶通触摸屏程序集高效功能于一体的解决方案
基恩士系列PLC程序 基恩士KV-N60 PLC程序,搭配松下A5伺服驱动器,运动控制 自动下料组装机 PLC程序+威纶通触摸屏程序 优秀的触摸屏模板,产量功能,一键清料程序,多用户管理功能,多工位振动盘控制,等 梯形图+ST语言编写,注释齐全

三台KV-N60 PLC通过EtherCAT组成分布式控制系统,机械臂末端的压力传感器实时回传数据到03号从站PLC——这个画面至今还在我调试记事本里存着。当时接手这个自动下料项目时,客户特别强调伺服轴的抖动抑制问题,松下A5驱动器虽然支持17-bit编码器,但参数整定不当反而会让振动盘下料节奏乱套。

程序架构用了分层设计,底层轴控制用ST语言封装成功能块。比如这个伺服使能逻辑:
IF NOT Axis_Enable THEN
MC_Power(FALSE, Axis_1);
CurrentMode := Idle;
ELSE
MC_Power(TRUE, Axis_1);
IF MC_ReadStatus(Axis_1).PowerOn THEN
CASE CurrentMode OF
Homing: 执行回零流程;
Jog: 处理点动指令;
Auto: 调用自动运行函数;
END_CASE;
END_IF;
END_IF;
封装后的功能块通过梯形图调用,在急停触发时能立即切断所有轴使能信号。这里有个细节:松下伺服的ALM报警信号必须经过20ms滤波处理,否则设备振动容易产生误报警。

振动盘控制部分采用时间窗口算法,六个工位的振动频率通过Modbus TCP传给触摸屏。威纶通界面上的振动强度调节其实映射的是PLC里这个数组:
VIBRATION_SET[1].Power := 限幅(触摸屏设定值, 30, 100);
VIBRATION_SET[1].Duration := T#500ms + (触摸屏档位 * T#100ms);
产量统计功能玩了个小花招——用环形缓冲区存储每个小时的生产数据,断电保持区存着最近七天的记录。清除产量时不仅要复位数据寄存器,还要同步更新触摸屏的图表控件:
| [一键清零]
|----[SET D100 K0]
|----[MOV HMI_Chart1.DataSource D100]
|----[CALL HMI_Refresh]
权限管理模块比较有意思,不同等级的操作员能看到不同层级的菜单。在触摸屏用户登录事件里触发PLC的字符串比较指令,把用户组别转换成操作权限码。有次现场调试时发现权限漏洞,维修班组长账号居然能修改系统参数,后来查出来是字符串比较时没区分大小写导致的。

说到ST语言的应用,最过瘾的是写物料计数算法。用滑动窗口过滤误触发信号,结合伺服当前位置做二次校验:
IF 进料光电 AND (ABS(当前坐标 - 理论坐标) < 0.05mm) THEN
有效计数 := TRUE;
WINDOW_BUFFER[window_index] := 1;
ELSE
WINDOW_BUFFER[window_index] := 0;
END_IF;
window_index := (window_index + 1) MOD 8;
IF SUM(WINDOW_BUFFER) >= 6 THEN
实际计数 += 1;
END_IF;
这套逻辑把误检率从原来的3%压到了0.1%以下,就是调试时盯着那一堆数组索引差点看花眼。

现在看程序里的注释,还能找到当时留下的吐槽:"此处延时务必大于伺服制动时间,否则下一模产品会撞刀!——2023.5.12 凌晨三点"。这种带时间戳的注释在联机调试时特别有用,尤其是当三个品牌的设备出现时序冲突时,能快速定位问题根源。

项目最后阶段整了个彩蛋:在触摸屏维护界面连续点击版本号十次,会弹出隐藏的麻将小游戏。当然这功能没写在验收文档里,纯粹是给夜班操作员解闷用的。



更多推荐
所有评论(0)