【Matlab】simulink에서 생성한 입출력 신호로부터 시스템 동정을 실시했다.

개요



simulink에 의한 1차 지연 시스템의 시뮬레이션 결과를 이용하여 시스템 동정을 실시하였다.
구체적인 흐름을 보여줍니다.
1:1차 지연계 전달 함수 생성
2: 작성한 전달 함수의 시정수로부터 시스템 동정하기 위한 M계열 신호를 생성
3:M계열 신호를 입력(input)으로서 simulink에 의해 전달 함수의 출력(output)을 보존
4: input과 output을 이용한 System Identification에 의한 시스템 식별
5: 시스템 식별 결과와 1에서 작성한 전달 함수를 비교

시스템 동정한 전달 함수와 1에서 작성한 전달 함수를 비교한 결과 거의 일치하고 있는 것을 확인했다.
상세를 이하에 나타낸다.

사용 소프트웨어



MATLAB 버전 9.9 (R2020b)
Simulink 버전 10.2 (R2020b)
System Identification Toolbox 버전 9.13 (R2020b)

1:1차 지연계 전달 함수 생성



기계적 모델을 기초로 이하 1차 지연 전달 함수를 설정했다
G(s) = \frac{1}{\frac{J}{D}s+1}

그러나
D = 0.0005
J = 0.001

시정수는 tau = J/D보다
2s가 된다
실제로 시뮬레이션 해 보면 확실히 시정수는 2s인 것을 확인할 수 있다
image.png
이번, 본 전달 함수가 동정 대상이 된다

2: 작성한 전달 함수의 시정수로부터 시스템 동정하기 위한 M계열 신호를 생성



동정 대상의 전달 함수의 시정수는 2s이므로 M 계열 신호의 조건은 이하에 설정했다
n = 9; % 시프트 레지스터 수
N = 2^n; %M 계열 신호 1주기당 데이터 수
Ts = 0.1; % 데이터 샘플링 주기[s]
p = 10; %M 클럭 주기의 배수:
Tm = Ts * p; %M 계열 샘플링 주기[s]

조건 결정에 있어서의 방향성은 이하 2개의 제약에 근거하고 있다
제약 1:
M 계열 신호의 입력에 의해 동정 대상의 응답은 정상치가 될 필요가 있다.
즉, 다음 관계를 만족해야합니다.
nTm > tau

tau: 시정수
※nTm은 M 계열 신호가 최대로 같은 값을 취하는 시간이 된다.

제약 2:
식별 대상의 스텝 응답 사이에 5 ~ 8 샘플 포인트가 들어갈 정도의 간격을 샘플링주기 Ts로한다.

동정 대상의 시정수는 2s이기 때문에 데이터 샘플링 주기 Ts는 0.1로 했다.
※20샘플도 들어가 버린다고 하는 돌입은 있지만. . .
시프트 레지스터 수 n = 9는 결정됩니다.
※참고문헌이 9였다.
제약 1에서 Tm을 1로 설정

보충
Tm=1이므로 샘플링 주기를 10배(p)시킨 값이다. 10 이하로하면 M 계열 신호가
곧바로 전환되어 정상치가 되지 않았다.

M 계열 신호 생성 코드를 이하에 나타낸다.

matlab.c
n = 9; %シフトレジスタ数
N = 2^n; %M系列信号1周期当たりのデータ数
Ts = 0.1; %データサンプリング周期[s]
p = 10; %Mクロック周期の倍数
Tm = Ts * p; %M系列サンプリング周期[s]


u = idinput(N,'prbs',[n,1/p],[-1,1]);
t =0:Tm:( length (u) -1) *Tm;
subplot(311)
stairs(t,u), axis([t(1) t(end) -1.2 1.2]);
xlabel('time[sec]')
ylabel('信号')
title('M系列信号');

subplot(312),plot(covf(u, N)); axis([0 N -0.5 1]);
xlabel('ラグ')
ylabel('相関')
title('自己相関関数');
subplot(313), periodogram(u);
title('パワースペクトル');

%ary_m_signal = [t,transpose(u)]; %配列生
m_signal = timeseries(transpose(u),t);
save('mat_m_signal','m_signal','-v7.3'); %matファイル生成


3:M계열 신호 입력(input)과 전달 함수의 출력(output)을 보존



simulink (아래 그림)에서 input과 output 저장
Ts는 0.1이므로 zoh는 Ts입니다.
image.png

작업 공간 저장 블록을 사용했다.
※작업 공간 저장 블록 설정 화면
image.png

보존 형식은 2차원 배열로 함으로써 다음과 같이 작업 공간에 보존된다
image.png
image.png

위 화면은 output만이지만 input도 마찬가지로 저장할 수 있다.

또한 입력과 출력의 파형은 다음과 같습니다.
image.png

4: input과 output을 이용한 System Identification에 의한 시스템 식별



input 및 output 데이터를 System Identification으로 읽어들입니다.
systemIdentification

image.png

input과 output은 simulink로 출력한 변수명을 넣을 수 있다
시작은 0
SampleTime은 0.1
image.png

전달 함수에 의한 추정 선택
Estimate->Transfer function
식별 대상의 전달 함수는 1 차 지연 시스템이므로
영점의 수는 0
극의 수는 1
에서 설정하고 식별 시작
image.png

5: 시스템 식별 결과와 1에서 작성한 전달 함수를 비교



동정 결과를 나타낸다.
image.png
이번 1에서 설정한 전달 함수는
G(s) = \frac{1}{\frac{J}{D}s+1}

J/D = 2이므로
G(s) = \frac{0.5}{s+0.5}

1에서 설정한 전달 함수와 거의 일치하는 것을 알 수 있다.

참고





도서: Matlab에 의한 제어를 위한 시스템 식별
책 : htps : // 보오 th. PM / 그럼 / MS / 1180601

미래



일단 시스템 식별 시스템은 여기에서 끝납니다.

좋은 웹페이지 즐겨찾기