作者 | 主题 |
---|---|
Letham 至圣 经验值:13928 发帖数:2005 精华帖:43 |
楼主 2020-12-26 16:46:43
主题:【软件编程】给自己的程序来个“精装修” 这是一个很简单的单机应用系统,采用S7-1200系列PLC进行控制,应用场景见下图 黄色部分为此单机系统控制范围,缓存斗之前由整个工厂控制系统负责(S7-1500),单机控制系统通过Profinet智能设备方式与工厂控制系统进行通信。 简单介绍下工作步骤 1:工厂控制系统负责往缓存斗里放料,缓存斗下有个卸料闸门,打开闸门往移动料斗里放料。 2:移动料斗所在的称量位置可能装有称重单元,重量达到设定重量后,移动料斗,开始启动,往目标位置移动(目标位置来自于工厂控制系统PLC)。 3:到达目标位置后,移动料斗停止运行,同时打开放料闸门,当移动料斗下料位感应不到有物料后,开始关闸门。 4:闸门关到位后,移动料斗开始返回称量位置。 5:在不同的工厂称量位置可以是1...N中任意位置。 好简单的控制要求啊,就是一台电机和一台闸门的控制吗。老规矩了解控制要求后开始程序设计吧。 整个程序结构如下图 系统的IO点 程序架构定好了,开始每个软件模块编写吧,最重要的当然是移动料斗控制主程序了。考虑到之前客户供应商的控制程序出现过,某些信号失效的移动料斗一直往一个方向移动直到“撞墙”了电机还在工作的情况,所以,在硬件上,我们将客户原来系统中的用来保护用的起点终点漫反射开关更换成行程开关,当移动料斗接触到形成开关后,直接断开系统主电源,强制保护。 毛坯版的程序设计思路很简单 前面介绍过控制步骤了,这里只写一点毛坯版的移动料斗定位的程序思路。 1:移动料斗 根据目标位置 判断运动方向,同时开始检测定位计数开关,每次经过一个位置时,计数加1或者减1,实际位置和目标位置只相差一个位置时,系统减速。 2:当实际位置等于目标位置时停止,开始放料。 3:放料完成,关闸门,开始返回,同时系统开始计数,当实际位置和称量位置相等,移动料斗停止运行,一个工作循环结束。 按照上面的毛坯版程序进行调试后,出现了很多异常情况,不得不对自己的程序进行“精装修”了。 下面就调试遇到的主要问题,来说明“精装修”过程吧 1:移动料斗定位出错 情况1:移动料斗在往目标位置运动或者返回称量位置时 ,计数用的接近开关,可能超出了定位铁块,见下图; 毛坯版程序,电机刚启动的时候就监视计数,所以这种情况下,会导致定位出错。 解决方案:增加定位计数延时时间。 找到问题就装修吧,加个定时器,每次移动料斗启动后,延时一定时间开始监控计数(时间必须可调啊)。改完,下载,效果还是挺好的,定位出错的情况大大减少了。 情况2:移动料斗在移动过程中,驱动变频突然跳闸,同时,定位开关离定位铁块很近的情况 虽然定位出错的情况大大减少了,但是,在使用过程中还是会出现定位出错情况,经过观察,发现这种分析下程序推测可能原因就是,自己在程序里面加了启动延时,但是这延时条件不合适。 解决方案:再次装修,更改延时启动条件,仅在称量位置启动和目标位置返回时,启动计数延时; 情况3:某个位置的定位铁块安装位置不合适,有时定位开关经过时感应不到; 解决方案:增加定位计数信号超时时间。小车在移动过程中,从一个位置到另外一个位置的时间是固定的,因此,设定一个定位开关检测监控时间(时间可调)当超出这个时间后,没有检测到定位信号,系统故障,停止驱动电机,同时发出报警。 最极端的就是定位开关坏了,这种情况在客户前供应商的系统中出现过,偏偏起点和终点的保护开关,采用的是 漫反射广电开关,同时那个漫反射开关也失效了,导致了,移动料斗在不断地“撞墙“. 情况4:移动料斗在经过一个位置时,料斗会抖动,导致定位开关感应到多个定位信号(主要发生2根导轨连接处) 解决方案:增加定位计数信号屏蔽时间。移动料斗在经过一个位置后,不可能短时间内,就到达下一个位置,因此每次检测到一个位置后(DI的信号滤波在CPU硬件设置里面设置为10ms),在设定时间内多次检测到信号,系统不计数。 2:料斗返回时,残料过多 多次发现,移动料斗返回称量位置时,残料过多的情况。经过观察发现,当放料闸门在放料时,由于传感器精度以及传感器选型原因,明明料斗里面还有很多料,但是,料位传感器提示料斗已空。 解决方案:设定最小放料时间(时间可调),在最小放料时间完成后,同时,料位传感器提示料斗已空,料斗才开始关闸门返回称量位置。 经过了多次“装修”,程序总算稳定运行了!期间还对定时器的应用进行更改过以适配客户一些低固件版本的PLC。 附件中是移动料斗控制程序,因为本人偏爱文本编程,同时公司目前只使用STL和SCL,所以 ,S7-1200中程序是SCL编写的。
人生就像一场旅行!
|