주요 콘텐츠

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

Simulink 함수가 있는 차트 설계하기

이 튜토리얼에서는 Stateflow® 차트의 Simulink® 함수를 사용하여 Function-Call Subsystem이 포함된 모델의 설계를 개선합니다. 다음과 같은 경우 차트에서 Function-Call Subsystem을 Simulink 함수로 바꿀 수 있습니다.

  • 서브시스템이 차트에 필요한 계산을 수행합니다.

  • 모델의 다른 블록들은 서브시스템 출력값에 대한 액세스가 필요하지 않습니다.

자세한 내용은 Stateflow 차트에서 Simulink 함수 재사용하기 항목을 참조하십시오.

참고

변환 단계를 건너뛰려면 다음과 같이 입력하여 수정된 모델을 열 수 있습니다.

openExample("old_sf_car_with_sl_function")

모델 열기

모델 old_sf_car를 엽니다. 이 모델에는 Threshold Calculation이라는 Function-Call Subsystem과 shift_logic이라는 Stateflow 차트가 포함되어 있습니다.

이 모델을 실행하면 차트가 출력 이벤트 CALC_TH를 브로드캐스트하여 Function-Call Subsystem을 트리거합니다. 서브시스템은 shift_logic 차트에 대한 2개의 값을 보간합니다. 서브시스템 출력값(up_thdown_th)이 차트에 입력으로 반환됩니다.

시뮬레이션 이후에 engine RPM Scope 블록은 다음과 같은 결과를 표시합니다.

Simulink 함수를 차트에 추가하기

다음 단계에 따라 Simulink 함수를 shift_logic 차트에 추가합니다.

  1. Simulink 모델에서 왼쪽 하단 코너에 있는 Threshold Calculation 블록을 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 잘라내기를 선택합니다.

    Simulink model after Threshold Calculation subsystem is removed.

  2. shift_logic 차트를 엽니다.

  3. 차트에서 selection_state 아래를 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 붙여넣기를 선택합니다.

  4. 새 Simulink 함수를 확장하여 시그니처를 함수 상자 안에 피팅시킵니다.

    Stateflow chart after Simulink function is added.

    함수의 글꼴 크기를 변경하려면 함수 상자를 마우스 오른쪽 버튼으로 클릭하고 글꼴 크기 메뉴에서 새 크기를 선택합니다.

  5. selection_state의 테두리를 확장하여 새 함수를 포함시킵니다.

    Stateflow chart with a Simulink function inside a state.

    참고

    차트에서는 이 상태에서만 함수 출력값 up_thdown_th가 필요하므로 함수는 차트 수준이 아닌 이 상태 내에 위치합니다. Bind a Simulink Function to a State 항목을 참조하십시오.

  6. 함수 상자에 [down_th, up_th] = calc_threshold(gear, throttle)를 입력하여 Simulink 함수의 이름을 Threshold_Calculation에서 calc_threshold로 바꿉니다.

차트 데이터의 범위 변경하기

차트 수준 데이터 up_thdown_th의 계산이 이제 차트 내에서 수행되므로 모델 탐색기에서 해당 데이터의 범위를 로컬로 변경합니다.

차트에서 상태 동작 업데이트하기

Stateflow 편집기에서 selection_stateduring 동작을 변경하여 Simulink 함수 calc_threshold를 호출합니다.

during: [down_th, up_th] = calc_threshold(gear, throttle);

Stateflow chart with modified during action in state selection_state.

차트에 데이터 추가하기

함수 calc_thresholdthrottle을 입력으로 가지므로 이 데이터를 차트 입력으로 정의해야 합니다. (자세한 내용은 Stateflow 데이터 추가하기 항목을 참조하십시오.)

  1. 포트 속성을 1로 설정한 입력 데이터 throttle을 차트에 추가합니다.

    포트 1을 사용하면 Simulink 모델에서 신호 선이 겹치는 것을 방지할 수 있습니다.

  2. Simulink 모델에서 throttle의 신호 선을 Engine 블록의 입력값과 shift_logic 차트의 입력값에 추가합니다.

모델에서 사용하지 않는 항목 제거하기

  1. Threshold Calculation 블록이 더 이상 존재하지 않으므로 모델 탐색기에서 함수 호출 출력 이벤트 CALC_TH를 삭제합니다.

  2. 모델에서 점선 신호 선을 모두 삭제합니다.

새 모델 실행하기

새 모델의 형태는 다음과 같습니다.

Modified Simulink model without function-call subsystems.

새 모델을 시뮬레이션하면 결과가 원래 설계의 결과와 일치합니다.

참고 항목

도움말 항목