基恩士系列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 凌晨三点"。这种带时间戳的注释在联机调试时特别有用,尤其是当三个品牌的设备出现时序冲突时,能快速定位问题根源。

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

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐