1. 项目背景与核心价值
在工业自动化领域,螺丝锁附设备是最基础也最广泛应用的自动化单元之一。这个三菱FX5U PLC结合威纶通HMI的解决方案,实际上构建了一个完整的螺丝锁附控制系统。我接触过的电子制造产线中,超过60%的装配工序都依赖这类设备。
这套程序的价值在于:
- 采用ST(结构化文本)语言编写,相比梯形图更易于实现复杂逻辑
- 威纶通触摸屏作为行业主流HMI,提供了友好的人机交互界面
- 标准化的程序架构可以快速适配不同规格的螺丝锁附需求
- 详尽的注释降低了二次开发的技术门槛
2. 系统架构解析
2.1 硬件组成
典型配置包含:
- 三菱FX5U-32MT/ES PLC
- 晶体管输出型,适合驱动伺服/步进系统
- 内置以太网端口便于HMI通讯
- 威纶通MT8071iE触摸屏
- 7寸主流尺寸,IP65防护等级
- 支持与FX5U的MELSEC协议通讯
- 螺丝锁附机构
- 包含电批、送料系统、定位机构
- 通常配备压力传感器和到位检测
2.2 软件环境
- PLC编程:GX Works3(必须V1.050L以上版本)
- HMI开发:威纶通EasyBuilder Pro
- 通讯协议:MELSEC-Q/L系列以太网协议
3. ST语言程序深度解析
3.1 程序结构设计
采用模块化编程思想,主要包含以下功能块:
st复制// 主程序框架示例
PROGRAM MAIN
VAR
bAutoRun : BOOL; // 自动运行标志
iStep : INT; // 工序步骤
END_VAR
// 初始化处理
IF FirstScan THEN
Init_Device(); // 设备初始化
iStep := 0;
END_IF
// 主流程控制
CASE iStep OF
0: // 待机状态
IF bAutoRun THEN iStep := 10; END_IF
10: // 螺丝吸取
IF Screw_Suction() THEN iStep := 20; END_IF
// ...后续步骤省略
END_CASE
3.2 关键算法实现
- 螺丝计数逻辑:
st复制// 螺丝计数功能块
FUNCTION_BLOCK FB_ScrewCounter
VAR_INPUT
bTrigger : BOOL; // 检测信号
END_VAR
VAR_OUTPUT
iTotalCount : INT; // 总计数
iNGCount : INT; // 不良计数
END_VAR
VAR
bLastState : BOOL;
END_VAR
IF bTrigger AND NOT bLastState THEN
iTotalCount := iTotalCount + 1;
// 通过压力传感器判断是否锁附到位
IF NOT bPressureOK THEN
iNGCount := iNGCount + 1;
END_IF
END_IF
bLastState := bTrigger;
- 伺服控制算法:
st复制// 伺服点位运动控制
METHOD MoveToPosition : BOOL
VAR_INPUT
fTargetPos : REAL; // 目标位置(mm)
fSpeed : REAL; // 运动速度(mm/s)
END_VAR
VAR
stServoPara : ST_ServoParameter;
END_VAR
// 设置运动参数
stServoPara.fAccel := 0.3; // 加速度(m/s²)
stServoPara.fDecel := 0.4; // 减速度(m/s²)
stServoPara.fScurve := 50; // S曲线比例%
// 执行运动指令
MC_MoveAbsolute(
Axis:=Axis1,
Position:=fTargetPos,
Velocity:=fSpeed,
BufferMode:=MC_BUFFERED,
Options:=stServoPara
);
// 等待到位信号
MoveToPosition := MC_ReadStatus(Axis1).bInPosition;
4. 威纶通HMI开发要点
4.1 通讯配置关键参数
| 参数项 | 设置值 | 说明 |
|---|---|---|
| 接口类型 | Ethernet | FX5U内置以太网端口 |
| PLC类型 | MELSEC-Q/L | FX5U兼容此协议 |
| IP地址 | 192.168.3.10 | PLC默认IP |
| 端口号 | 5002 | MELSEC协议默认端口 |
| 通讯超时 | 3000ms | 建议值 |
4.2 标准画面元素设计
-
主控画面:
- 设备状态指示灯矩阵
- 产量统计数字显示
- 急停/复位按钮组
-
参数设置画面:
- 螺丝规格选择下拉框
- 扭力设定数值输入框
- 运动速度百分比调节
-
报警历史画面:
- 滚动报警信息表格
- 按时间排序的报警记录
- 报警确认功能按钮
5. 标准化模板应用
5.1 PLC程序模板结构
code复制├── MAIN.prg // 主程序
├── GLOBAL_VAR.var // 全局变量声明
├── ALARM_HANDLER.fun // 报警处理
├── CYCLE_COUNT.fb // 循环计数功能块
├── SCREW_CONTROL.fb // 螺丝控制逻辑
└── SERVO_CTRL.fb // 伺服运动控制
5.2 HMI模板元件库
- 标准按钮组(带状态指示)
- 参数输入面板(带数值限制)
- 趋势图显示框架
- 报警弹出窗口模板
6. 调试与优化实战
6.1 常见调试问题
-
螺丝漏锁检测:
- 在电批下降末端增加0.5s延时检测
- 通过电流检测辅助判断(正常锁附电流曲线有特征峰值)
-
伺服定位抖动:
st复制// 优化后的伺服参数 stServoPara.fGainKp := 35.0; // 比例增益 stServoPara.fGainKi := 0.5; // 积分增益 stServoPara.fGainKd := 12.0; // 微分增益
6.2 性能优化技巧
-
扫描周期优化:
- 将运动控制指令放在固定周期中断任务中执行
- 非实时性逻辑放在主程序循环
-
HMI响应优化:
- 将频繁更新的数据地址设置为"触发式读取"
- 复杂画面使用"延迟加载"技术
7. 安全防护设计
7.1 硬件安全回路
code复制急停按钮 → 安全继电器 → PLC安全输入
↓
切断动力电源
7.2 软件保护措施
-
操作权限分级:
st复制CASE iUserLevel OF 0: // 操作员级 bParamEdit := FALSE; 1: // 工程师级 bParamEdit := TRUE; 2: // 管理员级 bParamEdit := TRUE; bMaintenance := TRUE; END_CASE -
关键参数写保护:
st复制IF NOT bWriteEnable THEN rTargetTorque := rTorqueBackup; END_IF
8. 项目移植指南
8.1 硬件适配调整
-
I/O映射修改:
st复制// 修改前(示例) bScrewSensor := X0; // 修改后 bScrewSensor := X3; // 根据实际接线修改 -
伺服参数校准:
- 需要重新测量机械传动比
- 根据实际负载调整增益参数
8.2 工艺参数配置
典型螺丝锁附参数表:
| 参数名称 | 取值范围 | 单位 | 备注 |
|---|---|---|---|
| 锁附扭力 | 0.5-5.0 | N·m | 根据螺丝规格调整 |
| 下压速度 | 50-200 | mm/s | 避免撞击工件 |
| 锁附深度 | ±0.1 | mm | 相对工件表面 |
| 等待时间 | 100-500 | ms | 确保螺丝到位 |
这套程序模板经过多个实际项目验证,在消费电子组装线上实现了98%以上的锁附良品率。特别需要注意的是不同螺丝规格对应的扭力曲线需要单独校准,建议保存多组参数配方以便快速切换。
