基于S7-1200的物料分拣控制系统设计与TIA Portal仿真实践
2026/9/12 12:41:25 网站建设 项目流程

搞过西门子S7-1200物料分拣控制系统的朋友应该都有体会:这活儿看着简单,实际上从传感器选型、气动回路设计,到TIA Portal里一段段捋顺逻辑,再到触摸屏仿真联调,每一环都能把人磨到怀疑人生。我最近正好完整走了一遍这套系统——基于S7-1200 PLC的物料分拣控制系统,带触摸屏仿真,还配套整理了一套设计文档,今天就把它掰开揉碎分享给你。

这套系统听起来名字挺长,说白了就是让传送带把混在一起的物料送到不同工位,通过传感器识别种类,再用气缸把物料推入对应料箱。适合自动化专业的学生做课程设计、毕业设计,也适合刚入门的PLC工程师练手。你不需要有真实的传送带和气动设备,用博途自带的仿真功能就能把整个控制逻辑跑通,触摸屏也能在电脑上模拟运行,对没有硬件条件的朋友特别友好。

我这次选用的核心是西门子S7-1200 PLC,组态软件用TIA Portal V16,触摸屏用WinCC做仿真。整套流程走下来,从新建项目到最后HMI动画联动,所有坑我都替你踩了一遍,下面按项目推进的顺序讲。

1. 方案选型与整体架构设计

1.1 核心需求拆解:分拣什么、怎么分、往哪分

做任何控制系统,第一步不是写程序,而是把需求拆清楚。这个项目的分拣对象通常设定为三类物料:金属件、深色塑料件、浅色塑料件。传送带把物料依次送到三个工位,每个工位负责分拣一种物料。

工位1装电感式接近开关,只有金属件才能触发它,PLC收到信号后控制气缸1把金属件推入1号料箱。工位2装颜色传感器,识别深色塑料件,触发后气缸2动作。剩下的浅色塑料件不触发任何传感器,直接跟着传送带走到末端,掉落进3号料箱。方案就这么简单,但展开之后涉及I/O分配、传感器选型、气缸控制时序、HMI监控报警,每一步都有讲究。

这里我建议你先把系统边界画清楚,哪些物料需要识别、怎么识别、识别后执行什么动作、动作后怎么反馈,四个问题回答完,I/O表基本就能定下来了。最怕的是上来就写程序,写到一半发现传感器信号不够用,或者气缸动作逻辑冲突,再返工就很痛苦。

1.2 为什么选S7-1200配博途,而不是其他组合

市面上PLC选择很多,200 SMART、S7-1200、S7-1500各有各的定位。这个项目我推荐S7-1200,理由很实在。首先是性价比,CPU 1214C DC/DC/DC自带14路数字量输入和10路数字量输出,物料分拣这种规模的系统基本不用扩展模块,一个主机全搞定。其次是博途生态的整合优势,PLCSIM仿真是免费的,WinCC触摸屏仿真也集成在博途里,你不需要买任何实体硬件,就能把PLC程序和HMI画面联合调通,这对学生党或者预算有限的朋友太重要了。

对比来说,200 SMART虽然便宜,但它的仿真能力和HMI联动不如博途方便,而且200 SMART的编程软件和WinCC是两套体系,联调要折腾很多额外配置。S7-1500性能确实强,但价格也高一个档次,对这个项目属于杀鸡用牛刀。S7-1200卡在中间,功能齐全、成本可控、学习资料多,是最合适的选择。

1.3 系统整体架构与I/O分配思路

整个系统分三层,最下面是现场设备层,包括传送带电机、传感器、气缸电磁阀;中间是控制层,也就是S7-1200 PLC;最上面是监控层,触摸屏HMI负责显示状态和下发指令。信号流向是传感器信号进PLC的数字量输入,PLC程序处理后通过数字量输出控制执行机构,同时把状态数据送给HMI显示。

我设计的I/O分配表如下,你可以直接参考:

信号名称I/O地址类型说明
启动按钮I0.0DI系统启动
停止按钮I0.1DI系统停止
急停按钮I0.2DI急停,常闭触点
工位1电感传感器I0.3DI检测金属物料
工位2颜色传感器I0.4DI检测深色塑料
物料到位光电传感器I0.5DI检测物料进入传送带
气缸1推出电磁阀Q0.0DO推金属件
气缸2推出电磁阀Q0.1DO推深色塑料件
传送带电机接触器Q0.2DO皮带启停

这里有个设计细节:急停按钮一定要用常闭触点接PLC输入,程序里也按常闭逻辑处理。这样一旦急停回路断线,系统会自动停机,不会出现断线了还照常运行的隐患。安规里这条是强制要求,课程设计面试时老师也爱问,一定要记住。

2. 传感器、执行机构与电气控制回路设计

2.1 传感器选型与安装位置的关键细节

传感器是整个分拣系统的“眼睛”,选型错了,后面程序写得再漂亮也白搭。金属件识别用电感式接近开关,这个东西只对金属物体敏感,塑料、木头、水都不触发,原理是高频交变磁场在金属表面产生涡流,导致振荡衰减。选型时注意检测距离,一般选4mm的规模型号就够用,安装时让传感器检测面正对物料经过的路径,距离控制在2~3mm,留一点余量防误触发。

深色塑料件用颜色传感器,这个要稍微讲究一点。颜色传感器的原理是发射光源照射物体表面,根据反射光的波长分布判断颜色,所以安装时要避免环境光干扰,最好加装遮光罩。检测距离一般10~15mm,角度要正对物料表面,倾斜角度大了会误判。我实测过,用红色光源的颜色传感器对深色塑料的分辨率最好,因为深色物体吸收光多,反射信号弱,更容易和浅色拉开差距。

如果你要分拣的物料要更多种类,比如同时区分红、绿、蓝三个颜色,那就要用带RGB通道的颜色传感器,输出三路开关量,PLC程序里再分别处理。这类传感器选型时主要看检测距离、响应速度和输出类型,NPN还是PNP一定要和PLC的输入模块对上,S7-1200的输入是高电平有效,建议选PNP输出,接起来不用转接。

2.2 气动推料机构与电磁阀控制细节

推料机构标配是气缸加电磁阀,这个组合在工业现场太常见了。气缸规格选缸径16~25mm、行程50~100mm就够用,推力公式F=PA,压缩空气压力按常用的0.5MPa算,缸径16mm的气缸理论推力约100N,推一个小物料绰绰有余。

这里有一个关键选择:电磁阀用单线圈还是双线圈。单线圈电磁阀也叫二位五通单电控,得电时气缸伸出,失电时靠弹簧复位,控制只需要一个DO点。双线圈电磁阀需要两个DO点分别控制伸出和缩回,好处是断电保持位置,但控制逻辑和接线都复杂一些。物料分拣系统动作节奏快、追求结构简单,我建议用单线圈,省I/O点,程序写起来也直观。

气动回路里还必须配节流阀调节气缸动作速度。推料动作太快会撞飞物料,太慢会影响分拣节拍,节流阀装在气缸排气口,通过调节排气流量控制速度。实际调试时先把节流阀开到一半,观察气缸动作是否平顺,再微调。对了,气缸动作时间大概是0.1到0.2秒,所以PLC的扫描周期不会成为瓶颈,真正限速的是传感器响应和传送带速度。

2.3 传送带电机驱动方案与启停控制

传送带驱动有两种常见方案,一种是三相异步电机加变频器,另一种是直流减速电机加中间继电器。前者调速方便、扭矩大,但成本高、接线复杂,还要配置变频器参数;后者结构紧凑、控制简单,用一个中间继电器就能实现启停。这个项目我直接推荐直流减速电机,理由是这个系统对速度精度要求不高,只要皮带线速度稳定在0.1~0.2m/s就行,直流减速电机加稳压电源完全可以满足,成本还能省一半。

电机控制回路由PLC的DO点驱动中间继电器线圈,中间继电器触点再控制电机主回路通断。为什么不让PLC直接驱动电机?因为PLC输出点的驱动能力有限,通常只有0.5A,而且感性负载通断时会产生反向电动势,直接接容易烧输出点。中间继电器起隔离和放大的作用,这是标准的工程做法。如果你用的是继电器输出的PLC,理论上有一定过载能力,但还是建议加继电器,毕竟烧一个输出点比换一个继电器贵多了。

3. TIA Portal 组态与PLC程序设计实战

3.1 博途环境准备与硬件组态要点

TIA Portal的版本我建议用V15 SP1以上,V16、V17都行,版本越新对高版本CPU的固件支持越好。新建项目时选择“创建项目”,然后添加设备,在PLC目录里找到SIMATIC S7-1200下的CPU 1214C DC/DC/DC,固件版本V4.0以上,这里有个小坑:PLCSIM仿真对固件版本有要求,太新的固件版本可能不被当前PLCSIM支持,装完如果仿真报错,先检查固件版本。

硬件组态时不需要任何扩展模块,默认的DI/DO地址就够用。这里重点说变量表,我习惯在PLC变量表里把每个I/O都命名好,启动按钮、停止按钮、传感器、电磁阀,名称用拼音或者英文都可以,关键是规范和统一。命名好的变量在写程序时直接拖拽使用,后面调试监控变量时一目了然,比你盯着I0.3、Q0.0这些地址猜含义要舒服得多。

组态HMI时,在设备列表里添加一个WinCC RT Advanced,型号选基础面板即可。触摸屏和PLC之间的连接要手动建一个“PROFINET连接”,我这里用的是仿真,连接类型选“HMI到PLC”,接口选PLC的PROFINET接口,IP地址设成和PLC同一个网段,比如PLC是192.168.0.1,HMI就设成192.168.0.2。这一步接错了,HMI仿真时就会一直报连接中断。

3.2 核心控制逻辑代码实现:从启保停到分拣动作

程序主体我分三部分讲:启停回路、分拣动作、计数逻辑。启停回路不用多说,就是经典的三段式启保停电路,启动按钮并联自锁触点,停止按钮串联常闭,急停也串联常闭。写PLC程序时注意用西门子的“线圈”和“常开常闭触点”指令,启动I0.0和自锁Q0.2并联后串联停止I0.1,最后驱动M0.0系统运行标志位。后续所有分拣动作都以M0.0为前置条件,系统停了所有气缸和电机都必须停。

分拣动作是整个程序的核心,这里最容易翻车。直接的想法是:传感器检测到物料,就推气缸。但实际不行,因为物料从检测点运动到推料位置需要时间,所以必须加延时。我用TON定时器做延时,工位1的逻辑是:电感传感器I0.3有信号,且传送带运行,就启动TON定时器T1,延时1秒,T1输出驱动Q0.0推气缸。延时时间由传感器到推料位置的距离除以皮带线速度算出,比如距离15cm,速度0.15m/s,刚好1秒。注意,如果传送带速度不稳定,延时就不准,所以实际调试时我会用触摸屏上的I/O域做延时时间修改,现场微调。

下面给一段SCL参考,用定时器和计数器的逻辑可以这样写:

// 系统运行标志 M0.0 IF "启动按钮" OR "系统运行" THEN IF NOT "停止按钮" AND NOT "急停按钮" THEN "系统运行" := TRUE; ELSE "系统运行" := FALSE; END_IF; END_IF; // 工位1金属分拣:延时后推料 IF "系统运行" AND "工位1电感传感器" THEN "T1延时中" := TRUE; // 启动TON ELSE "T1延时中" := FALSE; END_IF; IF "T1输出" THEN "气缸1电磁阀" := TRUE; // 推料 ELSE "气缸1电磁阀" := FALSE; END_IF;

实际项目里我多用梯形图,因为它更直观,但SCL写分段控制的逻辑也很舒服。搞懂这段逻辑的关键是理解“延时启动”和“延时结束”的区别,TON的常开触点在定时到之前不会闭合,用它可以自然实现“物料到位后延时推出”的动作。另外,推料动作要保持一段时间再复位,不然气缸刚伸出去还没把物料推到位就缩回来了,可以在气缸输出回路再串一个单脉冲定时器,把推出时间延长到0.5秒左右。

3.3 时序分析与防物料堆积策略

分拣系统的时序问题,本质上就是多个物料同时在传送带上运动,如何让各个工位的动作互不干扰。假设物料间隔2秒,传送带上的位置是固定的,工位1的传感器检测到第一个物料后延时1秒推料,这时候工位2可能正好检测到第二个物料,两个气缸可能同时动作,资源不冲突,但机械上要确保气缸1缩回到位后气缸2再伸出,否则可能推挤同一个料区。

我的做法是在程序里做过料互锁。用中间变量M1.0表示“工位1推料中”,M1.1表示“工位2推料中”。工位2的推料条件除了自身传感器延时,还要求M1.0为FALSE,也就是工位1没有在推料。这样就能避免两个气缸同时伸出的极端情况。如果你用的是一个PLC程序块,直接用一个布尔量互锁就行,不需要硬件层面的电气互锁,但如果是两台PLC协同工作,就必须在硬件回路里加接触器互锁了。

还有一个预防措施是超时保护。如果传感器检测到物料后,气缸在规定时间内没有完成动作(比如气压不足推不动),PLC应该报警并停机,防止物料堆积。这个逻辑用TON定时器加长延时实现,比如设定10秒,超时后置位报警位,同时停传送带。这个功能在仿真实操中不一定用得上,但设计文档里写出来,整套系统的完整度立刻上一个档次。

4. 触摸屏仿真设计与PLC联调

4.1 HMI画面布局与功能设计

HMI画面我做两个主画面,一个运行监控,一个手动调试。运行监控画面放最常用的元素:启动、停止、急停三个按钮,电机运行指示灯,两个气缸状态的指示灯,三个料箱的当前计数,系统报警文本显示。按钮直接拖拽自库里的“按钮”元素,关联PLC变量时注意“事件”页签里选择“按一下”还是“释放”,启动按钮一般用“按一下”触发,停止按钮用“按一下”也行,但急停按钮建议用“按下”触发,这样用户一直按住时能持续发信号。

手动调试画面,顾名思义是给每个气缸做独立的手动测试。这个画面放两个开关,分别控制气缸1和气缸2的电磁阀,操作方式选“切换”,就是点一下打开点一下关闭。手动调试功能极其重要,联调时第一步就是用这个画面测试气缸有没有动作,电磁阀有没有得电,等手动验证无误了,再切回自动模式跑完整流程,能省很多排查时间。HMI上的所有输入域记得设置数据格式和上下限,比如延时时间输入域设成整数,0~5000范围,找到了非法输入能自动拦截一部分,这属于很实用的细节。

4.2 PLCSIM与HMI仿真联调完整步骤

仿真联调是整个项目最出成果、也最容易出问题的一环,我给你完整步骤。

第一步,编译PLC程序。程序写完在TIA Portal里点“编译”,确保没有语法错误。如果用了中文字符做变量名,注意确认程序块里的变量名都被正确定义,否则上传会报设备名冲突。

第二步,启动PLCSIM。在TIA里选中PLC,点菜单栏的“开始仿真”,会弹出PLCSIM窗口,然后“下载”程序到PLCSIM。下载前选择“PN/IE”接口,访问点选“PLCSIM”。我以前就是这一步卡了很久,PLCSIM的访问节点和真实编程电缆不一样,直接选TCP/IP也是搜不到设备的,务必选PLCSIM专属接口。

第三步,启动HMI仿真。选中HMI设备,点“开始仿真”,WinCC Runtime会启动触摸屏模拟窗口。如果HMI连接配置对了,仿真窗口右下角会显示“运行系统”,PLC和HMI自动建立连接。如果显示红色的“连接中断”或者一个小插头图标,多半是PROFINET连接没建好,或者IP地址不在同网段。

第四步,模拟输入信号。PLCSIM窗口里有一个“变量表”,用来强制输入点。我们仿真时不能用真实按钮和传感器,就在PLCSIM的变量表里把I0.0改成TRUE,模拟按下启动按钮,I0.3改成TRUE,模拟金属物料到达工位1。注意:PLCSIM里输入点的值是可以直接改的,但I区变量最好用“强制”功能,不然程序扫描周期一刷新可能被覆盖。我是直接在仿真窗口中勾选这些输入,配合PLC的变量监控表,切换非常方便。

第五步,观察程序运行状态。回到TIA Portal的监控界面,你会看到梯形图里有绿色的能量流,Q0.0在气缸动作时置位,定时器的时间值在变化,HMI上对应的指示灯和计数也在更新。绿灯一亮,整套系统就跑顺了。

4.3 仿真联调中遇到的典型问题

HMI仿真窗口打开后,界面是纯英文还是中文乱码,取决于WinCC的语言设置,在“运行系统设置”里把起始语言改成中文就行,这个问题网上问的人不少。

PLCSIM里改了I0.3为TRUE,但梯形图上没反应。这个问题通常是I0.3被映射到了“外围设备输入”而不是“过程映像输入”,仿真时过程映像不自动刷新。解决方法是CPU属性里勾选“允许访问设备输入”,或者直接在程序中用“I0.3:PER”操作外设地址。我建议用变量监控表调试,直接监控I0.3地址看当前值,比盯梯形图更直观。

HMI上启动按钮按了没反应。排查步骤是:先看PLC程序里的系统运行标志位有没有置位,没有的话检查“系统运行”变量是否被错误地设置成保持性;再看HMI按钮连接的变量地址是不是和PLC变量表一致,最容易错的是把I0.1和I0.0搞反,按钮按下去监控I0.0却是0,那就把连接改过来。再检查按钮事件是不是关联到“置位”而不是“取反”,按钮事件的触发类型不对也很常见。

5. 常见故障排查与设计文档整理心得

5.1 现场和仿真中容易踩的坑

先说传感器抖动的问题。物料经过传感器时可能反复触发,尤其是颜色传感器,检测边缘处信号抖动很频繁。解决方法是程序里对传感器信号做滤波,用短延时忽略脉宽小于100ms的脉冲,或者用“沿”指令,上升沿触发一次后续动作,避免单个传感器信号连续触发多次推料。我实测用颜色传感器时,如果不加滤波,一次物料经过会触发两次气缸推出,计数直接翻倍,这个坑很多人都会踩。

再说计数器复位问题。料箱计数有两种复位逻辑,一种是触摸屏按钮手动复位,一种是当PLC检测到料箱满时自动复位。手动复位逻辑简单,按钮触发计数器复位指令就行。自动复位要考虑时序,比如设定计数到100自动清零,但实际生产中准确做法是计数到99就发出报警提示操作员换箱,而不是自动清零。为什么?因为清零后你就不知道这一批到底分拣了多少了。课程设计里我建议做成手动复位加满量程报警,更贴近真实使用习惯。

急停后的系统状态恢复也容易处理不好。急停触发后,气缸可能正在推出状态,恢复时如果气缸还是伸出的,物料可能卡在推料口。我的做法是在恢复运行时先执行一次“气缸复位”子程序,所有电磁阀断电,气缸靠弹簧自动缩回,再过1秒才允许传送带重新启动。这段逻辑不复杂,但体现了安全第一的设计思路,设计文档里值得大写特写。

5.2 一套完整设计文档该写哪些部分

如果你有“不配套设计文档若干篇”的需求,可以参考我整理的项目文档目录结构,这一套符合课程设计和毕业设计的主流格式:

  1. 系统总体方案设计:项目背景、需求分析、系统架构、功能指标。
  2. 硬件选型与原理图:传感器、气缸、电磁阀、电机的选型计算和原理图。
  3. I/O分配表与接线图:所有输入输出信号地址、接线端子图、电气原理图。
  4. PLC程序设计说明:程序流程图、各程序块功能说明、关键代码解释。
  5. 触摸屏画面组态说明:画面布局、功能操作说明、变量连接表。
  6. 系统仿真与结果分析:仿真步骤、运行数据、性能分析。
  7. 总结与展望:设计收获、不足与改进方向。

写文档时最容易犯的毛病是“程序截图一堆、文字说明没有”。记住,阅卷老师或者面试官看文档,重点是看你的设计思路和工程能力,程序代码只是你思路的实现。所以每个程序块都要配文字说明:“为什么用TON定时器而不是计数器”、“为什么互锁条件是M1.0而不是Q0.0”,这些分析才是亮点。图纸上一定要确保I/O地址和程序里完全一致,文档最加分的就是透露你考虑了“细节因素”,比如急停用常闭、传感器加遮光罩、节流阀调速度,这些都能让评审老师眼前一亮。

5.3 从课程设计到完整工程项目的差距

做完这套系统,很多人会发现自己只是会“抄程序”,离真正的工程项目还有一段距离。我理解的差距主要在三点。

第一是安全设计意识。课程设计里停就停了,但实际设备必须有急停回路、门锁联锁、超时保护、过热保护。PLC程序里就差一个段逻辑,设计完整度完全不同。第二是文档与现场调试的对应关系。图纸是设计意图,程序是设计表达,但现场往往有连线松动、传感器干扰、机械卡料这类硬件问题,调试时要能在图和程序之间快速定位,这个能力项目经验的积累,短期内不容易速成。

第三是节拍和效率意识。课程设计跑通就行,但工程项目要算一个班次能分拣多少件、气缸动作时间能不能跟上传送带速度、传感器响应时间是否够快。你可以试着在触摸屏上增加一个产量统计和节拍时间显示,做完这一步,你对控制系统“性能指标”的理解就会不一样。

写到这里,整套基于S7-1200的物料分拣控制系统从方案到仿真联调就算完整走了一遍。

我个人在实际操作中最深的感触是:仿真做出来只是第一步,真正学会调程序、查时序、想安全逻辑,才是这套设计最大的收获。如果你现在正准备做类似的项目,记住先定I/O表再写程序,延时参数一定要能微调,急停永远用常闭触点。最后再分享一个小技巧:调试时用PLCSIM强制变量模拟传感器信号时,多做几个“物料同时到达多个工位”的极端测试案例,能把互锁逻辑的漏洞全部暴露出来——这比只测简单物料通过一遍要管用得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询