AnsweredAssumed Answered

vrf PID and Deadbeat controllers

Question asked by VRFuser on Jun 17, 2004
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><META http-equiv=Content-Type content="text/html; charset=us-ascii"><META content="MSHTML 6.00.2800.1400" name=GENERATOR><STYLE></STYLE></HEAD><BODY bgColor=#ffffff><DIV dir=ltr align=left><DIV dir=ltr align=left><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2>If you're intent upon using a device with imprecision, then take advantage.  What I mean is define a simple linear control from the data you receive.  Data acquisition must be fast enough or the control must compensate for all areas of imprecision.  You will need the velocity and the acceleration from the <SPAN class=538214712-18062004>sensor </SPAN>data<SPAN class=538214712-18062004>, the more sensor points the better</SPAN>.  Essentially what you will build is an adaptive control.  Since you overshoot or undershoot you will need to adjust the control when near the set point.</FONT></SPAN></DIV><DIV dir=ltr align=left><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2></FONT></SPAN> </DIV><DIV dir=ltr align=left><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2>You<SPAN class=538214712-18062004>r</SPAN> logic must contain location (say the variable is X(t) you will need its value),  velocity(X'(t)=V, and the acceleration, X''(t) =A.</FONT></SPAN></DIV><DIV dir=ltr align=left><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2></FONT></SPAN> </DIV><DIV dir=ltr align=left><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2>Then work out the control scenario along the trajectory, something like:</FONT></SPAN></DIV><DIV dir=ltr align=left><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2></FONT></SPAN> </DIV><DIV dir=ltr align=left><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2>if X is x1 and V is v1 and A is a1 then U is u1</FONT></SPAN></DIV><DIV><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2>if X is x2 and V is v2 and A is a2 then U is u2</FONT></SPAN></DIV><DIV><SPAN class=192442512-18062004></SPAN><SPAN class=192442512-18062004></SPAN><FONT face=Arial color=#0000ff size=2>.</FONT></DIV><DIV><SPAN class=192442512-18062004></SPAN><FONT face=Arial color=#0000ff size=2>.</FONT></DIV><DIV><SPAN class=192442512-18062004></SPAN><FONT face=Arial color=#0000ff size=2>.</FONT></DIV><DIV><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2>if X is xn and V is vn and A is "an" then U is un</FONT></SPAN></DIV><DIV><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2></FONT></SPAN> </DIV><DIV><SPAN class=192442512-18062004><SPAN class=538214712-18062004><FONT face=Arial color=#0000ff size=2>Where U is the control.  Note each variable may be a vector.</FONT></SPAN></SPAN></DIV><DIV><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2></FONT></SPAN> </DIV><DIV><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2>If you wish to be fancy like the Japanese then include your i<SPAN class=538214712-18062004>m</SPAN>pre<SPAN class=538214712-18062004>cision</SPAN>, that is<SPAN class=538214712-18062004>,</SPAN> call each point for each variable a set of points that it could be with the value in question as the mid-point(don't have to be midpoint, I just like it there and I use a triangular shape for the set), choose a shape for your set that represents the data.  Then if a member of multiple sets take the arithmetic mean, make sure adjacent sets overlap.  Simpler would be to define a continuous value for set membership, that is a value from 0 to 1 where for X, membership in x1 is for the positive ramp ... oh this will take too much time.  </FONT></SPAN></DIV><DIV><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2></FONT></SPAN><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2></FONT></SPAN> </DIV><DIV><SPAN class=192442512-18062004><FONT face=Arial><FONT color=#0000ff><FONT size=2>So if you define controls for the above and track the deceleration then you will get close enough fast enough.<SPAN class=538214712-18062004>  This will also work for non-linear controls, which is the reason for it's existence.</SPAN></FONT></FONT></FONT></SPAN></DIV><DIV><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2></FONT></SPAN> </DIV><DIV><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2></FONT></SPAN> </DIV><DIV><SPAN class=192442512-18062004><FONT face=Arial color=#0000ff size=2>Rufus</FONT></SPAN></DIV></DIV><BR><DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><HR tabIndex=-1><FONT face=Tahoma size=2><B>From:</B> George Tyrrell [mailto:tdllc01@earthlink.net] <BR><B>Sent:</B> Thursday, June 17, 2004 12:01 AM<BR><B>To:</B> VRF<BR><B>Subject:</B> [vrf] Re: PID and Deadbeat controllers<BR></FONT><BR></DIV><DIV></DIV><DIV><FONT face=Arial size=2>Michael,</FONT></DIV><DIV><FONT face=Arial size=2></FONT> </DIV><DIV><FONT face=Arial size=2>Most all computers, especially those connected to a network, will have some erratic latency which will really disrupt a PID algorithm.</FONT></DIV><DIV><FONT face=Arial size=2></FONT> </DIV><DIV><FONT face=Arial size=2>I use Yokogawa UD550 PID controllers - ultra reliable, once they are set up, they run forever with no erratic performance.  I control pressures in a chamber using mass-flow control valves and vacuum pumps.  If the PID stalls, it can easily overpressure or underpressure.  The Yokogawa controller eliminates that problem.  Also, you probably don't have enough time to emulate all the capability that exists in these controllers.</FONT></DIV><DIV><FONT face=Arial size=2></FONT> </DIV><DIV><FONT face=Arial size=2>The interface is on RS-485, easily obtained with the NI PCI card or RE Smith RS-232 converters or B&B converters.</FONT></DIV><DIV><FONT face=Arial size=2></FONT> </DIV><DIV><FONT face=Arial size=2>By the way, don't get a controller on ModBus - you'll spend way too much time on the interface control.</FONT></DIV><DIV><FONT face=Arial size=2></FONT> </DIV><DIV><FONT face=Arial size=2>George Tyrrell</FONT></DIV><DIV><FONT face=Arial size=2>TestDynamics LLC</FONT></DIV><DIV><FONT face=Arial size=2>Thornton, Colorado</FONT></DIV><DIV><FONT face=Arial size=2></FONT> </DIV><BLOCKQUOTE style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>  <DIV   style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>   <A title=MFord@Generalmicrowave.com   href="mailto:MFord@Generalmicrowave.com">Ford, Michael</A> </DIV>  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=vrf@agilent.com   href="mailto:vrf@agilent.com">VRF</A> </DIV>  <DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, June 15, 2004 1:09 PM</DIV>  <DIV style="FONT: 10pt arial"><B>Subject:</B> [vrf] PID and Deadbeat   controllers</DIV>  <DIV><BR></DIV>  <DIV><FONT face=Arial size=2><SPAN class=167464917-15062004>Has anyone out   there ever tried implementing a <STRONG>PID</STRONG> (Proportional,Integral,   and Derivative) or <STRONG>Deadbeat temperature controller</STRONG> in   VEE.</SPAN></FONT></DIV>  <DIV><FONT face=Arial size=2><SPAN   class=167464917-15062004></SPAN></FONT> </DIV>  <DIV><FONT face=Arial size=2><SPAN class=167464917-15062004>I'm trying to   optimize a temperature profile routine using a  Sigma C4 temperature   plate. I'm need to reach my desired temperature in optimum time with minimum   overshoot. The catch is; it needs to be generic enough   to work in all cases regardless of DUT Mass and Thermal   characteristics.</SPAN></FONT></DIV>  <DIV><FONT face=Arial size=2><SPAN   class=167464917-15062004></SPAN></FONT> </DIV>  <DIV><FONT face=Arial size=2><SPAN class=167464917-15062004>My original plan   of attack was to monitor both the Temperature Plate and the DUT temperature   for rate of change (slope).</SPAN></FONT></DIV>  <DIV><FONT face=Arial size=2><SPAN class=167464917-15062004>Then, I   increase the absolute Plate setpoint to increase the DUT rate of   change(Slope). </SPAN></FONT></DIV>  <DIV><FONT face=Arial size=2><SPAN class=167464917-15062004>When the DUT   aproaches the desired temp, I decrease the absolute Plate setpoint to decrease   the DUT rate of change(Slope) to avoid overshoot.</SPAN></FONT></DIV>  <DIV><FONT face=Arial size=2><SPAN   class=167464917-15062004></SPAN></FONT> </DIV>  <DIV><FONT face=Arial size=2><SPAN class=167464917-15062004>As you might have   guessed this is easier said than done.  I need more thermal   resolution than I can supply thusfar. As I vary Temperature swings, Mass and   Thermal Characteristics, all of my solutions go to *#&!@@#.   </SPAN></FONT></DIV>  <DIV><FONT face=Arial size=2><SPAN   class=167464917-15062004></SPAN></FONT> </DIV>  <DIV><FONT face=Arial><FONT size=2><FONT size=+0><SPAN   class=167464917-15062004>One of our design engineers has suggested the PID and   Deadbeat solution, but the reading material provided is extremely dense. I'm   hoping one of you guys have already been there before I try and reinvent the   wheel.</SPAN></FONT></FONT></FONT></DIV>  <DIV><FONT face=Arial><FONT size=2><FONT size=+0><SPAN   class=167464917-15062004></SPAN></FONT></FONT></FONT> </DIV>  <DIV><FONT face=Arial><FONT size=2><FONT size=+0><SPAN   class=167464917-15062004>Thanks,</SPAN></FONT></FONT></FONT></DIV>  <DIV><FONT face=Arial><FONT size=2><SPAN   class=167464917-15062004></SPAN></FONT></FONT> </DIV>  <DIV><FONT face=Arial><FONT size=2><SPAN   class=167464917-15062004></SPAN></FONT></FONT> </DIV>  <DIV><FONT face=Arial><FONT size=2><SPAN   class=167464917-15062004></SPAN></FONT></FONT><FONT   face="Century Gothic"><FONT face="Century Gothic" size=2><STRONG>Michael   Ford</STRONG></FONT></DIV>  <DIV>  <DIV><FONT face=Arial size=2>Test Engineering</FONT></DIV>  <DIV><FONT face=Arial size=2>Herley Farmingdale</FONT></DIV>  <DIV><FONT face=Arial size=2>425 Smith Street Farmingdale, NY   11735-1198</FONT></DIV>  <DIV><FONT face=Arial size=2>(phone) 631.630.2000 ext 268  (fax)   631.630.2066</FONT></DIV>  <DIV><FONT face=Arial><SPAN class=284475519-02032004><FONT   face="Century Gothic"><A href="mailto:Michael.Ford@Herley.com"><FONT   color=#000000 size=2>mailto:</FONT></FONT></SPAN><FONT color=#000000   size=2>Michael.Ford@Herley.com</FONT></A></FONT></DIV>  <DIV><FONT face=Arial size=2></FONT> </DIV></FONT></DIV></BLOCKQUOTE>---<BR>You are currently subscribed to vrf as: rwarren@amti.net<BR>To subscribe send a blank email to "join-vrf@it.lists.it.agilent.com".<BR>To unsubscribe send a blank email to "leave-vrf@it.lists.it.agilent.com".<BR>To send messages to this mailing list, email "vrf@agilent.com". <BR>If you need help with the mailing list send a message to "owner-vrf@it.lists.it.agilent.com".---<BR>You are currently subscribed to vrf as: rsb@soco.agilent.com<BR>To subscribe send a blank email to "join-vrf@it.lists.it.agilent.com".<BR>To unsubscribe send a blank email to "leave-vrf@it.lists.it.agilent.com".<BR>To send messages to this mailing list,  email "vrf@agilent.com".  <BR>If you need help with the mailing list send a message to "owner-vrf@it.lists.it.agilent.com".</BODY></HTML>  

Outcomes