1. 项目背景与需求解析
在工业自动化领域,立体车库作为解决城市停车难题的有效方案,其控制系统设计一直是工程师们关注的重点。这次我们要探讨的是一个典型的中小型立体车库项目——3x3结构的7车位升降横移式立体库。这种结构在商业综合体、医院、写字楼等场所应用广泛,能够在有限地面空间内实现停车位数量翻倍。
这个项目的核心需求可以归纳为三点:首先是通过PLC实现设备的安全可靠控制,包括升降电机、横移电机的启停和定位;其次是利用组态王软件构建直观的人机交互界面,实现车位状态监控和存取车操作;最后是确保系统具备完善的安全保护机制,包括防坠落、防碰撞、超限位保护等功能。
从技术角度看,这类立体库的控制难点在于多轴协调运动控制。当用户存取车辆时,系统需要精确计算载车板的移动路径,避免与其他载车板发生干涉。以3x3结构为例,最上层三个车位只能升降,中间层车位既可升降又可横移,最下层车位只能横移。这种复杂的运动关系需要通过严谨的逻辑控制算法来实现。
2. 系统架构设计
2.1 硬件配置方案
在PLC选型上,我们选择了西门子S7-1200系列控制器。这款PLC具备以下优势:首先,它支持最多8个轴的运动控制,完全满足本项目3个升降轴+3个横移轴的需求;其次,内置的PROFINET接口便于与组态王软件通信;再者,其紧凑的尺寸适合安装在立体库控制柜内。具体配置为:
- CPU 1214C DC/DC/DC(6ES7 214-1AG40-0XB0)
- 数字量输入模块(6ES7 221-1BF30-0XB0)×2
- 数字量输出模块(6ES7 222-1HF30-0XB0)×2
- 模拟量输入模块(6ES7 231-4HD32-0XB0)用于称重传感器
传感器配置方面,每个车位需要:
- 2个光电开关(检测车辆是否停正)
- 1个称重传感器(检测载车板负载)
- 3个接近开关(升降限位、横移限位、原点定位)
- 1个防坠落挂钩状态检测开关
2.2 软件架构设计
组态王软件在本项目中承担三大功能:
- 实时监控:显示所有车位状态(空闲/占用/故障)、设备运行状态
- 操作界面:提供存车、取车、急停、复位等操作按钮
- 数据管理:记录存取车时间、故障日志等
PLC程序采用模块化设计,主要功能块包括:
- 轴控制FB(管理单个升降/横移轴的运动)
- 路径规划FB(计算最优存取路径)
- 安全监控FB(处理急停、故障等异常情况)
- 通信处理FB(与组态王进行数据交换)
3. 核心控制逻辑实现
3.1 存取车流程设计
存车典型流程如下:
- 驾驶员将车辆停入入口层载车板(通常为1层1号位)
- 光电开关检测车辆停稳,称重传感器确认载重合理
- 操作面板选择"存车"功能
- 系统自动计算最优存放位置(考虑均衡负载原则)
- 执行载车板移动:先横移后升降,避开其他载车板
- 目标车位到位后,防坠落装置自动锁定
- 入口层载车板返回初始位置,准备下一辆车的存放
取车流程与之相反,但增加了车牌识别或取车码验证环节。特别需要注意的是,当需要取出被"埋"在中间的车位时(如2层2号位),系统需要先移动上层载车板腾出空间,这个过程的路径规划算法尤为关键。
3.2 PLC程序关键代码段
以升降轴控制为例,STL语言实现的核心逻辑:
code复制// 升降轴控制功能块
FUNCTION_BLOCK FB_AxisControl
VAR_INPUT
bEnable : BOOL; // 使能信号
fTargetPos : REAL; // 目标位置(mm)
bEmergency : BOOL; // 急停信号
END_VAR
VAR_OUTPUT
bInPosition : BOOL; // 到位信号
bFault : BOOL; // 故障信号
END_VAR
VAR
rActualPos : REAL; // 实际位置
tMoveTimer : TON; // 运动超时定时器
END_VAR
// 主逻辑
IF NOT bEmergency THEN
// 位置控制算法
IF ABS(fTargetPos - rActualPos) > 5.0 THEN
// 未到位,继续运动
"Axis_Move".Speed := 50.0; // 50mm/s
"Axis_Move".Position := fTargetPos;
tMoveTimer(IN := TRUE, PT := T#30S);
IF tMoveTimer.Q THEN
bFault := TRUE; // 运动超时报警
END_IF;
ELSE
// 位置到位
bInPosition := TRUE;
"Axis_Move".Speed := 0.0;
tMoveTimer(IN := FALSE);
END_IF;
ELSE
// 急停处理
"Axis_Move".Speed := 0.0;
bFault := TRUE;
END_IF;
3.3 组态王界面设计要点
主监控界面应包含:
- 立体库三维示意图:用不同颜色表示车位状态(绿色-空闲、红色-占用、黄色-故障)
- 实时数据显示区:当前运动轴位置、速度、负载等参数
- 操作按钮区:存车、取车、急停、复位等按钮
- 报警信息区:滚动显示最新报警信息
关键动画连接设置:
- 载车板位置:将PLC中的实际位置变量连接到图形对象的垂直/水平位置属性
- 车位状态:将PLC中的车位状态变量连接到填充颜色属性
- 按钮操作:将按钮按下事件映射到PLC的相应控制位
4. 安全保护系统设计
4.1 硬件安全回路
独立于PLC的安全回路包括:
- 紧急停止链:串联所有急停按钮、安全门开关,直接切断电机动力电源
- 超限位保护:机械限位开关+软件限位双重保护
- 防坠落装置:电磁铁+机械挂钩双保险
- 负载检测:当称重值超过额定负载110%时禁止启动
4.2 软件保护逻辑
PLC程序中实现的多重互锁:
- 运动轴互锁:确保同一时间只有一个轴运动
- 位置互锁:防止两个载车板同时进入同一物理空间
- 超时保护:每个运动指令设置合理超时时间
- 断电记忆:突然断电后,恢复供电时所有载车板保持锁定状态
安全相关的重要变量应设置为"掉电保持"属性,确保异常断电后数据不丢失。
5. 调试与优化经验
5.1 现场调试步骤
-
单轴调试:先不装载车板,单独测试每个升降/横移轴的运动
- 检查原点信号、限位信号是否正常
- 调整加速度/减速度参数,使启停平稳
- 验证编码器反馈与实际位置的一致性
-
空载联动测试:所有载车板安装但不加载车辆
- 测试基本存取流程
- 检查路径规划算法是否正确避让
- 验证各传感器信号响应时间
-
负载测试:逐步增加测试重量
- 观察电机电流是否在额定范围内
- 检查结构件有无异常变形
- 测试防坠落装置在断电情况下的响应
5.2 常见问题处理
问题1:载车板到位后轻微晃动
解决方案:
- 调整伺服驱动器的刚性参数(如西门子V90的P11-17)
- 在PLC程序中增加到位后的延时锁定(建议300-500ms)
- 检查机械传动部件的间隙,必要时调整
问题2:多轴同时运动时出现位置偏差
解决方案:
- 在路径规划中增加轴运动的时间重叠控制
- 对运动速度进行梯形图或S曲线规划
- 检查PROFINET网络的通信周期是否足够快(建议≤4ms)
问题3:组态王画面刷新延迟
解决方案:
- 优化变量采集周期,关键变量设为100ms
- 减少不必要的动画效果
- 将画面分为多个子画面,按需加载
6. 系统扩展与升级
6.1 功能扩展方向
- 车牌识别系统:通过摄像头自动识别车牌,与车位绑定
- 手机APP控制:用户可通过手机预约取车
- 能源管理:增加光伏板供电,实现节能运行
- 远程监控:通过4G模块实现故障远程诊断
6.2 性能优化建议
-
存取效率优化:
- 采用"最近原则"分配车位
- 实现多车连续存取时的路径优化
- 预判用户行为,提前准备目标车位
-
维护功能增强:
- 增加设备累计运行时间统计
- 关键部件寿命预测(如钢丝绳、轴承)
- 自动生成维护提醒
在实际项目中,我们发现最影响用户体验的不是存取速度,而是系统稳定性和故障恢复时间。因此建议在程序设计时,将故障自诊断和快速恢复作为重点考虑因素。例如,当某个传感器故障时,系统应能自动切换到备用判断逻辑,而不是立即停机。