Best way to animate these train wheels?

I’m looking for the best approach to animating these train wheels. I’ve tried using a physics-based system with hinges, ballsockets, and prismaticconstraints, but it wasn’t ideal. I also tried updating the rotation of each wheel every Heartbeat, but because the center of each wheel is welded to the Train’s PrimaryPart, the train would rotate too. Is there any other method I could use?

I would also like it if the piston moved with the wheels too.

How are you moving the train?
If the wheels play a part in the physics, then i would let them be simulated by physics.

For the connecting rod you can use heartbeat to match up the rod at hidden attachments located on the wheels.

I’m using an invisible primary part with prismatic constraints attached to the track.

Then use a HingeConstraint on each wheel with a very small Motor MaxTorque value to get it going, but not enough to try to control it.
Look at a real train. The link rod is attached to a connecting rod using a hinge at either end. It pivots to connect the piston to the link rod which moves in a front to rear motion but around in a circle.