I have a bunch of machines that use "slave" drives with a loop (and analog sensor) of a somewhat elastic stock between them and the "master". These machines do a lot of stopping and starting. Some of them are conveyor to conveyor. Others are conveyor to winder (with changing diameter). When I first came to this department, all of the slaves were driven directly by the output of a PID whose PV (input) is the analog loop height sensor. This worked, but required fast ramp rates in the drives, fairly high P-gain settings, and a tendency to hunt when at a steady speed. The biggest problem is stopping. The slave would not react to the master stopping until the loop height (PV) changed. The operators needed their machines to stop faster without stretching the product. Instead of using the PID to regulate the slave speed "all by itself", I calculated the minimum and maximum ratios that represent the speed relationship between the master and slave. I then use a PID whose output is scaled to a value between those limits, and multiply it by the master speed. That value is then sent to the slave. It required a couple of extra rungs to handle special situations. (ie. when the loop is full, the slave must move before the master is allowed a speed reference) I was able to "gear" the speed references together at a ratio determined by PID. Now, my gains are lower, the machine can be "short-cycled", and the loop heights are near constant. The example I posted is from a winder with changing diameter, and has the whole ladder for that station.
This isn't exactly "roll-yer-own", but I have two machines that are. In those machines, I used three photoeyes instead of analog loop sensors. These photoeyes bump the ratio value back and forth between limits to accomplish a similar result.
I have seen an example of "roll yer own" speed control between a master and slave that worked very well and was just a couple of math instructions. It was in an old honeywell controller that was replaced years ago. Basically, it took the loop height and created a steep ramp that would cause the slave drive speed to keep the loop height in a narrow range, but not at a constant setpoint.
I agree with Terry that PID is not always the best choice. I always try to look at the situation, find out what type of controls I have at my disposal, find out what level of control is required (in all situations) and program the simplest method possible to acheive that. Often, PID is the perfect choice.
ToddM...There's no better way to learn about PID than to put your hands on it. Set one up. Play with the gains. Watch what happens, then go read up on the details of how it works while the production folks clean up your mess. (just kidding)