DataType Editor
이 장에서 다루는 것
애플리케이션 데이터 타입 · 구현 데이터 타입과 물리 단위를 정의하는 DataType 에디터의 화면 구성, 9개 카테고리의 편집 항목, 내장 프리미티브 11종의 규칙, 그리고 실시간 검증 메시지를 안내합니다. ARXML 임포트·익스포트는 13. 임포트 · 익스포트에서 다룹니다.
대상 독자는 인터페이스나 SWC가 쓸 데이터 타입을 정의하는 사용자입니다. 작업을 시작하려면 먼저 프로젝트가 열려 있어야 합니다.
에디터는 탐색기에서 design ▸ System ▸ DataType 노드를 더블클릭하면 탭으로 열립니다.
저장 대상은 DataType 모델 하나이며, 데이터 타입과 단위를 함께 담습니다.
10.1 화면 구성
에디터 맨 위에 두 개의 탭 버튼이 있고, 그 아래에 선택된 탭의 내용이 표시됩니다.
| 탭 | 내용 |
|---|---|
| DataType | 데이터 타입 목록과 상세 편집 |
| Unit | 물리 단위 목록과 상세 편집 |
DataType 탭 배치

DataType 탭 — 목록 · Configuration + MEMBERS 표 · Preview · Validation 네 영역
세 영역 사이의 경계와 Preview / Validation 사이의 가로 경계는 드래그해 크기를 바꿀 수 있습니다.
Unit 탭 배치
왼쪽에 단위 목록(Unit, + / - 버튼), 오른쪽에 Configuration 폼과 Preview가 나란히 놓입니다.
Unit 탭에는 검색·필터·Validation 영역이 없습니다.

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

Interface 에디터 오른쪽 패널에 축소 모드로 들어간 DataType 편집기 — DATA TYPE 과 PREVIEW 두 영역만 남는다
10.2 데이터 타입 카테고리 (9종)
Category는 버튼 묶음(세그먼트)으로 고릅니다. 표시 순서는 PRIMITIVE, ALIAS, ENUMERATION, FIXED_ARRAY, DYNAMIC_ARRAY, STRING, STRUCTURE, MAP, UNION입니다.
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의 Unit | Unit 탭의 모든 단위. 표시 문구는 DisplayName이 있으면 DisplayName [이름] 형태(예: km/h [KilometersPerHour]), 없으면 이름만 |

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 열, 행 삭제 ×
#칸은 드래그 손잡이이며 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] 이 된 상태](/docs/assets/images/10-07-list-badges-49b1298f319566beb716f4f72be86d26.png)
카테고리 배지와 필터 상태 — ENUMERATION 하나만 선택해 목록 제목이 DataType [ENUMERATION] 이 된 상태
이름의 숫자는 내장 프리미티브 11종을 포함한 목록 길이입니다. 따라서 사용자 정의 타입이 하나도
없는 프로젝트에서 처음 만든 타입의 이름은 DataType0 이 아니라 DataType11 이 됩니다. 이름 중복
검사는 하지 않으므로, 중간 항목을 지운 뒤 새로 만들면 기존 이름과 겹칠 수 있습니다. 이 경우
Validation 패널에 Duplicate ShortName 오류가 올라옵니다.
새 타입은 Category가 비어 있으므로 Category 세그먼트 아래에 Category is required 힌트가
나타나고, Validation 패널에도 오류로 올라옵니다. 카테고리를 고르면 힌트가 사라집니다.
내장 프리미티브를 선택하고 − 를 눌러도 아무 일도 일어나지 않습니다. 프리미티브는 삭제할 수 없습니다.
⋯ 메뉴
팝오버에는 다음 구역이 있습니다.
| 구역 | 항목 |
|---|---|
Filter by Category | 9개 카테고리 체크박스 + 오른쪽의 All 버튼(툴팁 Select All / Deselect All) |
Sort by | Default (Added Order) / Name (A-Z) / Category |

⋯ 메뉴 — Filter by Category 9종과 Sort by 3종 (All 버튼의 툴팁이 함께 보인다)
- 카테고리가 지정되지 않은 타입은 필터와 무관하게 항상 표시됩니다.
- 필터 상태는 목록 제목에 나타납니다. 전부 선택(또는 전부 해제)이면
DataType, 한 개만 선택하면DataType [ALIAS], 여러 개면DataType (3/9)형태입니다. - 정렬은 화면 표시 순서만 바꾸며, 파일에 저장되는 순서는 그대로 유지됩니다.
- 목록 항목에는 카테고리 배지가
[ENUMERATION]형태로 붙습니다. 내장 프리미티브 항목은 별도 스타일로 구분됩니다. - 타입이 하나도 없으면
No DataTypes yet와Click [+] 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
메시지는 [인덱스] "타입이름" — 내용 형식입니다. 인덱스는 내장 프리미티브를 포함한 목록에서의
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 | 값이 0 | Factor=0 is not valid for LINEAR conversion (constant = TEXTTABLE) |
| ALIAS의 Min / Max | Min > 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 이 올라온다
DYNAMIC_ARRAY에는 크기 필수 검사가 없습니다. Element Type만 있으면 오류로 잡지 않습니다. Max Size는 상한을 표현하는 선택 항목입니다.
10.6 Preview 패널
선택한 타입의 구조를 카테고리별로 시각화합니다. 선택된 타입이 없으면
Select a DataType to preview 가 표시됩니다. 카테고리별 표시 내용은 다음과 같습니다.
| 카테고리 | 표시 내용 |
|---|---|
| PRIMITIVE | 크기·인코딩과 값 범위 막대 (boolean은 양 끝이 false / true 로 표시됩니다) |
| ALIAS | Base 정보(Unit이 지정되어 있으면 Unit 행이 따라붙습니다), Raw ↔ Physical 그래프와 값 변환기. 변환식 줄(physical = 0.1 × raw + 0)은 Factor가 1이 아니거나 Offset이 0이 아닐 때만 나타납니다 |
| STRUCTURE | struct (3 members) 요약과 멤버 상자 그리드. Optional 멤버는 별도 표시. 멤버가 없으면 (empty struct) |
| UNION | union (3 variants) 요약과 멤버 상자 그리드. 멤버가 없으면 (empty union) |
| ENUMERATION | base: uint8 과 리터럴 칩(이름 + 값). 리터럴이 없으면 No literals defined |
| FIXED_ARRAY / DYNAMIC_ARRAY | 요소 타입과 길이를 나타내는 배열 도식 |
| STRING | 최대 길이만큼의 문자 칸 도식 |
| MAP | map<Key, Value> 요약과 Key → Value 두 상자 |
ALIAS Preview에는 그래프 아래에 값 변환기가 함께 놓입니다. 위 줄에 Raw 값을 넣으면 오른쪽에
Physical 값이, 아래 줄에 Physical 값을 넣으면 오른쪽에 Raw 값이 즉시 나옵니다(소수점 두
자리). 입력란에 마우스 휠을 굴려 값을 올리고 내릴 수도 있습니다. Factor와 Offset이 의도한 대로
동작하는지 확인하는 계산기이며, 모델을 바꾸지 않습니다. 단위 쪽에도 같은 성격의 변환기가
있습니다(10.8).

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

Preview 드릴다운 — 멤버 타입을 눌러 그 타입으로 들어간 상태. ← Back 이 나타나고 왼쪽 폼의 선택은 그대로다
10.7 내장 프리미티브 11종
PAIO는 다음 11개 이름을 예약어로 관리합니다. 이 타입들은 에디터를 열 때 메모리에 자동으로 주입되며 모델 파일에는 저장되지 않습니다.
| 이름 | 크기 / 인코딩 | C 선언 | C++ 매핑 | 값 범위 |
|---|---|---|---|---|
boolean | 8 / BOOLEAN | unsigned char | bool | 0 ~ 1 |
float32 | 32 / IEEE754 | float | float | ±3.4028235e+38 |
float64 | 64 / IEEE754 | double | double | ±1.7976931348623157e+308 |
sint8 | 8 / 2C | signed char | int8_t | -128 ~ 127 |
sint16 | 16 / 2C | signed short | int16_t | -32768 ~ 32767 |
sint32 | 32 / 2C | signed long | int32_t | -2147483648 ~ 2147483647 |
sint64 | 64 / 2C | signed long long | int64_t | -9223372036854775808 ~ 9223372036854775807 |
uint8 | 8 / NONE | unsigned char | uint8_t | 0 ~ 255 |
uint16 | 16 / NONE | unsigned short | uint16_t | 0 ~ 65535 |
uint32 | 32 / NONE | unsigned long | uint32_t | 0 ~ 4294967295 |
uint64 | 64 / NONE | unsigned long long | uint64_t | 0 ~ 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을 내보내면 스키마에 맞지 않는 문서가 만들어지므로, 경고가 표시된 이름은 고쳐서 사용합니다.
- 멤버·리터럴 이름은 더 엄격해서, 규칙에 맞지 않으면 아예 반영되지 않고 이전 이름이 유지됩니다.
- 내장 프리미티브는 이름과 속성을 바꿀 수 없고 삭제할 수 없습니다.
- 목록의 정렬·필터, 패널 크기, 스크롤 위치는 화면 상태일 뿐이며 파일에 저장되지 않습니다.