rawbus
Member level 1

Multiple SISO PID loops
I have a system that I'm trying to control using feedback that receives voltage(rms), current(rms), phase, and line input power. Currently, I put all these signals into separate PID loops and then take the smallest value of the outputs. This works fine in the steady state and most step changes. But, on the start-up transients I'm having problems with the speed of the system going between the four values. The output range is about 100-2047. What I see happen in my test case is that on start-up the system hits the phase limit. Being in the phase limit causes a max transfer of power, which over 500us causes the voltage to sky rocket. During this period the output of the voltage pid loop does not go below the phase pid loop output, which is sitting at about 1200. As a result, the voltage hits the shut-off level and turns off the system, instead of running at the voltage limit set point.
I know that playing with the k-values can help this, but then my steady state response gets affected as well, which is bad. I've been thinking about somehow limiting the integral value based on the current lowest output of one of the pid loops. The output is updated at the most once every 1us so I have plenty of time to update the register with a comparison operation before the next valid output. Is there a better way to handle these types of systems where some of the transient responses are radically different than the steady state?
I have a system that I'm trying to control using feedback that receives voltage(rms), current(rms), phase, and line input power. Currently, I put all these signals into separate PID loops and then take the smallest value of the outputs. This works fine in the steady state and most step changes. But, on the start-up transients I'm having problems with the speed of the system going between the four values. The output range is about 100-2047. What I see happen in my test case is that on start-up the system hits the phase limit. Being in the phase limit causes a max transfer of power, which over 500us causes the voltage to sky rocket. During this period the output of the voltage pid loop does not go below the phase pid loop output, which is sitting at about 1200. As a result, the voltage hits the shut-off level and turns off the system, instead of running at the voltage limit set point.
I know that playing with the k-values can help this, but then my steady state response gets affected as well, which is bad. I've been thinking about somehow limiting the integral value based on the current lowest output of one of the pid loops. The output is updated at the most once every 1us so I have plenty of time to update the register with a comparison operation before the next valid output. Is there a better way to handle these types of systems where some of the transient responses are radically different than the steady state?
Last edited: