주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

생성된 ASAP2 파일 사용자 지정

다음 방법 중 하나를 사용하여 코드 생성기를 통해 ASAP2 파일의 필드를 사용자 지정할 수 있습니다:

계산 방법 이름 사용자 지정

생성된 ASAP2 파일에서, 계산 방법은 전자 제어 장치(ECU) 내부의 측정 및 보정 수치를 물리적 모델 기반의 표현으로 변환합니다. Simulink® Coder™ 소프트웨어를 사용하면 계산 방법의 이름을 사용자 지정할 수 있습니다. ASAP2 파일의 가독성을 높여주는 더 직관적인 이름을 지정하거나, 조직의 요구 사항을 충족하는 이름을 지정할 수 있습니다.

계산 방법 이름을 사용자 지정하려면 MATLAB® 함수인 getCompuMethodName를 사용하십시오. 이 함수는 matlabroot/toolbox/rtw/targets/asap2/asap2/user/getCompuMethodName.m에 정의되어 있습니다.

getCompuMethodName 함수는 계산 메서드 이름을 생성합니다. 함수 프로토타입은 다음과 같습니다:

cmName = getCompuMethodName(dataTypeName, cmUnits)

여기서

  • dataTypeName는 해당 계산 방식과 관련된 데이터형의 이름입니다.

  • cmUnitsSimulink.Parameter 또는 Simulink.Signal 객체(예: rpm 또는 m/s)의 Unit 속성에 지정된 단위입니다.

  • cmName는 생성된 계산 메서드 이름을 반환합니다.

이 함수가 반환하는 기본 생성된 이름의 형식은 다음과 같습니다:

<localPrefix><datatype>_<cmUnits>

여기서

  • <local_Prefix>matlabroot/toolbox/rtw/targets/asap2/asap2/user/getCompuMethodName.m에 정의된 로컬 접두사인 CM_입니다.

  • <datatype><cmUnits>getCompuMethodName 함수에 지정하신 인수입니다.

ASAP2 파일의 계산 방법 이름에는 cmUnits에 포함된 특수 문자가 지원되지 않습니다. 특수 문자는 이 테이블에 나와 있는 대로 변환됩니다.

특수 문자변환
%_percent_
-_dash_
/_per_
*_into_
°_deg_

예를 들어, dataTypeName 인수 'int16'cmUnits 인수 'm/s'를 사용하여 getCompuMethodName 함수를 호출한 다음 ASAP2 파일을 생성하면, 생성된 파일에 계산 방법 이름이 표시됩니다:

/begin COMPU_METHOD
   /* Name of CompuMethod */ CM_int16_m_per_s
   /* Units */ "m/s"
   ...
/end COMPU_METHOD

참조된 모델 요소 제외

R2024b 버전부터 생성된 A2L 파일에서 참조된 모델 요소를 제외할 수 있습니다. 기본적으로 참조된 모델 요소는 A2L 파일에 포함됩니다.

  1. sldemo_fuelsys 모델을 엽니다.

    open_system("sldemo_fuelsys")

  2. 모델을 빌드합니다.

  3. 다음 명령어를 사용하여 ASAP2 파일을 생성합니다:

    coder.asap2.export("sldemo_fuelsys", IncludeReferencedModels=false)

    생성된 ASAP2 파일에는 참조된 모델 요소가 없습니다.

구조체 및 64비트 정수 제외

R2022a 버전부터는 생성된 A2L 파일에서 구조체 요소와 64비트 정수를 제외할 수 있습니다. 기본적으로 구조체와 64비트 정수는 A2L 파일에 포함됩니다.

  1. sldemo_fuelsys 모델을 엽니다.

    open_system("sldemo_fuelsys")

  2. 모델을 빌드합니다.

  3. 다음 명령어를 사용하여 ASAP2 파일을 생성합니다:

    coder.asap2.export("sldemo_fuelsys", SupportStructureElements=false, ...
    Support64bitIntegers=false)

    생성된 ASAP2 파일에는 64비트 정수 및 구조체 요소가 포함되어 있지 않습니다.

특성 및 측정 객체를 그룹별로 내보내기

R2021b 버전부터 ASAP2 파일 내의 특성 및 측정 객체를 해당 속성에 따라 그룹화할 수 있습니다. 기본적으로, 생성된 ASAP2 파일에는 모델에 존재하는 서브시스템에 따라 GROUPSSUB_GROUPS가 포함되지만, 이는 해당 서브시스템에서 ASAP2 파일로 내보내진 데이터 요소가 하나 이상 있는 경우에만 해당됩니다.

  1. sldemo_fuelsys 모델을 엽니다.

    openExample("sldemo_fuelsys")

  2. 모델의 코드 퍼스펙티브로 이동한 후 C 코드 > Quick Start를 클릭하여 Simulink Coder Quick Start 앱을 사용하세요.

  3. 모델을 빌드합니다.

  4. Generate Calibration Files 툴을 사용하거나 다음 명령어를 실행하여 ASAP2 파일을 생성합니다:

    coder.asap2.export("sldemo_fuelsys")

    데이터 요소들은 모델 아키텍처에 따라 그룹화됩니다. 최상위 모델은 GROUP라고 하며, 이 모델 내의 서브시스템들은 SUB_GROUPS라고 합니다. 생성된 파일에는 다음과 같은 줄들이 포함되어 있습니다:

     /begin GROUP
        /* Name                   */      sldemo_fuelsys
        /* Long identifier        */      "sldemo_fuelsys"
        /* Root                   */      ROOT
        /begin SUB_GROUP
          sldemo_fuelsys.Engine_Gas_Dynamics
          sldemo_fuelsys.fuel_rate_control
        /end SUB_GROUP
      /end GROUP

  5. ASAP2 파일에서 scalar 객체들을 GROUP_TYPE_SCALAR라는 이름의 그룹으로 묶으려면 다음 명령을 사용하십시오:

    coder.asap2.export("sldemo_fuelsys",CustomizeGroupsBy={'SCALAR'})

또한 array 유형의 객체와 룩업 테이블을 테이블의 차원에 따라 MAP, CURVE, CUBOID, CUBE_4CUBE_5로 그룹화할 수도 있습니다.

기본 이벤트 목록이 포함된 ASAP2 생성

R2022a부터 멀티레이트 모델의 경우, ASAP2 파일에 DEFAULT_EVENT_LIST가 포함된 IF_DATA 섹션이 포함되어 있어, 보정 툴에서 데이터 요소별 래스터 값을 확인할 수 있습니다.

  1. sldemo_fuelsys 모델을 엽니다.

    open_system("sldemo_fuelsys")

  2. 모델을 빌드합니다.

  3. Generate Calibration Files 툴을 사용하거나 다음 명령어를 실행하여 ASAP2 파일을 생성하십시오:

    coder.asap2.export("sldemo_fuelsys")

  4. 이 모델은 0.01의 싱글레이트를 가집니다. 생성된 파일에서는 측정값을 다음과 같이 정의합니다:

       /begin MEASUREMENT
        /* Name                   */      rtB.es_o.throttle
        /* Long identifier        */      ""
        /* Data type              */      FLOAT32_IEEE
        /* Conversion method      */      CM_single
        /* Resolution (Not used)  */      0      
        /* Accuracy (Not used)    */      0      
        /* Lower limit            */      -3.4E+38
        /* Upper limit            */      3.4E+38
        ECU_ADDRESS                       0x0000 /* @ECU_Address@rtB.es_o.throttle@ */
      /end MEASUREMENT

  5. 다음 명령어를 사용하여 모델을 멀티레이트 모델로 변환하십시오:

    blockName = ['sldemo_fuelsys' '/EGO Fault Switch'];
    set_param(blockName, 'SampleTime', '0.02');

  6. 모델을 빌드합니다.

  7. 다음 명령어를 사용하여 ASAP2 파일을 생성합니다:

    coder.asap2.export("sldemo_fuelsys")

  8. 생성된 파일에서는 이제 측정값을 다음과 같이 정의하고 있습니다:

       /begin MEASUREMENT 
        /* Name                   */      rtB.es_o.throttle
        /* Long identifier        */      ""
        /* Data type              */      FLOAT32_IEEE
        /* Conversion method      */      CM_single
        /* Resolution (Not used)  */      0      
        /* Accuracy (Not used)    */      0      
        /* Lower limit            */      -3.4E+38
        /* Upper limit            */      3.4E+38
        ECU_ADDRESS                       0x0000 /* @ECU_Address@rtB.es_o.throttle@ */
        /begin IF_DATA XCP
          /begin DAQ_EVENT VARIABLE
              /begin DEFAULT_EVENT_LIST
                EVENT  0x0001
              /end DEFAULT_EVENT_LIST
          /end DAQ_EVENT
         /end IF_DATA
      /end MEASUREMENT 

  9. DEFAULT_EVENT_LIST가 포함되지 않은 ASAP2 파일을 생성하려면 다음 명령을 사용하십시오:

    coder.asap2.export("sldemo_fuelsys",IncludeDefaultEventList=false);

레코드 레이아웃을 별도의 파일로 생성하기

  1. sldemo_fuelsys 모델을 엽니다.

    open_system("sldemo_fuelsys")

  2. 모델을 빌드합니다.

  3. 다음 명령어를 사용하여 ASAP2 파일을 생성합니다:

    coder.asap2.export("sldemo_fuelsys",IncludeAllRecordLayouts=true)

  4. RecordLayouts.a2l 파일은 ASAP2 파일의 버전에 따라 생성됩니다. ASAP2 파일에서 다음 줄을 확인해 주세요:

    /include "RecordLayouts.a2l"

  5. 생성된 RecordLayouts.a2l 파일에는 모델에 포함된 데이터형의 레코드 레이아웃이 담겨 있습니다.

    참고

    RecordLayouts.a2l 파일은 ASAP2 파일과 동일한 폴더에 있어야 합니다.

  6. coder.asap2.export("sldemo_fuelsys",IncludeAllRecordLayouts=false)는 별도의 레코드 레이아웃 파일을 생성하지 않고, 내보낸 데이터 객체의 데이터형에 대한 레코드 레이아웃을 ASAP2 파일에 포함시킵니다.

    /begin  RECORD_LAYOUT Scalar_FLOAT32_IEEE
        FNC_VALUES 1 FLOAT32_IEEE COLUMN_DIR DIRECT
      /end  RECORD_LAYOUT 
    
      /begin  RECORD_LAYOUT Scalar_FLOAT64_IEEE
        FNC_VALUES 1 FLOAT64_IEEE COLUMN_DIR DIRECT
      /end  RECORD_LAYOUT
    ...

ASAP2 파일 병합

R2023a부터 여러 A2L 파일의 데이터 요소를 Simulink 모델로 병합할 수 있습니다. coder.asap2.merge 함수를 사용하여 병합된 디스크립터 객체를 생성하고, 모델의 데이터 요소와 병합된 A2L 파일을 포함하는 A2L 파일을 생성합니다.

Vehicle Network Toolbox™는 coder.asap2.merge (Embedded Coder) 함수를 사용하여 A2L 파일을 병합하는 데 필요합니다.

  1. sldemo_fuelsys 모델을 엽니다.

    open_system("sldemo_fuelsys")

  2. 모델을 빌드합니다.

  3. 다음 명령어를 사용하여 A2L 파일의 데이터 요소를 모델에 병합합니다:

    mergeObj = coder.asap2.merge("sldemo_fuelsys",{"ASAP2File1.a2l"})

    두 개 이상의 A2L 파일을 병합하려면 파일을 쉼표로 구분하여 지정하십시오. 예를 들면 다음과 같습니다.

    mergeObj = coder.asap2.merge("sldemo_fuelsys",{"ASAP2File1.a2l","ASAP2File2.a2l"})

  4. mergeObj를 사용하여 A2L 파일을 생성합니다.

    coder.asap2.export("sldemo_fuelsys",CustomEcuDescriptions=mergeObj)

생성된 A2L 파일에는 sldemo_fuelsys 모델과 ASAP2File1 A2L 파일에 포함된 데이터 요소들이 담겨 있습니다.

ECU 주소 확장 지정

R2022a부터 EcuAddressExtension 속성에 정수 값을 지정하여 ASAP2 파일에 추가 주소 정보를 포함시킬 수 있습니다. 기본적으로 추가 주소 정보는 제공되지 않습니다.

  1. sldemo_fuelsys 모델을 엽니다.

    open_system("sldemo_fuelsys")

  2. 모델을 빌드합니다.

  3. 다음 명령어를 사용하여 ASAP2 파일을 생성합니다:

    coder.asap2.export("sldemo_fuelsys",EcuAddressExtension=4)

    특성, 측정값 및 축 점에 대한 ECU_ADDRESS_EXTENSION 키워드는 ASAP2 파일에 포함되어 있어, 추가 주소 정보를 지정할 수 있습니다.

     /begin MEASUREMENT 
       /* Name                   */      rtB.MinMax
       /* Long identifier        */      ""
       /* Data type              */      FLOAT64_IEEE
       /* Conversion method      */      CM_double
       /* Resolution (Not used)  */      0      
       /* Accuracy (Not used)    */      0      
       /* Lower limit            */      -1.7E+308
       /* Upper limit            */      1.7E+308
       ECU_ADDRESS                       0x0000 /* @ECU_Address@rtB.MinMax@ */
       ECU_ADDRESS_EXTENSION 4
     /end MEASUREMENT 

참고 항목

|

도움말 항목