2
案例2:
现场用户反映,更换CPU后,S7-300通过集成的DP接口连接的驱动工作不正常了,控制的转速突然增加,造成部分生产的产品不合格。用户使用USS方式测试也没有问题,Zui终怀疑是DP与驱动设备通信中断造成转速发生跳变。
现场工程师到现场后按照用户的问题描述就测试DP通信了,结果什么也没有测试出来,在CPU的诊断缓存区中也没有掉站故障信息,就怀疑是不是这个批次PROFIBUS芯片有问题,这下就麻烦了,被带进沟里了,很深,爬不出来了,没有办法找到我这里进行咨询。我听了一遍问题的描述,排除产品问题,如果产品的问题,可以使用一个分布式I/O测试一段时间,如果没有问题,就可以说明产品没有问题。了,产品有问题也是可以正常工作一段时间或者通信完全不能建立,没有报DP从站故障,怎么也不能怀疑产品问题吧。不是产品问题那只能是程序问题了,我让现场工程师问一下用户,驱动是使用PID进行动态调速还是直接由主站发送一个设定的转速?结果是使用STEP7中集成的PIDFB41进行调速的。我让现场工程师再看看程序,是不是FB41在OB1中调用的,结果也是按照我猜想的那样,这样问题的原因就找到了。下面是问题的分析:大家还记得FB41有一个参数“CYCLE” 吧,这个参数是两次调用FB41的间隔,如图1所示。
图1 FB41参数
如果是1s,就需要在设定循环中断为1s的OB块中调用,说参数“CYCLE”与OB35设置的循环中断时间有关。“CYCLE”设定完成后才能决定积分时间和微分时间,例如TI要求 >=5* CYCLE,如果在OB1中调用,参数 “CYCLE” 、 “TI”和 “TD” 的值可能都是调试的结果而不是在正确条件下整定的值。TIA博途中新增加PID指令 “PID_Compact”(只适用于S7-1200/1500),早期版本中带有循环时间这个参数,如果设定的值与循环中断OB的设置时间不匹配,在自整定时会报错。新版本中,自整定会自动计算出循环时间,根据这个值再修改循环中断OB的设定值。新CPU更换后,扫描周期快了好几倍,原来的PID参数当然就就不适合了。还是这个原则,CPU快了反而出错了一定是程序编写的不严谨。从一点也可以看到,后续推出的软件也越来越智能,如果当时用户使用了S7-1500,整定时报错,可能就会避免上面的问题。