주요 콘텐츠

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

조합 논리 모델링에 진리표 사용하기

진리표는 조합 논리 설계를 테이블 형식으로 구현합니다. Stateflow® 진리표를 사용하여 결함 검출 및 관리와 모드 전환에 대한 의사 결정을 모델링할 수 있습니다.

Stateflow 차트의 진리표 함수는 진리표 함수를 호출할 때만 실행됩니다. 진리표는 Stateflow 차트, 상태 또는 서브차트에서 정의할 수 있습니다. 함수의 위치에 따라 함수를 호출할 수 있는 상태 집합과 천이 집합이 결정됩니다.

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

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

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

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

또는 의사 결정 로직을 더 직접적으로 구현하기 위해 Truth Table 블록을 직접 Simulink® 모델에 추가할 수도 있습니다. 제어 논리를 구현하기 위해 Truth Table 블록은 MATLAB®을 동작 언어로 사용합니다.

진리표 레이아웃

이 진리표 함수의 이름은 ttable입니다. 이 함수는 3개의 인수(x, y, z)를 받고 1개의 출력값(r)을 반환합니다.

Stateflow chart with a truth table function called ttable.

함수는 다음과 같은 조건, 의사 결정, 동작의 배열로 구성됩니다.

조건

의사 결정 1

의사 결정 2

의사 결정 3

의사 결정 4

x == 1

T

F

F

-

y == 1

F

T

F

-

z == 1

F

F

T

-

동작

r = 1r = 2r = 3r = 4

조건 열에 입력되는 각 조건은 반드시 true(0이 아닌 값) 또는 false(0)로 평가되어야 합니다. 각 조건의 결과는 T(true), F(false) 또는 -(true 또는 false)로 지정됩니다. 각 의사 결정 열은 각 조건의 결과를 논리 AND 연산자와 결합하여 복합 조건을 형성하며, 이를 의사 결정이라고 합니다.

한 번에 하나의 진리표 의사 결정을 평가하며, 의사 결정 1부터 시작합니다. 의사 결정 4는 남아 있는 모든 가능한 의사 결정을 포함합니다. 의사 결정 중 하나라도 true이면, 진리표가 연결된 동작을 수행한 이후 진리표 실행이 완료됩니다.

예를 들어 조건 x == 1y == 1이 false이고 조건 z == 1이 true인 경우, 의사 결정 3은 true이고 변수 r은 3으로 설정됩니다. 나머지 의사 결정은 테스트하지 않으며, 진리표의 실행이 종료됩니다. 처음 3개의 의사 결정이 모두 false인 경우, 디폴트 의사 결정은 자동으로 true가 되며, 해당 동작(r=4)이 실행됩니다. 이 테이블에는 이 진리표 예제의 평가에 대응하는 의사코드가 나와 있습니다.

의사코드

설명

if ((x == 1) & !(y == 1) & !(z == 1))
  r = 1;

의사 결정 1이 true이면 r=1로 설정합니다.

elseif (!(x == 1) & (y == 1) & !(z == 1))
  r = 2;

의사 결정 2가 true이면 r=2로 설정합니다.

elseif (!(x == 1) & !(y == 1) & (z == 1))
  r = 3;

의사 결정 3이 true이면 r=3으로 설정합니다.

else
  r = 4;
endif

다른 모든 의사 결정이 false이면 디폴트 의사 결정은 true입니다. r=4로 설정합니다.

진리표 함수 정의하기

진리표 함수를 정의하려면 다음을 수행하십시오.

  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. 함수를 프로그래밍하기 위해 함수 상자를 더블 클릭하여 진리표 편집기를 엽니다.

  6. 진리표 편집기에서 조건, 의사 결정, 동작을 추가합니다. 자세한 내용은 Program a Truth Table 항목을 참조하십시오.

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

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

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

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

    • Local — 로컬 데이터가 하나의 함수 호출에서 다음 함수 호출까지 지속됩니다. C를 동작 언어로 사용하는 진리표에 대해서만 유효합니다.

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

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

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

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

상태와 천이에서 진리표 함수 호출하기

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

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

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

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

진리표 함수의 속성 지정하기

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

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

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

  2. Stateflow 편집기에서 진리표 함수를 선택합니다.

  3. 속성 인스펙터에서 진리표 함수 속성을 편집합니다.

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

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

  2. 모델 계층 구조 창에서 진리표 함수를 선택합니다.

  3. 대화 상자 창에서 진리표 함수 속성을 편집합니다.

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

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

  2. 속성을 선택합니다.

  3. 속성 대화 상자에서 진리표 함수 속성을 편집합니다.

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

이름

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

함수 인라인 옵션

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

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

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

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

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

레이블

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

과소 지정

진리표 함수에서 과소 지정되었을 때의 진단 수준을 제어합니다. 자세한 내용은 Correct Overspecified and Underspecified Truth Tables 항목을 참조하십시오.

과다 지정

진리표 함수에서 과다 지정되었을 때의 진단 수준을 제어합니다. 자세한 내용은 Correct Overspecified and Underspecified Truth Tables 항목을 참조하십시오.

동작 언어

Stateflow 진리표 함수의 동작 언어를 제어합니다. MATLAB 또는 C 중에서 선택합니다. 이 속성은 C를 동작 언어로 사용하는 차트 내에서만 사용할 수 있습니다. 자세한 내용은 동작 언어 구문으로서 MATLAB과 C의 차이점 항목을 참조하십시오.

설명

진리표 함수에 대한 설명입니다.

문서 링크

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

참고 항목

블록

객체

도움말 항목