이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
버스 신호에 액세스하기
Stateflow® 버스는 Simulink.Bus
(Simulink) 객체를 기반으로 정의되는 데이터형입니다. Stateflow 버스를 사용하면 크기와 유형이 다른 데이터를 묶어서 다음을 만들 수 있습니다.
Stateflow 차트, Truth Table 블록, MATLAB Function 블록의 Simulink® 버스 신호에 액세스하는 입력값과 출력값.
Stateflow 차트, 진리표, 그래픽 함수, MATLAB® 함수, 상자의 로컬 데이터.
Stateflow 그래픽 함수, 진리표, MATLAB 함수의 임시 데이터.
자세한 내용은 Create Simulink Bus Objects (Simulink) 항목을 참조하십시오.
Stateflow 버스 예제
이 예제에서는 Stateflow 차트가 입력 inbus
를 사용하여 Simulink로부터 버스 입력 신호를 수신하고 outbus
에서 버스 신호를 출력합니다. 입력 신호는 Simulink Bus Creator 블록 COUNTERBUSCreator
로부터 나오며, 이 블록은 두 개의 다른 Bus Creator 블록에서 오는 신호를 묶습니다. 출력 outbus
는 Simulink Bus Selector 블록에 연결됩니다. inbus
와 outbus
는 모두 Simulink.Bus
객체 COUNTERBUS
로부터 유형을 도출합니다. 이 예제에 대한 자세한 내용은 Stateflow 차트에서 사용자 지정 구조체 통합하기 항목을 참조하십시오.
Stateflow 버스 데이터형의 요소는 필드라고 부릅니다. 필드는 개별 신호, 다중화된 신호, 벡터, 다른 버스(서브버스라고도 함)의 조합일 수 있습니다. 각 필드에는 고유한 데이터형이 있습니다. 데이터형은 버스 내 다른 필드의 유형과 일치하지 않아도 됩니다. 예를 들어, 이 모델에는 버스 inbus
와 outbus
각각에 다음 2개의 필드가 있습니다.
inputsignal
은input
이라는 1개의 필드를 갖는 서브버스입니다.limits
는upper_saturation_limit
와lower_saturation_limit
라는 2개의 필드를 갖는 서브버스입니다.
Stateflow 버스 정의하기
버스 데이터형을 정의하기 위해 Create Simulink Bus Objects (Simulink) 항목에 설명된 대로 기본 작업 공간에서 Simulink 버스 객체를 만듭니다.
Stateflow 데이터 추가하기 항목에 설명된 대로, 차트에 데이터 객체를 추가합니다.
진리표, 그래픽 함수, MATLAB 함수의 임시 버스를 정의하려면 함수에 데이터 객체를 추가합니다. 자세한 내용은 모델 탐색기를 통해 데이터 추가하기 항목을 참조하십시오.
버스의 범위 속성을 설정합니다. 옵션은 다음과 같습니다.
입력
출력
로컬
파라미터
데이터 저장소 메모리
임시
(C를 동작 언어로 사용하는 차트 내에서만 유효함)
버스의 유형 속성을 설정합니다. 범위에 따라 Stateflow 버스는 다음 데이터형 중 하나일 수 있습니다.
유형 설명 상속: Simulink와 동일
이 옵션은 입력 버스에만 사용할 수 있습니다. 입력 버스는 모델에서 연결된 Simulink 버스 신호로부터 데이터형을 상속받습니다. Simulink 버스 신호는 비가상 버스여야 합니다. 자세한 내용은 가상 버스와 비가상 버스 항목을 참조하십시오.
기본 작업 공간에서 Stateflow 입력 버스에 연결된 버스 신호와 속성이 동일한
Simulink.Bus
객체를 지정합니다. 다음 속성이 일치해야 합니다.입력값의 숫자, 이름, 유형
차원
샘플 시간
실수/복소수 여부
샘플링 모드
입력 신호가 Bus Creator 블록에서 오는 경우, Bus Creator 대화 상자에서 출력 데이터형 필드에 적절한 버스 객체를 지정합니다. 버스 객체를 지정하면, Simulink는 기본 작업 공간의
Simulink.Bus
객체 속성이 Simulink 버스 신호 속성과 일치하는지 확인합니다.Bus: <object name>
유형 필드에서
<object name>
을 Stateflow 버스를 정의하는Simulink.Bus
객체의 이름으로 바꿉니다.입력 버스나 출력 버스의 경우, Stateflow 버스에 연결되는 Simulink 모델에서 버스 신호를 지정할 필요는 없습니다. 그러나 버스 신호를 지정하는 경우, 해당 신호의 속성은 Stateflow 버스를 정의하는
Simulink.Bus
객체와 일치해야 합니다.<데이터형 표현식>
범위가
출력
이 아닌 버스의 경우,type
연산자를 호출하는 표현식을 사용합니다. 이 연산자는 한 버스의 데이터형을 Stateflow 차트 내 다른 버스의 데이터형으로 설정합니다. 예를 들어sf_bus_demo
모델에서type
연산자 표현식은 로컬 버스counterbus_struct
의 데이터형을 입력 버스inbus
를 기준으로 지정합니다. 두 버스는 모두Simulink.Bus
객체COUNTERBUS
를 기반으로 정의됩니다. 자세한 내용은 다른 데이터 객체에서 데이터형 도출하기 항목을 참조하십시오.
Stateflow 버스 초기화하기
Stateflow 버스를 데이터 객체로 정의한 후, 상태 또는 천이에서 데이터 객체에 값을 할당할 수 있습니다. 또는 속성 인스펙터를 통해 다음 방법 중 하나로 데이터 객체를 초기화할 수도 있습니다.
struct
함수를 사용하여 초기값을 직접 할당합니다.MATLAB 작업 공간에서 변수를 파라미터로 할당합니다.
초기값 직접 할당하기
기호 창에서 버스를 마우스 오른쪽 버튼으로 클릭하고 검사를 선택합니다.
초기값 필드에서
struct
함수를 사용하여 버스를 만듭니다.고급 섹션의 Initialize 메서드 드롭다운에서
파라미터
를 선택합니다.
MATLAB 작업 공간에서 변수를 파라미터로 할당하기
MATLAB 명령 창에서
Simulink.Bus.createMATLABStruct
(Simulink) 함수를 사용하여 MATLAB 구조체를 변수에 할당합니다.기호 창에서 버스를 마우스 오른쪽 버튼으로 클릭하고 검사를 선택합니다.
초기값 필드에서 변수의 이름을 입력합니다.
변수와 버스의 이름이 동일한 경우, 초기값 입력은 선택 사항입니다. 버스가 변수 이름을 추론합니다.
고급 섹션의 Initialize 메서드 드롭다운에서
파라미터
를 선택합니다.
제한 사항
속성 인스펙터는 다음에 대한 초기화를 지원하지 않습니다
HDL 코드 생성을 사용하는 모델 내의 버스
초기값 필드가
0
또는 필드가 없는 구조체로 설정된 버스Input
,Constant
,Parameter
또는Data Store Memory
의 범위를 갖는 버스비유계 버스 또는 string형을 포함하는 버스
가상 버스와 비가상 버스
Simulink 모델은 가상 버스와 비가상 버스를 지원합니다. 비가상 버스는 연속 메모리에 저장된 데이터 구조체에서 입력값을 읽어옵니다. 가상 버스는 비연속 메모리에서 입력값을 읽어옵니다. 자세한 내용은 Composite Interface Guidelines (Simulink) 항목을 참조하십시오.
Stateflow 차트는 비가상 버스만 지원합니다. Stateflow 입력 버스는 가상 버스 신호를 받아서 비가상 신호로 변환할 수 있습니다. Stateflow 입력 버스는 가상 버스 신호로부터 속성을 상속할 수 없습니다. 차트에 대한 입력이 가상 버스인 경우, 유형 지정을 통해 입력 버스의 유형 속성을 버스:
형식으로 설정합니다.<object name>
버스 디버그하기
Stateflow 버스를 디버그하기 위해 Stateflow 중단점과 관찰 창을 열어 시뮬레이션 중에 버스 필드 값을 검토합니다. 명령줄에서 버스 필드 값을 확인하려면 점 표기법을 사용하여 버스의 요소를 참조합니다. 자세한 내용은 Inspect and Modify Data and Messages While Debugging 항목을 참조하십시오.
참고 항목
Simulink.Bus
(Simulink)