Hi Charlie, it took me a while to figure it out, but all you needed to do was:
1. point constrain the piston to the rod
2. then use the point constraint offset in the Y axis to move the piston back up where it should be (because it jumped to the pivot of the rod)
3. then if you break the pistons X and Z connections to the point constraint, it only moves up and down!
Unfortunately I can't attach the file because I use Maya 4.5, but did you get what I mean?