ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

S7-200 PLC+传感器+气缸分拣系统设计:从梯形图到组态王监控

S7-200 PLC+传感器+气缸分拣系统设计:从梯形图到组态王监控 一提分拣系统很多人第一反应就是上视觉识别、上工业机器人。但真到了毕业设计、小型产线改造这个层面最靠谱也最省钱的做法往往还是 PLC 传感器 气缸的经典组合。我这次做的 No.883 分拣系统就是这样一套东西用一台 S7-200 CPU 226 做主控配合组态王做上位机监控传送带上对大小、颜色、材质三种属性不同的物料依次识别再通过气动推杆分入不同料仓。整套系统下来从硬件接线到梯形图再到组态画面每一步都能落地非常适合作为毕设题目或小型教学实训项目的参考。这篇文章我会按实际做的顺序来讲先拆需求、选硬件、列 I/O再写梯形图逻辑然后讲组态王的通讯和画面最后是调试阶段遇到的一堆坑和我怎么排掉的。项目本身不复杂但里面涉及的知识点很密集——传感器选型、PLC 定时器计算、PPI 通讯、组态王变量映射每一块单拎出来都能写一篇组合起来就是一个完整的小型自动化系统。不管你是刚入门 PLC 的在校生还是想快速搭一套演示线的工程师这篇都能给你一份可以直接抄作业的路线图。1. 这个分拣系统到底在做什么需求拆解与方案取舍1.1 三个分拣维度每一维背后都是一类传感器No.883 这个项目的核心需求很明确把混在一起的物料分成三类独立属性——大小、颜色、材质。听起来简单但落到传感器层面每一种属性对应的检测方案完全不同。大小分拣最常见做法是用对射式光电开关做“遮挡法”。我在传送带入口处装了两个对射光电一上一下安装高度差根据物料直径设计。大球经过时会把上下两个光电全部遮住小球只遮住下面那个这样通过两个输入点的组合状态就能区分大小。成本低、响应快而且不需要接触物料比用称重、激光测距都省事。颜色分拣我一开始想用视觉后来算了笔账一个工业相机加光源加算法成本直接干掉项目预算一大半。最后换成了颜色传感器输出模拟量信号0~10V接入 EM231 模拟量模块PLC 里比较 AIW 数值就能区分。比如黑色物料对应的 AIW 值在 1500 左右白色在 12000 左右红色在 8000 左右通过阈值分段就能稳定识别。这里有个经验要先说颜色传感器对环境光极其敏感安装位置一定要避开直射灯光最好加一个遮光罩不然后续调试会让你怀疑人生。材质分拣最简单用电感式接近开关。金属物料靠近时会产生涡流损耗触发开关塑料、陶瓷、木头这类非金属完全不响应。所以只需要在传送带侧面装一个电感式接近开关信号进 PLC就知道当前物料是不是金属材质。注意选型时要分清检测距离常见的有 2mm、4mm、8mm 规格根据物料直径和被检测面的位置来定。我用的是 M12 外壳、检测距离 4mm 的型号物料经过时距离探头约 3mm实测触发很稳定。1.2 为什么是 S7-200 组态王这个“老组合”方案选型时我纠结过要不要上 S7-1200 WinCC也想过三菱 FX5U 昆仑通态。最后选了 S7-200 和组态王原因说白了就三点成本、资料、教学价值。S7-200 CPU 226 虽然是老一代产品但至今在二手市场和教育领域保有量巨大。一块 CPU 226 的价格远低于 S7-1200而且配套的编程软件 Micro/WIN 网上教程一抓一大把遇到问题搜解决方案特别容易。对于毕设和实训项目稳定性比先进性重要得多——S7-200 在这方面口碑非常扎实恶劣工业环境下跑个十年八年很常见。我见过很多实际产线上还在用 S7-200 做控制的说明它并没有被淘汰只是退出了新品市场。组态王是北京亚控的组态软件国内工业监控领域的老牌选手。它自带西门子 S7-200 的 PPI 通讯驱动不需要额外的 OPC 中转配置流程非常成熟。更重要的是组态王的学习版本使用门槛低学校实验室、培训机构几乎都装的是它学生上手最快。WinCC 当然更强大但正版授权成本高对系统资源占用也大跑在普通电脑上远没有组态王流畅。对 No.883 这种规模的控制系统组态王的性能绰绰有余。这套组合还有一个隐形优势S7-200 有两个 RS485 通讯口一个口用 PPI 连电脑编程另一个口也能接组态王或触摸屏互不干扰。这意味着调试阶段你不用频繁插拔电缆效率高很多。后文组态王通讯部分我会详细讲这个端口的配置细节。2. 硬件选型与 I/O 规划先把底子打牢2.1 CPU 与关键模块怎么配我的硬件清单是这样的西门子 S7-200 CPU 226AC/DC/继电器型40 点 IO、一块 EM231 模拟量输入模块4 通道、一台 0.75kW 三相异步电机驱动的传送带、四个推料气缸配电磁阀、颜色传感器一个、对射光电两对、电感式接近开关一个、急停按钮两个、指示灯三色各一个再加一个 24V 开关电源和一个 220V 断路器。CPU 226 选继电器输出型而不是晶体管输出型重点考虑的是电磁阀和接触器这类感性负载。继电器输出允许直接接 AC 220V 负载触点容量大抗冲击能力强虽然响应速度比晶体管慢但推杆气缸这种应用根本不需要微秒级响应。晶体管输出只适合直流小负载和高速脉冲场景比如控制步进电机这里用不上。EM231 模块是用来接颜色传感器模拟量信号的。S7-200 CPU 本身不带模拟量输入必须通过扩展模块实现。选 4 通道版本是给后续扩展留了余量万一以后想多加个传感器测其他颜色不用再换模块。接线时注意 EM231 的供电是 24V DC和传感器共用同一个开关电源即可但模拟量信号线和电源线必须分开走避免干扰。2.2 I/O 分配表一定要先规划再接线接线之前列清楚 I/O 分配表是这行最基本的职业素养。我按输入输出分开整理输入信号全部用 PNP 型传感器输出信号全部走继电器通道这样接线上不会混程序里也不会乱。我的输入点分配是这样的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 是红色故障报警灯Q0.6 是黄色待机指示灯。这里有个容易被新手忽略的点急停按钮一定要接常闭触点进 PLC而不是常开。这样急停线断了PLC 会自动认为急停触发属于“失效安全”设计。我见过有人图省事接常开结果急停按钮的线被剪断了系统照常运行这是绝对的安全隐患写到论文里也是要被导师扣分的。2.3 接线细节NPN/PNP 和感性负载续流选传感器时最常犯的错是 PLC 输入类型和传感器输出类型不匹配。S7-200 CPU 226 的输入是漏型/源型兼容的但我为了方便统一选了 PNP 型传感器。PNP 传感器输出高电平有效公共端接 0V信号线接 PLC 输入点当传感器检测到目标时输出 24V 到 PLC 输入。接线时传感器的棕色线接 24V蓝色线接 0V黑色线为信号输出接到 PLC 输入端子。有一说一国内工程项目普遍用 PNP 多一些国产传感器也好买选型别贪便宜买无品牌的杂牌光电检测距离虚标严重。电磁阀和接触器线圈这类感性负载在断开瞬间会产生很高的反向感应电动势如果不做处理直接打到 PLC 继电器输出触点上轻则触点拉弧烧黑重则击穿输出模块。解决办法是在每个电磁阀线圈两端并联一个续流二极管直流负载或 RC 阻容吸收交流负载二极管方向要反接正极接线圈的负极负极接线圈的正极。这个细节我一开始没在意结果调试第三天 Q0.1 通道就罢工了拆开一看触点表面全是烧蚀痕迹后来全部补装了续流二极管才算消停。3. 梯形图逻辑分拣动作的时间链与条件链3.1 分拣流程的时序设计这套系统的控制逻辑可以用一句话概括传送带匀速运转物料依次经过各个检测点PLC 采集各传感器状态通过延时控制推杆在合适时机动作把物料推入对应料仓。上料是人工放置的这一步没做自动上料机构。物料放到传送带入口后会先经过 I0.3 上料检测光电PLC 从这里开始追踪这个物料。接下来物料进入大小判断区I0.4 和 I0.5 两路光电的组合状态决定大小属性然后进入材质判断区I0.6 接近开关决定材质属性颜色传感器通过 EM231 的 AIW0 通道采集决定了颜色属性。三段检测结果都被记录到 M 存储区最后在对应推杆位置触发动作。整个动作链是靠定时器串联起来的。这里有一个设计原则要强调分拣系统最忌讳在物料还没到位时就执行推料所以每个推杆的触发都必须有独立的延时控制延时时间根据传送带速度和传感器到推杆的距离来算。我后文会给出完整的计算方法。3.2 定时器与位移换算先算传送速度再写延时这一节是整套系统最核心也最容易出错的地方。很多人上来就随便填个延时时间结果球没到推杆位置就推了或者推晚了已经错过料仓就是这个环节没算对。先说物理模型。传送带线速度 v 是固定的我实测为 0.25 m/s。上料检测光电 I0.3 到大小判断光电 I0.4 的距离 L1 是 0.3 米上料光电到大球推杆中心位置的距离 L2 是 1.2 米大球推杆到颜色推杆的距离 L3 是 0.5 米颜色推杆到材质推杆的距离 L4 是 0.5 米。物料经过上料光电后到达各执行点的时间分别是到大球推杆的时间T2 L2 / v 1.2 / 0.25 4.8 秒到颜色推杆的时间T3 (L2 L3) / v 1.7 / 0.25 6.8 秒到材质推杆的时间T4 (L2 L3 L4) / v 2.2 / 0.25 8.8 秒但直接按这个时间写定时器还不够还要考虑物料本身的长度补偿。我分拣的球直径约 5~8 厘米这意味着光电被遮挡的时间不是瞬间的会有约 0.2~0.3 秒的持续遮挡。如果以上料光电的下升沿物料离开检测点作为计时起点需要在计算值基础上加上物料长度的一半传播时间这样才能保证物料中心对准推杆中心。我当时是先按理论值设定然后低速试跑几次用小幅度调整的方法标定出了最终值大球推杆 4.95 秒颜色推杆 7.0 秒材质推杆 9.1 秒。3.3 判断条件的实现大小/颜色/材质在程序里长什么样大小判断的程序思路是组合逻辑。当 I0.4 和 I0.5 同时导通说明上下光电都被遮挡判定为大球置位 M0.0如果只有 I0.5 导通而 I0.4 不导通说明只遮挡了下方光电判定为小球置位 M0.1。这里需要强调的是两个光电状态必须在同一扫描周期内一起判断不然物料行进太快两个输入状态的采集时间差会导致误判。材质判断更简单。电感式接近开关 I0.6 导通说明是金属置位 M0.2未导通则是非金属置位 M0.3。颜色判断走的是模拟量比较。颜色传感器输出 0~10V 模拟量接 EM231在 PLC 中对应的数值范围是 0~32000。我在调试中实测的基准值黑色物料 AIW0 约 1800红色约 8600白色约 14500。程序里设定两个阈值AIW0 小于 5000 判定为黑色5000~11000 判定为红色大于 11000 判定为白色。用比较指令就可以不需要复杂算法。但要注意 EM231 模块上有一个 SF 指示灯如果模块没接好或通道开路AIW 值会漂到最大这种异常最好在程序里加一个范围检查超出合理区间就报故障。三组判断结果最终合成一个分拣结果字存在 M 存储区。比如 M10.0~M10.7 用于记录当前物料的属性组合后段推杆逻辑直接查这个结果字决定哪路推杆动作。这样做的好处是检测区和执行区分离开来以后要增加分拣维度只需要在检测区增加判断逻辑执行区不用大改。3.4 程序防错与手动/自动切换整套程序我分了三个程序块主程序 OB1、自动分拣子程序 SBR0、手动调试子程序 SBR1。主程序扫描周期内先调用手动/自动切换逻辑再根据切换开关状态调用对应的子程序。自动程序的核心是置位/复位逻辑加定时器。当一个物料从上料光电开始进入流程时用 SM0.51 秒时钟脉冲做计时参考不太精确所以我改用定时器中断方式用 T32 和 T96 这类 1ms 分辨率的定时器做高精度延时配合定时器中断在中断里推进流程状态。这种方式比单纯用普通定时器更稳因为普通 T37 定时器的分辨率是 100ms误差积累起来可能会差出半个推杆动作周期。防错方面做了三件事。第一是互锁同一时刻只允许一个推杆动作避免两个气缸同时伸出把物料卡死。第二是超时报警电磁阀得电后如果在 1.5 秒内没有收到推杆到位信号程序自动切断输出并报警。第三是断电记忆分拣中间如果急停重启后能恢复之前的状态我是把流程状态字存到 V 存储区利用 S7-200 的超级电容在断电时保持数据。手动调试子程序是为了单独测试每个气缸和传送带避免调试时频繁切自动模式。手动模式下 Q0.1~Q0.3 直接由对应的面板按钮控制程序里不做任何互锁之外的限制这样排查执行机构问题时特别方便。4. 组态王上位机监控、报警与报表一次说清4.1 设备配置与通讯参数组态王连接 S7-200 用的是 PPI 协议走串口通讯。这一步新手卡壳最多我详细说配置过程。打开组态王后在工程浏览器左侧树形菜单找到“设备”右键选择“新建”。设备驱动列表里选“PLC”厂商选“西门子”型号选“S7-200PPI”通讯方式选“串口”。接下来设置串口参数波特率 9600数据位 8偶校验停止位 1——这几个参数必须和 Micro/WIN 编程软件里设置的完全一致。PPI 地址默认是 2也就是 S7-200 CPU 的站地址这个在 Micro/WIN 里通过系统块设定默认就是 2一般不修改。物理链路方面我用的是 USB-PP 编程电缆一头插电脑 USB另一头插 CPU 226 的 Port1。注意 S7-200 的编程口是 9 针 D 型母座电缆对应的是公头买电缆时确认型号不要买错成 S7-200 SMART 的专用线。装好 USB 驱动后在设备管理器里确认虚拟串口号比如 COM3然后把组态王的串口参数里串口号改成 COM3。有个热词是“组态王创建协议组件失败”这个问题我调试时真的撞上过。出现原因一般是组态王的通讯驱动文件缺失或被杀毒软件误删。解决办法是从安装包里找到 KVSetup.ini重新注册 PLC 驱动组件或者干脆重装组态王。遇到这个提示时先别急着检查硬件大概率不是硬件问题别在通讯线路上浪费太多时间。4.2 变量定义与画面动画组态王里变量分内存变量和 I/O 变量两种。I/O 变量要和 PLC 寄存器地址关联我定义的变量如下表变量名数据类型连接设备寄存器类型寄存器地址读写属性启动按钮离散PLC_S7_200MM20.0读写停止按钮离散PLC_S7_200MM20.1读写传送带运行离散PLC_S7_200QQ0.0只读大球推杆离散PLC_S7_200QQ0.1只读颜色推杆离散PLC_S7_200QQ0.2只读材质推杆离散PLC_S7_200QQ0.3只读当前物料颜色整型PLC_S7_200VVW100只读大球产量整型PLC_S7_200VVW102只读小球产量整型PLC_S7_200VVW104只读金属产量整型PLC_S7_200VVW106只读报警标志离散PLC_S7_200MM30.0只读这里要注意 VW 地址的字节对齐问题。S7-200 的 V 区是按字节寻址的VW100 表示从 VB100 开始的一个字占两个字节 VB100 和 VB101。在 PLC 程序里写计数器的值到 VW100 后组态王读的也是这个地址格式要对齐不然会出现数值八竿子打不着的怪现象。画面设计上我做了四个画面主监控画面、参数设置画面、报警画面、产量报表画面。主监控画面用图库自带的传送带、气缸、传感器图形通过动画连接关联 I/O 变量。比如传送带电机图形用“填充”动画关联传送带运行变量运行时变成绿色停止变灰色推杆图形用“水平移动”动画关联对应推杆变量伸出时移动固定偏移量。整个画面做出来之后现场设备动作可以实时在监控画面上看到视觉效果很直观答辩时演示效果尤其好。4.3 报警、趋势与产量报表的落地报警这部分我用了组态王的“报警窗口”功能。先在数据词典里把报警标志变量定义好然后在画面里拖拽一个报警窗口控件设置好显示列。PLC 程序里一旦检测到故障比如推杆超时、料仓满就把 M30.0 置位组态王报警窗口立即弹出对应的报警文本。我把报警分成两类一类是系统故障红色显示需要人工确认复位一类是提示信息黄色显示比如“大球料仓已满请清空”。趋势曲线用的是组态王的“实时趋势曲线”控件。我引了一路 AIW0 的数值做成颜色传感器信号波形的实时曲线。调试时这个曲线帮了大忙——它能直观显示颜色传感器输出值的变化方便看信号是否稳定、阈值设置是否合理。正式运行后这个曲线也有实际意义可以观察传感器是否劣化漂移。产量报表我一开始想用组态王的报表系统后来发现简单场景直接用数据词典里的变量加“数据改变命令语言”就够。具体做法是PLC 程序里对每种分拣结果用计数器累加结果存入 VW100~VW110组态王定义对应 I/O 变量后在界面上放几个文本框关联这些变量就能实时显示各类产量。如果想存档历史数据组态王的 SQL 访问功能可以连接 Access 数据库把每班的产量定时写入数据表这部分我加了但篇幅关系不展开等以后单独写一篇。5. 调试实录与常见问题排查5.1 我的调试顺序三步走不慌不忙调试阶段最容易犯的错是一上来就在自动模式里跑全流程出了问题根本分不清是传感器、程序还是执行机构的锅。我总结了三个阶段的调试法强烈建议照这个顺序做。第一阶段单点信号测试。在 PLC 编程软件里用状态图表监控所有输入点和输出点。用手触发每个传感器确认对应的输入位能正确变化在状态表里强制各输出点确认气缸和传送带动作正常。这个阶段把硬件层面的问题全部排除掉包括接线错误、传感器损坏、电磁阀不动作等等。第二阶段手动模式单步验证。用手动调试子程序通过组态王上的按钮逐个控制执行机构。重点验证气缸推杆的行程是否到料仓正上方、气缸伸出和回缩的时间是否满足要求、传送带转速是否稳定。我在这里发现了一个问题大球推杆的气缸伸出速度太快料会被打飞。后来在气缸的两个进气口分别加装节流阀调整排气流量把伸出速度降下来才算解决。第三阶段自动模式全流程。前两步都没问题了才切换到自动模式试跑。先放一个物料观察整个动作链是否按照预期进行确认无误后再连续放多个物料测试。连续测试时注意物料间距如果放得太密前一个物料的延时还没结束后一个物料就触发了检测会造成逻辑混乱。我的做法是要求人工上料时保持至少 3 秒间隔入料口画了一条参考线做提示。5.2 通讯与组态常见问题通讯这块我把踩过的坑整理成一张速查表方便大家直接对照排查。现象可能原因处理方法组态王提示“创建协议组件失败”驱动组件未注册或被安全软件删除重新安装组态王或修复安装确认 KVSetup.ini 存在组态王设备变灰色读不到变量串口被占用或波特率不一致关闭 Micro/WIN 的通讯占用检查波特率是否同为 9600PLC 转入 RUN 后组态王断开CPU 通讯口被编程口占用使用 CPU 226 的 Port1 连接组态王Port0 留给编程数据忽大忽小乱跳变量地址字节对齐错误检查 VW 地址是否与 PLC 程序一致避免地址重叠组态王运行画面卡顿画面元素动画连接过多减少每页动画个数拆分多个画面切换加载组态王退出时死机历史数据库文件损坏删除组态王安装目录下的历史数据文件夹重新初始化这里特别说一下串口占用问题。S7-200 的编程口是半双工 RS485同一时间只能有一个上位机设备通信。如果你在 Micro/WIN 里边在线监控边开组态王两边抢同一个口组态王那边一定会掉线。正确做法是编程调试完成后把 Micro/WIN 完全关闭再启动组态王运行系统。虽然 CPU 226 有两个串口但一般 Port0 已经用于编程Port1 接组态王这样两边物理上就分开了。注意两个口的 PPI 地址不能重复默认都是 2要在系统块里把 Port1 改成 3 之类的不同地址。5.3 传感器和气缸的现场坑传感器误判是分拣系统调试时最磨人的问题。我调试时发现大小判断光电偶尔会把小球判成大球排查下来是环境光干扰——厂房顶灯的光线直射到光电接收器上导致灵敏度下降。解决方式分两步一是调整光电开关的敏感度旋钮让它在没有目标遮挡时勉强保持导通状态二是在光电安装位置加装遮光板用钣金件挡住来自上方的斜射光。即便如此现场光线条件复杂时建议再套一根黑色热缩管在镜头处做遮光筒效果立竿见影。颜色传感器的坑也值得单独说。颜色传感器测球面物体时因为球面曲率会导致反射光散射角度变化输出值会有波动。我实测红色小球转动到某一角度时 AIW 值能从 8500 跌到 7000但还没跌破 5000 的黑色阈值所以勉强能用。建议如果分拣对象是球面尽量选检测光斑小的传感器并在软件里做多次采样取平均值PLC 里用定时器每 50ms 采样一次连续采样 4 次取平均再比较稳定性好很多。气缸推杆不动作或动作慢的常见原因是气压不足和电磁阀线圈电压不对。我先检查气源压力空压机输出压力调到了 0.6MPa气缸工作压力足够。电磁阀用的是 24V DC 线圈要确认 PLC 输出是继电器型线圈电源正负别接反。如果气缸动作慢检查气管内径是不是太细——6mm 气管在长距离传输时流量损失明显我最后把推杆气缸的气管全部换成了 8mm 规格动作速度显著改善。5.4 常见问题速查表全系统版把这几天调试积累的问题整理成完整速查表放在最后方便大家打印出来对照排查。类别现场现象排查步骤启动按下启动传送带不转1. 检查断路器是否跳闸 2. 检查急停回路 3. 检查组态王启停变量映射检测小球物料被判成大球1. 检查上下光电的安装高度 2. 检查灵敏度旋钮 3. 检查环境光干扰检测颜色传感器读数跳变1. 检查传感器与物料距离 2. 加遮光罩 3. 程序做多次采样平均执行气缸推杆不伸出1. 检查电磁阀线圈电压 2. 检查 PLC 输出点状态 3. 检查气源压力执行气缸伸出过慢1. 检查节流阀开度 2. 检查气管口径 3. 检查气源压力程序推杆动作时机不对1. 重新核算定时器延时 2. 考虑物料长度补偿 3. 低速试跑微调程序系统运行中突然停机1. 查看报警窗口 2. 检查料仓满信号 3. 检查 M30.0 报警标志通讯组态王显示通讯超时1. 检查串口号 2. 检查通讯参数 3. 关闭 Micro/WIN 在线监控通讯重新上电后组态王连不上1. 检查 PLC 是否在 RUN 状态 2. 检查电缆连接 3. 检查串口驱动做完 No.883 这套系统我个人最大的体会是这类小规模分拣项目真正的难点不在硬件接线也不在梯形图本身而在于把传送带速度、传感器位置、定时器延时这三者之间的关系量化清楚。别凭感觉填延时参数先把传送带线速度测准再拿卷尺量好各检测点和执行点之间的距离用时间计算公式推一遍后面的调试会顺畅得多。另外一个建议是动手前一定要留足调试时间我原计划三天调完实际花了五天半多出来的时间基本都耗在传感器抗干扰和气缸速度调整上。如果你是做毕设建议把调试过程的照片、数据曲线、问题记录都保留好这些素材写论文时全是干货。这套系统如果还想继续扩展可以在执行机构上换成伺服电机加丝杆滑台做精确定位或者在入料口加一个振动盘实现自动上料代码结构我已经按模块化写的扩展起来不用推倒重来。
返回列表