1. 全自动N95口罩机的控制系统架构解析
在自动化生产线上,N95口罩机属于典型的高精度、高速度设备。整套系统采用汇川AM401/AM403系列PLC作为主控制器,配合汇川总线伺服系统和IT7070系列触摸屏构建完整的控制方案。这种架构设计充分考虑了口罩生产的特殊需求:
- 实时性要求:口罩生产过程中,各工位动作需要在毫秒级完成同步,总线通讯周期需控制在1ms以内
- 运动控制复杂度:包含12-16个伺服轴需要协同工作,涉及凸轮同步、电子齿轮等多轴控制算法
- 人机交互需求:操作人员需要实时监控产量、设备状态,并能快速调整工艺参数
主控程序采用CODESYS平台开发,全部使用ST(结构化文本)语言编写,总步数达到20000步规模。这种开发方式相比传统的梯形图编程具有明显优势:
- 代码结构更清晰,适合大型项目开发
- 便于实现复杂的数学运算和算法
- 支持面向对象的编程思想,可构建可重用的功能块
实际工程经验:在口罩机这类多轴协同设备中,建议将运动控制程序与逻辑控制程序分离编译,可以显著提高程序执行效率。我们通常将运动控制任务放在更高优先级的任务周期中执行。
2. 核心运动控制功能实现细节
2.1 凸轮同步控制的工程实现
口罩生产中的凸轮同步主要应用在以下工位:
- 鼻梁条送料与成型工位
- 口罩折叠工位
- 耳带焊接工位
以鼻梁条送料为例,其与主传送带的同步关系可通过以下代码实现:
st复制VAR
masterAxis: AXIS_REF; // 主编码器轴
slaveAxis: AXIS_REF; // 送料伺服轴
camProfile: CAM_PROFILE; // 凸轮曲线定义
END_VAR
// 凸轮曲线生成
CAM_GENERATE(
profile := camProfile,
mode := CAM_MODE_ABSOLUTE,
points := [
(0,0), (100,50), (200,100), (300,150),
(400,180), (500,200), (600,180), (700,150),
(800,100), (900,50), (1000,0)
]
);
// 凸轮耦合
MC_CamIn(
master := masterAxis,
slave := slaveAxis,
camProfile := camProfile,
masterOffset := 0,
slaveOffset := 0,
masterScaling := 1,
slaveScaling := 1,
startMode := MC_CAM_START_ABSOLUTE,
bufferMode := MC_BUFFER_MODE_ABORT
);
实际调试中发现几个关键点:
- 凸轮曲线的平滑度直接影响运动平稳性,建议采用5次多项式插值
- 主从轴的相位差需要根据机械实际安装位置精确校准
- 启停阶段建议添加加减速过渡,避免机械冲击
2.2 超声波焊接控制策略
N95口罩的焊接质量直接影响防护效果,程序中实现了多参数协同控制:
st复制VAR
weldTime: ARRAY[1..3] OF TIME := [T#100ms, T#150ms, T#200ms];
weldPower: ARRAY[1..3] OF REAL := [800.0, 1000.0, 1200.0];
pressure: ARRAY[1..3] OF REAL := [0.2, 0.3, 0.4];
currentStage: INT;
END_VAR
// 根据材料厚度自动选择焊接参数
IF materialThickness < 0.5 THEN
currentStage := 1;
ELSIF materialThickness < 1.0 THEN
currentStage := 2;
ELSE
currentStage := 3;
END_IF;
// 执行焊接
UltrasonicWelder(
time := weldTime[currentStage],
power := weldPower[currentStage],
pressure := pressure[currentStage],
preHeat := TRUE,
coolTime := T#50ms
);
焊接质量控制的经验:
- 增加预热阶段可改善焊接一致性
- 冷却时间设置不当会导致材料粘连
- 建议每4小时用张力测试仪校准一次焊接强度
3. 张力控制系统的设计与调试
3.1 放卷张力闭环控制
口罩机采用间接张力控制方案,通过 dancer臂位置反馈调节放卷速度:
st复制VAR
dancerPos: REAL; // dancer臂当前位置
dancerSetpoint: REAL := 50.0; // 设定位置
unwindSpeed: REAL; // 放卷速度
Kp: REAL := 0.5; // 比例系数
Ki: REAL := 0.01; // 积分系数
errorSum: REAL := 0; // 误差累积
END_VAR
// PID控制算法
dancerPos := ReadDancerPosition();
error := dancerSetpoint - dancerPos;
errorSum := errorSum + error;
// 防止积分饱和
IF errorSum > 100 THEN errorSum := 100;
ELSIF errorSum < -100 THEN errorSum := -100;
END_IF;
// 计算输出
unwindSpeed := Kp * error + Ki * errorSum;
// 速度限幅
IF unwindSpeed > 100 THEN unwindSpeed := 100;
ELSIF unwindSpeed < -100 THEN unwindSpeed := -100;
END_IF;
// 设置放卷速度
SetUnwindSpeed(unwindSpeed);
调试技巧:
- 先调P参数使系统快速响应,再调I参数消除静差
- dancer臂的机械阻尼系数影响系统稳定性
- 建议在触摸屏上添加PID参数自整定功能
3.2 收卷恒张力控制
收卷环节采用转矩模式控制,随着卷径变化自动调整转矩:
st复制VAR
currentDiameter: REAL; // 当前卷径
baseTorque: REAL := 5.0; // 基础转矩
tension: REAL := 2.0; // 目标张力
END_VAR
// 卷径计算(通过编码器脉冲计数)
currentDiameter := CalculateDiameter();
// 转矩计算 T = F*r
SetRewindTorque(baseTorque + tension * currentDiameter / 2);
4. 人机界面设计与生产管理
4.1 触摸屏界面架构设计
IT7070触摸屏程序采用模块化设计:
- 主界面:设备状态总览、产量显示、急停按钮
- 参数设置:分工艺参数、设备参数、用户管理三级菜单
- 报警历史:按时间排序,支持按类型筛选
- 维护界面:包含手动调试、I/O测试、保养计时等功能
产量统计功能的实现:
st复制VAR
dailyCount: DINT;
shiftCount: DINT;
totalCount: DINT;
lastResetTime: DT;
END_VAR
// 计数逻辑
IF productionSensor THEN
dailyCount := dailyCount + 1;
shiftCount := shiftCount + 1;
totalCount := totalCount + 1;
END_IF;
// 班次自动切换
IF CurrentTime() >= shiftChangeTime THEN
shiftCount := 0;
shiftChangeTime := shiftChangeTime + T#8H;
END_IF;
// 日产量清零
IF CurrentDate() <> Date(lastResetTime) THEN
dailyCount := 0;
lastResetTime := CurrentDateTime();
END_IF;
4.2 数据记录与分析
系统实现以下数据记录功能:
- 生产报表:按班次/日/月统计产量、合格率
- 设备OEE:记录运行率、性能率、合格率
- 工艺参数追溯:保存最近1000次焊接参数
- 报警统计:分析故障频率和分布
5. 系统调试与故障处理
5.1 常见机械问题及对策
-
材料跑偏
- 检查导辊平行度
- 调整纠偏传感器灵敏度
- 修改张力控制参数
-
焊接不牢固
- 清洁焊头表面
- 检查气压稳定性
- 重新校准焊接参数
-
折叠不对称
- 调整折叠机构同步相位
- 检查材料张力均匀性
- 优化凸轮曲线过渡段
5.2 电气故障排查流程
建立系统化的排查方法:
- 确认故障现象和发生条件
- 检查相关传感器信号状态
- 查看伺服驱动器报警代码
- 分析程序中的逻辑条件
- 检查机械执行机构状态
例如伺服电机过载报警的处理:
st复制IF servo[1].alarm THEN
CASE servo[1].alarmCode OF
730: // 过载报警
ResetAlarm(servo[1]);
CheckMechanicalLoad(servo[1]);
ReduceAcceleration(servo[1], 30);
810: // 编码器故障
CheckEncoderCable(servo[1]);
ReplaceEncoderIfNeeded(servo[1]);
END_CASE;
END_IF;
6. 程序优化技巧
6.1 运动控制优化
- 采用S型加减速曲线减少机械冲击
- 关键轴添加振动抑制滤波器
- 优化任务周期分配:
- 高速IO扫描:1ms
- 运动控制:2ms
- 逻辑控制:10ms
- HMI通信:100ms
6.2 代码结构优化
建立标准功能库:
- 轴控制功能块(包含JOG、回零、定位等)
- 气缸控制功能块(带超时检测)
- 报警管理功能块(分级报警)
- 工艺配方管理功能块
例如标准气缸控制块:
st复制FUNCTION_BLOCK CylinderControl
VAR_INPUT
advancePB: BOOL; // 前进按钮
retractPB: BOOL; // 后退按钮
advanceLS: BOOL; // 前进限位
retractLS: BOOL; // 后退限位
timeOut: TIME := T#5s; // 超时时间
END_VAR
VAR_OUTPUT
advanceOUT: BOOL; // 前进输出
retractOUT: BOOL; // 后退输出
alarm: BOOL; // 报警输出
END_VAR
VAR
advanceTimer: TON;
retractTimer: TON;
END_VAR
// 前进控制
IF advancePB AND NOT retractLS THEN
advanceOUT := TRUE;
retractOUT := FALSE;
advanceTimer(IN := NOT advanceLS, PT := timeOut);
ELSE
advanceOUT := FALSE;
END_IF;
// 后退控制
IF retractPB AND NOT advanceLS THEN
retractOUT := TRUE;
advanceOUT := FALSE;
retractTimer(IN := NOT retractLS, PT := timeOut);
ELSE
retractOUT := FALSE;
END_IF;
// 报警生成
alarm := advanceTimer.Q OR retractTimer.Q;
这套全自动N95口罩机控制系统经过多个项目验证,单机日产量可达8-10万只,设备综合效率(OEE)稳定在85%以上。在实际应用中,我们发现定期备份程序参数和机械参数可以大幅减少故障恢复时间,建议每周导出一次系统参数存档。
