Not to toot my own horn, but I wrote this a while ago:
http://www.chiefdelphi.com/media/papers/1823
It's aimed at the old control system, so the code examples don't apply directly (the new controller doesn't have the same limitations in regard to math complexity) but the concepts are still valid. I'm in the process of rewriting this to be a bit cleaner with the new control system as the basis for the examples, but it'll be pretty similar to my original paper.
As stated in the paper, please feel free to contact me directly via email, PM or anything like that if you have any questions at all.
A fair point, I wasn't very clear about how the D term works in this paper, I really didn't touch well on the fact that it's usually a negative coefficient to help counteract overshoot by regulating speed, but on some systems, I've found a positive value works out well, depending on exactly what response you need, and if overshoot is acceptable, etc. I will be making this much clearer in the next version of the paper.
I really hope that helps, and again let me know if you have any specific questions,
Matt