Precision Valve and Automation (PVA) Produces industrial manufacturing robotic solutions for hundreds of companies all over the globe. The company has grown from humble beginnings at Rensselaer Polytechnic Institute to a major contender in the in the field of industrial robotics manufacturing. Filling contracts for A-list companies such as Apple, Samsung, Toshiba, GE and IBM just to name a few, puts PVA at the forefront of current technologies.
At the heart at every machine produced at PVA is the programmable controller. My internship focused on writing in Galil Digital Motion Controller (DMC) code and ladder logic used in Programmable Logic Controllers (PLCs) made by Micrologix and Unitronix. DMC code is a proprietary programming language used by Galil Motion Control Systems Inc. This language looks most similarly to assembly language utilizing two letter commands with or without parameters and the ability to jump to labels using conditional and unconditional jumps. The code is primarily written in notepad++ or similar notepad-ish program. The Galil has very limited resources, this put my computer science knowledge to good use. The controller can handle up to 8 threads running concurrently (well simulated anyway, but you get the idea), maximum allowed labels is 254, as is the limit on the number of variables. String output is limited to 8 characters per output request, and each line in the DMC main program can be at a maximum of 80 characters. IF statements can be integrated but take up to 3 times as long to evaluate versus conditional jumps, so whenever possible we shy away from IFs. The stack on each thread has a depth of only 16 making excessive pushing highly problematic.
Aside from their limitations the Galil motion controllers are pretty amazing. They give the ability to control the servo motors inside the machine to produce coordinated motion using encoder feedback, limit switches, and voltage regulation using a Proportional Integral Derivative (PID) feedback loop. This PID feedback loop is fairly complex but can be thought of as a way for the machine to adjust the voltage load on a motor automatically while at rest or in motion. While this feedback loop is integrated into the controller, you must ‘tune’ the loop based on physical conditions such as the weight the motors have to be moving. I learned this tuning process fairly well, and I could probably write 10 pages on it, so I’ll save the keystrokes and just give you a link:http://www.ecnmag.com/articles/2011/07/pid-based-servo-tuning-black-art-rocket-science-or-walk-park.
The other aspect I wanted to touch on was ladder logic. This is a programming language geared towards electrical engineers and basically set up like an electrical schematic. Voltage flows in from the left, and depending on the state of a sensor or variable, voltage can flow to the right side and ‘energize’ a bit changing its state. This is a whole different way of thinking about code. I basically had to throw most of my computer science knowledge out the window and start from scratch. But once you understand the ‘flow’ of the program, referring to the flow of this simulated voltage, coding in this language is pretty interesting, and even a little fun!
In closing I am continuing my internship this summer as I will finish my degree and transition to becoming a full time employee of PVA.
Jeffrey Leifer, CSMAT, Summer 2013 graduation