Sounds like the Proportional gain is too high. Lowering it will change the frequency less. The integral gain might also be too fast (it depends on the type of loop, sometimes the higher number means slower, sometimes it means faster) where it sees the big jump and thinks "whoa, I've gone way lower in a very short amount of time, I need to go full speed!" I would try decreasing the proportional gain first, and then increasing the integral time (see the controller's manual to know whether increasing or decreasing the integral value increases the integral time). Hopefully, a longer integral time will allow the signal to settle out a bit more, or at least the loop won't overreact so much. The Derivative could be coming into play here, too, but don't mess with it until you've messed with the P and I terms first, as it may be dependent on those. The Derivative may be the problem, too. Most loops can run "pretty good" without a Derivative, so I would actually try setting that to 0 first. If nothing changes or it gets worse, than the Derivative wasn't the problem.
In basic terms, a PID works this way:
P = How much the loop reacts each step, based on WHAT THE ERROR IS (difference between Setpoint and Value) right now.
I = Analyzes what the error is now compared to WHAT THE ERROR WAS the last time it checked (you change the interval that it checks), and adjusts the output to either increase or decrease according to what it found.
D = Analyzes the slope of the integral line and calculates WHAT THE ERROR WILL BE when the integral checks again. You change how much the Derivative corrects the output.