plc水果称重分拣系统控制设计 西门子1200plc+HMI+io表+接线图 全套设计
plc水果称重分拣系统控制设计 西门子1200plc+HMI+io表+接线图 全套设计
上周刚把这个水果分拣的毕设答辩完,台下老师没揪着我接线图的小错误骂,总算松了口气。这次做的是西门子1200PLC+HMI的全套水果称重分拣系统,从画IO表、接线图到写程序调通,前后折腾了快俩月,今天把干货唠出来,省得学弟学妹再踩我踩过的坑。
首先得说清楚这套系统的逻辑:流水线过来的水果,先被光电开关扫到,传送带暂停一下,称重传感器采重量数据,根据重量分三级——小果(<100g)、中果(100~200g)、大果(>200g),然后对应的推杆把水果推到专属料箱里,完事传送带继续走。
先唠最基础的IO表,一开始我抄网上的模板差点把启动和急停搞反,后来对着接线图改了三遍才顺,最后敲定的配置大概是这样:
| 地址 | 设备类型 | 功能说明 |
|---|---|---|
| I0.0 | 常开按钮 | 系统启动 |
| I0.1 | 常闭按钮 | 紧急停止 |
| I0.2 | NPN型光电开关 | 检测水果到位 |
| AIW0 | 4-20mA称重传感器 | 采集重量模拟量 |
| Q0.0 | 中间继电器+传送带电机 | 控制传送带启停 |
| Q0.1 | 中间继电器+小果推杆 | 小果分拣推杆 |
| Q0.2 | 中间继电器+中果推杆 | 中果分拣推杆 |
| Q0.3 | 中间继电器+大果推杆 | 大果分拣推杆 |
这里要提一嘴,我一开始贪便宜用了PLC自带的晶体管输出接推杆,结果推了没三次就烧了——毕竟推杆的电磁阀电流不小,后来老老实实加了中间继电器,用继电器输出模块接管,总算没再出幺蛾子。还有接线图我是用EPLAN画的,答辩时老师还问我为啥全用NPN传感器,我说车间借的现成传感器就是这个,省得改电路,哈哈。
接下来是程序部分,我是用TIA Portal V17写的,硬件组态选的1214C DC/DC/DC,外加一块SM1231 AI4的模拟量模块(毕竟要采称重数据),HMI用的是KTP700精智面板,TCP/IP连的PLC,一开始连不上的时候差点砸电脑,后来发现是俩设备IP没在同一个网段,改完瞬间就连上了。
程序主要分两块:一块是称重数据处理,另一块是分拣逻辑。先说称重处理,一开始我直接把AIW0的值转成重量,结果读数飘得离谱,传送带一震动数值就跳,后来加了滑动平均滤波才算稳住。给大伙贴两段核心代码:

plc水果称重分拣系统控制设计 西门子1200plc+HMI+io表+接线图 全套设计
首先是模拟量转实际重量的逻辑,咱用的称重传感器量程是0~500g,对应4~20mA的电流,所以模拟量输入的0~27648对应0~500g,先减去4mA对应的偏移值5530,再做比例换算:
// FC1: 称重数据转换与滤波
L "AIW0" // 读取模拟量输入寄存器
L "Last_AI1" // 上一次的读数
L "Last_AI2" // 上上次
L "Last_AI3" // 上上上次
+ + + // 四次读数相加
L 4
/D // 取平均,省得用五次那么麻烦
T "Filter_Weight" // 滤波后的重量值
// 转成实际克数
L "Filter_Weight"
L 5530 // 4mA对应的模拟量值
-I
L 22118 // 27648-5530,20mA对应的差值
/D
L 500 // 传感器最大量程
*I
T "Real_Weight_g" // 最终显示的实际重量
这里我偷了个懒,只用了四次滑动平均,要是想更稳可以加到八次,不过答辩时老师没挑这个错,凑合够用。
然后是分拣逻辑的核心,根据重量给不同推杆发信号:
// FC2: 分拣等级判断
L "Real_Weight_g"
L 100
<=I
= "Flag_Small" // 小果标记位
L "Real_Weight_g"
L 200
<=I
= "Flag_Medium" // 中果标记位
AN "Flag_Small" // 不是小果才是中果
L "Real_Weight_g"
L 200
>I
= "Flag_Large" // 大果标记位
AN "Flag_Small"
AN "Flag_Medium"
写完这段程序我还自己测了半天,拿个砝码放上去,果然对应推杆会亮,当时开心得像个傻子。
然后是HMI的部分,我做了三个界面:第一个是启动首页,有个大大的启动按钮和急停按钮;第二个是称重监控页,实时显示当前重量、分拣等级,还有传送带的运行状态;第三个是参数设置页,可以手动修改分级的阈值,比如哪天要改分拣标准,直接在屏上改就行,不用再改程序下载。这里要注意,HMI里的变量要和PLC里的全局变量一一对应,不然屏上显示的就是乱码或者0,我一开始就犯过这个错,改了半天才发现变量名打错了一个字母。
对了,还有个小细节:光电开关的安装位置,一开始我装得太靠近传送带,导致水果还没到称重点就被检测到了,后来调了三次位置,总算让光电刚好在称重传感器正上方触发,完美踩了这个坑。
最后答辩的时候,老师就问了俩问题:一个是为啥用滑动平均不用PID滤波,我说我不会,另一个是接线图里的接地有没有接,我说接了,然后就过了。其实这套设计不算顶尖,但胜在全套东西都齐了,IO表、接线图、程序、HMI配置全有,改改就能直接用在实训或者毕设里。

要是有学弟学妹要做类似的项目,直接拿这套改改就行,省得像我一样半夜查手册查得眼睛疼,对了,程序里的变量名我都用的中文,TIA Portal支持中文变量,写起来比英文顺手多了。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)