Prev: Artesyn BAJA PPC 750
Next: FPGA Soft Core CPUs
From: pnachtwey on 15 Nov 2009 09:17 On Nov 14, 1:25 pm, RRogers <rerog...(a)plaidheron.com> wrote: > clip.......... > > > ... > > > read more » > > Okay I have uploaded the file that corresponds to step inputs. This > one is fairly clean.http://www.plaidheron.com/ray/temp > static-test.jpg > static-test.xls > Should get you there. If there is a permission problem let me know; I > will resolve. > > The .jpg is a graph to get the idea. T-11 is included to verify the > environment didn't change much. > The .xls is: sheet 1 graphs, sheet static-test is the long > experimental run covering about 4 hours > Cols: T-1,2,3 are the three direct thermistors used later for control > Cols: M,N,O are the PWM drives, 0-100%, to the corresponding heaters; > the trailing columns can be ignored > The intermediate columns are various sensors distributed away from the > actively controled points. > > Let me know and I (or you ) can cross-verify your model against other > experimental runs. > > I have other experimental data sets that are less clear; some are > basically random inputs to try to satisfy the sys-id programs. > > Ray When starting the identification process the system must be at steady state. The three temperature sensors are at different temperatures. That could be steady state for a combination of heater outputs but it is hard to know. If all the heaters started at the same ambient temperature then I know the system was at steady state. Peter Nachtwey
From: RRogers on 15 Nov 2009 09:53 On Nov 15, 6:14 am, "JCH" <ja...(a)nospam.arcornews.de> wrote: > "RRogers" <rerog...(a)plaidheron.com> schrieb im Newsbeitragnews:3d4e61d7-69d7-4431-a12a-88e31d5868f7(a)x5g2000prf.googlegroups.com... > > > > > clip.......... > >> ... > > >> read more » > > > Okay I have uploaded the file that corresponds to step inputs. This > > one is fairly clean. > >http://www.plaidheron.com/ray/temp > > static-test.jpg > > static-test.xls > > Should get you there. If there is a permission problem let me know; I > > will resolve. > > > The .jpg is a graph to get the idea. T-11 is included to verify the > > environment didn't change much. > > The .xls is: sheet 1 graphs, sheet static-test is the long > > experimental run covering about 4 hours > > Cols: T-1,2,3 are the three direct thermistors used later for control > > Cols: M,N,O are the PWM drives, 0-100%, to the corresponding heaters; > > the trailing columns can be ignored > > The intermediate columns are various sensors distributed away from the > > actively controled points. > > > Let me know and I (or you ) can cross-verify your model against other > > experimental runs. > > > I have other experimental data sets that are less clear; some are > > basically random inputs to try to satisfy the sys-id programs. > > Basically refering to > > *http://home.arcor.de/janch/janch/_control/20081123-real-system-model/ > > Can you approach the best possible ODE (process transfer function) in a > range of order <= 6? > > C6 y'''''' + C5 y''''' + C4 y'''' + C3 y''' + C2 y'' + C1 y' + y = K > > Decimal commas! > > Example data points: 30 > > 0 0 > 0,062 0 > 0,124 0,002 > 0,187 0,012 > 0,249 0,04 > 0,311 0,093 > 0,373 0,17 > 0,435 0,266 > 0,498 0,373 > 0,56 0,48 > 0,622 0,581 > 0,684 0,671 > 0,746 0,748 > 0,809 0,811 > 0,871 0,861 > 0,933 0,899 > 0,995 0,929 > 1,057 0,95 > 1,12 0,966 > 1,182 0,977 > 1,244 0,984 > 1,306 0,99 > 1,368 0,993 > 1,431 0,996 > 1,493 0,998 > 1,555 0,999 > 1,617 1 > 1,679 1 > 1,741 1 > 1,804 1,001 > > -- > Regards JCH > > My solution see down here: > > Decimal commas! > 1,048734E-06 y'''''' + 6,2427E-05 y''''' + 0,001548347 y'''' + 0,02048154 > y''' + 0,1523982 y'' + 0,6047773 y' + y = 1,000953 We seem to have a disconnect here. The system is MIMO which means that a finite model would have a set of simultaneous differential equations. In my case three independent variables drives and three dependent variables; leading to three simultaneous differential equations whose order varies with the number of state variables needed for an adequate description. Including the room temperature we actually have four drives. Including the various components inside the instrument (motors, solenoids, and doors) we would have more; but for the sake of simplicity I took 3 drives and 3 sensors and treated the other drives as disturbances. A design assumption that could have been rendered wrong by results; but then I would have had to add more sensors and possibly more heaters. The reason for the 3 heaters and sensors is to establish control over extended mechanical assemblies having basically an infinite numbers of internal states. Although the higher order states are rapidly suppressed by the heat equation when the metal thermal time constant is short. As an illustration: The simple case of the sun warming a piece of ground through the seasons. The result is basically that a 20 degC surface variation causes .5 degC variation 2 meters down with a six month lag; with the transfer function having an infinite number of poles and a continuously rolling phase shift going through 180 deg over and over. This imposes constraints when you are trying to hurry it up via control systems. These numbers are "representative" since I am remembering; I do have the book Bell Labs book somewhere that solves the equation. Alternately: Writing the Green's function for the internal temperature of a bar heated at the surfaces requires an infinite degree polynomial resulting in an infinite number of poles in the Laplace xform. But the significance of higher poles drops down exponentially, so they don't matter unless you try to wrap a control loop and close the loop with time constants that are comprable. And so on Ray
From: RRogers on 15 Nov 2009 09:54 On Nov 15, 6:14 am, "JCH" <ja...(a)nospam.arcornews.de> wrote: > "RRogers" <rerog...(a)plaidheron.com> schrieb im Newsbeitragnews:3d4e61d7-69d7-4431-a12a-88e31d5868f7(a)x5g2000prf.googlegroups.com... > > > > > clip.......... > >> ... > > >> read more » > > > Okay I have uploaded the file that corresponds to step inputs. This > > one is fairly clean. > >http://www.plaidheron.com/ray/temp > > static-test.jpg > > static-test.xls > > Should get you there. If there is a permission problem let me know; I > > will resolve. > > > The .jpg is a graph to get the idea. T-11 is included to verify the > > environment didn't change much. > > The .xls is: sheet 1 graphs, sheet static-test is the long > > experimental run covering about 4 hours > > Cols: T-1,2,3 are the three direct thermistors used later for control > > Cols: M,N,O are the PWM drives, 0-100%, to the corresponding heaters; > > the trailing columns can be ignored > > The intermediate columns are various sensors distributed away from the > > actively controled points. > > > Let me know and I (or you ) can cross-verify your model against other > > experimental runs. > > > I have other experimental data sets that are less clear; some are > > basically random inputs to try to satisfy the sys-id programs. > > Basically refering to > > *http://home.arcor.de/janch/janch/_control/20081123-real-system-model/ > > Can you approach the best possible ODE (process transfer function) in a > range of order <= 6? > > C6 y'''''' + C5 y''''' + C4 y'''' + C3 y''' + C2 y'' + C1 y' + y = K > > Decimal commas! > > Example data points: 30 > > 0 0 > 0,062 0 > 0,124 0,002 > 0,187 0,012 > 0,249 0,04 > 0,311 0,093 > 0,373 0,17 > 0,435 0,266 > 0,498 0,373 > 0,56 0,48 > 0,622 0,581 > 0,684 0,671 > 0,746 0,748 > 0,809 0,811 > 0,871 0,861 > 0,933 0,899 > 0,995 0,929 > 1,057 0,95 > 1,12 0,966 > 1,182 0,977 > 1,244 0,984 > 1,306 0,99 > 1,368 0,993 > 1,431 0,996 > 1,493 0,998 > 1,555 0,999 > 1,617 1 > 1,679 1 > 1,741 1 > 1,804 1,001 > > -- > Regards JCH > > My solution see down here: > > Decimal commas! > 1,048734E-06 y'''''' + 6,2427E-05 y''''' + 0,001548347 y'''' + 0,02048154 > y''' + 0,1523982 y'' + 0,6047773 y' + y = 1,000953 We seem to have a disconnect here. The system is MIMO which means that a finite model would have a set of simultaneous differential equations. In my case three independent variables drives and three dependent variables; leading to three simultaneous differential equations whose order varies with the number of state variables needed for an adequate description. Including the room temperature we actually have four drives. Including the various components inside the instrument (motors, solenoids, and doors) we would have more; but for the sake of simplicity I took 3 drives and 3 sensors and treated the other drives as disturbances. A design assumption that could have been rendered wrong by results; but then I would have had to add more sensors and possibly more heaters. The reason for the 3 heaters and sensors is to establish control over extended mechanical assemblies having basically an infinite numbers of internal states. Although the higher order states are rapidly suppressed by the heat equation when the metal thermal time constant is short. As an illustration: The simple case of the sun warming a piece of ground through the seasons. The result is basically that a 20 degC surface variation causes .5 degC variation 2 meters down with a six month lag; with the transfer function having an infinite number of poles and a continuously rolling phase shift going through 180 deg over and over. This imposes constraints when you are trying to hurry it up via control systems. These numbers are "representative" since I am remembering; I do have the book Bell Labs book somewhere that solves the equation. Alternately: Writing the Green's function for the internal temperature of a bar heated at the surfaces requires an infinite degree polynomial resulting in an infinite number of poles in the Laplace xform. But the significance of higher poles drops down exponentially, so they don't matter unless you try to wrap a control loop and close the loop with time constants that are comprable. And so on Ray
From: RRogers on 15 Nov 2009 16:47 On Nov 15, 8:12 am, pnachtwey <pnacht...(a)gmail.com> wrote: > On Nov 14, 7:44 am, RRogers <rerog...(a)plaidheron.com> wrote:> I don't quite understand your approach; it seems different from what I > > had in mind. I have multiple sets of experimental data consisting of > > three stimulus/drive columns and three columns of resulting temerature > > data; together with a multitude of other columns of other temperature > > readings for thermal design of the overall assembly. > > My hypothetical approach to raw curve fitting type of modeling: > > Write out the ABCD equations with unknown coefficients and try to find > > the coefficients; which are linear (superficially) coefficients > > applied to the data. Having an adequate model in hand, then I thought > > I would use optim() to find the control gains in the closed loop. > > This is not what you are describing. My formulation was just a > > passing thought and certainly has a lot of problems I haven't > > resolved. > > Your comments don't fall in line with this, so why not tell me yours. > > Why not use the principle of superimposition. Test each heater with > respect to each sensor > and then find the FOPDT or SOPDT coefficients that work > For the first temperature sensor you have a FOPDT formula that looks > like > t1'=A1*t1+B11*u1(t-dt11)+B12*u2(t-dt12)+B13*u3(t-dt13)+C > Where: > t1 is the temperature a sensor 1 > A1 is the system time constant at temperature sensor 1. This is > basically exp(-t/tau1). > B11 is the input coupling of heater 1 to sensor 1. > B12 is the input coupling of heater 2 to sensor 1. > B13 is the input coupling of heater 3 to sensor 1. > u1(t-dt11) is the heater 1 signal for time t. > dt11 is the dead time from heater 1 to sensor 1. > C is the ambient temperature. It had better be the same for all > test unless the ambient temperature is really changing. > It is easy to ID B11 B12 and B13 if they are turned on 1 at > a time but the starting point should be ambient temperature or > some steady state. When done you would have this > t1'=A1*t1+B11*u1(t-dt11)+B12*u2(t-dt12)+B13*u3(t-dt13)+C > t2'=A2*t2+B21*u1(t-dt21)+B22*u2(t-dt22)+B23*u3(t-dt23)+C > t3'=A3*t3+B31*u1(t-dt31)+B32*u2(t-dt32)+B33*u3(t-dt33)+C > > All the coefficient could probably be ID at once but then it would > be much harder to get exact values. It is best to do small sections > at a time and rely on superimposition. > > The way I ID a system is like thishttp://www.deltamotion.com/peter/PDF/Mathcad%20-%20Sysid%20SOPDT.pdf > > 1. On page 1/10 I define the ideal SOPDT system. I chose different > value to to see how the well the system identification works under > different conditions Notice that there is dead time and I don't assume > all the poles are at the same location like others on this newsgroup. > 2. At the bottom of page 2/10 I generate the test data that is later > to be used for system identification. I add noise the to ideal data > just to simulate reality a bit. The CO(t) function is a few steps. > The function can be arbitrary but I have found that the excitation is > critical to the identification. Dead times and time constants are > determined more accurately if the are step or rapid changes. The gain > and ambient coefficients are determined more accurate if the are steps > at different levels. > 3. One page 3/10 I plot and save the generated test data. I can post > it on my FTP site for you to practice with. Notice that this data has > dead time and two poles that aren't at the same location. I could > have added more noise but the quasi-Newton method seems to filter it > out well. > 4. One page 4/10 the system identification is done. Mathcad's Minerr > function can be like either Scilab's optim() function or lsqrsolve > function depending on the option chosen. I chose the quasi-Newton > optimization which is similar to the optim() function. Runge-Kutta is > used to integrate the differential equation. The differential equation > doesn't need to be linear. I could easily put a none linear term in > there like one that changes the gain as a function of temperature. > This happens with heat exchangers because of the LMTD. Fluid systems > are often of the form > v'=g/m-K*v^2. It is easy to ID non linear system IF you know the > general form of the equation and just need to ID the constants. > Notice that the ID'd poles are closer together than the real poles. I > have notice that system identification tends to ID the poles closer > together than what they really are. Notice that I all ID a dead time > and an ambient temperature. This is something that JCH does not do. > At the bottom of the MSE(), mean squared error function, is where I > calculate the mean squared error between the estimated temperature and > the actual or test data temperature. The Minerr function adjusts > Kp,t1,t2,thetap, and C till the MSE is minimized. You can see the > results are not perfect but that is reality. > 5. On page 5/10 the actual or perfect response is compare to the > estimated response. The response looks close, almost identical, even > though the system identification puts the estimated poles closer > together. Also notice that a good system identification routine can > ID systems that are excited by more than just a step change. In fact > they must must be able to do system identification with arbitrary > excitation. Above I said the excitation is the key to doing system > identification. One key is the make multiple steps at different > levels. This is very important in computing the gain and computing > the gain when it isn't linear. Heat exchanger's gain changes because > of LMTD. ( log mean temperature difference ). > 6. On page 6/10 PID gains are calculated using the estimated plant > parameters found by system identification. My formula is a little > more complex that the IMC formulas but the response is faster/better > for the same closed loop time constant. I doubt the extra complexity > in the formula is worth the effort for most applications. > 7 Page 7/10 simulates the PID control of the original system using the > gains calculated from the system identification. Notice that feed > back noise is simulated as well as the dead time. > 8. Page 8/10. The simulation show the response. The response isn't > perfect because there was noise in the original data used to do the > system identification. The system identification is not perfect > because the poles are closer together than they should be and I > simulated noise on the feedback but this is closer to reality. > 9 Page 9/10 uses the internal model gain formulas that I got from thewww.controguru.comsite. They work well too and are much simpler they > don't work quite as mine. I should have provided a IAE value for my > gains and the IMC gains for comparison. > 10 page 10/10 shows the IMC response is a little slower but most would > be please with it. > > I would use the above technique one at time with each heater and > temperature sensor. Actually one can excite each of the heaters one > at a time but the data for the 3 temperature sensors at the same time. > > I posted a link to a scilab program that does the same thing many > years ago but no one seemed interested. > > JCH, you should copy this so your program can handle dead times, > arbitrary inputs, and poles that are not all at the same place. What > you appear to be missing the quasi-Newton code( BFGS) or Levenberg- > Marquardt code that allows you to do proper optimization. I bet you > use a grid search. > > Peter Nachtwey Peter, Sorry I didn't answer earlier; I was answering JCH and putting the data up. I considered the route you illustrated, and perhaps I should have tried harder. But in your example in the above text you implicitly assumed (by writing the equation that way) that a good description was accessible through a single state variable per heater/ sensor, and I ran into intellectual problems trying to have the flexibility for extension. I did read your earlier posting and will reread it. The problem I had was this: Suppose the correct set of terms for sensor one was: x'=Ax+Bu y=Cx+Du Where u is heater power, y is the sensor readings, and x is the internal state vector larger than u or y . Now a set of individual SISO readings and using supposition would result in individual state vectors xi and Ai,Bi,Ci,Di . Some the state vectors might be shared between the individual responses and some not. How do you determine which ones are shared or not? I am sure I can make up a circuit with discrete components that would illustrate this. This interpretation problem could be resolvable, but I didn't see how to do it. If I am missing your point please post an example with more state variables. It does seem as though some generalization of Thevin's equivalence circuit theorem might be possible and applicable. Maybe using Telegin's theorem? But these thoughts are just meanderings of my mind. Ray
From: RRogers on 15 Nov 2009 18:05
On Nov 15, 8:17 am, pnachtwey <pnacht...(a)gmail.com> wrote: > On Nov 14, 1:25 pm, RRogers <rerog...(a)plaidheron.com> wrote: > > > clip.......... > > > > ... > > > > read more » > > > Okay I have uploaded the file that corresponds to step inputs. This > > one is fairly clean.http://www.plaidheron.com/ray/temp > > static-test.jpg > > static-test.xls > > Should get you there. If there is a permission problem let me know; I > > will resolve. > > > The .jpg is a graph to get the idea. T-11 is included to verify the > > environment didn't change much. > > The .xls is: sheet 1 graphs, sheet static-test is the long > > experimental run covering about 4 hours > > Cols: T-1,2,3 are the three direct thermistors used later for control > > Cols: M,N,O are the PWM drives, 0-100%, to the corresponding heaters; > > the trailing columns can be ignored > > The intermediate columns are various sensors distributed away from the > > actively controled points. > > > Let me know and I (or you ) can cross-verify your model against other > > experimental runs. > > > I have other experimental data sets that are less clear; some are > > basically random inputs to try to satisfy the sys-id programs. > > > Ray > > When starting the identification process the system must be at steady > state. The three temperature sensors are at different temperatures. > That could be steady state for a combination of heater outputs but it > is hard to know. If all the heaters started at the same ambient > temperature then I know the system was at steady state. > > Peter Nachtwey Peter, Okay, I will post that experiment but it's not as clean. Since I only had shared access to the prototype I couldn't let the machine cool down long enough for a real restart, and (of course) the room temperature changed. These thermal systems have really long "tails"; some sections (plastic) absorb heat and let it out very slowly. Ray |