April 11th, 2016, 05:35 AM  #1 
Senior Member Joined: Apr 2014 From: UK Posts: 892 Thanks: 328  Nonlinear control loop
I've designed a nonlinear control strategy which I can only describe as a PID control, with only the I component, which is nonlinear. I am struggling to define the function in a meaningful way and need some help The design is actually implemented in a FPGA, but a 'normal' software model would work as well. What I have is an error signal, simply the magnitude of 'Achieved'  'Demand' (the magnitude part is important, the direction the control moves is handled separately). I clamp this to sensible limits (similar to limiting the excursion in opamp electronic control). So far, so simple. Now I take this error and add an offset which I call Max_Rate (you will see why in a moment, hopefully). Now I subtract from it the maximum excursion value for the error. This gives me a variable whos' equation is: Max_Excursion  Min(Max_Excursion, Error) + Max_Rate As the error increases, the value of the variable tends towards Max_Rate, for small errors the the variable tends to Max_Excursion + Max_Rate Now here's the fun part: I use this variable as the timing value for a counter. Huh? Yeah, bare with me.... For large errors, the variable for the timer tends to Max_Rate, If this is the number of milliseconds between counts then we have a counter changing value at 1000/Max_Rate For small errors, the rate of change tends to 1000/(Max_Excursion + Max_Rate) So, for small error, the rate of change in control is small, big errors and we have a bigger rate of change. If we plot Error vs Rate of change in the control, we get a curve which I think is some form of 1/x (with a y limit), but I'm not sure how to prove it. If anyone can help untangle the mess I've made of this, I'd be grateful And yes, the control does work 
April 12th, 2016, 02:42 AM  #2 
Senior Member Joined: Apr 2014 From: UK Posts: 892 Thanks: 328 
Here's a graph showing the rate of change, Max_Rate of 10, Max_Excursion of 200 and a Demand of 500. The Xaxis is the Achieved (not labled), Y is the rate of change. As the achieved approaches the target demand, the rate of increase to the control decreases. I standard 'I' control would be a straight diagonal line through 500 on the Xaxis. There could be oscillation around the crossover point, but this isn't a problem as it's a minute amount, and is down in the noise when it it hits the real world in the intended application. 

Tags 
control, loop, nonlinear 
Thread Tools  
Display Modes  

Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Is it possible to think of a circle as a loop?  HawkI  Geometry  14  March 10th, 2016 06:51 AM 
Loop formula?  How_Rude  Number Theory  7  May 15th, 2012 03:23 AM 
While loop problem  daemonlies  Computer Science  6  January 13th, 2012 08:28 PM 
While Loop Problem  daemonlies  Applied Math  0  December 31st, 1969 04:00 PM 
While loop problem  daemonlies  Applied Math  3  December 31st, 1969 04:00 PM 