We had an engineer out on a service call last week to look at an Ima Edge Bander that was failing to start. The track that moved the panels through the machine would not move and seemed to be waiting on the run signal from the PLC to start.
So we go to look at the PLC and see if we can track down that run signal. Its a strange one. It was a Siemens S5 PLC, but the CPU was non-standard (part number 6es5 921-3wa14). there was no programming port, just dual eprom/ram module slots.
Luckily we'd run into this type of CPU before and knew that we could add an AS511 card to the rack and be able to hook up our laptop for programming.
So we do a bit of troubleshooting and discover that the tracks arn't starting because a flag was not being reset due to some bad information in some counters in the program. But here's the problem: we can't change the counter information, or modify the program in ram because the program is stored on the eprom modules.
Normally that wouldn't be an issue, we'd just modify the program and burn them to a new set of eprom modules. But in this case when we did that, the program would not run. the OB sections of the program would not process for some reason. We tried many different ways of doing this, and finally decided that our version of the Step5 software just could not create write modules that this particular PLC could read.
We called Siemens support, but they didn't seem to have much info on that CPU model, and they were as stuck as we were for a solution. nobody could understand why we couldn't make an eprom set for this PLC using our Step 5 software.
But remember, their original modules would process, just had bad info in the program.
Our solution was not obvious. We took the eprom chips off their original module and read them in a third party eprom reader. Then we made the programming changes we needed on a new set of eproms using the step 5 software and removed them from the module as well and read them into the PC.
Then we compared the images of the chips (byte by byte) and found where our changes were.
Luckily we only needed to change one line of code, and via trial and error we worked out what byte on the eprom did what in the program. This was an intensive and tedious endeavor.
We isolated the changes we needed to make and wrote a new set of eprom chips that included our changed code. We soldered them back into the modules and put them back in the PLC.
The PLC booted correctly and loaded the changed code into RAM just as it was supposed to. I took the PLC rack back to the customer site and installed it into the machine. which started right up and ran like a champ.
The moral of the story is that there are usually more than one way to solve a given problem. Just keep an open mind and surround yourself with brilliant people. They help a lot.