3
案例3:
现场是一个零件加工设备,控制器使用一个S7-300的CPU。设备加工是按顺序执行的,程序使用Graph编写,Graph也特别适合顺控,走完一步后再执行下一步,每一步都有确定的操作任务,执行完所有步骤后返回再加工新的设备。现场问题描述是这样的:完整加工一个零件后再更换新的CPU,启动设备后,加工过程就停止了,换回旧CPU后操作正常。问题的描述是现场工程师告诉我的,我听了也不相信,这种事怎么可能呢?更换新CPU不就是想提高CPU的扫描速度,从而加快加工的节拍吗,按照常用的方法加延时,怎么也会正常启动吧,结果这回不好使了,没有办法只能自己去现场了。
到了现场后,等零件全部加工完后,更换CPU,下载程序并启动设备运行,设备好像尝试动了动又停止了,CPU没有报任何故障信息,换回旧CPU后设备可以正常运行。难道程序有BUG?更换新CPU并加延时程序,设备还是不能运行,说明现场工程师的描述是正确的。加延时程序也不行,说明不是程序的BUG,而是程序中的状态保持了,没有满足当前的条件不能运行。记得有一次到啤酒厂测试DP通信,控制也是一步一步按顺序运行,在没有全部运行结束前是不能停机测试的。借这段时间做了些准备工作,例如检查网络拓扑、DP接头是否带有编程接口等,结果卸下DP通信接口盖板时不巧碰到了CPU的启停开关,CPU切换到STOP模式,我赶紧再切换到RUN模式,表面一切正常,过程不往下执行了,就是条件不满足导致顺序被卡住了。现场看程序解决问题是不切合实际的,Zui后只能找熟悉程序的工程师手动一步一步往下走,完成一个循环后再切换到自动运行。有了这个经验后,判断CPU中原先DB块中肯定存储着状态值,下载硬件后导致状态变化而不能正确运行。先初始化GRAPH的实例化数据块,还是不能运行。既然这样了也别一个DB块一个DB块的初始化了,使用CPU上的开关直接全部初始化DB块,运行设备。设备也是经过了一段加工前的准备工作后才开始正常的加工工作。有点明白了,全新的设备开始运行时会进行准备工作,准备工作完成后记录一些信息到DB块中,第二次操作就不需要做准备工作了,更换CPU可能导致部分数据丢失(测试时使用新的MMC卡)。更换任何CPU都会导致加工过程中断的,还有就是程序是上载的,DB块中带有过程值,如果使用Zui初始的程序,可能也就没有问题了。