1. 项目背景与问题定位
去年在山西某煤矿的空压机房,我遇到了一个典型的工控改造难题。现场有台22kW的螺杆式空压机,原配的星三角启动柜被替换成某品牌变频器后,电机运行时发出刺耳的啸叫声。用Fluke 435电能质量分析仪检测发现,变频器输出端电压谐波畸变率高达15%(正常应<5%),导致电机铁芯振动异常。
这种情况在老旧设备变频改造中很常见——当变频器与电机阻抗特性不匹配时,PWM载波会引发严重的电磁谐振。更棘手的是,该矿区的电网电压波动范围达到±15%,变频器的直流母线电压经常触发欠压保护。在与生产部门协商后,我们决定暂时切换回工频运行,同时保留未来变频改造的可能性。
2. 硬件架构设计
2.1 核心器件选型
主控采用西门子S7-224XP PLC,这是因为它:
- 自带2路模拟量输入(AIW4/AIW6)和2路模拟量输出
- 14点数字量输入(I0.0-I0.7,I1.0-I1.5)和10点输出(Q0.0-Q0.7,Q1.0-Q1.1)
- 支持MODBUS RTU协议,便于与第三方设备通讯
HMI选用十显控7寸触摸屏,关键考虑因素包括:
- 内置Lua脚本引擎,可编写复杂逻辑校验
- 支持西门子PPI协议,无需额外驱动
- 报警历史记录容量达5000条
2.2 电气回路改造
原星三角启动柜被改造成双电源切换架构:
- 工频回路:QF1断路器→KM1主接触器→电机
- 变频回路:QF2断路器→变频器→KM2接触器→电机
- 互锁设计:KM1与KM2机械互锁+PLC程序互锁
特别要注意的是,在KM1接触器线圈回路中串联了Q0.0输出,同时在KM2回路串联Q0.1。这种设计确保即使PLC程序跑飞,也不会出现双电源同时接通的情况。
3. 控制程序解析
3.1 主程序框架
pascal复制// Network1 - 系统初始化
LD SM0.0 // 常ON触点
CALL SBR0 // IO映射子程序
CALL SBR1 // 故障检测子程序
CALL SBR2 // 模拟量滤波子程序
// Network2 - 主接触器控制
LDN M1.3 // 急停状态(0=正常)
A I0.5 // 压力开关信号(1=压力低)
AN M2.1 // 无过载故障(1=正常)
= Q0.0 // 主接触器输出
这段代码的精妙之处在于:
- 使用M寄存器做中间状态隔离(M1.3急停、M2.1过载)
- 所有物理信号(I点)都经过逻辑组合后才驱动输出
- 子程序调用结构化,便于后期维护
3.2 关键子程序实现
SBR2模拟量滤波算法:
pascal复制// 采样值存储区
MOVW AIW4, VW100 // 当前压力值存入VW100
// 环形缓冲区管理
MOVD &VB200, AC1 // 缓冲区首地址
+D 20, AC1 // 缓冲区长度
MOVD VD500, AC2 // 当前写入指针
MOVW VW100, *AC2 // 存入新数据
// 排序滤波实现
CALL SORT_BUFFER // 调用排序子程序
MOVW VW230, VW300 // 取中间10个值的平均
这个滤波算法实测可将压力波动控制在±0.15bar内,比传统的滑动平均滤波响应更快。关键在于:
- 建立20个样本的环形缓冲区
- 每次采样后对缓冲区数据排序
- 丢弃最高和最低各5个值,取中间10个平均值
4. HMI人机交互设计
4.1 报警管理系统
在十显控屏上实现了三级报警:
- 轻微报警(黄色):如滤芯堵塞提醒
- 一般故障(橙色):如电机过载预警
- 严重故障(红色):如压力超高紧急停机
报警触发逻辑示例:
lua复制function check_pressure()
local p = get_ai_value("AIW4")
if p > 10.5 then
trigger_alarm(301, "压力超高!", 3) -- 级别3=紧急停机
set_output("Q0.0", 0) -- 切断主接触器
end
end
4.2 工程师菜单实现
通过长按急停按钮5秒进入隐藏菜单:
lua复制local hold_time = 0
function on_emergency_pressed()
hold_time = os.time()
end
function on_emergency_released()
if os.time() - hold_time > 5 then
open_engineer_menu()
end
end
菜单中包含以下关键参数调整:
- 电机额定电流(可调范围±15%)
- PID参数自整定开关
- MODBUS通讯超时设置
5. 现场调试要点
5.1 信号干扰处理
遇到模拟量信号波动时,建议按以下步骤排查:
- 检查屏蔽层单端接地(控制柜端)
- 信号线与动力线间距>30cm
- 在AI模块输入端并联0.1μF电容
- 修改SMB30寄存器设置波特率容差:
pascal复制MOVB 16#09, SMB30 // 波特率9600,8N1
MOVB 16#04, SMB31 // 增加接收容忍度
5.2 接触器选型建议
根据实测经验:
- 主回路接触器选型应放大一档(22kW电机用32A接触器)
- 线圈电压必须与PLC输出类型匹配(本例用DC24V)
- 辅助触点建议用gold-plated型号,减少氧化故障
6. 系统扩展思路
当前架构可方便地升级为:
- 双机热备:增加一台224XP做冗余,通过SMB34定时同步数据
- 云监控:通过EM241模块接入GPRS网络
- 能效优化:增加电能表模块,实现用气量-耗电量关联分析
关键提示:在修改任何参数前,务必先记录原始值。曾遇到因修改SMB30后未重启PLC导致通讯死机的情况,后来发现需要先执行STOP→RUN操作才能生效。