blog dds

2007.04.21

Modularity and Troubleshooting

A residual current device trips leaving the house in the dark. How do I fix the problem?

distribution panel
Modularity is my friend. First I bring down all the circuit breakers at the distribution panel. Then I bring up the residual current circuit breaker (known as ground fault circuit interrupter in the US), and then I bring up the breakers one by one. When I bring up the tenth one the residual current circuit breaker trips again, which allows me to pinpoints the problem at the sockets supplying the washing machine and the tumble dryer. Turning off the tumble dryer allows me to bring up the corresponding circuit breaker, which means that the fault is probably in the tumble dryer.

left side of tumble dryer top side of tumble dryer
My next step is to isolate the fault inside the tumble dryer. Opening the top and right panel of the dryer (a Siemens/Bosch WTL 5200 unit) exposes a number of cables plugging the various components together. I remove the dryer's plug from the socket and use a multimeter to measure the resistance between the earth and live. At 20KΩ it is no wonder the RCCB tripped. I then remove each one of the plugs distributing the main power to each part, starting with easiest and most suspect:

  • Motor
  • Electronics
  • Heating unit
It turned out that the problem was the heating unit. I access this by removing a panel on the back. As I clean the lint residing in it, I notice that the multimeter is now indicating an open circuit. Problem fixed!

Can we debug programs in the same way? Yes and no. For some types of programs, such those created out of shell pipelines, we can be readily disassemble them into parts and see what goes in and out of each part. Monolithic systems, written in C, C++, Java, or C#, are difficult or impossible to disentangle. In these cases the current state of the art is to build hundreds of test cases that know how to invoke and test each method or function. Although this helps troubleshooting, it strikes me as a waste of effort. It should be possible to attach general purpose testing tools to our programs, in the same way as one uses a multimeter, oscilloscope or digital analyzer in electronic troubleshooting. This would delegate test cases to the place where they are really needed: regression testing.

Read and post comments, or share through   


Creative Commons License Last modified: Saturday, April 21, 2007 7:06 pm
Unless otherwise expressly stated, all original material on this page created by Diomidis Spinellis is licensed under a Creative Commons Attribution-Share Alike 3.0 Greece License.