Function-Call Subsystem 사용하기
Function-Call Subsystem 블록은 제어 포트가 함수 호출 이벤트를 수신할 때마다 실행되는 조건부 실행 서브시스템입니다. Stateflow® 차트, Function-Call Generator 블록, MATLAB Function 블록, S-Function 블록 또는 Hit Crossing 블록은 함수 호출 이벤트를 제공할 수 있습니다.
Function-Call Subsystem은 절차적 프로그래밍 언어의 함수와 비슷합니다. Function-Call Subsystem을 호출하면 실행 순서에 따라 서브시스템 내 블록의 출력 메서드가 실행됩니다. Function-Call Subsystem 파라미터 설명은 Subsystem을 참조하십시오.
Function-Call Subsystem 만들기
Function-Call Subsystem을 만들려면 다음과 같이 하십시오.
모델에 Function-Call Subsystem 블록을 추가합니다.
서브시스템 블록을 엽니다. 서브시스템이 함수 호출 이벤트를 수신할 때 실행되는 알고리즘을 정의한 블록 다이어그램을 추가합니다.
Outport 블록에 대해 초기값과 비활성인 경우의 값을 설정합니다. Conditional Subsystem Initial Output Values 항목 및 Conditional Subsystem Output Values When Disabled 항목을 참조하십시오.
서브시스템이 실행될 때 서브시스템 상태가 처리되는 방식을 설정합니다.
서브시스템 블록을 연 다음 Trigger 블록의 블록 파라미터 대화 상자를 엽니다. 활성화할 때의 상태 드롭다운 목록에서 다음 옵션 중 하나를 선택합니다.
유지
— 상태가 가장 최근 값을 유지합니다.재설정
— 상태를 초기 조건으로 설정합니다.상속
— 함수 호출을 시작한 부모 서브시스템에 유지된 설정 또는 재설정된 설정을 사용합니다.
Function-Call Subsystem 블록이 서로 다른 파라미터 설정을 갖는 중첩된 서브시스템의 경우, 자식 서브시스템의 설정이 부모 서브시스템에서 상속된 설정을 재정의합니다. Trigger 항목을 참조하십시오.
함수 호출 개시자를 함수 호출 입력 포트에 연결합니다.
Inport 블록을 연결한 뒤 블록을 열고 신호 특성 탭을 선택한 경우 함수 호출 출력 체크박스를 선택합니다.
Function-Call Subsystem에서 샘플 시간 전파
Trigger Port 블록의 샘플 시간 유형을 트리거됨
또는 주기적
으로 설정하여 Function-Call Subsystem을 구성합니다.
Triggered(비주기적) Function-Call Subsystem은 시간 스텝 동안 실행하지 않거나 한 번 또는 여러 번 실행할 수 있습니다.
이산 샘플 시간을 사용하는 루트 수준의 Function-Call Inport 블록이 Function-Call Subsystem을 실행한다면 하나의 시간 스텝 동안 여러 번의 함수 호출은 허용되지 않습니다. 함수 호출을 여러 번 허용하려면 샘플 시간을
-1
(상속됨)로 설정하고 Function-Call Subsystem의 모든 블록 샘플 시간을-1
(상속됨)로 설정합니다.주기적 Function-Call Subsystem은 함수 호출 신호를 수신할 때 각 시간 스텝 동안 한 번 실행되며 함수 호출 신호를 수신하지 않은 시간 스텝에서는 실행되지 않습니다. Function-Call Subsystem의 모든 블록에 대한 샘플 시간을
-1
(상속됨)로 설정합니다.
샘플 시간 유형 설정에 대한 자세한 내용은 Simulink 서브시스템 의미 체계에서 Function-Call Subsystem 예제를 참조하십시오.
참고
범위를 검사하는 동안 최소 및 최대 파라미터 설정은 Function-Call Subsystem이 활성화되지 않은 상태일 때도 Function-Call Subsystem의 실제 소스 포트로 역전파됩니다.
이 역전파를 방지하려면 다음과 같이 하십시오.
소스 포트 뒤에는 Signal Conversion 블록과 Signal Specification 블록을 추가합니다.
Signal Conversion 블록의 출력을
신호 복사
로 설정합니다.소스 포트에 최솟값과 최댓값을 설정하는 대신 Signal Specification 블록에 설정하십시오.
Function-Call Subsystem에 대한 래치된 입력 데이터
Function-Call Subsystem 블록 내 Inport 블록에 대한 입력 데이터를 래치하여 데이터 무결성을 보장할 수 있습니다. 입력 데이터를 래치하려면 Inport 블록 파라미터에서 Function-Call Subsystem 출력의 피드백 신호에 대한 입력 래치를 선택하십시오.
다음 모델에서 Function-Call Subsystem의 Inport 블록에 대한 입력 데이터 ReadDSAndCal1
이 래치되었으며(<Li>
로 표시됨) 서브시스템 실행 도중에 변경할 수 없습니다. Data Store Read 블록과 Data Store Write 블록은 각 Function Call Subsystem 내에서 호출됩니다. 첫 번째 및 두 번째 함수 호출은 Data Store Memory 블록에 데이터를 쓰고 마지막 함수 호출은 그 블록에서 데이터를 읽습니다.
참고
루트 수준 블록에 연결된 모든 블록이 래치되면 내부 Inport 블록에 연결된 루트 수준 데이터 Inport 블록도 래치됩니다. 자세한 내용은 Latch input for feedback signals of function-call subsystem outputs 항목을 참조하십시오.
참고
기본적으로 데이터 전송 신호는 생성된 코드에서 보호되지 않습니다. 타깃 환경에서 현재 태스크의 선점으로 인한 신호의 데이터 손상을 방지하려면 사용자 지정 스토리지 클래스를 사용하십시오.
참고 항목
블록
- Function-Call Subsystem | Function-Call Generator | Function-Call Split | Function-Call Feedback Latch | Trigger | Subsystem
검사
- Check usage of function-call connections | Check for potentially delayed function-call subsystem return values