上周去现场调一套商场平移门的改造,甲方拍着胸脯说:“就电机正反转,PLC控制,带防夹,一天能搞完。”结果从IO分配到仿真验证,再到现场整定,我整整蹲了三天。自动门系统控制确实不是什么高深技术,但它把传感器信号、电机驱动、安全保护和时间逻辑全揉在一起,特别容易出“看似正常、实际不对”的隐蔽问题。这篇文章我以三菱FX3U和GX Works2为例,把一套自动门从需求拆解、I/O分配、梯形图程序到仿真程序验证的完整思路讲一遍。你手里的PLC不管是西门子S7-200 SMART、汇川H3U还是台达DVP系列,核心状态机和控制逻辑都一样,可以照搬思路,只改指令差异。适合刚学完PLC基础指令、想找完整练手项目的朋友,也适合第一次接自动门类非标设备的现场调试工程师。
1. 先别急着写程序:自动门控制需求拆解与运行模式定义
很多工程师拿到自动门项目第一反应是“画梯形图”,结果画到一半发现问题越来越多:门开到一半又有人来了怎么办?关门过程中安全光幕被自己的门框挡住怎么办?停电之后重新上电是该先关门还是先不动?所有这些疑问都指向同一个结论——写程序前没有把需求整理成状态机,后面必定返工。
1.1 传感器不是越多越好,但要分清楚角色
自动门的传感系统一般分三层。外层雷达装在门楣上方,朝向门外,负责探测“有人正在靠近”,触发门开启;内层雷达装在门内侧,负责探测“门内有人”,防止人从内侧撞上正在关闭的门扇。第三层是安全光幕或红外安全传感器,装在门扇运动路径的两侧,专门用来检测“关门路径上是否存在障碍物”。三层各管一件事,不能混用。尤其是安全光幕,很多人贪便宜装普通红外传感器代替,结果角度稍微偏一点就漏检,而且对深色衣物和人体腿部的检测能力都很差,我不建议在正规项目里替换。
实际选型时还要注意传感器输出类型。雷达和光幕一般都有继电器干接点输出,NPN和PNP形式也都有。接到三菱FX3U这种源型输入模块时,公共端S/S接24V+,传感器用NPN开漏输出;如果传感器是PNP,就需要调整外部接线。遇到这种情况,我的建议是在IO表上提前标注清楚,避免安装电工和调试工程师各按各的习惯接线,最后烧掉输入点。
1.2 把运行过程拆成“慢-快-慢”三段,才是自动门的灵魂
完整的运行过程不是“开、关”两个动作,而是:
全关待机 → 雷达触发 → 慢速启动 → 快速运行 → 减速接近 → 全开保持 → 慢速启动 → 快速关门 → 减速接近 → 全关待机。
慢-快-慢不是机械工程师规定的,而是电机特性和使用体验共同决定的。交流电机直接高速启动,传动带会因为惯性打滑,门体会猛地弹一下;接近到位时如果不减速,限位开关经常被撞坏,门框会发出“哐当”声。低速运行段一般控制在0.3到0.5秒,让电机建立足够转矩后再切高速;到限位前的低速段一般持续0.3到0.8秒,具体根据门重和轨道阻力调整。
半开模式在这里值得单独提一下。很多写字楼在夜间会要求门只能打开一半,节省空调能耗。实现方式有两种:一是在轨道中间加一个独立限位开关,二是让PLC记录高速启动后的延时时间,靠时间估算门的位置。我更推荐独立中间限位,因为延时方式受电网电压波动的影响很大,电压低时电机转得慢,同一个延时时间对应的位置能差出十几厘米。
1.3 冲突场景清单:把“如果同时发生”写清楚
我习惯把自动门所有可能出现的冲突场景列成一张表,写进程序注释里。这样做既能帮自己理清优先级,也能让后来的维护人员一眼看懂设计意图。
| 场景 | 处理策略 |
|---|---|
| 关门中,安全光幕被遮挡 | 立即停止关门,置位“防夹开门”,反向开门持续到障碍物移开后再延时关门 |
| 开门中,安全光幕被遮挡 | 不做反向动作,继续开门并重新计时保持时间 |
| 保持期间,任一个雷达再次触发 | 清零保持定时器,重新计时 |
| 急停按下 | 立即断开所有输出;急停复位后,需要再按一次“复位”按钮才允许重新运行 |
| 断电后重新上电 | 输出全部复位;若门停在中间位置,根据客户要求自动慢速回关或原地待命 |
| 半开模式下,开门到达中间限位 | 停止继续开门,进入保持计时;保持结束再关门 |
我遇过一个项目就是光幕被门框边缘误遮挡,导致门永远关不上。排查三天才发现是安装位置错了。所以冲突清单一定要写在程序注释里,现场调试时对照着看,比翻图纸快得多。
2. 硬件选型与I/O分配:一套足够落地的组合
程序逻辑再漂亮,没有一套明确的IO点表和硬件方案,现场施工一样会乱。自动门这类小项目,选硬件时不需要堆功能,稳定、够用、有人会维护才是关键。
2.1 为什么把三菱FX3U当样板机型
我选择三菱FX3U-32MR作为样板机,不是因为它是性能最强的,而是它最适合把逻辑讲清楚。32点规格里,输入16点、输出16点,对自动门来说余量充足。继电器输出型MR可以直接驱动小型接触器线圈,省掉一排中间继电器,控制柜理线会舒服很多。另外FX3U支持STL指令、定时器数量也够多,配合GX Works2自带的仿真器,正好能覆盖本文要讲的仿真流程。
不代表其他方案不行。西门子S7-200 SMART有STL仿真,很多人习惯梯形图,Micro/WIN SMART同样可以;汇川H3U在国内标准机里占比很高,AutoShop编程环境也顺手;台达DVP系列在老设备改造里很常见。我做选型时一般先问清楚:现场谁会维护?备件供应是否方便?团队现有程序模板是哪家平台的?这些比CPU运算速度重要得多。
| 品牌/系列 | 编程软件 | 仿真支持 | 我眼中的适用场景 |
|---|---|---|---|
| 三菱FX3U | GX Works2 | 自带GX Simulator2 | 教学、中小型设备、老设备改造 |
| 西门子S7-200 SMART | Micro/WIN SMART | 本机仿真 | 系统集成、与西门子HMI配套 |
| 汇川H3U | AutoShop | 支持模拟 | 国内标准机、性价比优先 |
| 台达DVP | ISPSoft/WPLSoft | 支持模拟 | 轻量单机、多轴联动少的小项目 |
2.2 I/O分配表:每个点都要有明确职责
自动门项目点位不多,但每个点都不能含糊。我按实际项目整理了一张点表,你可以直接抄。
输入部分(源型接法,公共端S/S接24V+):
| 地址 | 用途 | 说明 |
|---|---|---|
| X0 | 外雷达 | 门外有人靠近,上升沿触发开门 |
| X1 | 内雷达 | 门内有人靠近 |
| X2 | 安全光幕 | 常开触点,遮挡时导通 |
| X3 | 开到位限位 | 开门已到全开位置 |
| X4 | 关到位限位 | 关门已到全关位置 |
| X5 | 急停按钮 | 用常闭触点,断线即报警 |
| X6 | 半开模式选择开关 | ON表示只允许开一半 |
| X7 | 系统运行使能 | 总开关,OFF时禁止一切动作 |
输出部分:
| 地址 | 用途 | 说明 |
|---|---|---|
| Y0 | 开门接触器KM1 | 控制电机正转 |
| Y1 | 关门接触器KM2 | 控制电机反转 |
| Y2 | 高速继电器KM3 | 电机高速绕组接通 |
| Y3 | 低速继电器KM4 | 电机低速绕组接通 |
| Y4 | 故障指示 | 急停或过载时点亮 |
| Y5 | 运行状态灯 | 可选 |
这里要特别提醒:PLC的输出触点一定要多留一组给硬件互锁。也就是说,KM1和KM2的线圈回路里要分别串联对方的常闭触点。这样即使程序跑飞、两个输出同时得电,接触器也不会同时吸合。往复杂了说叫冗余,往简单了说叫保命。
2.3 安全回路:程序故障时还有物理防线
程序写得再严谨,PLC自身也可能死机或跑飞。自动门是人员可接触设备,安全回路不能只靠程序。我在项目里会加三级保护。
第一级,急停按钮的常闭触点直接串在接触器线圈主回路中,按下急停,电机动力电源物理断开,跟PLC有没有输出没有关系。第二级,KM1与KM2电气互锁,防止正反转同时吸合导致电机短路。第三级,热继电器或电机过载保护器串入主回路,过载时切断接触器电源,同时把信号送到PLC的X5做故障显示。
很多新手只看梯形图,不重视硬件回路。但真正出了安全事故,能保护人的往往是接线端子上的互锁,而不是程序员写的AND指令。
3. 梯形图核心逻辑拆解:双速度控制与防夹状态机
自动门的PLC程序,核心就是状态转换和防夹处理。把这两块想清楚,梯形图写起来很顺。
3.1 用辅助继电器搭出“状态”而不是“动作”
自动门的程序最好不要直接拿X0去驱动Y0。传感器信号是瞬时的,开门请求要一直保持到限位到位,所以需要用辅助继电器保存状态。我习惯用M10表示开门请求,M20表示关门请求,M30表示防夹开门请求,M40表示系统允许运行。
开门请求的置位条件可以这样理解:
- 当前不在全开状态,即X3为OFF;
- 系统使能X7为ON,急停X5为OFF;
- 外雷达X0、内雷达X1、防夹开门M30中至少一个为ON。
只要满足条件,M10就保持置位,直到X3开到位后由X3的常闭触点把它复位。关门请求的逻辑对称:M10已经复位,保持定时器T0到点,X4尚未动作,光幕X2没有遮挡,则置位M20,直到X4关到位复位M20。
这样整个程序看起来就是一张状态转换表,每个辅助继电器代表一个稳定状态,而不是一条瞬时动作。调试时用监控表看M10/M20/M30的状态,定位问题非常快。
3.2 双速切换的具体梯形图思路
双速电机有高、低速绕组,用两个接触器切换。梯形图逻辑这样编:
- 低速输出Y3在每次动作开始时先得电,持续0.5秒;
- 0.5秒后高速输出Y2得电,但前提是低速已经断开;两套绕组不能同时带电,否则电机会发热甚至跳闸;
- 门进入减速区,X3或X4限位动作后,高速释放,低速重新得电,直到完全到位。
如果用ST结构化文本写这一段,逻辑会非常直观:
IF OpenReq AND NOT Closing THEN LowSpeed := TRUE; HighSpeed := FALSE; // 低速启动0.5s后切高速 IF LowStartTimer.Q THEN LowSpeed := FALSE; HighSpeed := TRUE; END_IF; // 减速限位触发,切回低速 IF X3 THEN HighSpeed := FALSE; LowSpeed := TRUE; END_IF; END_IF实际现场要注意,低速切换到高速的瞬间,交流接触器如果灭弧不好,会出现“滋火”声。我一般会让低速接触器先断开,延时50到100毫秒再合高速接触器,给触点一个彻底断弧的时间。这个间隙不会让门停下来,因为门有惯性,但要靠PLC程序里的定时器做延时。这一步在仿真器里看不出区别,真机上却能明显减少接触器触点的烧蚀。
3.3 保持定时器和减速参数怎么定
保持时间建议从2秒起步,写字楼人流量大可以设到8秒。我的经验是:保持定时器应该在门全开到位后才开始计时,同时只要内外雷达任意一个再次触发,就用RST指令把定时器清零重新计时。这样人站在门口犹豫时,门不会突然关门。
减速参数要拿数字说话。假设高速速度0.5m/s,门在高速下惯性滑行约0.1米才停下来,你想让门在快到限位前0.2米处切低速,那么减速提前时间就是(0.2+0.1)/0.5=0.6秒。这个计算很简单,但很多人不做,直接给固定0.3秒,结果门每次都会低速段太长或太短。正确做法是先输入预估参数,再用限位开关的位置做复核,一点点调整。
3.4 防夹“重开门”逻辑的几种变体
安全光幕遮挡后的动作,每个项目要求不同。有的要求“停下来,等障碍物移开后自动关门”,有的要求“立即反向开门0.5秒再停住”。我建议把两种逻辑做成可配置:M30置位后,如果X2遮挡持续超过50毫秒,立即断开关门输出,同时输出开门信号,持续0.8秒,或者直到光幕恢复后再延时0.3秒。如果只是信号干扰导致50毫秒内复位,则不触发防夹。
这里有一个容易忽略的细节:雷达属于移动探测,人体站定后不一定触发;但光幕是主动遮挡检测,是防夹的最后一道逻辑防线。所以光幕信号优先级必须高于任何关门条件,设计梯形图时一定要注意让X2拥有对Y1的绝对控制权。
4. 仿真程序探秘:没有实物PLC也能把逻辑跑得明明白白
标题里提的“仿真程序探秘”,其实是整个项目里最省时间的环节。没有实物PLC时,也能把状态机调顺。
4.1 用GX Simulator2跑一套虚拟自动门
三菱GX Works2安装时会附带GX Simulator2,也就是常说的仿真程序。它可以模拟FX3U等型号的指令执行,不需要插任何硬件。操作步骤如下。
- 在GX Works2里新建工程,工程类型选“简单工程”,PLC系列选FX3U,程序类型选梯形图。
- 把写好的梯形图输入,点击“变换”编译,确认没有语法错误。
- 菜单栏找到“调试”,点击“开始/停止模拟”,或直接按快捷键调用仿真。仿真器启动后,梯形图进入模拟运行状态。
- 在“软元件”窗口里双击X0,把“强制”状态置为ON。
此时打开监视模式,你会看到Y0、Y3先变绿,0.5秒后Y2变绿,这就是外雷达触发后的慢开快开过程。接着把X3强制置ON模拟开到位,Y2熄灭,Y0、Y3保持,等保持定时器到点后,Y0、Y3熄灭,Y1、Y3变绿,门开始关。整个过程就像看着一台虚拟门在跑。
这个仿真器的价值在于,所有时序都能用监视窗口的当前值看到,T0的剩余值清清楚楚,不会因为现场电机动作太快而漏看某一拍。
4.2 在仿真环境里做一套可复测的用例
我建议把测试表打印出来,每个用例一行,跑通一个打一个勾。这比盯着梯形图“目测”靠谱得多。
| 用例 | 操作步骤 | 期望结果 |
|---|---|---|
| 1 | 上电,X7 ON,X4已ON | Y0-Y3全部OFF,门在关到位待机 |
| 2 | X0设为ON | Y0、Y3 ON,0.5s后Y2 ON,X3为OFF |
| 3 | X3设为ON | Y2 OFF,Y0、Y3保持,T0开始计时 |
| 4 | T0到点 | Y0、Y3 OFF,Y1、Y3 ON开始关门 |
| 5 | 关门中把X2设为ON | Y1立即OFF,M30置位,Y0、Y3 ON反向开门 |
| 6 | X2复位后延时0.3s | 重新进入关门流程 |
| 7 | X5设为ON再复位 | 输出全断,必须额外复位操作 |
| 8 | 中途断电(仿真停止)后重新上电 | 门在中间位置时自动低速关门 |
这些用例能覆盖90%的正常与异常场景。每次修改程序后,我都会把用例从1到8从头跑一遍,而不是只点一下“编译通过”就算完。
4.3 仿真器永远验证不了的三件事
先说结论:仿真程序只仿真“PLC的逻辑”,不是“现场系统”。
第一,它不会模拟接触器的通断延迟,所以低速切高速的断电间隙问题,仿真器显示完全正常,真机却可能因为两个接触器动作时间差而出现电弧。第二,传感器信号在仿真器里是干净的数字量,现场雷达会误触发,光幕会被灰尘遮挡,限位开关会有机械抖动。这些都需要程序加滤波,而仿真器逼不出这种需求。第三,它不检查接线。仿真里Y0和Y1同时得电不会炸机,真机上两个接触器同时吸合就是短路事故。
我的原则是:仿真通过只是入场券,上场前还要带着测试表和万用表去现场验证每一根线。
5. 从仿真到真机:现场调试踩坑记录与参数整定
仿真跑得再好,一到现场总会冒出几个新问题。下面这几条是我在自动门项目里踩过的真坑。
5.1 雷达的“伪触发”让我重新理解了安装角度
仿真里我把X0当成一个完全听话的按钮,真到了现场才发现,一台普通微波雷达的探测范围不是一条线,而是一整个扇形区域。装高了会照到对面通道的人,装低了又漏掉小孩。最后我把雷达灵敏度调到触发距离约2米,并将探测面朝门外下压15度,再用纸板挡住侧面,才算稳定。现场调雷达时,最好带一把卷尺和一个秒表,因为参数要具体到“几米几秒”才可复现。
安全光幕的安装位置也踩过坑。有一次把光幕发射端和接收端装在门扇运动平面上,结果门打开时自身门扇切割了光束,程序频繁判断有人遮挡。后来把光幕整体前移到轨道外侧才解决。这个坑如果只在仿真器里跑,永远不会出现,因为仿真器里没有物理门扇。
5.2 机械惯性和触点抖动是参数整定的真实对手
门是实心的铝合金加玻璃,比仿真器里的“虚拟门”实在得多。高速切换低速那一刻,门体会因为惯性继续向前滑,哪怕限位已经触发,门的最后15厘米还得靠低速段继续走完。根据现场实测,我把减速提前量从计算的0.6秒改成0.75秒,门才停得稳。
限位开关的机械抖动会在PLC输入波形上产生一串毛刺,如果不滤波,程序可能在一个扫描周期内反复执行到位/未到位的切换,门会“哆嗦”。我的做法是在梯形图里对X3、X4做10毫秒的延时确认:信号持续10毫秒以上才认为有效。注意滤波时长不能太长,否则门已经撞上缓冲垫,PLC还没检测到位,照样会产生冲击。
5.3 验收清单里最容易翻车的一条:断电再上电
自动门项目验收经常会做“断电重新上电”测试。很多甲方会要求门自动关回,但如果没有特殊设计,门会停在半空,重新上电瞬间电机突然得电可能猛冲一下。
我的处理方式是:在程序中把X3/X4的状态作为“是否为初始位置”的判断依据。若重新上电时两个限位都处于未触发状态,说明门在中间,就先低速关门直到关到位,再恢复自动运行。这样既满足关回要求,又不会高速猛冲。这条逻辑在仿真用例里加一个“中途断电重上电”场景,让X3、X4全设为OFF再启动,可以提前确认逻辑正确。
6. 从自动门延伸出去:同一套状态机还能做哪些门控设备
做完自动门项目你会发现,电梯门、平开门、车库门、通道闸,本质上都是“传感器请求、电机执行、限位确认、安全保护、保持计时”这套模型。
平开门是把平移门的高速电机换成减速电机,开到位和关到位限位装在铰链侧;车库门要增加上下行程保护,防止门体压到人或车,防砸逻辑比防夹更强调力矩检测;通道闸和旋转门则要处理多个人同时通过时的身份识别信号,安全光幕要从“遮挡停止”升级为“遮挡即锁死”。状态机的分层方式完全一样:输入层收集请求和安全管理状态,状态层决定当前处于开门、关门、保持还是等待,输出层驱动接触器和指示灯。
所以我的建议是:不要把这个自动门项目当成一个孤立案例。把IO表捋清楚,把M10/M20/M30状态定义好,后面接任何同类项目,最多改改电机参数和传感器类型,程序骨架几乎可以原样复用。
我最后想分享一个对新手最值钱的习惯:自动门这类项目,程序只是三分之一,另外三分之二是需求确认和现场验证。你完全可以在仿真器里把状态机调得无懈可击,但让甲方点头的,往往只是门关到最后5厘米那一下有没有温柔一点,光幕挡一下门会不会立刻松开手。这些感受没法靠仿真程序验证,只能蹲在现场,一遍一遍把参数调到人、门、电机三者都舒服。真正把这一套流程完整跑下来,你会发现自己的PLC水平不止上了一个台阶。