I played around with the simulator I "built" found here:
https://forum.hosteng.com/index.php?topic=1925.msg16183#msg16183Granted, I have improved on that version a little over time, but it's still crude as far as figuring out where to stuff values for the simulator. I have a C-more Micro that I would usually use to access the simulator, but don't have it on hand.
Anyway,
Those slow swings look like either integral time is too short, or you have a diameter calculator that's hunting (tail wagging the dog.)
I would set Rate(D) to zero until it was proven it actually helps. Usually it hurts on a winder because the dynamics change too much as the roll builds.
If you have a diameter calculator, try to see if freezing it for short periods allows the PID to stabilize. That would be you doing this manually and watching, not some code trickery. If it does, you need to find a way to make it less responsive, yet not trail behind too much, especially at core.
If it's not a diameter calculation issue, increase the Reset(I) time. If that drops the amplitude of the oscillations, but increases the period, that's probably indicating it's contributing too much too quickly.
Ideally, you want the Gain(P) to be the main contributor to the trim. With I and D at zero, increase it until it gets unstable (these will be very quick oscillations) and then decrease it to stable and then decrease a little more. Then add I back to bring the dancer to setpoint. But start with larger values, say 20 sec and come down.
Then there is feedforward, which is simply
(Line Speed %) * (Core Diameter Inches) / (Actual Diameter Inches) = Spindle Speed Reference %
where 90% ref to the Spindle gives a core surface speed that matches Line Speed.
Now you add the PID output to the line speed ref and multiply by Core Dia / Act Dia. This keeps the PID from getting to much authority as the diameter builds.