1. 项目概述:当S7-1200遇上立体车库
去年接手某商业综合体立体车库项目时,甲方甩过来一句"要能用手机预约取车"。作为主控的西门子S7-1200 PLC在调试现场遭遇了各种突发状况——从升降台定位漂移到触摸屏按钮"鬼畜"跳动,这让我深刻体会到工业自动化项目里"理论可行"和"实际稳定"之间隔着多少坑。今天要说的这个二层三列升降横移式车库,就是典型的机电一体化"硬骨头"。
这种车库结构看似简单:底层三个车位可横向移动,上层车位需要升降+横移配合存取车。但实际调试时会遇到:
- 升降电机与横移电机的动作时序冲突
- 车辆位置检测光电开关的误触发
- 触摸屏操作指令与PLC程序周期不同步
- 紧急停止后的复位逻辑混乱
2. 硬件配置与信号规划
2.1 核心设备选型清单
| 设备类型 | 型号规格 | 数量 | 备注 |
|---|---|---|---|
| PLC主控 | S7-1214C DC/DC/DC | 1 | 14点输入/10点输出 |
| 触摸屏 | 威纶通MT8071iE | 1 | 7寸高清屏,支持以太网通讯 |
| 升降电机 | 1.5kW伺服电机+减速器 | 2 | 带绝对值编码器反馈 |
| 横移电机 | 0.75kW变频电机 | 3 | 配变频器控制 |
| 光电传感器 | E3Z-D62光电开关 | 12 | 检测车位状态及极限位置 |
| 安全装置 | 急停按钮+光幕 | 4 | 各出入口设置 |
2.2 I/O分配实战技巧
在博途(TIA Portal)里做硬件组态时,建议采用"功能分区法"分配地址:
pascal复制// 输入信号示例
I0.0-I0.3 // 1层车位1-3光电检测
I0.4-I0.6 // 2层车位1-3光电检测
I0.7 // 升降台上限位
I1.0 // 升降台下限位
I1.1-I1.3 // 横移台左/中/右限位
// 输出信号示例
Q0.0 // 升降电机正转
Q0.1 // 升降电机反转
Q0.2-Q0.4 // 1-3号横移电机动作
关键经验:保留10%-15%的I/O余量,现场调试时新增的传感器往往比预期多。曾经有个项目因为没留备用点,最后不得不加装扩展模块。
3. 控制程序架构设计
3.1 运动控制状态机
采用状态编程法(STL)实现升降横移协同控制:
stl复制NETWORK 1 // 状态转移判断
LD "当前状态"
L 1
==I
JCNB STATE_2
...
NETWORK 2 // 升降动作控制
STATE_1: CALL "升降台上升"
L "上限位信号"
NOT
S "状态完成标志"
STATE_2: CALL "横移台左移"
L "左限位信号"
NOT
S "状态完成标志"
3.2 安全联锁逻辑
在OB35循环中断组织块中实现安全检测:
scss复制IF "急停触发" OR "光幕遮挡" THEN
"所有电机使能" := FALSE;
"报警代码" := 16#8001;
SET_ALARM;
END_IF;
4. 触摸屏人机交互开发
4.1 威纶通屏幕关键页面
-
主控界面:
- 车库三维示意图
- 实时车位状态指示灯
- 手动/自动模式切换按钮
-
调试页面:
- 各电机点动控制按钮
- I/O状态监控表
- 故障历史记录查询
-
参数设置:
- 升降速度设定
- 横移加速度曲线
- 设备自检功能
4.2 通讯配置避坑指南
在EasyBuilder Pro中配置S7-1200连接时:
- 确保PLC IP与触摸屏在同一网段
- 勾选"保持寄存器"选项防止通讯中断
- 重要变量设置100ms的轮询周期
实测发现:当通讯负载超过40%时,触摸屏会出现操作延迟。解决方法是将非关键变量的轮询周期调整为500ms。
5. 现场调试血泪史
5.1 典型故障处理清单
| 故障现象 | 排查步骤 | 最终原因 |
|---|---|---|
| 升降台到位置不停 | 1. 检查限位信号 2. 测量编码器反馈 |
光电开关安装角度偏移 |
| 触摸屏按钮偶发失灵 | 1. 监控通讯质量 2. 检查变量地址 |
PLC程序里用了边缘触发指令 |
| 横移电机启动时抖动 | 1. 检查机械结构 2. 调整变频器参数 |
加速度曲线设置过陡 |
5.2 必须做的五项现场测试
- 满载运行测试:所有车位停放等效重物连续运行8小时
- 断电恢复测试:突然断电后验证设备自恢复功能
- 误操作测试:同时触发相反方向按钮观察保护逻辑
- 紧急停止测试:各急停按钮的有效性验证
- 通讯压力测试:快速连续操作触摸屏所有功能
6. 程序优化进阶技巧
6.1 采用FB块封装运动控制
创建"Axis_Ctrl"功能块实现标准化控制:
pascal复制FUNCTION_BLOCK "Axis_Ctrl"
VAR_INPUT
Enable : BOOL;
TargetPos : REAL;
END_VAR
VAR_OUTPUT
CurrentPos : REAL;
Status : WORD;
END_VAR
6.2 利用SCL实现高级算法
在升降控制中加入PID调节:
scl复制#PID_Output := "PID_DB".KP * #Error
+ "PID_DB".KI * #Integral
+ "PID_DB".KD * #Derivative;
调试这个项目最大的体会是:立体车库的PLC程序不是写完就能用,必须经过"编写-模拟-实机-修改"的多次循环。特别是触摸屏联调阶段,建议先在PLCSIM Advanced里做全量仿真,能省去现场50%的调试时间。最近发现用TIA Portal的Trace功能抓取信号时序图,对分析联动问题特别有帮助。
