1

SIT (System Identification Toolbox) 내에서 작성된 Simulink에서 전달 함수를 가져오고 테스트 할 때 근본적으로 잘못된 것을 수행하고 있다고 생각합니다.Simulink와 System Identification Toolbox 전달 함수 사용

내가하는 일에 대한 간단한 예를 들려주십시오. 나는 진폭 1과 측정 된 출력을주는 1.5rad/s의 주파수로 12 초에서 25 초 사이의 오프셋 정현파 (offset sinusoidal wave) 인 입력을 가지고있다. SIT fit

I는 다음을 가지고 다음과 같은 구성의 조사를 시뮬 에이 전달 함수를 가져 시도 :

I는 다음 계약을 제공하는 간단한 2 극 1 제로 전달 함수를 생성하는 SIT 사용한 주파수의 정현파 입력 1.5rad/s 및 시작 t = 12. LTI 시스템 블록은 작업 공간에서 전달 함수 변수를 참조합니다. Simulink schematic

이 시뮬레이션을 13 초 동안 실행하면 블록 입력이 예상대로되지만 전송 후 함수 신호는 예상되는 것과 거의 일치하지 않습니다 그리고 크기의 순서입니다.

사전 : PRE signal

게시물 : 이 POST signal

누군가가 내가 잘못 가고 어디에 어떤 통찰력을 제공 할 수 및 시뮬에서 tf에서 출력에 표시되는 모델의 출력 거의 흡사을 표시하는 이유 앉다. 나는 통제 이론에 대한 기본적인 이해를 가지고 있지만 이것에 대해 이해하려고 고심하고있다.

+0

다음은 각각의 전후 전송 함수 범위입니다. https://dl.dropboxusercontent.com/u/8037738/project/pre.PNG ; https://dl.dropboxusercontent.com/u/8037738/project/post.PNG – Jimog

답변

1

이것은 SimuLink와 SI Toolbox에서 사용 된 초기 조건이 다를 수 있습니다. 후자는 모델을 사용하여 초기 조건을 추정해야하며 Simulink는 사용자가 직접 지정하지 않는 한 초기 조건에 특별한 영향을주지 않습니다.

출력 신호가 사인파와 거의 유사하기 때문에 원본 신호가 주기적으로 나타나는 것처럼 보입니다. 주기적 정권에서, 초기 조건은 거의 효과가 없다. 당신은 당신의 모델을 더 오랜 시간 동안 시뮬레이트함으로써 나의 가정을 검증 할 수 있습니다. 결국 당신의 신호가 당신의 데이터에서와 같이 정확한 진폭과 위상 지연에 도달하면 초기 조건이 잘못되었음을 알게 될 것입니다. 어쨌든 도구 상자에서 예상 초기 상태를 얻을 수 있습니다. 나는 결과 객체의 InitialState 속성을 사용한다고 생각합니다. 잘못 될 수도

또 다른 것은, 당신이 (안 z 또는 q에서 라플라스 변수 s 한) 연속 시간 모델을 추정하는 경우에 시뮬링크에서 사용하는 시간 이산화이다.

편집 : 나는 당신이 시뮬링크는 MATLAB에서 c2d과 Simulink에서 아래와 같은 설정을 사용하여, 사용자의 CT 모델을 이산화하는 데 사용하는 것을 확인 추천이 경우. MATLAB에서 lsim을 사용하여 CT 모델에 대한 응답을 "시뮬레이트"할 수도 있습니다. 여기서는 이산화 방법을 지정해야합니다.

enter image description here

이 셋업은 당신이 CT 모델과 (이 경우 상태 공간 표현)을 이산화 변형에로드 할 수 있습니다.신호를 비교하면 사용하는 이산화 방법이 SimuLink가 사용하는 것과 동일한 지 여부를 볼 수 있습니다 (설정에서 설정 한 통합 방법에 따라 다름).

+0

장시간 시뮬레이션을 실행해도 출력이 예상 값이나 상관 관계에 도달하지 않았습니다. SIT의 GUI는 그래프 적합성을 표시 할 때 초기 조건을 예측하기 위해 'COMPARE (비교)'를 사용하므로 올바른 것으로 보입니다. 나는 초기 조건을 모으기 위해'tf'를 상태 공간 모델로 변환하고'FINDSTATES'를 사용하여 추정 된 초기 값을 수집해야한다고 믿습니다. 그러나, 나는 명확한 제로 초기 조건을 가진 새로운 tf를 계산하지만 이것은 SIM에서 나쁜 상관 관계를 보여 주었다. 고정 된 타임 스텝 솔버와 연속적인 tf가 문제를 일으키는가? – Jimog

+0

당신이 사용하는 해답은 당신이 가지고있는 결과를 지배적으로 결정할 수 있습니다. 저는 Simulink에서 이산화 (discretization)를 확인하기 위해 SL 도식으로 답을 구했습니다. – Egon

+0

초기 조건이 맞았다. 동일한 이슈를 가진 다른 사람들을 설명하려면 : 1) tf를 상태 공간 모델'sys_ss = ss (sys)'로 변환하십시오. 2) 모델을 idss 형식으로 변환하십시오. 'sys_idss = idss (sys_ss)'3) 모델과 데이터를 비교하십시오. 'state = findstates (sys_idss, data)'4) Simulink에서 LTI 블록을'sys_ss'와 함께 수집하고 상태를 수집합니다. 정말 고마워, 너는 이것이 에곤 (Egon) 문제라고 강조했다. – Jimog