去年在东莞调试的那套全自动N95口罩机产线,让我对汇川AM400系列PLC的控制能力有了全新认识。这套系统采用AM401和AM403双PLC架构,搭配汇川总线伺服和IT7070系列触摸屏,实现了从原材料放卷到成品包装的全流程自动化控制。整个程序规模近20000步,全部采用结构化文本(ST)编写,包含凸轮同步、超声波焊接、张力控制等核心工艺模块。
这套系统的特别之处在于其模块化设计理念。就像搭积木一样,我们将各个功能单元封装成独立的函数块(FB),包括:
口罩机最核心的耳带焊接工序采用凸轮同步控制技术。主从轴相位关系通过CAM表精确控制,确保耳带与口罩本体的完美贴合。我们采用正弦曲线作为基础运动轨迹,通过以下参数配置实现平滑运动:
st复制PROGRAM CamProfileConfig
VAR
stCamTable: ARRAY[0..359] OF LREAL; //1度一个数据点
i: INT;
END_VAR
FOR i:=0 TO 359 BY 1 DO
stCamTable[i] := 50 * SIN(2 * 3.14159 * i / 360); //振幅50mm的正弦曲线
END_FOR;
CamSetMasterCycle(axisX, 360);
CamAttachTable(axisY, ADR(stCamTable));
实际调试中发现几个关键点:
重要提示:凸轮曲线生成后务必进行离线仿真,验证位移、速度、加速度曲线是否连续,避免机械冲击。
超声波焊接质量直接影响口罩的气密性。我们开发了专用的压力-时间PID控制算法:
st复制FUNCTION_BLOCK WeldingPID
VAR_INPUT
actualPressure: REAL;
setPoint: REAL;
END_VAR
VAR_OUTPUT
pwmDuty: REAL;
END_VAR
VAR
kp := 0.8, ki := 0.05, kd := 0.1: REAL;
integral, prevError: REAL;
END_VAR
IF weldingActive THEN
error := setPoint - actualPressure;
integral := integral + error * dt;
derivative := (error - prevError) / dt;
pwmDuty := kp*error + ki*integral + kd*derivative;
prevError := error;
END_IF;
调试经验分享:
材料放卷过程中,随着卷径变化需要动态调整转矩输出。我们采用平方反比补偿算法:
st复制torqueComp := (initialRadius^2 / currentRadius^2) * baseTorque;
IF torqueComp < minTorque THEN
torqueComp := minTorque;
ELSIF torqueComp > maxTorque THEN
torqueComp := maxTorque;
END_IF;
ServoSetTorque(axisUnwind, torqueComp);
实际应用技巧:
封边工艺要求焊耳轴严格跟随主运动轴,我们采用电子齿轮+位置偏移的复合控制模式:
st复制// 随动控制逻辑
followerPosition := masterPosition * gearRatio + offset;
ServoMoveAbsolute(axisFollower, followerPosition);
关键参数设置:
汇川IT7070触摸屏作为人机交互核心,我们设计了以下功能模块:
产量统计功能实现代码:
st复制//日产量计算
IF newDayFlag THEN
dailyCount := 0;
newDayFlag := FALSE;
END_IF
dailyCount := totalCount - lastDayCount;
hourlyRate := (totalCount - lastHourCount) * 60 / 1000; //千件/小时
完善的报警系统包含:
气缸报警处理逻辑:
st复制IF cylinderTimeout THEN
alarmCode := 100 + cylinderID;
alarmMsg := CONCAT('气缸', INT_TO_STRING(cylinderID), '动作超时');
SetAlarm(alarmCode, alarmMsg);
END_IF;
整个程序采用分层架构设计:
轴控制功能块示例:
st复制METHOD HomeSequence : BOOL
VAR
state: INT;
END_VAR
CASE state OF
0:
ServoEnable(axis1, TRUE);
state := 1;
1:
IF ServoMoveUntilLimit(axis1, 500) THEN
state := 2;
END_IF;
2:
ServoSetPosition(axis1, 0);
state := 3;
3:
currentMode := HOMED;
RETURN TRUE;
END_CASE;
对于封边检测等高速信号,我们采用专用IO中断处理:
st复制PROGRAM HighSpeedIO
VAR
edgeCounter: ULINT;
END_VAR
IF RISING_EDGE(photoSensor) THEN
edgeCounter := edgeCounter + 1;
IF edgeCounter MOD 2 = 0 THEN
sealQuality := ANALOG_IN_READ(ch1);
END_IF;
END_IF;
性能优化建议:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 耳带焊接不牢 | 压力不足/时间太短 | 调整PID参数,延长焊接时间 |
| 材料张力不稳 | 卷径计算错误 | 重新校准初始卷径 |
| 同步位置偏差 | 相位偏移未补偿 | 调整凸轮曲线相位 |
| 伺服报警 | 增益设置不当 | 重新进行伺服调试 |
这套系统经过三个月的生产验证,设备综合效率(OEE)达到92%,远超行业平均水平。最让我自豪的是,当疫情紧张时期,这套设备连续运转30天无故障,为防疫物资供应提供了可靠保障。