While working for UL, I was tasked with programming a Festo pneumatic controller used for cycle testing. This system had all the physical components set up and wired, but had not been programmed. Using online resources, I learned the basics of PLC programming and from there learned the Festo software. I was able to finish the program so that the system could cycle a piston for a chosen number of times, with options for how to use the sensors.
However, the system was not able to be up to its full potential. Because of how old the components were, the software for the controller and the LCD screen and buttons wasn’t made anymore. The current version of the controller software was compatible with the older controller, so the basics could still be performed, but the LCD was completely unusable. This meant that to use the system, you had to go through a computer and changing parameters was much more complicated. I decided to design an improved system that would open up the full capabilities of the device. As of now, the designs have not been implemented as it is not clear whether the added benefit is worth the additional cost/time.
The first decision I made was to switch from a Festo based system to an Arduino one. Festo is not used by as many people and so there is not nearly as much documentation and support, both official and by users, as Arduino. It’s also a much more difficult and cumbersome system to use, partially because I am more used to line-by-line coding such as Arduino. It would be easier to program and easier to modify or repair in the future if needed. Even with replacing all the electronics of the system with Arduino parts (which would mean taking out the controller, LCD, and buttons and putting in a microcontroller, new LCD, keypad, and various electronics to allow the microcontroller to work with the high current solenoids), the cost would still be less than a third of the cost of getting a new Festo LCD, which may still not work with the older controller.
After, I started designing the new system, trying to get as much detail as possible to minimize the risk if I switched systems. As much as I wanted and Arduino based system, I didn’t want to be left with nothing. Below is the circuit diagram I came up with.
I also wrote code for the new system, which allowed the user to perform all tasks, from setting up pistons to following their progress, from the LCD and keypad, with no need for the computer. It also enabled the use of all 6 pistons and sensors, something that would have been much more convoluted in a PLC program. The best part was that due to the program’s nature, and the ability to comment, it could be expanded later on to encompass more pistons/sensors with minimal effort.
The pseudocode and actual code (in doc form) are below.
As of now, I have not had a chance to try the new program so all I can say is that it compiles, which is a start. If I get the opportunity to move forward with this project, I will update the site with the progress.