[Scilab-users] System Identification for First order delay and dead time

Fukashiimo noguchi.japan at gmail.com
Tue Sep 27 16:30:57 CEST 2016


Dear Tim, 

Thank you for yor advise.

However, u is the step signal, such as 50% ==>60% ==> 50%.
u and y are sampled with constant interval, such as one second.



I made following Scilabe code, using time_id:

//
z=poly(0,'z');
h=(0.065/(z-0.934))*(1/z^10)//    <== 10 Sampling period dead time
u=zeros(1,100);
for i=10:1:100
    u(1,i)=2.0;
end
t=1:1:100;
rep=flts(u,tf2ss(h));
plot(t,rep,t,u)//  <== We can see the step type process input with amplitude=2 and its process response with 10 sampling period dead time.
k=find(rep<>0,1) //here the threshold has to be improved in case of noisy signal 
//H=time_id(1,"step",rep(k:$))
H=time_id(2,u,rep)
rep=flts(u,tf2ss(H));     
plot(t,rep,'.r')// <== We can see the process response by identified model.
H


h  =
 
       0.065      
    -----------   
          10  11  
  - 0.934z + z


H  =
 
      0.0265880     
    -------------   
  - 0.9779092 + z


h is the discreate transfer function to provide operation data.
H is the identified transfer function obtained from the opeartion data using time_id.

I have two issues.
1. H is not similar to h even the data doesn't include any noise. How I can obtain transfer function nearly same as h?
2. I would like to have continuous transfer function. How I should convert the discreate transfer function to continuous transfer function.


I am lokking for a solution for these two issues.
May I ask your advise again?


Thanks.


----- 元のメッセージ -----
差出人: "Tim Wescott [via Scilab / Xcos - Mailing Lists Archives]" <ml-node+s994242n4034622h58 at n3.nabble.com>
宛先: "Fukashiimo" <noguchi.japan at gmail.com>
送信済み: 2016年9月26日(月曜日) 04:07:52
件名: Re: System Identification for First order delay and dead time

Heh.  I just realized a better way to do this: 

I assume that you've sampled u and y at a constant rate, and that you 
have captured some reasonable amount of the response.  This will be 
perfect if u is periodic. 

If u is periodic, then for some integer number of periods, take U = 
fft(u) and Y = fft(y).  If u isn't periodic, then take FFT's of u and y 
after windowing them both with identical windows. 

Now calculate the frequencies for each bin of the above fft's. 

Define H(w) = ( K ./ (%i * tau * w + 1) ) .* exp(-%i * w * T). 

Calculate Ymodel = U .* H(w) 

Now, thanks to the magic of Parseval's Theorem, 
norm(Y - Ymodel) is the same as, or just a constant multiplier away from 
being, norm(y - ymodel) -- but you never actually have to compute 
ymodel. 

So optimize on tau and T as described before.  You should only have to 
take your FFTs once at the beginning -- the rest will be repeatedly 
calculating H(w) for the various values of tau and T (and K, if you want 
to be lazy and just toss it into optim, although it'll be much faster to 
determine it using least-squares fit). 

On Sun, 2016-09-25 at 01:07 -0700, Fukashiimo wrote: 

> Thank you for your suggestion. However, I am not sure how I should 
> formulate my Laplace domain equation. Could you please advise me more 
> specifically? 
> 
> Thanks. 
> 
> 
> 2016/09/25 午前9:33 "Tim Wescott [via Scilab / Xcos - Mailing Lists 
> Archives]" <[hidden email]>: 
>         I suggest that you roll your own cost function, and use 
>         optim. 
>         
>         Where possible, with optim, if part of the problem is 
>         nonlinear and part 
>         is linear, it's good to use a plain old linear least-squares 
>         fit for the 
>         plain old linear part.  In your case, that's K.  Tau and Td 
>         will have to 
>         be determined by optim. 
>         
>         The cost function should generate a vector for ymodel with K = 
>         1, then 
>         find the best fit for K with 
>         
>         K = y / ymodel; 
>         
>         then return a cost 
>         
>         cost = norm(y - K * ymodel); 
>         
>         wrap that all up in NDCost and then optim, and away you'll 
>         go. 
>         
>         On 2016-09-24 06:59, Fukashiimo wrote: 
>         
>         > Hello, 
>         > 
>         > I am looking for a Scilab software which is similar to 
>         Matlab System ID 
>         > tool 
>         > box. 
>         > 
>         > I would like to obtain values of parameters, Tau, K and Td 
>         for 
>         > following 
>         > first order delay + Dead time model from time series data. 
>         > ymodel = (K/(Tau*s+1))*exp(-Td*s)*u 
>         > ymodel: process output, u: process input 
>         > SISO continuous time 
>         > 
>         > Object function: Min ( (y-ymodel)^2) 
>         > 
>         > Could you please tell me which package I should use to solve 
>         this 
>         > issue? 
>         > 
>         > Best Regards, 
>         > 
>         > 
>         > 
>         > -- 
>         > View this message in context: 
>         > 
>         http://mailinglists.scilab.org/System-Identification-for-First-order-delay-and-dead-time-tp4034608.html 
>         > Sent from the Scilab users - Mailing Lists Archives mailing 
>         list 
>         > archive at Nabble.com. 
>         > _______________________________________________ 
>         > users mailing list 
>         > [hidden email] 
>         > http://lists.scilab.org/mailman/listinfo/users 
>         _______________________________________________ 
>         users mailing list 
>         [hidden email] 
>         http://lists.scilab.org/mailman/listinfo/users 
>         
>         
>         
>         ______________________________________________________________ 
>         If you reply to this email, your message will be added to the 
>         discussion below: 
>         http://mailinglists.scilab.org/System-Identification-for-First-order-delay-and-dead-time-tp4034608p4034619.html   
>         To unsubscribe from System Identification for First order 
>         delay and dead time, click here. 
>         NAML 
> 
> 
> ______________________________________________________________________ 
> View this message in context: Re: System Identification for First 
> order delay and dead time 
> Sent from the Scilab users - Mailing Lists Archives mailing list 
> archive at Nabble.com. 
> _______________________________________________ 
> users mailing list 
> [hidden email] 
> http://lists.scilab.org/mailman/listinfo/users 
-- 

Tim Wescott 
www.wescottdesign.com 
Control & Communications systems, circuit & software design. 
Phone: 503.631.7815 
Cell:  503.349.8432 


_______________________________________________ 
users mailing list 
[hidden email] 
http://lists.scilab.org/mailman/listinfo/users 





If you reply to this email, your message will be added to the discussion below: http://mailinglists.scilab.org/System-Identification-for-First-order-delay-and-dead-time-tp4034608p4034622.html 
To unsubscribe from System Identification for First order delay and dead time, click here . 
NAML




--
View this message in context: http://mailinglists.scilab.org/System-Identification-for-First-order-delay-and-dead-time-tp4034608p4034653.html
Sent from the Scilab users - Mailing Lists Archives mailing list archive at Nabble.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20160927/057cf973/attachment.htm>


More information about the users mailing list