
最近接了个物流仓库的小改造一条混装邮件传送带上要按目的地把邮件分到三条滑槽里。甲方要求不算高点名要国产化图纸思路清晰、程序能看懂、以后维修方便所以我最终定了 S7-200 PLC 加组态王的组合。这套方案在中小型控制系统里非常常见成本可控、资料多、现场电工也熟悉尤其适合这种“逻辑不算复杂但需要看得见摸得着”的分拣场景。这篇文章就把整个项目的完整设计过程摊开讲从方案选型、IO 分配、梯形图程序编写到接线原理图设计、组态王画面调试最后把现场踩过的坑也一并列出来。适合正在做课程设计的学生、刚入门的电气工程师以及想用 S7-200 和组态王做小型物流设备的同行参考。1. 需求拆解与方案选型为什么是S7-200加组态王1.1 一个真实的分拣需求项目原始需求有三条第一传送带持续运行邮件从入口进入第二系统能识别邮件并根据目的地将其推入对应的三条滑槽第三操作员在中控室电脑上能实时看到分拣状态、计数和报警信息。第一条和第三条都不难难点在第二条的“识别和推入”。如果按甲方最初的想法在每条滑槽前装一个光电传感器传感器一触发就推一下结果就是所有邮件都会掉进第一个滑槽。所以需要一套“计数分配”的逻辑假定三个目的地循环第一件进 1 号口、第二件进 2 号口、第三件进 3 号口第四件重新进 1 号口以此类推。这是小型分拣线常用的简化方案如果后续要按二维码或条码识别只需在入口加扫码器并把计数逻辑换成地址映射即可PLC 程序骨架不用动。1.2 核心部件选型逻辑PLC 选了 S7-200 CPU224 DC/DC/DC。为什么不是继电器输出的 CPU224因为推杆气缸的电磁阀需要快速通断晶体管输出响应更快而且输出端不会因为频繁动作而磨损触点。实际驱动电磁阀时我并没有让 PLC 直接带负载而是通过中间继电器转接这样即使电磁阀短路也不会烧 PLC 输出点。组态王选用 6.60 SP4 版本通过 PC/PPI 电缆和 PLC 通信。选组态王而不是其他触摸屏理由很直接学校和企业里用组态王的存量用户多教程满天飞画面组态灵活做动画演示效果好打印报表也方便。西门子原装触摸屏虽然稳定但价格和组态成本对这类小项目不划算。传感器统一用对射式光电开关电源 DC 24VNPN 常开输出。选对射式而不是漫反射式的关键考虑是抗干扰传送带附近有日光直射和灰尘漫反射式在这种环境下容易误触发对射式靠对正安装和遮光处理稳定性好很多。入口检测用一对三个分拣口各自再装一对一共四对传感器。执行机构上传送带由三相异步电机驱动接触器控制启停推料机构用单作用气缸加两位三通电磁阀断电时气缸自动缩回符合“失电安全”的原则。整套系统的 IO 点数算下来输入 9 点、输出 6 点CPU224 的 14 输入/10 输出绰绰有余还留了备用量。2. IO分配表从传感器到端子的完整映射2.1 输入点设计与光电传感器选型输入信号主要分三类操作命令、检测信号、模式选择。操作命令包括启动、停止、急停和复位全部用按钮接入检测信号包括入口光电、三个分拣口的光电确认模式选择用于切换手动调试和自动运行。这里有个容易忽略的点急停按钮必须接常闭触点程序中用常开指令去读它。一旦急停被按下输入点断电程序立刻判定为急停状态。如果你把急停接成常开断线时系统反而认为急停未按下这是安全设计的忌讳。光电传感器是三线制棕色接 DC 24V 正极、蓝色接 0V、黑色信号线接 PLC 输入端子。信号线输出的是 NPN 型低电平有效所以 PLC 输入端要设为漏型接法即公共端 M 接 24V 正极这样传感器导通时输入点对公共端形成电流回路PLC 读到的就是“1”。2.2 输出点设计与驱动方式输出点这边电机接触器线圈电流约 0.3A电磁阀线圈电流约 0.5A如果直接接 PLC 晶体管输出虽然电流在极限范围内但感性负载关断时的反向电动势容易损坏输出管。稳妥做法是每个输出点先驱动一个中间继电器线圈 DC 24V触点容量 5A再由继电器触点去控制接触器和电磁阀。中间继电器线圈两端要并联续流二极管方向是负极接 24V 正极、正极接输出点这样继电器断电时线圈产生的反向电动势被二极管吸收保护 PLC 输出管。这个细节很多初学者会漏但现场出问题最多的恰恰是这里。2.3 完整IO分配表IO 分配是整个项目的地基接线、写程序、做组态画面全都对照这张表。项目最终分配如下地址信号名称类型说明I0.0启动按钮输入常开按下启动系统I0.1停止按钮输入常开按下停止传送带I0.2急停按钮输入常闭按下切断运行I0.3入口光电输入对射式检测进入的邮件I0.4一号口光电输入对射式邮件到达一号滑槽I0.5二号口光电输入对射式邮件到达二号滑槽I0.6三号口光电输入对射式邮件到达三号滑槽I0.7手动/自动切换输入打到开为手动模式I1.0复位按钮输入常开清除报警状态Q0.0传送带电机输出驱动接触器控制电机启停Q0.1一号推杆电磁阀输出气缸伸出推邮件Q0.2二号推杆电磁阀输出气缸伸出推邮件Q0.3三号推杆电磁阀输出气缸伸出推邮件Q0.4三色报警灯输出正常亮绿、故障亮红Q0.5运行指示灯输出系统运行时常亮手动模式下三个推杆分别由 I0.4、I0.5、I0.6 强制触发方便调试气缸行程和气压大小自动模式下推杆由程序中的分拣逻辑控制。这两个模式在梯形图里用 M0.0自动运行标志做互锁避免手动和自动同时作用。3. 梯形图程序逐段拆解从启停到分拣的完整逻辑3.1 总启停与电机控制网络程序第一段是所有控制逻辑的开关我习惯叫它“母网络”。启动按钮 I0.0 按下后辅助继电器 M0.0 得电并自锁同时驱动 Q0.0 启动传送带电机。停止按钮 I0.1 和急停 I0.2 都串在这个自锁回路里任何一个断开M0.0 立即掉电传送带停止。文字形式的梯形图第一段逻辑如下Network 1 // 总启停与电机控制 I0.0 I0.1 I0.2 M0.0 --| |-------|/|---------|/|----------( )-- M0.0 --| |------------------------------------- M0.0 Q0.0 --| |----------------------------------( )--这段程序有个好处急停复位后系统不会自动重新启动必须再次按启动按钮。这是因为 M0.0 自锁回路一旦断开需要重新建立符合设备安全规范。启动瞬间电机电流冲击大所以接触器选型时我留了 1.5 倍余量0.75kW 电机配 9A 接触器实际运行温升很低。3.2 邮件识别与分拣通道分配邮件识别靠入口光电 I0.3 的上升沿。每次检测到一个邮件进入计数器 C0 加 1同时把计数结果对 3 取余得到的目标通道号存入中间变量。S7-200 没有直接取余的指令我用比较指令配合三个辅助继电器实现程序更直观也方便维护。通道分配逻辑这样写C0 当前值除以 3余数为 1 时置位 M1.1目标为一号口余数为 2 时置位 M1.2余数为 0 时置位 M1.3。置位前先用复位指令把 M1.1、M1.2、M1.3 全部清掉保证同一时间只有一个目标标志有效。这里我特意加了一个“入口光电持续导通保护”。如果一件邮件卡在入口传感器处超过 3 秒T37 定时器会置位报警标志 M2.0禁止继续计数避免同一件邮件被反复计数。实际调试时这个保护起了大作用后面踩坑部分会详细说。3.3 推杆动作时序控制推杆动作是整个程序的核心也是最容易出问题的地方。基本原则是邮件到达某个分拣口的光电传感器时先不急着推等邮件基本越过光电、到达推杆正前方时再动作。因为光电传感器装在滑槽入口前一点推杆在传感器后方邮件挡住光电后再往前走一小段距离才能被推杆正好推到。以一号口为例I0.4 从 0 变 1 时启动定时器 T38 延时 0.3 秒延时到后 Q0.1 置位一号推杆伸出。邮件被推下滑槽后I0.4 会重新变为 0此时启动 T39 延时 0.5 秒然后复位 Q0.1推杆缩回。这个 0.5 秒是给气缸充分缩回的时间防止邮件还没完全掉落推杆就缩回导致邮件卡在滑槽边缘。三个口的推杆逻辑完全对称只是用了不同的定时器和输出点。为了让梯形图更清晰每个口的逻辑我单独放一个 Network并在注释里写清“入口检测—延时—推杆伸出—确认掉落—延时—推杆缩回”的完整时序。3.4 计数累计与状态输出系统需要统计三件事总进入邮件数、每个口实际分拣数、设备运行时间。总进入数直接用 C0每个口的实际分拣数用 C1、C2、C3 分别计数当某个口的推杆完成一个完整动作伸出又缩回时对应计数器加 1。实际分拣数不能靠光电触发来计因为光电可能因为邮件反弹而重复触发。我的做法是用推杆动作完成信号来计Q0.1 从 1 变 0 的下降沿触发 C1 加 1。这样每一件邮件只对应一次完整的推杆动作计数准确得多。状态输出方面Q0.4 报警灯在正常运行时常亮绿灯接绿灯端子有报警时通过继电器切换红灯Q0.5 运行指示灯直接并联 M0.0传送带运行时就亮。组态王上显示的数字则来自 PLC 的 VD 区C0、C1、C2、C3 的当前值会被映射到 VD100、VD104、VD108、VD112供组态王读取。4. 接线图与原理图设计要点4.1 输入回路接线图纸设计是整个项目交付的重要部分。甲方要求提供接线图、原理图图纸我交付的是三张图主电路图、PLC 接线图、控制柜布置图外加一份 IO 分配表。主电路图里三相电源经断路器、接触器主触点到电机热继电器串在主回路中做过载保护热继电器的常闭触点串入 PLC 的急停回路电机过载时同样能切断运行。PLC 输入回路接线要特别注意公共端处理。S7-200 CPU224 的输入公共端是 1M、2M漏型接法下 1M 接 24V 正极。所有按钮的一端接 PLC 输入端子另一端统一接到 0V光电传感器的信号线接输入端子棕色接 24V 正极、蓝色接 0V。这样接的好处是传感器导通时输出低电平电流从 PLC 公共端流入输入点经传感器到 0V 形成回路。输入回路布线时信号线我全部用了屏蔽双绞线屏蔽层在 PLC 侧单端接地。传送带电机变频器没有用但接触器启停时依然会产生电磁干扰屏蔽线能明显降低误触发概率。走线时信号线和动力线保持 20cm 以上间距不做同一线槽这一点在柜内布局时就画清楚了。4.2 输出回路接线输出回路分成两层PLC 输出点到中间继电器中间继电器触点再到负载。PLC 的 1L、2L 接 24V 正极Q0.0 到 Q0.5 分别接中间继电器 KA1 到 KA6 的线圈负端线圈正端接 24V 正极。PLC 输出管导通时继电器线圈得电。继电器 KA1 的常开触点控制接触器 KM 线圈KM 线圈电源用 220V 交流KA2 至 KA4 的触点分别控制三个电磁阀线圈电磁阀用 24V 直流。KA5、KA6 用于报警灯和运行指示灯。线圈两端都并联了 RC 吸收或续流二极管交流接触器的 RC 吸收我用的是阻容吸收器直流的用二极管。这层“PLC 输出点—中间继电器—负载”的结构可能有人觉得多余但在实际维护中非常值现场电磁阀烧了、接触器卡了换掉继电器触点就行不用拆 PLC 端子排。而且调试时可以短接继电器触点来强制测试负载排查故障快很多。4.3 电源与接地设计电源分配是很多图纸容易画糊的部分。这套系统里共用了三个电源PLC 自带 24V 传感器电源、独立 24V 开关电源给电磁阀和继电器、220V 动力电源。传感器统一接 PLC 自带的 24V 电源电磁阀和中间继电器接独立开关电源这样传感器供电和执行器供电分开执行器动作时电压跌落不会影响传感器检测。接地方面控制柜内设置了独立的接地铜排PLC 的接地端子、开关电源的 0V、屏蔽层都接到铜排上铜排再通过 10mm² 黄绿线接到厂房接地网。这里特别说明一下PLC 的 0V 和开关电源的 0V 不允许直接短接否则容易形成地环路电流干扰两个电源负极在系统内保持独立只在屏蔽层一点连接。5. 组态王监控画面设计与PPI通信配置5.1 设备驱动与通信参数组态王和 S7-200 之间走的是 PPI 协议通信硬件就是一根 PC/PPI 电缆。第一次配置最容易出问题的是波特率不一致。PLC 端默认通信口波特率是 9.6kbps而组态王新建设备时默认可能是其他值必须两边统一。我在系统块里把 PLC 通信口波特率设为 19.2kbps组态王设备配置向导里也选择 19.2kbps地址填 2S7-200 默认站号。组态王中新建设备时驱动选择“PLC—西门子—S7-200—PPI”不要选成 S7-300 或者 MPI 驱动。选错驱动会导致通信连接超时。通信参数设置界面里还有一个“通信超时”选项默认 3000ms如果现场线缆较长或干扰大建议把超时时间改成 5000ms防止偶尔一帧丢失就弹出设备故障提示。5.2 变量定义与画面动画组态王的画面我做了一个主监控画面和一个参数设置画面。主监控画面按照传送带实际布局绘制入口在左三条滑槽在右上方排开传送带中间画了三个推杆位置。画面上看不到真实传感器所以我用一排气泡灯表示四个光电传感器的通断状态传感器被遮挡时对应气泡变红否则绿色。I/O 变量的定义是组态画面和 PLC 数据之间的桥梁。需要建的变量包括启动按钮对应 M0.0读写、停止按钮M0.1读写、入口光电状态I0.3只读、三个分拣口光电I0.4、I0.5、I0.6只读、推杆输出Q0.1、Q0.2、Q0.3只读、总计数VD100只读、各口计数VD104、VD108、VD112只读、报警状态M2.0只读。按钮动画连接时要注意“按下置位、弹起复位”的设置启动按钮定义为按下时置位 M0.0弹起时复位 M0.0。如果你定义成普通的切换开关按一下启动、再按一下停止现场操作员很容易搞混。5.3 报警与数据记录组态王的报警功能我用在了三处急停按下时报警、入口光电持续遮挡时报警、PLC 通信异常时报警。前两个读 PLC 的 M 区或 I 区状态通信异常报警则直接利用组态王自身的“设备故障”事件。报警窗口放在主画面底部有报警时自动弹出同时控制柜上的报警灯亮红灯。数据记录方面我为每个分拣口和总计数建了实时数据表格组态王以 1 秒周期采集保存到本地数据库。这样甲方可以随时导出某天的分拣总量和各口分拣量月底对账直接拉报表省去了人工统计的麻烦。实测单个分拣口的数据误差在千分之一以内计数准确性比人工点数可靠得多。6. 调试实录三个差点让我翻车的现场问题6.1 光电传感器被环境光干扰系统第一次上电调试时入口光电在没有任何邮件经过的情况下频繁动作计数器自己不断累加。排查思路从三个方向同时展开先看信号线是否松动再看传感器供电是否稳定最后考虑环境光干扰。前两项都排除了我确认是对射式接收端被阳光斜射干扰。传送带位置靠近窗户下午阳光正好照到接收器透镜上NPN 接收管内部被环境光激活导致输出误翻转。解决方法是给传感器加装遮光罩并把接收端调整成微微向下倾斜让阳光不能直射透镜。安装遮光罩后误触发彻底消失这个问题也让我认识到光电传感器调试第一步永远是确认现场光照条件而不是急着改程序。6.2 推杆时序不当导致邮件被夹常规推杆调试时邮件偶尔会卡在滑槽入口气缸伸出后邮件没有完全掉下去缩回时又被带回来。观察了几次发现问题不在气缸推力而在推杆伸出时机I0.4 一触发就立即伸出此时邮件只挡住传感器还没走到推杆正前方气缸推的是邮件的侧边邮件被推歪后就容易卡住。我把推杆伸出改为延时触发延时时间根据传送带速度和光电到推杆的距离计算。传送带线速度约 0.4m/s光电到推杆中心距离约 0.15m理论上延时 0.375s我取整设为 0.3s留了一点提前量。修改后邮件基本都是正对着推杆被推入滑槽卡件问题基本消失。6.3 组态王PPI掉线调试第二天上午组态王频繁弹出“设备通信失败”但过几分钟又自己恢复。最开始怀疑电缆接触不良重新插拔后问题依旧。后来观察发现一个规律每次电磁阀动作时掉线概率明显增大而且掉线时刻正好是气缸动作的瞬间。原因很明确电磁阀线圈动作瞬间产生了较强的电磁干扰通过电源线传导到 PLC 通信口。处理办法分两步先把电磁阀线圈两端并上续流二极管前面设计里有但现场接线时有一组漏并了再把 PC/PPI 电缆换成了带磁环的原装线缆并把通信线远离动力线。经过这两项处理后连续三天运行没有再掉线。从这次调试我得到的直接体会工业现场的故障八成不是程序逻辑问题而是硬件抗干扰和安装细节问题。程序写得再漂亮接线不规范一样跑不起来。下次再做类似项目我建议在柜内布局阶段就把通信线走向、继电器安装位置、动力线槽间距一次性规划到位后期能省下大量排查时间。