基于STEP7-200SMART PLC在凤凰冲压设备 在线实时数据LED显示系统程序设计的心得
本系统设计原理,看似非常简单,原理上,只是在原设备的启动、停止按钮开关上增加一对触点,用此与原设备启停的同步信号输入PLC,获知设备所处的状态:运行或停止状态;另增加一个光电接近开关,用于计数产量,再根据运行时间计算设备的生产速度、计划完成率。
从硬件上,PLC选择的6ES7-288-1ST30-0AA0,数据转换选择仰邦的BX-6QX-M控制器,对PLC输出的数据进行D/A转换,以及将数字信号载波到视频信号上,支持LED显示。
然而,本程序的难点恰恰在这两点上,首先,因为第一次使用仰邦控制器,对它信心不足(事实上,在调试时,多次求证仰邦工程师),由于它只支持MODBUS RTU 232数据格式,在调试时用了一周时间,不断求证它对MODBUS RTU协议的支持度,最后终于成功通信,其关键在于设置控制器地址,与MODBUS RTU协议地址的一一对应。
其次,时间的准确读取和记录,是本程序设计的又一关键。将采集到的启停信号进行处理,然后输出显示其状态,好象很简单,但是,如何准确地记录本系统启动、停止的时间,在线设备任意时刻的启动、停止时间呢?在线设备启动、停止时,读取系统时钟,并把它存储备用,设备运行时长、设备生产速度,计划完成率,都需要这个时间作为计算依据。
其三,在线设备任意时刻启动时,是否对上一次运行参数进行清零操作,也是需要各设备上一次停止时间,与本次启动时间的间隔时长来计算和判断。
其四,因在线设备的数量较多,编写程序时,不可能对每个设备都去写一段相同的程序来运行,这样也不符合结构化编程的原则,只能自己编写通用的子程序来处理,
我曾考虑过用中断程序来处理子程序调用,但设备数量限制了中断程序的使用,上升沿中断和下降沿中断同时用,ST30 PLC只支持几个输入点的沿中断(I0.0~I0.3),不够用。
在子程序编写中,我们又不能使用沿触发、定时器、计数器,如何解决同一时刻发生设备启动、停止事件时,都能调用子程序来处理上述时间记录和计算相关运行数据呢?最后对“同一时间”的概念,进行细分,以毫秒级来看待是不是同一时刻启动、停止,采用状态步计数和轮询方式有效解决这个问题。
本设计中有两个地方使用了这种轮询进行处理,一是设备产量计算子程序的调用,另一个是设备任意时刻启动、停止时刻,运行数据的清零判断子程序的调用。
考虑不与被监视设备发生电气联接,没有采集原设备的输入信号和其PLC输出信号。
本设计的成功应用,感谢技成培训曾鑫老师的耐心指导,感谢技成陈紫利老师的支持,谢谢您们的帮助!
以上,只是本次实践中的一点心得,欢迎工程师们指正,如果有更好的设计思想和解决方法,请一定赐教。