Case Histories

Home

 

 

Bar Code Reader Analysis

My client, a value-added-reseller and system integrator of bar code and computer equipment, had some installations that were experiencing some very annoying problems with their bar code readers. Occasionally, the readers would stop working and display random junk on their liquid crystal displays. These readers needed to be reprogrammed before they would work again. The customers, who depended on these readers for their manufacturing operations, were irritated. The manufacturer of the bar code equipment denied there were any problems with the equipment, and did not offer to solve the problem. My client asked me to look into the situation.

This turned out to be much more complicated than we had hoped. The bar code equipment was programmed with parameters stored in EEPROM, a relatively new technology at the time. One problem that designers took very seriously, especially in the early days of EEPROM, was accidental reprogramming or erasing of the part. I was given a schematic of the reader, and I found the control lines for programming the part were I/O pins on the microprocessor. This meant that all safeguards for accidental erasing or reprogramming the EEPROM had to be in the firmware; not a good idea. I did not have access to the firmware so I was not able to verify that adequate safeguards were incorporated during the power-up and power-down cycles.

In addition to the EEPROM, there was a static RAM chip that was maintained with a backup battery that contained the firmware for the reader. It was easy to infer that either the EEPROM or the RAM or both were being corrupted by something.

I looked at the power supply profile as power was turned on and off and found that there was a period of time during which the power supply voltage remained at a constant voltage that just happened to be very near the switch-point between battery backup and normal power. This looked like a candidate for causing corruption of data in the RAM chip.

Finally, I needed to find a way to reproduce the problem at will. I cycled the power on and off, and tried to cause spikes in the power lines but I was not able to reproduce the problem. Then I tried to lower the power line voltages and I found that if the voltage became very low, I could induce the failure by introducing noise on the power line. When I spoke to one of maintenance people in a plant that had severe problems with this reader, I learned the plant experienced power outages regularly and had a severe brown-out problem. It was not unusual for their power line voltages to run around 85 VAC.

I reported back to my client that I had found severe susceptibility to low power line voltages in the product and that the vulnerability was caused by a combination of hardware and firmware design. I was able to demonstrate the problem by causing it at will using a low line voltage and a vacuum cleaner as a power line noise source. Unfortunately, we really could not do anything to fix the problem, although my client did eventually get the bar code manufacturer to admit to the problems. Since that time, components have become more robust, and I hope these problems have become obsolete. But we can all take a good lesson in product design from this case: Take great care to handle unusual power cycling and power quality situations in a way that fails gracefully without damage or inconvenience to the user.

Case Histories | Home

 

  © 2003-2004, 2006 Val DiEuliis. All rights reserved.  Check Out Lunarpages Web Hosting.