주요 콘텐츠

Simulink 서브시스템을 상태로 사용

Stateflow® 상태 내에서 Simulink® 서브시스템을 사용하여, 하이브리드 동적 시스템을 모델링하거나 주기적 시간 동특성과 연속시간 동특성 간에 전환하는 시스템을 모델링할 수 있습니다. Stateflow 차트에서 Simulink 기반 상태를 사용하여, 천이를 사용하는 전환 논리와 결합된 주기적 동적 시스템 또는 연속 동적 시스템을 모델링할 수 있습니다. 각 Simulink 기반 상태 내 차트로부터의 입력과 출력에 액세스할 수 있습니다. Simulink 기반 상태는 MATLAB®의 독립 실행형 Stateflow 차트에서 지원되지 않습니다.

Simulink 기반 상태 간에 전환할 때 Simulink 블록을 초기화하려면 Stateflow 텍스트 표기법을 사용하거나 Simulink State Reader 블록과 State Writer 블록을 사용합니다.

연결된 Simulink 기반 상태를 만들려면 라이브러리를 사용하여 Action Subsystem을 저장합니다. Action Subsystem을 라이브러리 모델에서 Stateflow 차트로 복사할 때 이 서브시스템은 연결된 Simulink 기반 상태로 표시됩니다. 라이브러리 블록을 업데이트하면 해당 블록이 포함된 모든 Stateflow 차트에 변경 사항이 반영됩니다.

Simulink 기반 상태를 사용하면 하이브리드 시스템을 모델링하기 위해 Stateflow에서 복잡한 텍스트 구문을 사용할 필요가 없습니다.

Simulink 기반 상태를 사용해야 하는 경우

Simulink 기반 상태를 사용해야 하는 경우는 다음과 같습니다.

  • 연속 동특성 또는 주기적 동특성이 포함된 하이브리드 동적 시스템을 모델링하려는 경우.

  • 시스템 동특성의 구조가 다양한 작동 모드(예: PID 제어기 모델링) 간에 크게 달라지는 경우.

논리를 간헐적으로 호출하는 시스템의 경우 Simulink 함수를 사용하십시오.

Simulink 알고리즘의 구조체는 크게 변경되지 않지만 특정 이득이나 파라미터가 여러 모델 간에 전환되는 경우, Stateflow 외부에 Simulink 논리를 사용하십시오. 이 알고리즘 유형의 예는 이득 스케줄링입니다. Model Gain-Scheduled Control Systems in Simulink (Simulink Control Design) 항목을 참조하십시오.

Simulink 기반 상태를 사용하여 장대높이뛰기 선수 모델링하기

이 Stateflow 차트는 Simulink 기반 상태를 사용하여 장대높이뛰기의 단계를 거치는 사람을 모델링합니다.

첫 번째 단계는 장대높이뛰기 선수의 도움닫기이며, 이는 Simulink 기반 상태 Run_up으로 모델링됩니다. 두 번째 단계에서 장대높이뛰기 선수는 장대를 꽂고 도약하며, 이는 Simulink 기반 상태 Take_off로 모델링됩니다. 마지막 단계에서 장대높이뛰기 선수는 바를 넘고 장대를 놓으며, 이는 Simulink 기반 상태 Fly로 모델링됩니다.

상태 Run_upFly는 카테시안 좌표를 사용하여 모델링하는 것이 더 쉽습니다. 상태 Take_off는 극좌표를 사용하여 모델링하는 것이 더 쉽습니다. 한 좌표계에서 다른 좌표계로 전환하려면 Simulink 함수 InitTakeOffInitFly를 사용합니다.

장대높이뛰기 선수의 도움닫기 모델링하기

차트 PoleVaulter의 디폴트 상태는 Run_up입니다. 이 상태는 점프 전까지 지면을 따라 달리는 장대높이뛰기 선수를 모델링합니다. 장대높이뛰기 선수는 $x$축의 -10에서 시작하고 0 방향으로 달립니다. 장대높이뛰기 선수가 지면을 따라 이동할 때 xy 평면에서 이 사람의 위치는 계속 변하지만, 달리기 상태는 동일하게 유지됩니다. 이 모델에서, Integrator 블록 PositionVelocity는 Simulink 함수 InitTakeOff의 State Reader 블록에 대한 상태 소유자 블록입니다. 이 서브시스템은 장대높이뛰기 선수의 카테시안 좌표를 출력합니다.

카테시안 좌표에서 극좌표로 변환하기

Run_up에서 Take_off로의 천이는 $x$축 상에 있는 장대높이뛰기 선수의 위치인 Run_up.p(1)이 -4를 초과할 때 발생합니다. 천이 InitTakeOff가 초기화되는 동안 State Reader 블록은 그 소유자 블록에 연결되고 함수가 실행됩니다. 이 함수는 PositionVelocity의 카테시안 좌표를 극좌표 r, theta, rdot, theta_dot로 변환합니다. 이러한 좌표는 State Writer 블록으로 출력되고, 상태 Take_off의 소유자 블록에 연결됩니다. Simulink 함수 InitTakeOff에는 다음 논리가 포함되어 있습니다.

장대높이뛰기 선수의 도약 모델링하기

$x$축 상에 있는 장대높이뛰기 선수의 위치인 Run_up.p(1)이 -4를 초과하면 Simulink 기반 상태 Take_off가 활성 상태가 됩니다. 이 상태는 점프의 도약 단계 중인 장대높이뛰기 선수를 모델링합니다. 이 서브시스템은 장대높이뛰기 선수의 카테시안 좌표를 출력합니다.

극좌표를 카테시안 좌표로 변환하기

Take_off에서 Fly로의 천이는 장대높이뛰기 선수의 각도 theta$\pi/2$ 미만이 되면 발생합니다. 천이 InitFly가 초기화되는 동안 State Reader 블록은 그 소유자 블록에 연결되고 함수가 실행됩니다. 이 함수는 극좌표 r, theta, rdot, theta_dot를 카테시안 좌표 xy_integxydot로 변환합니다. 이러한 좌표는 State Writer 블록으로 출력되고, 상태 Fly의 소유자 블록에 연결됩니다. Simulink 함수 InitFly에는 다음 논리가 포함되어 있습니다.

장대높이뛰기 선수의 자유 낙하 모델링하기

장대높이뛰기 선수의 각도 theta$\pi/2$ 미만이면 Simulink 기반 상태 Fly가 활성 상태가 됩니다. 이 상태는 점프가 마무리된 후 지면으로 낙하 중인 장대높이뛰기 선수를 모델링합니다. 장대높이뛰기 선수가 낙하할 때 x-y 평면에서 이 사람의 위치는 계속 변하지만, 낙하의 상태는 동일하게 유지됩니다. 이 모델에서, Integrator 블록 xydot와 xy_integ는 Simulink 함수 InitFly의 State Writer 블록에 대한 상태 소유자 블록입니다. 이 서브시스템은 장대높이뛰기 선수의 카테시안 좌표를 출력합니다.

Record 블록은 이 시뮬레이션의 결과를 보여줍니다.

제한 사항

Simulink 기반 상태는 다음과 함께 사용할 수 없습니다.

  • 무어 차트

  • 이산 이벤트 차트

  • HDL Coder

  • PLC Coder

  • Simulink Code Inspector

  • 슈퍼 스텝 천이

Simulink 기반 상태는 디버그를 지원하지 않습니다.

참고 항목

도움말 항목