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支持中文变量,写起来比英文顺手多了。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐