No.974 欧姆龙Omron PLC与组态王商场自动门控制系统的设计与实现
凌晨三点的商场后门,两个电工蹲在自动门控制箱前啃着冷掉的煎饼果子。这段看似普通的延时逻辑藏着两个彩蛋:TIM000的10秒防夹延时只在门关闭时激活,TIM001的5秒开门保持用上升沿触发避开重复执行。自动门控制从来不是多高深的技术,但把工业控制的严谨性注入民用场景,或许就是国产自动化设备该有的样子——不需要炫酷的黑科技,可靠二字足矣。这个每200ms执行一次的脚本藏着门道:D100其实是PLC里用
No.974 基于欧姆龙Omron PLC和组态王商场自动门控制系统的设计与实现

凌晨三点的商场后门,两个电工蹲在自动门控制箱前啃着冷掉的煎饼果子。"这破门要么死不动,要么突然发疯似的开合",李师傅抹了抹嘴边的酱汁,把万用表甩在工具箱上。正是这次深夜抢修催生了我们后来那套基于欧姆龙PLC和组态王的自动门方案——用工业级的可靠性解决民用场景的顽疾。

核心控制逻辑比煎饼还简单

三路信号(红外对射、安全光幕、急停按钮)接入CP1H-X40DT-D的0通道,输出控制伺服电机和报警灯。但魔鬼藏在细节里:
| 0.00 0.01 TIM000(10) TIM001(5) 100.00
|---| |-------|/|-------------[TIM 10s]-------|[TON 5s]-------( )---|
这段看似普通的延时逻辑藏着两个彩蛋:TIM000的10秒防夹延时只在门关闭时激活,TIM001的5秒开门保持用上升沿触发避开重复执行。注意0.01接的是安全光幕的常闭点,这种反逻辑设计让断线故障时自动门会保持开启状态——安全永远是第一准则。

组态王的骚操作

在KingView里做动画联动时,发现直接读取DM区数据会有卡顿。后来改用间接寻址配合事件脚本,流畅度提升明显:
Sub OnTimer()
Dim doorState As Integer
doorState = ReadDevice("CP1H_D100")
If doorState = 1 Then
SetProperty("DoorImage", "FillColor", RGB(0,255,0))
Else
SetProperty("DoorImage", "FillColor", RGB(255,0,0))
End If
End Sub
这个每200ms执行一次的脚本藏着门道:D100其实是PLC里用=指令计算出的状态字,把8个传感器状态压缩到一个寄存器里传输,比起单独读取每个点节省了70%的通信时间。
现场调试的土味智慧
你以为写完代码就完事了?在商场这种人流密集处,熊孩子的拍打、保洁阿姨的拖把、外卖小哥的电动车都是隐藏BOSS。我们给红外对射加了硬件滤波电路,还在PLC程序里埋了这样的异常检测:
MOV D200 K5
CMP D201 D200
= P_EQ
JMP P_EQ NORMAL_MODE
CALL ERROR_HANDLER
当光幕遮挡次数计数器D201在5秒内超过5次(MOV到D200的数值),系统自动切换到慢速模式并触发维护报警。这个灵感来源于4S店的维修车间——频繁异常操作往往意味着设备即将出问题。
这套系统运行三年后回访,李师傅的煎饼果子终于能趁热吃了。自动门控制从来不是多高深的技术,但把工业控制的严谨性注入民用场景,或许就是国产自动化设备该有的样子——不需要炫酷的黑科技,可靠二字足矣。
更多推荐
所有评论(0)