Skip to main content

DataType Editor

이 장에서 다루는 것

애플리케이션 데이터 타입 · 구현 데이터 타입과 물리 단위를 정의하는 DataType 에디터의 화면 구성, 9개 카테고리의 편집 항목, 내장 프리미티브 11종의 규칙, 그리고 실시간 검증 메시지를 안내합니다. ARXML 임포트·익스포트는 13. 임포트 · 익스포트에서 다룹니다.

대상 독자는 인터페이스나 SWC가 쓸 데이터 타입을 정의하는 사용자입니다. 작업을 시작하려면 먼저 프로젝트가 열려 있어야 합니다.

에디터는 탐색기에서 design ▸ System ▸ DataType 노드를 더블클릭하면 탭으로 열립니다. 저장 대상은 DataType 모델 하나이며, 데이터 타입과 단위를 함께 담습니다.

10.1 화면 구성

에디터 맨 위에 두 개의 탭 버튼이 있고, 그 아래에 선택된 탭의 내용이 표시됩니다.

내용
DataType데이터 타입 목록과 상세 편집
Unit물리 단위 목록과 상세 편집

DataType 탭 배치

DataType 탭 — 목록 · Configuration + MEMBERS 표 · Preview · Validation 네 영역

DataType 탭 — 목록 · Configuration + MEMBERS 표 · Preview · Validation 네 영역

세 영역 사이의 경계와 Preview / Validation 사이의 가로 경계는 드래그해 크기를 바꿀 수 있습니다.

Unit 탭 배치

왼쪽에 단위 목록(Unit, + / - 버튼), 오른쪽에 Configuration 폼과 Preview가 나란히 놓입니다. Unit 탭에는 검색·필터·Validation 영역이 없습니다.

Unit 탭 — 검색·필터·Validation 이 없는 목록과 Configuration, 그리고 변환식 · 그래프 · SI↔단위 변환표 · 비교 막대 · 값 변환기가 놓인 Preview

Unit 탭 — 검색·필터·Validation 이 없는 목록과 Configuration, 그리고 변환식 · 그래프 · SI↔단위 변환표 · 비교 막대 · 값 변환기가 놓인 Preview

Interface 에디터에 들어가는 축소 모드

09. Interface 에디터의 오른쪽 패널에도 같은 DataType 편집기가 들어 있습니다. 이 축소 모드에서는 탭 버튼, 타입 목록, Unit 탭, Validation 패널이 모두 숨겨지고, 속성 폼(위 60%, 머리글 DATA TYPE)과 Preview(아래 40%, 머리글 PREVIEW)만 세로로 배치되며 그 사이의 가로 경계를 드래그할 수 있습니다. 인터페이스를 만들다가 타입을 바로 정의할 수 있게 하려는 구성이며, 편집 결과는 같은 DataType 모델에 저장됩니다. 축소 모드는 자체 단축키를 갖지 않고, 저장과 실행 취소를 Interface 에디터에 맡깁니다.

Interface 에디터 오른쪽 패널에 축소 모드로 들어간 DataType 편집기 — DATA TYPE 과 PREVIEW 두 영역만 남는다

Interface 에디터 오른쪽 패널에 축소 모드로 들어간 DataType 편집기 — DATA TYPE 과 PREVIEW 두 영역만 남는다

10.2 데이터 타입 카테고리 (9종)

Category는 버튼 묶음(세그먼트)으로 고릅니다. 표시 순서는 PRIMITIVE, ALIAS, ENUMERATION, FIXED_ARRAY, DYNAMIC_ARRAY, STRING, STRUCTURE, MAP, UNION입니다.

Category 세그먼트 9종 — PRIMITIVE 만 흐리게 표시되고 선택할 수 없다

Category 세그먼트 9종 — PRIMITIVE 만 흐리게 표시되고 선택할 수 없다

모든 카테고리에 공통으로 NAME, Category, Description 항목이 있습니다. Description 은 여러 줄 입력이며 항상 폼의 마지막에 옵니다. 9개 카테고리의 의미와 고유 편집 항목은 다음과 같습니다.

카테고리의미고유 편집 항목
PRIMITIVE내장 기본 타입Min / Max (전 항목 읽기 전용)
ALIAS다른 타입에 대한 별칭(typedef)BaseType, C++ Namespace, Factor, Offset, Min, Max, Unit
ENUMERATION열거형BaseType, C++ Namespace + ENUMERATION
FIXED_ARRAY고정 길이 배열Element Type, Array Size, C++ Namespace
DYNAMIC_ARRAY가변 길이 배열Element Type, Max Size, C++ Namespace
STRING문자열 (AP 전용)Max Size, C++ Namespace
STRUCTURE구조체C++ Namespace + MEMBERS
MAP연관 배열 (AP 전용)Key Type, Value Type, C++ Namespace
UNION공용체C++ Namespace + MEMBERS

BaseType / Element Type / Key Type / Value Type / Unit은 모두 검색형 선택 상자입니다. 자기 자신은 어느 경우에도 후보에서 빠지며, 나머지 후보 범위는 항목마다 다릅니다.

항목후보
ALIAS · ENUMERATION의 BaseType내장 프리미티브 11종만 (사용자 정의 타입은 고를 수 없습니다)
FIXED_ARRAY · DYNAMIC_ARRAY의 Element Type다른 모든 타입
STRUCTURE · UNION 멤버의 Type다른 모든 타입
MAP의 Key Type내장 프리미티브 중 boolean 을 뺀 10종과 STRING 카테고리 타입
MAP의 Value Type다른 모든 타입
ALIAS의 UnitUnit 탭의 모든 단위. 표시 문구는 DisplayName이 있으면 DisplayName [이름] 형태(예: km/h [KilometersPerHour]), 없으면 이름만

ALIAS 의 BaseType 후보 — 내장 프리미티브 11종만 나온다

ALIAS 의 BaseType 후보 — 내장 프리미티브 11종만 나온다

PRIMITIVE는 사용자가 고를 수 없습니다. 세그먼트에서 PRIMITIVE 버튼은 흐리게 표시되고 클릭이 막혀 있으며, 데이터 계층에서도 PRIMITIVE로의 변경이 거부됩니다. 내장 프리미티브가 아닌 타입이 PRIMITIVE가 되면 모든 필드가 읽기 전용으로 잠겨 되돌릴 방법이 없어지고, 애초에 파일에 저장할 수 없는 값이기 때문입니다.

10.3 MEMBERS / ENUMERATION 하위 표

STRUCTURE, UNION, ENUMERATION을 고르면 Configuration 폼 아래에 하위 표가 붙습니다. 제목은 ENUMERATION이면 ENUMERATION, 나머지는 MEMBERS 입니다. 카테고리별 표 구성은 다음과 같습니다.

카테고리열 구성추가 버튼 툴팁새 행 기본값
STRUCTURE#, Type, Name, Optional, 삭제Add Member이름 SubElement_0, 타입 uint8, Optional False
UNION#, Type, Name, 삭제Add Member이름 Member_0, 타입 uint8
ENUMERATION#, Name, Value, 삭제Add Enumeration이름 Literal_0, 값은 기존 최댓값 + 1 (없으면 0)

STRUCTURE 의 MEMBERS 표 — # 드래그 손잡이, Type / Name / Optional 열, 행 삭제 ×

STRUCTURE 의 MEMBERS 표 — # 드래그 손잡이, Type / Name / Optional 열, 행 삭제 ×

  • # 칸은 드래그 손잡이이며 0부터 세는 행 번호를 보여 줍니다. 이 칸을 눌러 행을 위아래로 끌면 순서를 바꿀 수 있습니다.
  • 행 끝의 × 버튼이 그 행을 지웁니다(툴팁 Remove Member / Remove Enumeration).
  • 가운데 두 열(STRUCTURE·UNION은 Type / Name, ENUMERATION은 Name / Value)은 경계를 드래그해 폭을 조절할 수 있습니다. #, Optional, 삭제 칸은 폭이 고정입니다.
  • 이름 칸은 엄격하게 검사합니다. 비었거나 공백뿐이거나 AUTOSAR 규칙을 어긴 이름은 저장되지 않고 이전 이름이 유지됩니다. 앞뒤 공백은 잘라 낸 값으로 저장됩니다.
  • ENUMERATION의 Value 는 정수만 받습니다. BaseType이 내장 프리미티브를 가리키고 있으면 입력한 값이 그 표현 범위로 자동 보정(클램프) 됩니다. 예를 들어 BaseType이 uint8 인데 300을 입력하면 255로 바뀝니다. BaseType이 비어 있거나 범위를 알 수 없는 타입이면 보정하지 않으며, 범위 검사도 하지 않습니다. BaseType이 비어 있는 경우에는 대신 BaseType is required 오류가 Validation 패널에 표시되고, BaseType은 지정되어 있으나 범위를 알 수 없는 타입이면 아무 표시도 나오지 않습니다. BaseType이 비어 있거나 범위를 알 수 없는 타입이면 보정하지 않고, 대신 Validation 패널이 범위 초과를 오류로 보고합니다.

10.4 목록 조작 (DataType 탭)

목록 패널의 조작은 다음과 같습니다.

조작설명
+ (툴팁 Add DataType)새 타입을 만듭니다. 이름은 DataType 뒤에 목록의 현재 항목 수를 붙인 값이고 Category는 비어 있습니다
(툴팁 Delete selected DataType)선택 타입을 확인 없이 삭제합니다. 그 타입을 가리키던 다른 타입의 BaseType / Element Type / Key Type / Value Type / 멤버 타입은 비워집니다(다른 타입으로 대체되지 않습니다)
(툴팁 More actions)필터 / 정렬 팝오버를 엽니다
검색자리표시자는 search... 입니다. 이름에 대해 대소문자 구분 없이 부분 일치로 거릅니다
방향키목록에 포커스를 두고 위아래 방향키로 선택을 옮깁니다

카테고리 배지와 필터 상태 — ENUMERATION 하나만 선택해 목록 제목이 DataType [ENUMERATION] 이 된 상태

카테고리 배지와 필터 상태 — ENUMERATION 하나만 선택해 목록 제목이 DataType [ENUMERATION] 이 된 상태

이름의 숫자는 내장 프리미티브 11종을 포함한 목록 길이입니다. 따라서 사용자 정의 타입이 하나도 없는 프로젝트에서 처음 만든 타입의 이름은 DataType0 이 아니라 DataType11 이 됩니다. 이름 중복 검사는 하지 않으므로, 중간 항목을 지운 뒤 새로 만들면 기존 이름과 겹칠 수 있습니다. 이 경우 Validation 패널에 Duplicate ShortName 오류가 올라옵니다.

새 타입은 Category가 비어 있으므로 Category 세그먼트 아래에 Category is required 힌트가 나타나고, Validation 패널에도 오류로 올라옵니다. 카테고리를 고르면 힌트가 사라집니다.

내장 프리미티브를 선택하고 를 눌러도 아무 일도 일어나지 않습니다. 프리미티브는 삭제할 수 없습니다.

⋯ 메뉴

팝오버에는 다음 구역이 있습니다.

구역항목
Filter by Category9개 카테고리 체크박스 + 오른쪽의 All 버튼(툴팁 Select All / Deselect All)
Sort byDefault (Added Order) / Name (A-Z) / Category

⋯ 메뉴 — Filter by Category 9종과 Sort by 3종 (All 버튼의 툴팁이 함께 보인다)

⋯ 메뉴 — Filter by Category 9종과 Sort by 3종 (All 버튼의 툴팁이 함께 보인다)

  • 카테고리가 지정되지 않은 타입은 필터와 무관하게 항상 표시됩니다.
  • 필터 상태는 목록 제목에 나타납니다. 전부 선택(또는 전부 해제)이면 DataType, 한 개만 선택하면 DataType [ALIAS], 여러 개면 DataType (3/9) 형태입니다.
  • 정렬은 화면 표시 순서만 바꾸며, 파일에 저장되는 순서는 그대로 유지됩니다.
  • 목록 항목에는 카테고리 배지가 [ENUMERATION] 형태로 붙습니다. 내장 프리미티브 항목은 별도 스타일로 구분됩니다.
  • 타입이 하나도 없으면 No DataTypes yetClick [+] to add manually 가 표시되고, 검색/필터 결과가 0개이면 No matching DataTypes 가 표시됩니다.

10.5 Validation 패널

DataType 탭 오른쪽 아래의 Validation 영역이 편집 결과를 실시간으로 검사합니다. 편집 후 약 0.3초 뒤에 갱신되며, 문제가 없으면 No validation issues 가 표시됩니다. 문제가 있으면 위에 2 errors, 1 warning 같은 요약이 나오고 아래에 항목이 나열됩니다. 항목을 클릭하면 해당 타입이 목록에서 선택됩니다.

Validation 패널의 요약과 항목, 그리고 BASETYPE 필드에 바로 표시되는 BaseType is required

Validation 패널의 요약과 항목, 그리고 BASETYPE 필드에 바로 표시되는 BaseType is required

메시지는 [인덱스] "타입이름" — 내용 형식입니다. 인덱스는 내장 프리미티브를 포함한 목록에서의 0부터 세는 위치이며, 정렬·필터를 바꿔도 값이 달라지지 않습니다.

오류 (error)

오류로 보고되는 검사와 메시지는 다음과 같습니다.

검사메시지
이름 없음[0] ShortName is empty
카테고리 미설정[0] "MyType" — Category is not set
ALIAS / ENUMERATION의 BaseType 없음[0] "MyType" — BaseType is required
ALIAS의 Factor가 0[0] "MyType" — Factor must not be 0
ALIAS의 Min > Max[0] "MyType" — Min (10) > Max (5)
FIXED_ARRAY / DYNAMIC_ARRAY의 Element Type 없음[0] "MyType" — Element Type is required
FIXED_ARRAY의 Array Size 없음 또는 0 이하[0] "MyType" — Array Size is required
MAP의 Key Type / Value Type 없음[0] "MyType" — Key Type is required / — Value Type is required
이름 중복[1] Duplicate ShortName: "MyType"
자기 자신 참조— Self-reference in BaseType/Element Type / — Self-reference in Key Type / — Self-reference in Value Type / — Member[0] self-reference
순환 참조[0] "A" — Circular reference: A -> B -> A

구조체 · 열거형 세부 오류

멤버와 리터럴에 대한 세부 검사는 다음과 같습니다.

검사메시지
멤버 이름 없음— Member[0] name is empty
멤버 타입 미설정— Member[0] type is not set
멤버 이름 중복— Duplicate member name: "value"
리터럴 이름 없음— Literal[0] name is empty
리터럴 이름 중복— Duplicate literal name: "on"
리터럴 값 중복— Duplicate literal value: 3
BaseType이 정수인데 리터럴 값이 소수— Literal[0] value 1.5 is not an integer (BaseType is not float)
리터럴 값이 BaseType 범위 밖— Literal[0] value 300 is out of BaseType range [0, 255]

경고 (warning)

경고로 보고되는 항목은 다음과 같습니다.

검사메시지
STRING의 Max Size 미설정[0] "MyString" — Max Size not set, default 255 will be applied

입력 즉시 나타나는 필드 오류

Validation 패널과 별개로, 다음 조건은 해당 입력 필드 바로 아래에 표시됩니다.

대상조건메시지
ALIAS의 Factor값이 0Factor=0 is not valid for LINEAR conversion (constant = TEXTTABLE)
ALIAS의 Min / MaxMin > Max (두 필드 모두에)Min (10) > Max (5)
FIXED_ARRAY의 Array Size비었거나 0 이하Array Size is required
BaseType / Element Type / Key Type / Value Type자기 자신을 가리킴Self-reference is not allowed
카테고리별 필수 참조 필드비어 있음BaseType is required / Element Type is required / Key Type is required / Value Type is required

MEMBERS / ENUMERATION 행별 오류

하위 표(10.3)의 각 행도 자체 오류 표시를 갖습니다.

대상조건메시지
멤버 · 리터럴 이름비어 있음Name is required
멤버 · 리터럴 이름다른 행과 겹침Duplicate name
멤버 이름AUTOSAR 규칙 위반 (경고)Must start with a letter, then letters/digits/underscores only
멤버 타입비어 있음Type is required
멤버 타입자기 자신을 가리킴Self-reference is not allowed
리터럴 값다른 행과 겹침Duplicate value
리터럴 값BaseType이 정수인데 소수Not an integer (BaseType is not float)
리터럴 값BaseType 범위 밖Out of range [0, 255]

ENUMERATION 표의 행별 오류 — 이름이 겹친 두 행이 붉게 표시되고 Validation 에 Duplicate literal name 이 올라온다

ENUMERATION 표의 행별 오류 — 이름이 겹친 두 행이 붉게 표시되고 Validation 에 Duplicate literal name 이 올라온다

DYNAMIC_ARRAY에는 크기 필수 검사가 없습니다. Element Type만 있으면 오류로 잡지 않습니다. Max Size는 상한을 표현하는 선택 항목입니다.

10.6 Preview 패널

선택한 타입의 구조를 카테고리별로 시각화합니다. 선택된 타입이 없으면 Select a DataType to preview 가 표시됩니다. 카테고리별 표시 내용은 다음과 같습니다.

카테고리표시 내용
PRIMITIVE크기·인코딩과 값 범위 막대 (boolean은 양 끝이 false / true 로 표시됩니다)
ALIASBase 정보(Unit이 지정되어 있으면 Unit 행이 따라붙습니다), Raw ↔ Physical 그래프와 값 변환기. 변환식 줄(physical = 0.1 × raw + 0)은 Factor가 1이 아니거나 Offset이 0이 아닐 때만 나타납니다
STRUCTUREstruct (3 members) 요약과 멤버 상자 그리드. Optional 멤버는 별도 표시. 멤버가 없으면 (empty struct)
UNIONunion (3 variants) 요약과 멤버 상자 그리드. 멤버가 없으면 (empty union)
ENUMERATIONbase: uint8 과 리터럴 칩(이름 + 값). 리터럴이 없으면 No literals defined
FIXED_ARRAY / DYNAMIC_ARRAY요소 타입과 길이를 나타내는 배열 도식
STRING최대 길이만큼의 문자 칸 도식
MAPmap<Key, Value> 요약과 KeyValue 두 상자

ALIAS Preview에는 그래프 아래에 값 변환기가 함께 놓입니다. 위 줄에 Raw 값을 넣으면 오른쪽에 Physical 값이, 아래 줄에 Physical 값을 넣으면 오른쪽에 Raw 값이 즉시 나옵니다(소수점 두 자리). 입력란에 마우스 휠을 굴려 값을 올리고 내릴 수도 있습니다. Factor와 Offset이 의도한 대로 동작하는지 확인하는 계산기이며, 모델을 바꾸지 않습니다. 단위 쪽에도 같은 성격의 변환기가 있습니다(10.8).

ALIAS Preview — Base 정보, 변환 그래프, 그리고 Raw ↔ Physical 값 변환기

ALIAS Preview — Base 정보, 변환 그래프, 그리고 Raw ↔ Physical 값 변환기

멤버나 요소의 타입 이름을 클릭하면 그 타입으로 파고들어(drill-down) Preview가 바뀝니다. 이때 왼쪽 위에 ← Back 버튼이 나타나 이전 타입으로 돌아갈 수 있습니다. 내장 프리미티브는 더 이상 펼칠 구조가 없으므로 클릭 대상이 아닙니다.

Preview 드릴다운 — 멤버 타입을 눌러 그 타입으로 들어간 상태. ← Back 이 나타나고 왼쪽 폼의 선택은 그대로다

Preview 드릴다운 — 멤버 타입을 눌러 그 타입으로 들어간 상태. ← Back 이 나타나고 왼쪽 폼의 선택은 그대로다

10.7 내장 프리미티브 11종

PAIO는 다음 11개 이름을 예약어로 관리합니다. 이 타입들은 에디터를 열 때 메모리에 자동으로 주입되며 모델 파일에는 저장되지 않습니다.

이름크기 / 인코딩C 선언C++ 매핑값 범위
boolean8 / BOOLEANunsigned charbool0 ~ 1
float3232 / IEEE754floatfloat±3.4028235e+38
float6464 / IEEE754doubledouble±1.7976931348623157e+308
sint88 / 2Csigned charint8_t-128 ~ 127
sint1616 / 2Csigned shortint16_t-32768 ~ 32767
sint3232 / 2Csigned longint32_t-2147483648 ~ 2147483647
sint6464 / 2Csigned long longint64_t-9223372036854775808 ~ 9223372036854775807
uint88 / NONEunsigned charuint8_t0 ~ 255
uint1616 / NONEunsigned shortuint16_t0 ~ 65535
uint3232 / NONEunsigned longuint32_t0 ~ 4294967295
uint6464 / NONEunsigned long longuint64_t0 ~ 18446744073709551615

알아 둘 점은 다음과 같습니다.

  • 모델 안에서는 항상 AUTOSAR 표기(uint8)를 사용합니다. uint8_t 같은 C++ 표기는 C++ ARXML을 내보낼 때만 나타납니다.
  • 사용자 정의 타입에 이 11개 이름을 붙일 수 없습니다. 시도하면 필드에 'uint8' is a reserved built-in primitive name 이 표시되고 값이 저장되지 않습니다.
  • 프리미티브는 이름과 속성을 바꿀 수 없고 삭제할 수도 없습니다(모든 필드가 읽기 전용).
  • 파일에 프리미티브가 안 보이는 것은 정상이며 손실이 아닙니다. 정의가 도구에 내장되어 있으므로 저장할 이유가 없고, 저장하면 다음에 열 때 내장 정의와 충돌할 수 있습니다. 스키마도 이 11개 이름을 금지합니다. 다른 타입은 이름으로 프리미티브를 참조하면 됩니다.
  • 파일에 예약어 이름을 가진 항목이 있는데 카테고리가 PRIMITIVE가 아니면, 그 항목은 손상된 것으로 보고 버린 뒤 올바른 내장 정의를 다시 주입합니다.

익스포트 시 만들어지는 구조

프리미티브 하나는 익스포트할 때 네 가지 AUTOSAR 표현으로 함께 나갑니다.

표현이름
SW-BASE-TYPE에디터에 보이는 이름 그대로
APPLICATION-PRIMITIVE-DATA-TYPE에디터에 보이는 이름 그대로 (boolean 만 CATEGORY가 BOOLEAN, 나머지는 VALUE)
IMPLEMENTATION-DATA-TYPE (C)에디터에 보이는 이름 그대로
STD-CPP-IMPLEMENTATION-DATA-TYPE (C++)C++ 이름 (uint8_t, bool 등)

여기에 두 개의 DATA-TYPE-MAPPING-SET이 자동으로 따라붙습니다. 이름은 각각 DataTypeMappingsCP(Application → C 구현)와 DataTypeMappingsAP(Application → C++ 구현)입니다.

10.8 Unit 탭

목록

단위 목록의 조작은 다음과 같습니다.

조작설명
+ (툴팁 Add Unit)새 단위를 만듭니다. 이름은 Unit 뒤에 목록의 현재 항목 수를 붙인 값입니다
- (툴팁 Delete selected Unit)선택 단위를 확인 없이 삭제합니다

기본 단위 33종이 목록을 채운 상태이므로, 아무것도 추가하지 않은 프로젝트에서 처음 만든 단위의 이름은 Unit33 이 됩니다.

편집 항목

단위의 편집 항목은 다음과 같습니다.

항목형태비고
NAME텍스트AUTOSAR SHORT-NAME 규칙. 규칙 위반 값은 저장되지 않습니다
DisplayName텍스트화면 표시용 기호 (km/h, % 등)
FactorSiToUnit실수SI 단위 → 이 단위 변환 계수
OffsetSiToUnit실수SI 단위 → 이 단위 변환 오프셋
Description여러 줄 텍스트

ALIAS 타입의 Unit 항목에서 여기서 정의한 단위를 참조합니다.

  • 단위 이름을 바꾸면 그 단위를 참조하던 모든 데이터 타입의 Unit 값이 함께 갱신됩니다.
  • 단위를 삭제하면 그 단위를 참조하던 데이터 타입의 Unit 값이 비워집니다.

Preview

오른쪽 Preview는 선택한 단위의 변환을 여러 형태로 함께 보여 줍니다(위 Unit 탭 그림 참고). 위에서부터 다음 순서입니다.

영역내용
머리글DisplayName[NAME] 형태 (km/h[Kilometer]). DisplayName이 없으면 이름만 표시합니다
변환식km = 0.001 × m 형태. Factor가 1이면 곱하는 항이, Offset이 0이면 더하는 항이 빠집니다
그래프SI 값을 가로축, 이 단위 값을 세로축으로 놓은 직선
도메인 배지아래 설명 참조
변환 표대표 SI 값 몇 개를 이 단위로 바꾼 표. 표본 값은 Factor 크기에 맞춰 자동으로 고릅니다
비교 막대SI 1 = ? 아래의 두 막대로 1 SI와 그에 해당하는 단위 값의 크기를 견줍니다
값 변환기SI 값을 넣으면 단위 값이, 단위 값을 넣으면 SI 값이 즉시 나옵니다. 입력란에 마우스 휠도 씁니다
설명Description 에 적은 내용

도메인 배지는 Factor와 Offset이 이미 알려진 변환과 일치할 때만 나타납니다. 도구가 속도 · 온도 · 압력 · 길이 · 질량 · 시간 · 각도 · 주파수 · 전압 · 전류 · 토크 · 비율 12개 영역에 걸쳐 변환 29종을 표로 갖고 있어서, 편집 중인 단위의 Factor · Offset이 그중 하나와 1% 이내로 같으면 LENGTH 같은 영역 이름과 m → km 같은 기호 쌍을 배지로 띄웁니다. 이때 변환식과 변환 표의 SI 자리도 실제 SI 기호(m)로 바뀝니다. 일치하는 변환이 없으면 배지가 나오지 않고 SI 라는 글자가 그대로 쓰입니다 — FactorSiToUnit 이 1인 단위(Volt, Meter, Second 등)가 여기에 해당하며, 이는 정상입니다.

후보가 여럿이면 이름으로 가립니다. Factor 0.001은 kPa, km, t, kV, kHz, kN·m 여섯 변환에 모두 걸리는데, 단위 이름이 Kilometer 이므로 길이 변환으로 정해집니다. 이름으로도 가려지지 않으면 표에 먼저 나오는 변환이 쓰이므로, 직접 만든 단위에는 실제와 다른 영역 배지가 붙을 수 있습니다. 배지는 참고 표시일 뿐이며 모델에 저장되지 않습니다.

기본 단위 33종

프로젝트를 열 때 자주 쓰는 단위 33개(NoUnit, Percent, Radian, Degree, Meter, Millimeter, Kilometer, Kilogram, Gram, Second, Millisecond, Microsecond, Ampere, Milliampere, Kelvin, DegreeCelsius, MetersPerSecond, KilometersPerHour, RadiansPerSecond, RevolutionsPerMinute, Hertz, Newton, Pascal, KiloPascal, Bar, Joule, KilowattHour, Watt, Kilowatt, NewtonMeter, Volt, Millivolt, Ohm)가 목록에 자동으로 채워집니다.

기본값 그대로인 단위는 파일에 저장되지 않습니다. 저장 시점에 값이 기본값과 다르거나 어떤 데이터 타입이 실제로 참조하는 단위만 기록합니다. 프리미티브와 같은 이유로, 도구가 항상 채워 주는 정보를 파일에 중복해 두지 않으려는 것입니다. 따라서 저장한 파일을 열어 보면 단위 목록이 짧거나 비어 있을 수 있으며, 이는 정상입니다.

10.9 저장 · 실행 취소

저장과 실행 취소 단축키는 다음과 같습니다.

조작단축키비고
저장Ctrl+S탭이 화면에 보일 때 동작합니다
다른 이름으로 저장Ctrl+Shift+S저장 위치를 고르는 대화상자(Save DataTypes)가 열립니다. 확장자를 적지 않으면 자동으로 붙습니다
실행 취소Ctrl+Z
다시 실행Ctrl+Y 또는 Ctrl+Shift+Z
  • 저장할 때 입력 중이던 값이 먼저 확정된 뒤 파일이 기록되므로, 값을 입력하자마자 Ctrl+S 를 눌러도 그 값이 함께 저장됩니다.
  • 실행 취소는 프로젝트 전체가 공유하는 하나의 타임라인을 사용합니다. 헤더의 Edit 메뉴와 명령 팔레트의 Undo/Redo도 같은 타임라인을 사용합니다(05. 화면 구성과 조작).
  • Ctrl+Shift+S 로 다른 경로에 저장하면 이후의 Ctrl+S 도 그 경로에 저장됩니다. 프로젝트 표준 위치인 DataType 모델로 되돌리려면 에디터를 닫았다 다시 열어야 합니다.

10.10 다른 화면과의 연동

  • Interface 에디터 — 오른쪽 패널에 같은 DataType 편집기가 축소 모드로 들어 있습니다 (10.1 참조).
  • 초기값(ValueSpec) 편집기 — 여기서 정의한 타입 구조를 읽어 입력 형태를 결정합니다. 구조체는 표, 배열은 인덱스 행, 열거형은 콤보 상자가 됩니다. 다만 시그널의 초기값은 예외입니다. 시그널이 데이터 타입을 참조하지 않기 때문에 시그널 자신의 속성에서 입력 형태를 만듭니다 (07. Signal 에디터 7.11 참조).
  • 이름 변경 파급 — 타입 이름을 바꾸면 Interface 모델의 타입 참조와 ECUC 설정 참조가 함께 갱신됩니다. 열어 두지 않은 것도 대상입니다. 다만 SWC 정의는 이 파급 대상이 아닙니다.
  • Validation — 이 에디터의 Validation 패널은 데이터 타입 자체의 구조 검사만 다룹니다. 프로젝트 전체 AUTOSAR 제약 검사는 별도 패널에서 확인합니다(14. Validation).

10.11 편집 규칙 요약

  • 이름은 AUTOSAR SHORT-NAME 규칙을 따릅니다. 첫 글자는 영문자, 이후는 영문자·숫자·밑줄입니다. 단위 이름은 128자 제한까지 검사하지만, 데이터 타입 이름은 길이를 검사하지 않습니다.
  • 타입 이름은 비어 있거나 예약어(내장 프리미티브 11종)이면 저장되지 않습니다. 규칙에 맞지 않는 형태는 필드에 경고가 표시되지만 값 자체는 반영됩니다. 이 상태로 ARXML을 내보내면 스키마에 맞지 않는 문서가 만들어지므로, 경고가 표시된 이름은 고쳐서 사용합니다.
  • 멤버·리터럴 이름은 더 엄격해서, 규칙에 맞지 않으면 아예 반영되지 않고 이전 이름이 유지됩니다.
  • 내장 프리미티브는 이름과 속성을 바꿀 수 없고 삭제할 수 없습니다.
  • 목록의 정렬·필터, 패널 크기, 스크롤 위치는 화면 상태일 뿐이며 파일에 저장되지 않습니다.