1. 从零开始:为什么选择200smart PLC来做物料分拣?
大家好,我是老张,在自动化这行摸爬滚打十几年了,从最早的三菱、西门子S7-200,一直做到现在的S7-1200、1500,各种项目都接触过。今天想和大家聊聊一个特别经典,也特别适合新手入门和中小型项目实战的案例——用西门子200smart PLC来搭建一个智能物料分拣系统。你可能在培训教材或者网上看到过类似的案例,但很多讲得要么太理论,要么步骤跳得太快,自己动手时总卡壳。这次,我就把我自己带徒弟做这个项目时,从硬件选型、画图、写程序到调试的完整过程,以及踩过的那些“坑”,掰开揉碎了讲给你听。
首先得说说,为什么是200smart?现在市面上PLC种类那么多,三菱的FX系列,欧姆龙的CP系列,还有西门子自家的1200,不香吗?香,但场景不同。对于物料分拣这种场景,特别是教学、实验或者小批量产线改造,200smart有几个无法替代的优势。第一是成本友好,一套基本的CPU ST20加上一些数字量模块,价格非常亲民。第二是软件生态成熟,STEP 7-Micro/WIN SMART这个编程软件,对新手极其友好,指令库丰富,在线调试和监控功能直观。第三是稳定可靠,西门子的底子在那里,应对一般的工业环境,比如有点粉尘、震动,完全没问题。最后是扩展灵活,本身自带一些IO点,不够再加模块,还能轻松连接触摸屏和调速电机,正好契合我们这个分拣系统的所有需求。
那么这个智能物料分拣系统到底要干嘛呢?想象一下一条小型传送带,上面运送着不同颜色(比如黑色和白色)的物料块。系统需要自动识别颜色,然后把黑色料块推到左边的槽里,白色料块推到右边的槽里,如果检测到没物料(或者识别为其他颜色),就推到中间一个回收槽。整个过程要全自动运行,还能手动干预,万一卡料或者气缸出问题,要能立刻报警并停机,同时在触摸屏上清清楚楚地告诉操作员:“嘿,兄弟,这儿出问题了!” 听起来是不是挺有意思?接下来,我就带你一步步把它实现。
2. 硬件配置:手把手教你选型和接线
干自动化,硬件是骨架,搭不好后面程序写得再花哨也白搭。咱们这个系统,硬件清单我列在下面,并说说我的选型理由。
| 器件名称 | 型号/规格 | 数量 | 作用与选型要点 |
|---|---|---|---|
| PLC主机 | 西门子 S7-200 SMART CPU SR20 | 1台 | 自带12输入/8输出,刚好满足我们基础需求,性价比高。 |
| 触摸屏 | 西门子 SMART LINE 700 IE | 1台 | 7寸屏,和200smart是“官配”,通讯配置简单,画面组态方便。 |
| 光纤传感器 | 欧姆龙 E3X-NA11 光纤放大器 + 同轴光纤 | 2套 | 颜色识别的核心。一个用于检测有无物料(到位),一个用于区分颜色。 |
| 磁性开关 | SMC D-M9N | 6个 | 每个气缸配2个,用于检测气缸“伸出到位”和“缩回到位”。 |
| 单杆气缸 | SMC CDUJB10-30D | 3个 | 分别对应白、黑、无料三个分拣工位。选型时注意行程和缸径。 |
| 调速电机 | 国产减速电机 24V DC | 1台 | 驱动传送带。选带调速器的,方便在触摸屏上调节快慢。 |
| 开关电源 | 明纬 24V/5A | 1个 | 给PLC、传感器、气缸电磁阀供电。功率要留足余量。 |
| 断路器 | 正泰 2P 10A | 1个 | 总电源控制与短路保护。 |
这里重点讲两个关键器件。第一个是光纤传感器,它是系统的“眼睛”。我们买来的光纤放大器一般可以调节灵敏度。怎么用它区分黑白呢?其实原理是检测反射光的强度。你把光纤头对准白色物料,反射光强,放大器输出信号;对准黑色物料,反射光弱,不输出信号。但我们需要区分“白”、“黑”、“无”三种状态。我的做法是:使用一个传感器的两个输出通道(常开NO和常闭NC)。具体参数设置,比如原始文章里提到的“白色亮度750,黑170,无110”,这个数值是传感器内部显示的模拟量相对值。我们需要做的是:调节灵敏度旋钮,让传感器检测到白色物料时,NO灯亮,NC灯灭;检测到黑色物料时,NO灯灭,NC灯亮;没有物料时,NO和NC灯都灭。这样,我们就用一组传感器的两个数字量信号,组合出了三种状态,既节省了PLC输入点,又降低了成本。接线时,棕色线接24V+,蓝色线接0V,黑色线(NO输出)和白色线(NC输出)分别接到PLC的两个输入点上。
第二个是地址分配,这是编程的基石。很多新手容易乱,我建议你一开始就画一张表。根据我们的清单,总共需要12个输入(I点),4个输出(Q点)。具体分配可以这样规划:
- I0.0: 传送带前端光电传感器(检测物料进入)
- I0.1, I0.2: 颜色识别光纤传感器的NO和NC输出
- I0.3, I0.4: 1号气缸(白)的伸出到位、缩回到位磁性开关
- I0.5, I0.6: 2号气缸(黑)的伸出到位、缩回到位磁性开关
- I0.7, I1.0: 3号气缸(无)的伸出到位、缩回到位磁性开关
- I1.1: 手动/自动切换开关
- I1.2: 急停按钮
- I1.3: 手动复位按钮
- Q0.0: 传送带电机启动
- Q0.1: 1号气缸电磁阀(得电伸出)
- Q0.2: 2号气缸电磁阀
- Q0.3: 3号气缸电磁阀
注意,气缸电磁阀我默认用的是单电控的,即得电伸出,失电在弹簧作用下缩回。如果你用的是双电控阀(两个线圈控制伸出缩回),那么输出点就需要加倍。接线时,务必参照图纸,先接强电部分(断路器、开关电源),再接弱电(PLC、传感器),最后是PLC输出到中间继电器再到电磁阀,做好电气隔离。
3. 编程核心思想:模块化与IO映射,让程序更健壮
硬件接好了,电也通了,现在打开STEP 7-Micro/WIN SMART,开始最核心的部分——编程。我强烈反对把所有逻辑都堆在主程序里,那样后期调试和维护简直是噩梦。对于这个分拣系统,我采用模块化编程,把不同功能放到不同的子程序里,主程序只负责调度。这样结构清晰,哪块出问题就盯哪块。
在编写任何逻辑之前,我有一个非常重要的习惯,也是强烈推荐给你的最佳实践:先做IO映射。什么叫IO映射?简单说,就是不用PLC的实际输入点(I0.0, I0.1...)和输出点(Q0.0, Q0.1...)直接参与逻辑运算,而是先把它们转存到一片中间存储区(比如V区)的变量里,然后所有的程序逻辑都使用这些V变量。
为什么多此一举?我吃过亏。有一次在现场,设备运行半年后,连接前端光电传感器的输入点I0.0因为进水损坏了。按理说,换个输入点,把线接到I0.5空点上就行了。但糟糕的是,程序里几十个地方都用到了I0.0这个触点。我不得不在程序里一个个地查找、替换,既容易出错又耗时。如果用了IO映射,程序里用的都是“物料到位信号”(一个V变量,比如V100.0),那么我只需要在IO映射程序块里,把“物料到位信号”这个V变量的来源,从原来的I0.0改成新的I0.5,只需要修改一个地方,所有相关逻辑就自动更新了。这就是IO映射的巨大优势——将物理硬件与程序逻辑解耦,极大提升了程序的可维护性。
具体怎么做呢?我们在程序中建立一个子程序,命名为“IO_Mapping”。在里面写这样的逻辑:
// 输入映射
LD I0.0 // 前端光电传感器
= “物料到位” // 这是一个在符号表里定义好的V100.0的符号名
LD I0.1 // 颜色传感器NO输出
= “颜色信号1”
LD I0.2 // 颜色传感器NC输出
= “颜色信号2”
// ... 其他输入点依次映射
// 输出映射
LD “传送带启动” // V200.0
= Q0.0
LD “1号气缸动作” // V200.1
= Q0.1
// ... 其他输出点依次映射
这样,在后续所有的手动、自动、报警程序里,你操作的都将是“物料到位”、“颜色信号1”、“传送带启动”这些有明确意义的符号,而不是冷冰冰的I0.0、Q0.1。程序可读性也大大增强。
4. 程序块详解:手动、自动与报警的逻辑实现
接下来,我们分别构建手动、自动和报警这三个核心程序块。我会用最直白的语言和梯形图思路来解释。
4.1 手动程序块:调试与维护的利器
手动模式是设备调试和故障排查的必备功能。在这个模式下,操作员可以通过触摸屏上的按钮,单独控制每一个执行机构(传送带和三个气缸)的动作。逻辑其实很简单,但要注意互锁和保持。
以控制传送带为例,在手动程序块里,你需要做两个按钮:“传送带启动”和“传送带停止”。当按下“启动”按钮(触摸屏上的一个置位按钮),程序会置位一个“手动_传送带运行”的标志位(比如V300.0)。当按下“停止”按钮或触发急停、报警时,则复位这个标志位。这个标志位,最终会通过我们前面提到的输出映射,去驱动实际的Q0.0输出。
对于气缸控制要更小心一点。因为气缸是单电控的,电磁阀得电就伸出,失电就缩回。在手动模式下,我们通常做一个“点动”按钮。按下“1号气缸推出”按钮,就置位“手动_1号气缸动作”标志位;松开按钮,就复位它。同时,必须加入气缸行程的反馈进行互锁。比如,当磁性开关已经检测到气缸“伸出到位”了,那么即使手动按钮还按着,也应该自动复位动作标志位,防止电磁阀长期带电。同样,在气缸缩回状态,如果手动触发伸出,也要确保缩回到位信号是有效的。手动程序是安全的基础,逻辑一定要严谨。
4.2 自动程序块:分拣逻辑的核心大脑
自动模式是整个系统智能化的体现。其核心逻辑是:检测 -> 判断 -> 执行 -> 复位。我们以“白色物料分拣”这个分支为例,详细拆解。
- 启动与检测:当系统切换到自动模式,并按下“启动”按钮后,“传送带启动”标志置位,传送带运行。物料随传送带移动,经过第一个光电传感器(I0.0,我们映射为“物料到位”)时,产生一个上升沿脉冲信号。这个脉冲触发颜色识别流程。
- 颜色判断:在“物料到位”上升沿的时刻,我们需要读取颜色传感器的状态(“颜色信号1”和“颜色信号2”)。根据我们之前的设置:
信号1=ON, 信号2=OFF-> 白色物料信号1=OFF, 信号2=ON-> 黑色物料信号1=OFF, 信号2=OFF-> 无物料/其他 根据这个组合,置位对应的物料类型标志位,比如“当前物料为白色”(V401.0)。
- 物料跟踪与定位:仅仅知道颜色还不够,我们还得知道物料什么时候走到对应的气缸位置。这里我用一个非常经典的方法:移位寄存器。假设三个气缸工位是等间距的,我们可以用“物料到位”信号作为移位脉冲。当“物料到位”检测到上升沿,且此时“当前物料为白色”标志有效,我们就向一个移位寄存器(比如VB500)的最低位移入一个“1”。然后,用传送带电机每转动一定角度(或用一个固定的时间脉冲)作为移位时钟,让这个“1”在寄存器中向右移动。当这个“1”移动到寄存器的第2位(对应1号气缸工位)时,就产生“白色物料到达1号工位”的信号。这种方法比单纯用定时器更准确,因为它与传送带的物理移动关联更紧密。
- 执行分拣动作:当“白色物料到达1号工位”信号有效,并且1号气缸当前处于缩回状态(缩回到位信号ON),则触发“1号气缸动作”标志。气缸电磁阀得电,开始推出。同时启动一个定时器(比如2秒)。
- 动作完成与复位:气缸推出过程中,当“伸出到位”磁性开关被触发,我们立刻复位“气缸动作”标志,电磁阀失电,气缸在弹簧作用下开始缩回。当“缩回到位”磁性开关被触发,说明一个完整的分拣动作结束。此时,清除“当前物料为白色”标志,并为处理下一个物料做好准备。如果气缸动作过程中,定时器时间到但还未收到相应的到位信号,则触发报警(这部分在报警程序块处理)。
黑色物料和无物料的分拣逻辑与此完全类似,只是对应的标志位和最终动作的气缸不同。通过这样清晰的步骤,自动分拣的流程就被严密地控制起来了。
4.3 报警程序块:为系统装上“保险丝”
一个健壮的工业系统必须能及时发现和处理异常。我们的报警程序主要监控两类故障:物料堵塞和气缸动作超时。
物料堵塞报警:思路是,从第一个光电传感器检测到物料开始计时。在正常情况下,物料应该依次经过各个工位并被分拣走。我们可以设定一个总时间(比如20秒),从“物料到位”信号有效开始,启动一个定时器。如果20秒内,系统没有完成一次完整的分拣流程(例如,通过判断三个气缸的“缩回到位”信号是否依次动作过),则认为物料被卡在了某个位置,此时触发“物料堵塞”报警,并立即停止传送带。
气缸动作超时报警:这是更常见的故障。当程序发出气缸动作命令(如置位“1号气缸动作”)后,我们同时启动一个短时定时器(比如2秒)。在2秒内,如果检测到了对应的“伸出到位”信号,则正常复位定时器和动作标志。如果2秒时间到,还没有收到到位信号,说明气缸可能卡住、气压不足或磁性开关损坏,立即触发“1号气缸伸出超时”报警。气缸缩回的超时监控逻辑同理。
所有报警一旦触发,会置位一个“系统故障”总标志。这个总标志会立刻切断自动程序的循环流程,并复位传送带启动命令,让设备安全停机。同时,这些报警状态(哪个传感器堵了,哪个气缸超时了)都要送到触摸屏上显示出来,并伴有明确的文字提示和报警指示灯闪烁。在触摸屏上还需要设计一个“报警复位”按钮,只有在故障物理排除后,操作员才能手动复位报警状态,系统才允许重新启动。这样一套组合拳下来,系统的安全性就有了坚实的保障。
5. 人机交互:触摸屏组态与调试技巧
PLC程序是大脑,触摸屏就是脸面,一个好用的HMI(人机界面)能让操作员事半功倍。我们用西门子SMART LINE屏,配套的WinCC Flexible SMART V3软件来组态。
首先建立通讯连接,选择S7-200 SMART驱动,设置好PLC的IP地址(如果用的是带网口的CPU)。通讯成功后,就可以在画面上“绑定”变量了。这些变量就是我们PLC程序里用到的那些V存储区地址,比如“手动_传送带启动”(V300.0)、“系统故障”(V600.0)、“1号气缸伸出超时报警”(V601.0)等等。
你需要设计几个主要画面:
- 主监控画面:显示设备整体模拟图,传送带动画、三个气缸的实时位置(伸出/缩回)、当前检测到的物料颜色状态。用指示灯的颜色变化来显示运行、停止、报警状态。
- 手动操作画面:放置所有手动操作的按钮,如各气缸的点动伸出按钮、传送带启停按钮。关键点:这些按钮的“按下”和“释放”事件,分别对应置位和复位PLC里的手动标志位。同时,要把气缸的到位信号(如I0.3, I0.4)也显示在按钮旁边,让操作员一目了然。
- 自动运行画面:显示自动模式下的运行数据,如分拣计数(白色多少、黑色多少)、当前运行速度等。一个大大的“自动启动/停止”按钮是必须的。
- 报警历史画面:这是最重要的画面之一。用一个报警视图控件,关联上PLC程序里所有的报警标志位。当任何报警触发时,画面会自动弹出(或跳转到此页),记录下报警发生的日期、时间、具体内容(如“2023-10-27 14:30:15 1号气缸伸出超时”)。这个历史记录功能对于后续的故障分析和设备维护价值巨大。
- 参数设置画面:放置一些可调节的参数,比如传送带速度(对应调速电机的模拟量输出或频率)、气缸动作超时时间(如2秒可调)、物料堵塞判断时间(如20秒可调)等。将这些参数保存在PLC的断电保持区(如VB1000开始的区域),方便工艺调整。
调试阶段,我习惯先把触摸屏和PLC的通讯调通,然后在手动画面下,逐个测试每个执行机构是否能正确动作,反馈信号是否能正确显示。这步没问题了,再测试自动流程。在自动运行时,可以故意制造一些故障,比如挡住气缸不让它到位,看看超时报警是否准确触发,触摸屏报警信息是否及时弹出。这个过程可能会反复修改程序和画面,但却是确保系统可靠性的关键一步。
6. 工程实战经验与优化建议
最后,分享几个我在做这个项目和类似项目时积累的“干货”经验,希望能帮你少走弯路。
第一,关于传感器调试。颜色光纤传感器的灵敏度一定要在现场光照条件下仔细调整。白天和晚上厂房灯光不同,都可能影响检测结果。我的方法是:准备标准的白、黑物料样本,固定传感器位置,然后调节灵敏度旋钮,直到三种状态(白、黑、无)的指示灯状态稳定且区分明显。最好能在触摸屏上做一个信号状态监视页面,把两个颜色信号的真实状态显示出来,方便远程诊断。
第二,关于气缸速度与稳定性。气缸动作太快容易打飞物料,太慢又影响节拍。除了在气路上加装调速接头(单向节流阀)来精细调节伸出和缩回速度外,在程序里,气缸动作命令发出后,可以适当增加一个0.1-0.2秒的延时,再去检测到位信号。这给了气缸一个启动和稳定的时间,能避免因气压瞬时波动导致的误报警。
第三,关于程序结构的扩展性。我们这个案例是分拣三种状态。如果以后要分拣四种、五种颜色怎么办?直接在自动程序里复制粘贴分支吗?那样会变得很臃肿。更好的做法是,采用数据块和间接寻址的思路。将物料类型编号(1=白,2=黑,3=无...),对应的目标气缸编号,以及该气缸的动作参数,做成一个数据表。当识别出物料类型后,程序根据类型号去查表,自动调用对应的气缸控制逻辑。这样,增加新类型只需要修改数据表,主程序结构几乎不用动。这是从小项目迈向更复杂系统必须掌握的思维。
第四,抗干扰与接地。工业现场电磁环境复杂。PLC、传感器、触摸屏的电源一定要从开关电源单独引出,并且做好接地。信号线(尤其是传感器反馈线)尽量使用屏蔽线,屏蔽层单端接地。我曾遇到过一个诡异的故障,传送带电机一启动,颜色传感器就误触发。最后查了半天,是电机动力线和传感器信号线走在同一线槽里且没有屏蔽,电机启停的感应电动势干扰了信号。重新布线后问题立刻解决。
做这样一个完整的项目,从图纸设计、柜内配线、程序编写、屏面组态到现场调试,如果你能独立走通一遍,那么你对200smart PLC的理解、对自动化系统设计的认识,绝对会上升一个大台阶。它不仅仅是一个分拣系统,更是一个包含了传感、控制、执行、人机交互的微型工业自动化样板。遇到问题别怕,多查手册,多用编程软件的在线监控和状态图表功能,一步步分析,你会发现,那些看似复杂的逻辑,背后都是一些简单而坚实的原理在支撑。
423



被折叠的 条评论
为什么被折叠?



