The customers complaint on the work order was that the drivers side power window, door locks, and power side view mirrors operated erratically, or would not operate at all. The vehicle in question was a 2002 Chevrolet Trailblazer. The wiring schematic below is only part of the puzzle as it only shows the power window circuit on the left front door.

The first thing I did was hook up a scan tool to the vehicle to see what codes were stored as the operation of the doors are controlled by the DDM(Drivers Door Module), PDM(Passenger Door Module), and for the rear doors the BCM.(Body Control Module)

As previous power windows were designed, a permanent magnet motor operates each of the power side windows. Each motor raises or lowers the window glass when the motor receives voltage. The direction the motor turns depends on the polarity of the supply voltage. The power window switches control the polarity of the supply voltage. What now is different is the various modules on this vehicle, including doors, communicate with each other using a Class 2 serial data line. When the ignition switch is in RUN, each module communicating on the class 2 serial data line sends a state of health (SOH) message every 2 seconds to ensure that the module is operating properly.

With the Tech 2 scan tool hooked up, I went and checked what Diagnostic Trouble Codes(DTC's) were stored in the modules on the Class 2 data line. There were codes stored in multiple modules. If you notice the DDM is not listed as a module in the Class 2 DTC check. There is a left front door, so it should be. Here is the code that is stored in the BCM. U1000 is a generic communication code that sets when other modules do not receive a SOH message from that module. When a module does not associate an identification number with at least one critical parameter within 5 seconds of beginning serial data communication, DTC U1000 will set.

I went to the left rear seat and checked the DDM fuse and also the circuit breaker associated with the door. In hindsite it would have been easier to just check the power circuits and ground at the DDM.

I next hooked up a lab scope (which is like a voltmeter that SHOWS voltage changes in a circuit over a measured time period) to circuit 1046. I saw what appeared to be normal communication on the data line. The problem with this is I have no way of knowing that what I'm seeing here is from the DDM, or from any of the other modules on the data line so I need to isolate the DDM from the other modules on the Class 2 data line to see if the DDM is communicating. What I did was to remove the splice clip from SP206, which is under the rear passenger seat. Here is the waveform from circuit 1046 to SP206.

What I now know is the wiring from the left front door to the rear seat, SP206 is intact, and the communication problem originates from the DDM and not any of the other circuits on the Class 2 data line. I ordered a new DDM after the customer had picked herself up from the floor, due to the cost involved.

Here is the same screen that was shown previously after installing the new DDM. Notice there are now 11 modules that show up on the data line. There is one more step to this as the new DDM needs to be reprogrammed using GM's software, TIS2WEB, and either a MDI, or the Tech 2. Once the that had been done the door operation was verified and the vehicle was given back to the customer.

What used to be fairly simple circuits are now controlled by modules, in some cases multiple modules. As the vehicles get newer, more of this scenario are becoming commonplace with manufacturers, which in turn adds to the complexity of the vehicle, and also eliminates who is able to tackle some seemingly simple tasks on your vehicle.

Rest assured GM's ONLY is staying current on this, and other emerging technologies, to be able to handle your needs today and also for the future!



(function (d, w) {var x = d.getElementsByTagName('SCRIPT')[0];var f = function () {var s = d.createElement('SCRIPT');s.type = 'text/javascript';s.async = true;s.src = "//";x.parentNode.insertBefore(s, x);};w.attachEvent ? w.attachEvent('onload',f) :w.addEventListener('load',f,false);}(document, window));