一台刚接手不久的通力3000电梯,因在一次正常运行中遇到突然停电,彻底趴窝了,快慢车均不来,甚至连开关门都不来,故障显示0026,V3FOK灯不亮。由于我们和用户事先有约定,遇到这种情况用户自己请通力公司的人来解决(我们本不想接手这个烫山芋)。但当用户找通力时,通力的回答是拿银子来,2000大洋,问能彻底解决吗?答:不可能!用户不甘心,僵持了一个多月。最近被本人解决了。下面我把方法和经过公布如下。
一、 问题分析
一台好好的电梯怎么会这样呢?而且通力的人解决起来也很方便不要动任何东西,只要插上调试工具,按几个键就OK了。这能该变什么呢,只能改变内存中的数据,而这些数据代表了电梯的各种设置。只要将数据改对了,设置也就对了,电梯就OK了。
二、 解决办法
基于以上分析,本人想出了用通用编程器修改内存数据的方案。然而3000的内存是32K的NVSRAM,有32768个字节,怎么知道这个设置在哪个字节中?这个字节中的什么值才是正确的设置呢?我想到一台正常的同型号电梯,肯定包含了这个设置,肯定在相应的内存地址中,而且其值也肯定是正确的。理论上讲将它们比较一下就能找出来。但是内存中包含太多的内容,从楼层到井道信息,从开关门时间到运行曲线,即使是同层站的电梯这些值也是不同的。要从着么多不同的值中找出一个特定的值,非常困难。怎么办?开始我想到了用优选法,即用32768乘0.618得20250(4F1AH),把好梯中的前20250个数据(0000H~4F1AH)考到坏梯的相应内存区域中,然后看电梯的V3FOK灯是否亮。如果亮了说明这个设置在前20250个字节中(0000H~4F1AH),不亮则说明在后面的12518个字节中(4F1AH~7FFFH)。反复重复以上步骤,19次就能找出这个元凶。将其值按好梯中的内容修改一下,一切OK了!至此困扰了用户和我们一个多月的问题终于彻底解决了!
后记:在实际操作中我并没用优选法,而是简单的将32768除2得16384(4000H),因32768是2的15次方,每一次试验都能确定N-1次方的范围,因此15次试验就能确定了。一共用了1个小时左右。二进制文件的复制拷贝比较麻烦,不是人人都能操作