주요 콘텐츠

그래픽 함수를 정의하여 논리 패턴 재사용하기

Stateflow® 차트의 그래픽 함수는 제어 흐름 논리와 반복 루프를 재사용할 수 있도록 해주는 그래픽 요소입니다. 그래픽 함수는 연결점과 천이를 사용하는 플로우 차트를 사용하여 만들 수 있습니다. 그래픽 함수는 상태 작업과 천이 작업에서 호출할 수 있습니다. 그래픽 함수를 사용하면 다음을 수행할 수 있습니다.

  • 차트의 어디에서나 호출할 수 있는 모듈화되고 재사용 가능한 논리를 만들 수 있습니다.

  • 차트 애니메이션 중에 시뮬레이션 동작을 통해 시각적으로 추적할 수 있습니다.

그래픽 함수는 차트, 상태 또는 서브차트의 어디에나 있을 수 있습니다. 함수의 위치에 따라 함수를 호출할 수 있는 상태 집합과 천이 집합이 결정됩니다.

  • 하나의 상태 또는 서브차트와 해당 하위 상태 내에서 함수를 호출하려면 해당 상태 또는 서브차트에 그래픽 함수를 배치하십시오. 이 함수는 해당 상태 또는 서브차트의 부모와 선조에서 동일한 이름의 함수를 모두 재정의합니다.

  • 차트의 어디서나 함수를 호출하려면 그래픽 함수를 차트 수준에 배치하십시오.

  • 모델에 있는 모든 차트에서 함수를 호출하려면 그래픽 함수를 차트 수준에 배치하고 차트 수준 함수의 내보내기를 활성화합니다. 자세한 내용은 재사용을 위해 Stateflow 함수 내보내기 항목을 참조하십시오.

참고

그래픽 함수는 Stateflow 계층 구조에서 자신의 상위에 있는 차트 데이터와 상태 데이터에 액세스할 수 있습니다.

예를 들어, 이 그래픽 함수의 이름은 f1입니다. 이 함수는 3개의 인수(a, b, c)를 받고 3개의 출력값(x, y, z)을 반환합니다. 이 함수에는 인수의 세 가지 다른 곱 연산을 계산하는 플로우 차트가 포함되어 있습니다.

A graphical function that computes three different products.

그래픽 함수 정의하기

  1. 객체 팔레트에서 그래픽 함수 아이콘 을 클릭합니다.

  2. 차트 캔버스에서 새 그래픽 함수의 위치를 클릭합니다.

  3. 함수의 시그니처 레이블을 입력합니다.

    함수의 시그니처 레이블은 함수의 이름과 인수 및 반환 값의 형식 이름을 지정합니다. 시그니처 레이블의 구문은 다음과 같습니다.

    [return_val1,return_val2,...] = function_name(arg1,arg2,...)
    여러 개의 반환 값과 여러 개의 입력 인수를 지정할 수 있습니다. 각 반환 값과 입력 인수는 스칼라이거나, 벡터이거나, 값으로 구성된 행렬일 수 있습니다. 반환 값이 1개뿐인 함수의 경우 시그니처 레이블에서 대괄호를 생략하십시오.

    인수와 반환 값에는 동일한 변수 이름을 사용할 수 있습니다. 입력과 출력에 동일한 변수를 사용하는 경우 인 플레이스(in-place) 데이터를 만듭니다. 예를 들어, 다음 시그니처 레이블이 있는 함수는 변수 y1y2를 입력과 출력 모두로 사용합니다.

    [y1,y2,y3] = f(y1,u,y2)
    이 함수를 C 코드로 내보내면 생성 코드는 y1y2를 참조로 전달되는 인플레이스(in-place) 인수로 처리합니다. 인 플레이스(in-place) 데이터를 사용하면 생성된 코드가 중간 데이터를 복사하는 횟수가 줄어들어 코드의 효율성이 향상됩니다.

    기호 창과 모델 탐색기에서 함수 시그니처의 인수와 반환 값은 함수에 속한 데이터 항목으로 표시됩니다. 인수는 범위 입력을 갖습니다. 반환 값은 범위 출력을 갖습니다.

  4. 데이터 속성 설정하기에서의 설명과 같이, 각 인수와 반환 값의 데이터 속성을 지정합니다. 인수와 반환 값의 이름이 같은 경우 인수의 속성만 편집할 수 있습니다. 반환 값의 속성은 읽기 전용입니다.

  5. 함수를 프로그래밍하기 위해 Stateflow에서 플로우 차트 만들기에서의 설명과 같이 함수 상자 안에 플로우 차트를 구성합니다.

    사용자가 그래픽 함수를 호출한 경우 그래픽 함수는 완전하게 실행되어야 하므로 상태를 사용할 수 없습니다. 연결점과 천이는 사용자가 그래픽 함수에서 사용할 수 있는 유일한 그래픽 요소입니다.

    참고

    그래픽 함수에서는 활성 상태의 변경을 유발할 수 있는 이벤트를 브로드캐스트하지 마십시오. 그래픽 함수에서는 활성 상태로부터의 진출을 유발하는 이벤트 브로드캐스트의 동작을 예측할 수 없습니다.

  6. 함수에 필요한 추가 데이터 항목을 만듭니다. 자세한 내용은 모델 탐색기를 통해 데이터 추가하기 항목을 참조하십시오.

    함수는 자체 데이터 또는 부모 상태나 차트에 속한 데이터에 액세스할 수 있습니다. 함수의 데이터 항목은 다음 범위 중 하나를 가질 수 있습니다.

    • Constant — 상수 데이터가 모든 함수 호출에서 초기값을 유지합니다.

    • Parameter — 파라미터 데이터가 모든 함수 호출에서 초기값을 유지합니다.

    • Local — 로컬 데이터가 전체 시뮬레이션 시간 동안 여러 함수 호출에서 유지됩니다. C를 동작 언어로 사용하는 차트 내에서만 유효합니다.

    • Temporary — 각각의 함수 호출을 시작할 때 임시 데이터가 초기화됩니다. C를 동작 언어로 사용하는 차트 내에서만 유효합니다.

    C를 동작 언어로 사용하는 차트에서 데이터 값이 시뮬레이션 시간 동안 여러 함수 호출에서 유지되어야 하는 경우 로컬 데이터를 정의하십시오. 모든 함수 호출을 시작할 때 데이터 값을 초기화하려면 임시 데이터를 정의하십시오. 예를 들어, 함수 호출 횟수를 추적하려면 카운터를 로컬 범위로 정의하면 됩니다. 반면에, 함수가 완료된 후 카운터 값이 유지되지 않아도 되는 경우에는 루프 카운터를 임시 범위로 지정하면 됩니다.

    MATLAB®을 동작 언어로 사용하는 차트에는 그래픽 함수에 로컬 데이터 또는 임시 데이터를 정의할 필요가 없습니다. 대신, 정의되지 않은 변수를 사용하여 나머지 함수 호출 중에만 액세스할 수 있는 값을 저장할 수 있습니다. 여러 함수 호출에서 유지되는 값을 저장하려면 로컬 데이터를 차트 수준에서 사용하십시오.

    MATLAB 작업 공간의 함수에 있는 로컬 데이터와 임시 데이터를 초기화할 수 있습니다. 자세한 내용은 MATLAB 기본 작업 공간의 데이터 초기화하기 항목을 참조하십시오.

상태와 천이에서 그래픽 함수 호출하기

그래픽 함수는 상태 동작이나 천이 동작에서 또는 다른 함수에서 호출할 수 있습니다. 그래픽 함수를 내보내는 경우 모델의 모든 차트에서 그래픽 함수를 호출할 수 있습니다. 함수 내보내기에 대한 자세한 내용은 재사용을 위해 Stateflow 함수 내보내기 항목을 참조하십시오.

그래픽 함수를 호출하려면 함수 시그니처를 사용하고 함수 시그니처에 각 형식 인수에 대한 실제 인수 값을 포함하십시오.

[return_val1,return_val2,...] = function_name(arg1,arg2,...)

실제 인수와 형식 인수의 데이터형이 다른 경우 그래픽 함수는 실제 인수를 형식 인수의 데이터형으로 형변환합니다.

큰 그래픽 함수 관리하기

그래픽 함수의 크기는 원하는 대로 선택할 수 있습니다. 함수의 크기가 너무 커지면 함수 상자의 내부를 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 그룹 및 서브차트 > 서브차트를 선택하여 함수의 내용을 숨길 수 있습니다.

A subcharted graphical function with its content preview enabled.

그래픽 함수 상자를 불투명하게 만들려면 함수를 마우스 오른쪽 버튼으로 클릭하고 상황별 메뉴에서 내용 미리보기 속성의 선택을 해제하십시오.

A subcharted graphical function with its content preview disabled.

전체 차트 창을 함수 프로그래밍 전용으로 사용하려면 함수 상자를 더블 클릭하여 서브차트 그래픽 함수의 플로우 차트에 액세스하십시오. 자세한 내용은 Encapsulate Modal Logic by Using Subcharts 항목을 참조하십시오.

그래픽 함수의 속성 지정하기

아래에 나열된 속성은 그래픽 함수가 Stateflow 차트의 다른 컴포넌트와 상호 작용하는 방식을 지정합니다. 이러한 속성은 속성 인스펙터, 모델 탐색기 또는 함수 속성 대화 상자에서 수정할 수 있습니다.

속성 인스펙터를 사용하려면 다음을 수행하십시오.

  1. 모델링 탭의 설계 데이터 아래에서 속성 인스펙터를 선택합니다.

  2. Stateflow 편집기에서 그래픽 함수를 선택합니다.

  3. 속성 인스펙터에서 천이 속성을 편집합니다.

모델 탐색기를 사용하려면 다음을 수행하십시오.

  1. 모델링 탭의 설계 데이터 아래에서 모델 탐색기를 선택합니다.

  2. 모델 계층 구조 창에서 그래픽 함수를 선택합니다.

  3. 대화 상자 창에서 그래픽 함수 속성을 편집합니다.

함수 속성 대화 상자를 사용하려면 다음을 수행하십시오.

  1. Stateflow 편집기에서 그래픽 함수를 마우스 오른쪽 버튼으로 클릭합니다.

  2. 속성을 선택합니다.

  3. 속성 대화 상자에서 그래픽 함수 속성을 편집합니다.

이러한 속성은 Stateflow.Function 객체를 사용하여 프로그래밍 방식으로 수정할 수도 있습니다. Stateflow 프로그래밍 인터페이스에 대한 자세한 내용은 Stateflow API 개요 항목을 참조하십시오.

이름

함수의 이름입니다. 함수를 네이티브 차트에서 전경으로 가져오려면 함수 이름 링크를 클릭합니다.

함수 인라인 옵션

생성 코드에서 함수의 인라인 처리를 제어합니다.

  • 자동 — 내부 계산에 따라 함수를 인라인 처리할지 여부를 결정합니다.

  • 인라인 — 함수를 다른 차트로 내보내지 않고 함수가 재귀의 일부가 아닌 경우 함수를 인라인 처리합니다. (재귀는 함수가 다른 함수 호출을 통해 직접적으로 또는 간접적으로 자신을 호출하는 경우 발생합니다.)

  • 함수 — 함수를 인라인 처리하지 않습니다.

속성 인스펙터에서는 이 속성을 사용할 수 없습니다.

레이블

함수의 시그니처 레이블입니다. 함수 시그니처 레이블은 함수의 이름 및 인수와 반환 값의 형식 이름을 지정합니다. 속성 인스펙터에서는 이 속성을 사용할 수 없습니다.

설명

그래픽 함수에 대한 설명입니다.

문서 링크

그래픽 함수에 대한 온라인 문서 링크입니다. MATLAB 명령 창에 웹 URL 주소를 입력하거나 문서를 HTML 파일 또는 텍스트로 표시하는 MATLAB 명령을 입력할 수 있습니다. 문서 링크 하이퍼링크를 클릭하면 Stateflow가 링크를 평가하여 문서를 표시합니다.

참고 항목

객체

도움말 항목