주요 콘텐츠

FMU 블록 구현하기

블록을 구현하고 이 블록에 FMU(Functional Mockup Unit)를 할당합니다. 그런 다음 해당 블록을 살펴보면서 FMU를 확인할 수 있습니다. 이 예제에서는 차량 FMU와 함께 FMU 블록을 사용합니다.

  1. 모델을 만들고 FMU 블록을 추가합니다.

    FMU에서 소스 코드에 현재 플랫폼용 이진 파일이 누락된 경우, fmudialog.compileFMUSources 함수를 사용하여 현재 플랫폼용 이진 파일을 생성할 수 있습니다.

  2. 블록 대화 상자에서 FMU 이름 파라미터에 FMU 파일의 경로 이름을 입력하고 확인 또는 적용을 클릭합니다. 파일 확장자 .fmu는 선택 사항입니다.

    처음으로 확인 또는 적용을 클릭하면, 블록은 FMU를 연동 시뮬레이션(cosimulation) 또는 모델 교환(model exchange) 중 어떤 FMU 모드로 설정할지 식별합니다.

    블록은 slprj/_fmu/fmu_name 폴더도 만들고 이 폴더에 FMU 파일 내용의 압축을 풉니다. 파일 내용에는 다음이 선택 사항으로 포함됩니다.

    • binaries — FMU 이진 파일

    • documentation — FMU 문서 HTML 파일

    • resources — FMU 소스 파일

    • sources — FMU 소스 파일

    • 블록 마스크 및 설명 파일과 같은 기타 지원 파일

FMU 블록 아이콘과 포트 레이블이 해당 FMU의 레이블로 업데이트됩니다. 블록을 FMU와 연결한 후 FMU를 변경하려면 FMU 블록을 마우스 오른쪽 버튼으로 클릭한 다음 블록 파라미터 버튼 을 클릭하고 FMU 이름에 새 FMU 이름을 입력하십시오. 이 항목의 섹션에서는 Simplify Interface for Structured Data with FMU Import Block 예제의 FMU를 사용합니다.

FMU 블록 살펴보기

블록을 더블 클릭합니다. 현재 폴더에서 이름이 fmuVehicAOB.fmu인 FMU를 입력했다고 가정하겠습니다. FMU 블록 대화 상자에 fmuVehicAOB.fmu 파일에 정의된 FMU 파라미터가 반영됩니다.

파라미터 탭

FMU 블록 파라미터가 나열됩니다. 필요에 따라 값을 편집합니다. 트리 뷰를 확장하여 구조체 파라미터의 요소를 편집할 수 있습니다.

시뮬레이션 탭

기록 및 관련된 사용자 지정이 활성화됩니다.

  • 상대 허용오차를 입력하려면 FMU 허용오차 활성화를 선택하고 설정합니다.

  • 모델에서 블록의 샘플 시간을 결정하려면 통신 스텝 크기를 설정합니다. Simulink® 솔버에서 스텝 크기를 상속하려면 -1로 설정합니다. 이 옵션은 FMU가 연동 시뮬레이션 FMU인 경우에만 사용할 수 있습니다.

  • 이벤트 모드에서 시뮬레이션하려면 이벤트 모드 활성화 옵션을 선택합니다. 이 옵션은 FMU가 연동 시뮬레이션 모드에서 사용되고 FMI 3.0 표준과 호환되는 경우에만 사용할 수 있습니다.

  • 기록을 활성화하려면 FMU 디버그 기록 활성화를 선택합니다.

  • 디버그 로그를 리디렉션할 위치에서 로그의 대상을 선택합니다.

    • 파일(slprj\_fmu\_logs_modelname\modelname_blockname.txt에 저장됨)

    • 디스플레이(MATLAB® 명령 창에 표시됨)

    FMU 디버그 기록 활성화 체크박스가 선택되어 있고 디버그 로그를 리디렉션할 위치 파라미터가 Display로 설정되어 있으면 FMU 블록을 연동 시뮬레이션에 사용할 수 없습니다. 연동 시뮬레이션 및 다중 코어에 대한 자세한 내용은 Run Co-Simulation Components on Multiple Cores 항목을 참조하십시오.

  • 반환 상태를 기준으로 로그 필터링에서 원하는 반환 상태의 체크박스를 선택합니다.

  • Windows®에서 Linux® 이진 파일이 포함된 FMU를 사용하고 있고 시뮬레이션에 이 Linux 이진 파일을 사용하려면 다음을 사용하여 FMU 시뮬레이션 파라미터를 linux64로 설정합니다. 이 기능을 사용하려면 Simulink FMU Builder가 필요합니다.

입력 탭 및 출력 탭

이 두 탭에는 블록이 정의하는 입력 포트와 출력 포트가 나열됩니다. 유형 객체 필드에는 버스 유형 포트 또는 열거형 포트에 대해 버스 객체 또는 열거형 클래스가 나열됩니다. FMU 블록은 modelDescription.xml 파일 내의 메타데이터를 사용하여 버스 유형 포트 및 열거형 포트에 대한 신호 특성을 결정합니다.

열거형 포트의 경우, 다운스트림 블록 및 업스트림 블록이 신호 데이터를 상속할 수 있도록 하려면 입력 탭 및 출력 탭의 유형 객체 필드를 Inherit:Auto로 설정하십시오.

버스 유형 포트의 경우, 다운스트림 블록이 신호 데이터를 상속할 수 있도록 하려면 출력 탭의 유형 객체 필드를 Auto generate로 설정하십시오. 버스 포트에는 역방향 상속이 지원되지 않습니다. 버스 유형 입력 포트를 사용하는 FMU에는 호환되는 버스 유형 입력 신호를 제공해야 합니다.

작업 공간에서 FMU에 사용되는 버스 객체를 만들려면 fmudialog.createBusType 함수를 사용하십시오.

fmudialog.createBusType(gcb)

작업 공간에서 FMU에 사용되는 열거형 클래스를 만들려면 fmudialog.createEnumType 함수를 사용하십시오.

fmudialog.createEnumType(gcb)

블록 입력, 출력, 파라미터 및 내부 변수 구조체 변경하기

다음 파라미터를 사용하여 FMU 블록 입력 포트, 출력 포트 및 파라미터의 레이아웃을 변경할 수 있습니다.

파라미터동작설정
FMUInputMapping입력 포트의 계층 구조를 변경합니다.

'Flat' — 입력을 개별 신호로 분리합니다.

'Structured' — 입력을 신호로 구성된 구조체(버스)로 결합합니다.

FMUOutputMapping출력 포트의 계층 구조를 변경합니다.

'Flat' — 출력을 개별 신호로 분리합니다.

'Structured' — 출력을 신호로 구성된 구조체(버스)로 결합합니다.

FMUParamMapping파라미터의 계층 구조를 변경합니다.

'Flat' — 파라미터를 개별 파라미터로 분리합니다(파라미터 이름과 값이 나열됨).

'Structured' — 파라미터를 파라미터 값으로 구성된 구조체(struct)로 결합합니다.

FMUInternalMapping내부 변수의 계층 구조를 변경합니다.

'Flat' — 내부 변수를 개별 신호로 분리합니다.

'Structured' — 내부 변수를 신호로 구성된 구조체(버스)로 결합합니다.

이러한 값을 설정하려면 get_param 함수와 set_param 함수를 사용하십시오. 예를 들어, 블록 파라미터 탭에 구조체가 구성되어 있다고 가정하겠습니다.

해당 파라미터는 struct에 포함되어 있습니다. 파라미터를 개별적으로 나열하려면 다음과 같이 FMUParamMapping 속성을 'Flat'으로 설정합니다.

set_param(gcb,'FMUParamMapping', 'Flat')

타이밍 고려 사항

FMU 블록의 샘플 시간은 통신 스텝 크기 파라미터로 설정할 수 있습니다. 이 블록의 샘플 시간 설정인 tC는 모든 Simulink 블록과 마찬가지로 모델 샘플 시간 tM의 정수 배수여야 합니다. 통신 스텝 크기 tC가 모델 스텝 크기 tM의 배수가 아니면 Simulink에서 오류가 생성됩니다.

반면, FMU의 로컬 스텝 크기 tL은 FMU 사양의 일부이며 FMU 내부에서만 알려진 값입니다. 정상적인 동작을 위해서는 통신 스텝 크기 tCtL의 정수 배수여야 합니다. 모델 샘플 시간 tM 또는 블록 샘플 시간 tC가 FMU 로컬 스텝 크기 tL과 호환되지 않으면, 구현 방식에 따라 FMU가 런타임 시 오류를 일으킬 수도 있고 일으키지 않을 수도 있습니다.

FMU 블록에서는 시간 기반 클록을 포함하는 FMU를 가져올 수 있습니다. 시간 기반 클록 FMU 변수를 사용하여 FMU의 실행 레이트를 제어할 수 있습니다. Simulink에서 시간 기반 클록을 포함하는 FMU를 시뮬레이션하는 방법에 대한 예제는 Import and Simulate FMU with Time-Based Clocks in Simulink 항목을 참조하십시오.

FMU 문제 해결하기

FMU 사용에 문제가 있는 경우 다음을 수행하십시오.

  • FMU Check 툴을 사용하여 FMU를 검증합니다.

  • FMU 블록의 시뮬레이션 탭에서 FMU 디버그 기록 활성화 체크박스를 선택합니다.

  • FMU 공급업체에 문의합니다.

참고 항목

|

도움말 항목

외부 웹사이트