Stateflow

주요 특징

  • 복잡한 로직 모델링 및 시뮬레이션을 위한 모델링 환경, 그래픽 구성요소 및 시뮬레이션 엔진
  • 계층성, 병렬성, 임시 연산자 및 이벤트를 포함한 확정적 실행 시맨틱
  • 유한 상태 시스템 표현을 위한 상태 다이어그램, 상태 전환 표 및 상태 전환 행렬
  • 알고리즘 표현을 위한 순서도, MATLAB 함수 및 truth table
  • 설계 분석과 런타임 오류 감지를 위한 상태 다이어그램 애니메이션, 상태 활동 로깅, 데이터 로깅 및 통합 디버깅
  • 순환 오류, 상태 불일치, 데이터 범위 위반, 오버플로우에 대한 정적 검사 및 런타임 검사
  • Mealy 및 Moore 유한 상태 시스템

Stateflow 시작하기
상태 시스템 작성 및 시뮬레이션 방법을 알아봅니다.

로직 설계

Stateflow는 상태 시스템를 사용한 시스템 로직 모델링을 위한 그래픽 및 표 양식 인터페이스를 제공합니다. 상태 시스템에서 시스템의 운영 모드를 상태로서 모델링하고 전환 및 접합을 사용하여 모드를 전환하는 로직을 표현합니다. 독립적으로 또는 병렬로 실행되는 상태로서 시스템의 여러 구성요소를 모델링할 수 있습니다. Stateflow를 통해 상태 다이어그램 객체, 함수 및 구성요소를 계층적으로 구성함으로써 설계 복잡성을 관리할 수 있습니다.

Stateflow에서 순서도와 truth table을 포함한 표 양식으로 결합적 로직을 시각적으로 표현할 수 있습니다.

로직 설계를 위해서는 조건을 확인하고 순차적 action을 정의해야 합니다. Stateflow를 통해 C 또는 MATLAB®에서 조건과 동작을 정의할 수 있으며 Simulink® Model Explorer의 조건 및 동작에서 사용되는 데이터를 관리할 수 있습니다. Stateflow는 설계를 실행하기 전에 상태 불일치, 미사용 데이터 및 이벤트, 잘못된 전환 가능성을 알려줍니다.

Stateflow diagram defining the logic for a boiler temperature control system.
보일러 온도 제어 시스템을 위한 로직을 정의하는 Stateflow 다이어그램 - 다이어그램은 그래픽 함수(오른쪽)를 사용하여 히터 시스템이 호출하는 유틸리티 알고리즘(왼쪽)을 구현합니다.

시각적으로 로직 설계

Stateflow는 상태 시스템과 순서도 작성을 위한 편집기와 그래픽 객체를 제공합니다. 그래픽 팔레트에서 상태, 전환 및 접합을 선택하고 이를 Stateflow Editor로 끌어와서 상태 시스템을 작성할 수 있습니다. 또한 순서도 표기법, Simulink 서브시스템, MATLAB 및 truth table을 사용하여 함수를 만들 수도 있습니다. Stateflow 다이어그램은 확장된 기능, Mealy 시스템 또는 Moore 시스템 뿐 아니라 Mealy와 Moore 시스템이 같이 표현될 수 있는 하이브리드 형태로 지정될 수 있습니다.

접합부에 연결되고 조건 로직에 따라 실행되는 전환을 그림으로써 순서도를 작성할 수 있습니다. Pattern Wizard를 통해 자주 사용되는 로직 흐름 패턴을 작성할 수 있습니다. 순서도는 상태 다이어그램의 여러 위치와 같은 모델의 다른 상태 다이어그램에서 사용되는 그래픽 함수에 배치할 수 있습니다. 반드시 순서도를 사용하여 상태 간 전환을 위한 로직을 설계해야 합니다.

Stateflow diagram that uses a graphical function generated by the pattern wizard.
Pattern Wizard(가운데)에서 생성한 그래픽 함수(오른쪽)를 사용하는 Stateflow 다이어그램(왼쪽)

Stateflow Editor는 잘못된 객체 배치와 전환을 파악할 수 있는 편집-시간 검사를 제공합니다.

Stateflow Editor with a model of a cooling system.
Stateflow Editor와 냉각 시스템 모델 서로 겹치는 경계가 있는 상태는 빨간색으로 표시됩니다.

표를 통한 로직 설계

Stateflow의 상태 전환 표는 상태 시스템 모델링을 위한 구조적 환경을 제공합니다. 상태를 위한 행, 상태 간 전환을 위한 열을 추가하여 상태 시스템을 작성합니다. 상태 전환 표는 상태 이름을 위한 드롭다운 메뉴, 유한 상태 시스템 구문 자동 완성 및 기타 편집-시간 검사를 제공함으로써 상태 시스템 작성을 도와줍니다. 모델을 실행하기 전에 진단 테스트를 실행하여 구문 오류, 불완전한 전환 및 도달할 수 없는 상태를 감지할 수 있습니다.

상태 전환 표에서 생성된 상태 전환 행렬 보기를 통해 특정 상태의 조건과 목표 상태 가능성을 빠르게 파악할 수 있습니다.

Stateflow의 Truth table을 사용하여 연속 실행에서 상태 관리가 필요 없는 로직을 모델링할 수 있습니다. 검사할 조건을 입력한 다음 그러한 조건에 대한 결과 조합을 입력하여 truth table을 작성합니다. 그 다음 서로 다른 결과 조합에 대해 작업을 입력할 수 있습니다. truth table을 작성한 후 정적 진단 검사를 실행하여 과도하게 지정되었거나 부족하게 지정된 조건을 파악할 수 있습니다.

Truth table implementing the logic for selecting a valid sensor reading in a fault-detection algorithm, and an automatically generated graphical representation of the truth table.
왼쪽: 결함 감지 알고리즘에서 올바른 센서 판독을 선택하는 로직을 구현하는 truth table 오른쪽: truth table의 자동으로 생성된 그래픽 표현

구성요소 통합 및 알고리즘 스케줄링

Stateflow에서 구성요소를 만든 후 다른 구성요소와 통합하여 상태 시스템 알고리즘을 만들 수 있습니다. Stateflow 구성요소는 MATLAB 및 Simulink 함수, 사용자 정의 C 코드, 그래픽 함수 및 truth table을 포함할 수 있습니다. 알고리즘에서 시간 기반 및 조건 기반 로직을 사용하는 구성요소 및 함수 실행을 스케줄링할 수 있습니다.

각 Stateflow 구성요소는 독립적으로 개발, 실행 및 검증할 수 있으므로 여러 사용자가 동시에 알고리즘의 서로 다른 부분에 대해 작업을 수행할 수 있습니다.

Simulink model incorporating a Stateflow diagram that uses graphical functions, MATLAB functions, and truth tables.
Stateflow 다이어그램(오른쪽)을 통합하는 Simulink 모델(왼쪽) 이 Stateflow 다이어그램은 엘리베이터에서 사용되는 로직을 모델링하며 그래픽 함수, MATLAB 함수 및 truth table을 포함합니다.

구성요소를 설계로 통합

구성요소를 마우스 오른쪽 버튼으로 클릭하고 atomic 서브차트로 변환한 후 라이브러리에 배치하면 다이어그램과 모델에서 구성요소를 재사용할 수 있습니다. 해당 구성요소를 사용하려면 라이브러리에서 다이어그램이나 모델로 끌어다 놓으면 됩니다. 라이브러리에서 구성요소를 업데이트하면 구성요소의 모든 인스턴스가 자동으로 업데이트됩니다. 구성요소와 함수를 계층적으로 구성하여 시스템을 명료하고 정확하게 표현할 수 있습니다.

다이어그램에서 상태를 여러 번 재사용하기
Stateflow에서 대규모 모델링을 위한 구성요소를 만들고 재사용하십시오.

알고리즘 스케줄링

Stateflow에서 조건 및 타임 기반 로직을 모델링하여 Simulink 함수와 MATLAB 함수를 호출할 수 있습니다. Stateflow에서 모델링한 이벤트 기반 로직을 Simulink로 출력하여 함수 호출 또는 제어 신호의 변화에 응답하는 서브시스템을 활성화할 수 있습니다.

Stateflow는 타이머나 카운터 없이 이벤트 수와 시간 경과를 기준으로 상태-전환 로직을 지정할 수 있는 이벤트 기반 및 시간 기반 연산자(before, after, at, 및 every)를 제공합니다.

이륙 중지 시스템(Launch Abort System) 모델링
이륙 시에 이상 또는 오류가 발생하면 지구로 항공기를 다시 돌려보내는 실행 중지 시스템을 만듭니다.

모델 시뮬레이션과 결과 분석

모델을 시뮬레이션하여 시스템 동작을 분석할 수 있습니다. 저장된 상태에서 시뮬레이션을 재시작하고 여러 설정과 구성에 대한 반응을 분석함으로써 가상(what-if) 시나리오를 실행할 수 있습니다.

모델 시뮬레이션

Stateflow에서 상태 다이어그램 애니메이션을 사용하여 모델의 활성 상태 및 전환을 표시함으로써 시뮬레이션 중 시스템 동작을 시각화할 수 있습니다.

Stateflow의 디버깅 기능으로 시뮬레이션을 단계별로 상세히 확인할 수 있습니다. 중단점을 설정하고 데이터 값을 모니터링하며 상태 다이어그램의 여러 상태 단계를 살펴볼 수 있습니다. Stateflow 디버거 창에서 시뮬레이션 실행을 제어하고 다이어그램의 호출 스택과 실행 상태를 표시할 수 있습니다.

Stateflow 디버거는 상태 불일치, 데이터 범위 위반, 무한 루프 가능성을 포함한 런타임 오류를 감지합니다.

결과 분석

시뮬레이션 중 다음을 통해 시뮬레이션 결과를 시각화할 수 있습니다.

  • Simulink 디스플레이 및 스코프를 통해 상태와 데이터 조회
  • Simulation Data Inspector에서 데이터 로깅 조회
  • MATLAB을 통해 사용자 정의 디스플레이 작성

또는 MATLAB에서의 후속 처리를 위해 다이어그램과 상태 활동 데이터를 로그할 수 있습니다.

Simulation data visualization options in Stateflow: Simulink Data Inspector for comparing signals, a custom MATLAB interface for analyzing data, and the Simulink Signal Selector for comparing states.
Stateflow의 시뮬레이션 데이터 시각화 옵션 왼쪽 상단: 특정 신호 비교를 위한 Simulink Data Inspector, 왼쪽 하단: 데이터 분석을 위한 사용자 정의 MATLAB 인터페이스, 오른쪽: 특정 상태 비교를 위한 Simulink Signal Selector

설계 검증과 코드 생성

Stateflow를 다른 Simulink 제품과 함께 사용하면 요구 사항에 대하여 설계를 검증하고 임베디드시스템을 위한 코드를 생성할 수 있습니다.

Simulink Verification and Validation을 통해 요구 사항을 Stateflow 객체에 직접 매핑하고 표준 준수를 검사하며 모델 커버리지 메트릭을 수집할 수 있습니다.

Simulink Design Verifier를 통해 설계 오류를 감지하고 보통의 방법으로 찾기 어려운 오류에 대한 테스트 벡터를 생성할 수 있습니다.

추가(Add-On) 기능 코드 생성 제품을 통해 C 및 C++, HDL 또는 PLC 코드를 상태 다이어그램에서 직접 생성할 수 있습니다.

Designing Supervisory Control for Safety-Critical Systems

웨비나 보기