임포트 · 익스포트
이 장에서 다루는 것
PAIO 프로젝트로 외부 파일(ARXML, DBC)을 가져오는 방법과, 프로젝트 모델을 AUTOSAR ARXML로 내보내는 방법을 안내합니다. 충돌 해결에서 표시되는 두 종류의 다이얼로그, ECU 하나만 잘라 내보내는 Extract, ECUC 개별 임포트, 그리고 각 동작의 전제 조건과 실제 오류 메시지까지 함께 다룹니다.
- 대상 독자: 다른 도구에서 만든 ARXML/DBC를 PAIO로 옮기거나, PAIO 모델을 다른 도구로 넘기려는 사용자.
- 선행 조건: 워크스페이스가 열려 있고 프로젝트가 하나 이상 있어야 합니다 (04. 워크스페이스와 프로젝트).
- 프로젝트가 디스크에 어떤 폴더를 만드는지는 04. 워크스페이스와 프로젝트 4.4에서 다룹니다.
13.1 한눈에 보기
하려는 작업별로 어디에서 시작하면 되는지 먼저 정리했습니다.
| 하려는 일 | 시작 위치 |
|---|---|
| ARXML/DBC를 프로젝트로 가져오기 | 탐색기의 프로젝트 노드 우클릭 ▸ Import |
| 프로젝트 전체를 ARXML로 내보내기 | 탐색기의 프로젝트 노드 우클릭 ▸ Export |
| ECU 하나만 잘라 내보내기 | IVC 에디터에서 ECU 노드 우클릭 ▸ Extract ECU |
| HPC(Machine) 하나만 잘라 내보내기 | IVC 에디터에서 HPC 노드 우클릭 ▸ Extract Machine |
| ECUC 설정값만 가져오기 | design ▸ Module ▸ Configuration 우클릭 ▸ Import ECUC Configuration |
| PopcornSAR AP 베이스 설정 넣기 | Machine Configuration 다이얼로그의 PARA Platform 버튼 |

프로젝트 노드의 컨텍스트 메뉴 — 임포트와 익스포트의 진입점
라이선스 조건
익스포트 계열(프로젝트 Export, Extract, DataType Export)은 활성 라이선스와 서버 온라인 검증을 모두 요구합니다. 반면 임포트 계열은 라이선스가 만료된 상태에서도 동작합니다.
상황별로 화면에 무엇이 표시되는지는 다음과 같습니다.
| 상황 | 표시되는 내용 |
|---|---|
| 라이선스 만료 / 읽기 전용 | 업그레이드 안내 다이얼로그가 표시됩니다. 익스포트는 시작되지 않습니다 |
| 라이선스는 유효하나 오프라인 | 진행 다이얼로그가 Export failed: OFFLINE_EXPORT_DENIED: A server connection is required 로 끝납니다 |
| 서버가 플랜 무효로 응답 | Export failed: PLAN_EXPIRED: Export is not permitted on this plan |
| 설치 파일 무결성 실패 | Export failed: INTEGRITY_EXPORT_DENIED: Installation integrity check failed |
13.2 ARXML / DBC 임포트
13.2.1 절차
-
탐색기에서 프로젝트 노드를 우클릭하고 Import 를 선택합니다. 파일 선택 다이얼로그
Select files to import가 열립니다. -
파일을 선택합니다. 여러 개를 한 번에 선택할 수 있고, ARXML과 DBC를 섞어도 됩니다. 여러 개를 고르는 방법은 운영체제의 파일 선택 창과 같습니다. 드래그로 범위를 훑거나,
Ctrl을 누른 채 하나씩 클릭하거나,Shift로 처음과 끝을 지정합니다. 파일 선택 창에서 사용할 수 있는 필터는 다음과 같습니다.필터 확장자 All Supported Files .arxml,.dbcARXML Files .arxmlDBC Files .dbc -
파일을 확정하면 열려 있는 모든 프로젝트의 저장되지 않은 편집이 먼저 디스크에 저장됩니다. 임포트가 모델 파일을 다시 쓰고 열려 있던 에디터들이 디스크에서 다시 읽어 들이기 때문에, 저장되지 않은 편집이 그 재적재 과정에서 조용히 사라지는 것을 막기 위한 조치입니다.
-
진행 다이얼로그
Importing ARXML Files가 표시됩니다. 진행 단계 이름은 영문 그대로parsing→merging→resolving순으로 표시됩니다(DBC 파일을 읽는 동안에는copying도 나타납니다). Cancel 로 중단할 수 있습니다. -
결과에 따라 아래 세 갈래(13.2.3 ~ 13.2.5)로 이어집니다.

임포트 진행 다이얼로그 — 단계 이름과 진행률, 그리고 Cancel
진행 중에 Cancel 을 누르면 임포트가 이미 쓴 파일을 모두 임포트 직전 상태로 되돌린 뒤 조용히
닫힙니다. 되돌리기에 실패한 파일이 있을 때만
Import cancelled, but rollback could not restore: ... 토스트로 알려 줍니다.
임포트 원본 파일은 선택한 자리에서 그대로 읽습니다. 프로젝트의
import/폴더로 복사되지 않습니다. 자세한 내용은 4.4를 참고하세요.
13.2.2 임포트가 거부되는 경우
임포트는 한 번에 하나만 진행할 수 있습니다. 이전 임포트가 아직 끝나지 않았으면 새 임포트는 거부되고
Import rejected: <사유>. Finish or cancel it first. 가 오류로 표시됩니다. 사유는 다음 세 가지 중
하나입니다.
| 사유 문자열 | 의미 |
|---|---|
an import is already running | 파싱/변환이 아직 진행 중입니다 |
an import is waiting on the source-conflict dialog | 원본 충돌 다이얼로그가 열린 채 대기 중입니다 |
an import is waiting on conflict resolution | 모델 충돌 다이얼로그가 열린 채 대기 중입니다 |
13.2.3 결과 1 — 성공
Import complete: N elements imported from M file(s) 가 표시되고 2초 뒤 자동으로 닫힙니다.
열려 있던 에디터들은 새 내용으로 다시 읽어 들이며, 모든 에디터의 재적재가 끝날 때까지
다이얼로그가 유지됩니다(반쯤 갱신된 상태로 편집하는 것을 막기 위한 동작입니다).
이때 임포트를 시작한 프로젝트의 에디터만 다시 읽습니다. 같은 창에 다른 프로젝트의 에디터가 열려 있어도 영향을 받지 않습니다.
13.2.4 결과 2 — 원본 충돌 (Import Source Conflicts)
한 번에 고른 여러 파일이 같은 요소를 서로 다르게 정의하고 있으면, 모델로 변환하기 전에 임포트가 멈추고 Import Source Conflicts 다이얼로그가 표시됩니다. 이 시점에는 아직 디스크에 아무것도 쓰지 않은 상태입니다.
제목은 Import Source Conflicts — N elements diverge across imported files 형태입니다.

Import Source Conflicts — 영역별 목록, 변형 카드와 기본값 배지, 필드 표
-
좌측 Divergent Elements 목록에서 요소를 선택합니다. 목록은 요소 종류에 따라 영역별로 묶이며(IVC · Signal · SWC · Interface · Other 등), 각 행에는 SHORT-NAME과 ARXML 요소 종류 태그, 그리고 결정 여부를 나타내는 점이 붙습니다.
-
우측 상단에 다음 안내가 표시됩니다.
Defined differently in N files → M variants · K fields differ. Click a variant to take it whole, or click cells below to mix.그 아래에 내용이 서로 다른 정의가
Variant A,Variant B… 카드로 나열됩니다. 카드는 그 정의를 담은 파일 수가 많은 순으로 놓이므로Variant A가 기본값이라는 보장은 없습니다. 사용자가 아무것도 정하지 않을 때 채택되는 변형에만 배지가 붙습니다. ARXML끼리의 충돌은default · last-wins(마지막에 읽은 파일이 이깁니다), ARXML과 DBC를 섞어 임포트하다 생긴 충돌은default · earlier-wins(먼저 읽은 파일이 이깁니다) 배지입니다. -
카드를 클릭하면 그 변형을 통째로 채택합니다.
-
아래
Differing Fields — click a cell to take that value표에서 셀을 클릭하면 그 필드만 그 변형의 값으로 바꿉니다. 열 머리글(Variant B등)을 클릭하면 그 열을 통째로 채택합니다.- 아직 아무 변형도 고르지 않은 상태에서 셀을 클릭하면 그 셀이 속한 변형이 통째로 기준이 됩니다.
- 기준으로 잡힌 열의 셀을 클릭하면 그 필드의 개별 선택이 풀려 기준 값으로 돌아갑니다.
- 값이 길어 잘려 보이면 셀에 마우스를 올려 전체 값을 확인할 수 있습니다.
-
하단
Result:줄이 현재 선택 결과를 항상 알려 줍니다. 필드를 섞으면· mixed definition (matches no single file)이 함께 표시됩니다. 아직 정하지 않았으면Result: not decided — defaults to the last-wins variant on Resolve.로 표시됩니다. 다만 이 문장은 고정 문구라서default · earlier-wins배지가 붙은 충돌에서도last-wins라고 나옵니다. 실제로 채택되는 것은 배지가 붙은 변형이므로, 배지 쪽을 기준으로 판단하는 것이 좋습니다. -
하단 Prefer source: 콤보에서 파일을 고르고 Apply to remaining 을 누르면, 아직 정하지 않은 요소 전부에 대해 그 파일이 포함된 변형을 한꺼번에 선택합니다.
-
Resolve d/N 을 누르면 임포트가 이어집니다. 결정하지 않은 요소는 배지가 붙은 기본 변형이 채택되고 경고로 기록됩니다.
-
Cancel Import 를 누르면 확인 창
Cancel Import?가 표시됩니다. 본문은Nothing has been written yet — your project files stay untouched.이며, Cancel Import 로 중단하거나 Keep Resolving 으로 계속 해결합니다.

필드를 섞은 상태 — Result 줄에 mixed definition 이 함께 표시된다

전부 결정된 상태 — 목록의 점이 모두 켜지고 버튼이 Resolve 6/6 이 된다
13.2.5 결과 3 — 모델 충돌 (Conflict Resolution)
이미 프로젝트에 있는 요소와 새로 들어온 요소가 서로 다른 값을 가질 때 충돌 해결 다이얼로그가
표시됩니다. 제목은 Conflict Resolution — N conflicts (X decided · Y in-progress · Z pending)
형태입니다.

Conflict Resolution — 영역 트리, 필드 비교, 그리고 요소 단위 결정 버튼 네 개

영역 요약 패널 — 일괄 버튼 두 개와, 항목마다의 현재 결정 상태
-
좌측 Conflicts 트리에서 항목을 선택합니다. 항목은 영역 열 가지 — SWC, Interface, Service, System, IVC, Signal, DataType, Machine, IDS, Module Definition — 로 묶여 있습니다. 충돌이 없는 영역도
(0)을 달고 접힌 채 함께 나타납니다. ECUC 설정값 충돌은 Module Definition 영역에 ECU Config 태그로 들어갑니다. 영역 머리글을 클릭하면 그 영역 전체를 한 화면에서 처리하는 요약 패널이 열립니다. 요약 패널에는 All → Use Imported 와 All → Keep Project 두 가지 일괄 버튼만 있고, 필드 단위 병합과 Keep Both 는 항목을 눌러 개별 화면에서 선택합니다. 요약 패널의 각 행 오른쪽에 보이는 글자는 버튼이 아니라 그 항목의 현재 결정 상태입니다 —Keep Project/Use Imported/Merge/Keep Both, 그리고 아직 정하지 않았으면pending → Import로 표시됩니다. -
우측에서 기존 값과 새 값을 비교합니다. 양쪽 요약이 다르면
... (Project) ↔ ... (Import)형태로 표시되고, 그 아래에N fields differ: ...로 실제로 달라진 필드 이름이 나타납니다. -
항목마다 아래 네 가지 중 하나를 선택합니다.
버튼 동작 Keep Project Version 프로젝트에 있던 값을 그대로 둡니다 Use Imported Version 임포트한 값으로 교체합니다 Merge Fields 필드 단위로 어느 쪽 값을 쓸지 직접 선택합니다 Keep Both 임포트한 쪽에 새 이름을 붙여 둘 다 남깁니다 - Merge Fields 는 필드 차이 정보가 실려 온 항목에만 나타납니다. ECUC 설정값처럼 파일 단위로 비교하는 충돌에는 이 버튼이 없습니다.
- Keep Both 도 항상 있지는 않습니다. System 영역의 데이터 매핑과 IVC 영역의 NM Config 충돌은 이름을 바꿔 둘 다 남기는 것이 의미가 없어 이 버튼이 빠집니다.
- Keep Both 로 남긴 요소의 새 이름은
<원래이름>_imported이고, 이미 있으면<원래이름>_imported_1,_imported_2순으로 붙습니다. 사용자가 이름을 직접 입력하지는 않습니다. - 차이가 있는 항목은 처음에 Merge Fields 가 강조되어 있지만, 그 상태는 아직 "결정"이 아닙니다. 트리와 하단 카운터에서는 여전히 pending으로 셉니다.
- Merge Fields 로 필드를 고른 뒤 Keep Project Version / Use Imported Version 으로
바꾸면
Discard field edits?확인 창이 표시됩니다. 본문은Taking the whole <쪽 이름> discards your N field edits.입니다. - Merge Fields 에서 고르지 않은 필드는 프로젝트에 있던 값을 그대로 유지합니다.
-
하단의
Filter:(all / pending / in-progress / done),Tag:,Search…로 목록을 좁힐 수 있습니다. 세 조건은 AND로 결합됩니다.Search…는 요소 이름 부분 일치(대소문자 무시)로 걸러 냅니다. -
Resolve n/N 을 눌러 확정합니다.
아직 정하지 않은 항목은 "기존 값 유지"가 아니라 "임포트 값으로 덮어쓰기"로 처리되므로 주의가 필요합니다. 미결정 항목이 남아 있으면
Unresolved Conflicts확인 창이 먼저 뜨고, 본문에N undecided conflicts will be overwritten with the imported values.라고 명시됩니다. Overwrite & Continue 로 진행하거나 Cancel 로 돌아갑니다. -
완료하면 토스트로
Import complete — conflicts resolved: N replaced, N kept, N renamed가 표시됩니다(해당 개수가 0인 항목은 빠집니다). -
Cancel / ✕ /
Esc를 누르면Cancel import?확인 창이 표시됩니다. 본문은Discards this import and restores your project to its pre-import state.이며, Cancel Import 로 중단하거나 Keep Resolving 으로 계속합니다. 중단하면 임포트가 이미 쓴 파일이 모두 임포트 전 상태로 복구되고Import cancelled — the project was restored to its pre-import state.가 표시됩니다. 복구에 실패한 파일이 있으면Import cancelled, but rollback could not restore: ...로 그 사실을 알려 줍니다. -
해결 도중 오류가 나면 전부 되돌립니다(부분 적용은 하지 않습니다). 이때도 되돌리기 결과가 함께 보고됩니다.

Merge Fields — 필드마다 프로젝트 값과 임포트 값을 골라 섞는다

미결정 항목이 남은 채 Resolve 를 누르면 표시되는 확인 창

충돌 해결 도중 취소 — 임포트 전 상태로 되돌린다는 확인 창
13.2.6 임포트가 함께 처리하는 것
한 번의 ARXML 임포트에서 아래 항목이 모두 처리됩니다. 모듈 정의를 먼저 읽고 그다음 설정값을 읽으므로, 정의와 설정값이 같은 파일에 들어 있어도 정상적으로 매칭됩니다.
| 대상 | 반영되는 곳 |
|---|---|
| 네트워크 토폴로지 / 시그널 / SWC / 인터페이스 / 데이터 타입 / 서비스 / 시스템 / 보안 이벤트 | 해당 에디터의 모델 |
| Machine 설정 | Module ▸ Machine |
ECUC 모듈 정의 (ECUC-MODULE-DEF) | 모듈 정의 |
ECUC 설정값 (ECUC-MODULE-CONFIGURATION-VALUES) | 모듈 설정 |
- 정의가 없는 모듈의 설정값은 건너뛰고
ECUC configuration "<모듈>" skipped: its Module Definition is not present in the project.를 경고로 남깁니다. - 정의와 구조가 맞지 않는 설정값은 거부되고
ECUC configuration "<모듈>" rejected (definition mismatch): <사유>를 경고로 남깁니다. - ECUC 모듈 정의에서 컨테이너 밖에 놓인 파라미터/레퍼런스는 버려집니다. R25-11 XSD의
ECUC-MODULE-DEF에는 그런 자리가 없어서, 모델에 담아도 다시 내보낼 수 없기 때문입니다. 버려진 항목은 임포트 결과의 경고 목록에 나타납니다. - 임포트가 끝나면 만들어진 문서가 스키마에 맞는지 검사하지만, 결과는 로그로만 남고 임포트를 막거나 되돌리지 않습니다.
- 임포트 전체는 하나의 실행 취소 단위로 기록됩니다.
Ctrl+Z한 번으로 임포트 직전 상태로 돌아갑니다. 편집 이력(History)에는Import <첫 번째 파일 이름>으로 남습니다.
데이터 타입의 프리미티브 처리 규칙. 내장 프리미티브 11종은 파일에 저장하지 않는 것이 규칙이므로, 같은 이름으로 들어온 정의는 버리고 내장 정의를 그대로 사용합니다 (10.7 참고). 들어온 형태별 처리는 다음과 같습니다.
| 들어온 형태 | 결과 |
|---|---|
| 이름이 내장 프리미티브 11종과 정확히 일치 | 건너뜁니다 (내장 정의를 그대로 사용합니다) |
C++ 표기 (uint8_t, bool, float, double, int8~int64) | 먼저 AUTOSAR 표기로 역매핑한 뒤 위와 같이 건너뜁니다 |
대소문자만 다른 이름 (Uint8, BOOLEAN) — 구현 데이터 타입(C / C++) | 건너뛰고, 이 이름을 참조하던 다른 타입의 참조를 표준 이름으로 바꿉니다 |
| 대소문자만 다른 이름 — Application 데이터 타입 | 벤더 표기를 살리기 위해 ALIAS 로 들어옵니다 (Factor 1, Offset 0) |
예약어가 아닌 VALUE 카테고리 타입 | 원칙적으로 ALIAS 로 변환합니다. 다만 SW-BASE-TYPE / COMPU-METHOD / DATA-CONSTR 로부터 프리미티브를 추론할 수 있고 Factor·Offset·Unit 같은 추가 정보가 전혀 없으면, 별칭을 만들지 않고 건너뛴 뒤 참조를 그 프리미티브로 바꿉니다 |
| 어느 방법으로도 기반 타입을 추론할 수 없는 타입 | float32 를 BaseType으로 삼는 ALIAS(Factor 1, Offset 0)로 들어오고 경고가 하나 쌓입니다 |
13.2.7 재임포트는 덮어쓰기가 아니라 병합이다
같은 요소가 프로젝트에 이미 있으면 파일을 통째로 갈아엎지 않고 필드 단위로 합칩니다. 규칙은 다음과 같습니다.
- 한쪽에만 값이 있으면 값이 있는 쪽을 사용합니다. 조용히 처리되며 충돌로 올라오지 않습니다.
- 이름으로 짝지을 수 있는 배열은 합집합으로 만듭니다.
- 양쪽 모두 값이 있고 서로 다를 때만 충돌로 올라와 13.2.5의 다이얼로그에 나타납니다.
- 다이어그램 좌표(
position)와 크기(size)는 내용으로 보지 않습니다. VFB 병합에서는port-positions,canvas-size,node-layout,curvature-offset도 함께 무시합니다. 그래서 캔버스에서 노드를 옮긴 것만으로는 충돌이 생기지 않고, 기존 배치가 그대로 유지됩니다 (13.3.6 참고).
13.2.8 DBC 인코딩 주의
DBC 파일의 인코딩 처리는 항상 auto 입니다. UTF-8 BOM이 있을 때만 UTF-8로 읽고 그 외에는
ISO-8859-1로 읽습니다. 따라서 BOM 없는 UTF-8 DBC는 문자가 깨집니다.
인코딩을 선택하는 기능은 없으며 항상 자동 감지입니다. 문자가 깨진다면 파일에 BOM을 넣거나 ISO-8859-1로 다시 저장하는 것이 좋습니다.
DBC 임포트는 시그널/PDU/CAN 프레임/텍스트 테이블과 네트워크 토폴로지(ECU, 통신 클러스터)를 만듭니다.
13.3 프로젝트 익스포트 (ARXML)
13.3.1 절차
- 탐색기에서 프로젝트 노드를 우클릭하고 Export 를 선택합니다.
- 파일 선택 다이얼로그는 표시되지 않습니다. 결과는 항상
<프로젝트>/export/아래에 만들어지고, 같은 이름의 파일이 있으면 덮어씁니다. - 진행 다이얼로그
Exporting to AUTOSAR가 표시되며 Cancel 로 중단할 수 있습니다. - 성공하면
Export complete: N elements exported to <프로젝트>_*.arxml가 표시되고 2초 뒤 닫힙니다. 이때 Cancel 버튼은 Close 로 바뀌므로 기다리지 않고 바로 닫아도 됩니다. 다이얼로그 가운데의N / M elements는 진행 표시용 카운터라서 완료 메시지의 요소 개수와 숫자가 다릅니다. 세는 대상이 서로 달라서이며 오류가 아닙니다. 탐색기의export폴더가 자동으로 새로고침됩니다. - 실패하면
Export failed: <사유>가 표시되고 다이얼로그는 열린 채 남습니다. Close 로 닫습니다.

프로젝트 익스포트 완료 — 요소 개수와 결과 파일 이름이 표시된다
13.3.2 만들어지는 파일
프로젝트 이름이 MyProject 라면 다음 파일이 export/ 아래에 만들어집니다.
| 파일 | 내용 | 만들어지는 조건 |
|---|---|---|
MyProject_System.arxml | SYSTEM, ECU-INSTANCE, MACHINE-DESIGN, 통신 클러스터, CouplingElement, NM, Transport Protocol, Global Time, 서비스 배포 | System 모델이 있을 때 |
MyProject_SWC.arxml | SWC / 컴포지션 / ModeDeclarationGroup / Executable / Machine | SWC·컴포지션·Machine 중 하나라도 내용이 있을 때 |
MyProject_Interface.arxml | 포트 인터페이스 | 인터페이스 내용이 있을 때 |
MyProject_IDS.arxml | ara::idsm SecurityEventDefinition | IDS 모델에 정의가 있을 때 |
MyProject_COM.arxml | 프레임 / PDU / 시그널 (IVC + Signal 모델) | 항상 |
MyProject_DataType.arxml | 데이터 타입, SW-BASE-TYPE, COMPU-METHOD, UNIT, DATA-CONSTR | 항상 |
MyProject_EcucModuleDef.arxml | 모든 ECUC 모듈 정의를 합친 파일 | 모듈 정의가 하나 이상 있을 때 |
MyProject_EcucConfVal.arxml | 모든 ECUC 모듈 설정값을 합친 파일 | 모듈 설정이 하나 이상 있을 때 |

export 폴더에 만들어진 파일들과, 열어 본 결과 ARXML
MyProject_COM.arxml과MyProject_DataType.arxml은 내용이 비어 있어도 항상 만들어집니다. 데이터 타입 파일의 경우, DataType 모델이 아예 없어도 내장 프리미티브 11종은 언제나 포함되기 때문입니다(10.7 참고).MyProject_DataType.arxml은/DataTypes아래에 최대 여덟 개의 AR-PACKAGE를 담습니다 —BaseTypes,ImplementationDataTypes,CppImplementationDataTypes,ApplicationDataTypes,DataTypeMappingSets,Units,CompuMethods,DataConstrs. 해당 내용이 없는 패키지는 만들어지지 않으므로 실제 개수는 프로젝트에 따라 달라집니다.MyProject.arxml(접미사 없는 파일)은 만들어지지 않습니다. 그 경로는 출력 폴더와 프로젝트 이름을 결정하는 데만 쓰입니다.
13.3.3 익스포트가 읽는 데이터
- IVC 에디터가 열려 있으면 저장되지 않은 내용까지 반영합니다. 메모리의 최신 IVC 모델을 직접 받아 쓰기 때문입니다. 이때도 대상 프로젝트의 에디터만 응답합니다.
- 그 밖의 모델과, IVC 에디터가 닫혀 있는 경우에는
design/폴더의 파일을 읽습니다. 따라서 익스포트 전에 저장해 두는 것이 안전합니다.
13.3.4 출력 규격
-
AUTOSAR 네임스페이스는 R25-11로 고정됩니다. 모든 파일의 루트 태그는 다음과 같고, 익스포트 시 버전을 고를 수 있는 UI는 없습니다.
<AUTOSAR xmlns="http://autosar.org/schema/r4.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00054.xsd">실제 파일에서는 한 줄로 출력됩니다.
-
값이 지정되지 않은 참조는 아예 내보내지 않습니다. 빈 경로를 만들어 다른 도구에서 끊어진 참조로 보이게 하지 않기 위해서입니다.
-
내보내기 직전,
design/폴더의 문서가 스키마에 맞는지 검사합니다. 결과는 로그로만 남고 익스포트를 막지 않습니다. -
PDU나 NM-PDU가 참조하는 시그널이 시그널 목록에 없으면 그 매핑을 빼고 내보내며,
[Signal] Removed mapping to missing signal "..." ...를 경고로 남깁니다. 그대로 내보내면 선언되지 않은<I-SIGNAL>을 가리키는 참조가 되기 때문입니다. -
다이어그램 좌표와 화면 배치는 ARXML에 실리지 않습니다. 내보낸 ARXML을 빈 프로젝트로 임포트하면 요소는 복원되지만 노드는 자동 배치됩니다(13.3.6 참고).
-
AR-PACKAGE 배치 규칙은 13.3.5에 정리되어 있습니다.
13.3.5 결과의 패키지 배치
익스포트 결과의 AR-PACKAGE 구조는 규칙으로 고정되어 있습니다. 아래는 자주 보게 되는 골격이며, 프로젝트에 해당 내용이 없으면 그 패키지는 만들어지지 않습니다.
System
├─ EcuInstance ECU
├─ MachineDesign HPC
├─ CouplingElement 이더넷 스위치
├─ CommunicationCluster/{Can|Ethernet|Lin|Flexray}
├─ Frame/{Can|Ethernet|Lin|Flexray}
├─ Pdu/{ISignalIPdu|NmPdu|NPdu|DcmIPdu|MultiplexedIPdu|GeneralPurposePdu}
├─ Signal/{ISignal|ISignalGroup|SystemSignal|SystemSignalGroup}
├─ NetworkManagement NM-CONFIG (이름은 항상 NmConfig 로 고정)
├─ TpConfig/{CanTp|LinTp|Ieee1722Tp}
├─ GlobalTime
├─ EthernetWakeupSleepOnDatalineConfigSet
├─ DataTransformation
├─ Service AP 서비스 배포 / 인스턴스 / CP-SOA
├─ DdsCpConfig
├─ SignalServiceTranslation
└─ <SYSTEM 요소> 하위 패키지가 아니라 System 패키지 안의 요소.
SHORT-NAME 은 사용자가 정한 시스템 이름
SWC · 포트 인터페이스 · ECUC · 데이터 타입 · 보안 이벤트는 별도 최상위 패키지를 사용합니다.
SwComponentType/{Composition|Atomic/...} SWC
PortInterface/{SenderReceiver|ClientServer|ModeSwitch|Service|Adaptive/...|
InterfaceMapping} 포트 인터페이스
EcucModuleDef/<모듈> ECUC 정의 (+ EcucDefinitionCollection)
EcucConfigVal/<ECU>/<모듈> ECUC 설정
DataTypes/{BaseTypes|ImplementationDataTypes|CppImplementationDataTypes|
ApplicationDataTypes|DataTypeMappingSets}
Ids/SecurityEventDefinitions ara::idsm 보안 이벤트 정의
System패키지 이름은 SYSTEM 요소의 이름과 무관하게 항상 문자열System입니다. 그래야 여러 파일로 나뉜 산출물 사이에서 참조 경로가 일치하기 때문입니다.- ECUC 설정을 담는 하위 패키지 이름은 그 설정이 속한 ECU 이름입니다.
13.3.6 AUTOSAR로 나가지 않는 정보
AUTOSAR 표준에 대응 요소가 없는 정보 중 일부는 ARXML의 ADMIN-DATA SDG(Special Data Group)로 함께 내보내고, 임포트할 때 다시 읽습니다. ECUC 설정이 어느 ECU의 것인지, 컴포지션이 어느 Machine에 배치되는지 같은 소유 관계와 PopcornSAR 플랫폼 전용 설정값이 여기에 해당합니다. 덕분에 PAIO에서 내보낸 ARXML을 다시 임포트해도 이 관계가 그대로 살아납니다. 다른 도구는 이 정보를 읽지 않고 그대로 흘려보냅니다.
다이어그램 좌표와 화면 배치는 ARXML로 나가지 않습니다. 노드 좌표, 커넥터 위치, 팬/줌, 연결선 경로, VFB 배치는 프로젝트 안에만 남습니다. 따라서 PAIO에서 내보낸 ARXML을 빈 프로젝트로 다시 임포트하면 요소는 복원되지만 화면 배치는 복원되지 않고, 노드는 격자 위에 자동으로 배치됩니다.
반면 같은 프로젝트로 다시 임포트할 때는 기존 배치가 유지됩니다. 재임포트는 병합이고 좌표와 크기는 내용으로 취급하지 않기 때문입니다(13.2.7 참고).
13.4 ECU / Machine Extract
한 노드(ECU 또는 HPC)와 그 노드가 참조하는 것만 잘라내어 별도 ARXML로 만드는 기능입니다. 공급망에서 특정 ECU 담당자에게 필요한 부분만 전달할 때 사용합니다.
13.4.1 절차

IVC 캔버스에서 ECU 노드를 우클릭한 메뉴 — Extract ECU
-
IVC 에디터를 엽니다.
-
대상 ECU 또는 HPC 노드를 우클릭합니다.
-
Classic ECU 노드면 Extract ECU, Adaptive HPC 노드면 Extract Machine 이 나타납니다. 선택하면 진행 다이얼로그
Extracting <노드이름>이 표시됩니다. -
성공하면 실제로 만들어진 파일이 영역 이름으로 체크리스트처럼 표시됩니다. 예를 들어 ECU 이름이
DoorEcu라면 부제로DoorEcu → export/DoorEcu/가 나오고 그 아래에 다음 항목이 나열됩니다.표시되는 이름 대응 파일 System DoorEcu_System.arxmlCommunication (Signals / Frames / PDUs) DoorEcu_COM.arxmlSoftware Components DoorEcu_SWC.arxmlPort Interfaces DoorEcu_Interface.arxmlData Types DoorEcu_DataType.arxmlECUC Module Definitions DoorEcu_EcucModuleDef.arxmlECUC Configuration DoorEcu_EcucConfVal.arxml위 표에 없는 접미사의 파일(예: 보안 이벤트 정의가 있을 때 나오는
DoorEcu_IDS.arxml)은 접미사 문자열이 그대로 항목 이름으로 표시됩니다. -
경고가 없으면 2.5초 뒤 자동으로 닫힙니다. 경고가 있으면 다이얼로그가 열린 채 남고
ⓘ N notes — see console이 함께 표시됩니다. 경고 원문은 개발자 콘솔에만 남습니다.

Extract 결과 — 실제로 만들어진 산출물이 영역 이름의 체크리스트로 표시된다
13.4.2 결과
-
출력 위치:
<프로젝트>/export/<노드이름>/ -
파일 이름은 프로젝트 이름이 아니라 노드 이름을 접두사로 사용합니다(
DoorEcu_System.arxml). -
SYSTEM 요소의
CATEGORY로 어떤 종류의 산출물인지 표시합니다.산출물 CATEGORY 전체 익스포트 SYSTEM_DESIGN_DESCRIPTIONExtract ECU (Classic) ECU_EXTRACTExtract Machine (Adaptive) MACHINE_DESIGN_EXTRACT -
저장된 모델(
design/)만 읽습니다. IVC 에디터가 열려 있어도 저장하지 않은 편집은 반영되지 않으므로, 추출 전에 저장하는 것이 좋습니다.

Extract 산출물은 노드 이름의 폴더에, 노드 이름을 접두사로 하여 놓인다
13.4.3 잘라내는 범위
- Classic(Extract ECU)은 대상 ECU 하나만 남깁니다. 대상이 송신·수신하는 프레임/PDU/시그널만 남고, 같은 버스에 있어도 대상이 쓰지 않는 프레임은 빠집니다.
- Adaptive(Extract Machine)는 대상 HPC와, 남은 Machine 설정이
hpc-ref로 묶고 있는 MachineDesign 노드까지 함께 남깁니다. 참조가 끊어지지 않게 하려는 조치이며, 함께 남긴 노드는 경고로 알려 줍니다. - SYSTEM 요소와 루트 컴포지션은 그대로 유지합니다. 대상 ECU와 그 컴포지션만 추가로 등록하며, 루트를 대상 컴포지션으로 바꾸지는 않습니다.
- ECUC 설정값은 대상 노드 폴더의 것만 남기고, ECUC 모듈 정의는 전부 내보냅니다. 정의는
공용 템플릿이라 설정값의
DEFINITION-REF가 항상 풀리게 하기 위해서입니다. - 설정값을 고르는 기준은
design/Module/Configuration/아래의 폴더 이름입니다. 이 폴더 이름은 임포트한 AR-PACKAGE 이름에서 오므로, 외부에서 가져온 설정은 노드 이름과 폴더 이름이 다를 수 있습니다. 그런 경우 아무 설정값도 잡히지 않고, 실제로 있는 폴더 목록이 경고로 표시됩니다. - 보안 이벤트 정의(IDS 모델)는 잘라내지 않습니다. 프로젝트 전체가 공유하는 사전이라 있는
그대로
<노드이름>_IDS.arxml로 나갑니다. - 남은 요소가 끊어진 참조를 갖지 않도록 정리합니다. 참조를 지운 경우는 경고로 남깁니다.
- 전체 익스포트 경로는 이 잘라내기 로직을 타지 않으므로 결과가 달라지지 않습니다.
13.5 ECUC Configuration 개별 임포트
design ▸ Module ▸ Configuration 노드를 우클릭하면 Import ECUC Configuration 항목 하나만
나타납니다.

Configuration 노드의 컨텍스트 메뉴 — 항목이 하나뿐이다
참고로 design ▸ Module ▸ Definition 노드에는 임포트 메뉴가 없습니다. 모듈 정의는 프로젝트 전체
Import(13.2) 또는 아래 절차의 3번 단계로만 들어옵니다.
13.5.1 절차
- 파일 선택 다이얼로그
Select ARXML File to Import ECUC Configuration이 열립니다. 파일은 한 개만 선택할 수 있습니다. - 진행 다이얼로그
Import ECUC Configuration이 표시됩니다. - 파일 안에
ECUC-MODULE-DEF가 있으면 먼저 모듈 정의부터 임포트하고, 그다음 설정값을 그 정의에 맞춥니다. 따라서 정의와 설정값이 한 파일에 들어 있어도 동작합니다. - 같은 경로에 모듈 설정이 이미 있으면 13.2.5의 충돌 다이얼로그가 표시됩니다. 다만 이
흐름의 Cancel 확인 창 본문은 다릅니다:
Conflicting files keep your current values; already-imported files stay applied.즉 이미 쓴 파일은 되돌리지 않고, 충돌한 파일만 기존 값을 유지합니다.- 파일 단위 충돌이므로 Merge Fields 는 나타나지 않습니다.
- Keep Both 를 선택하면
<모듈>_1처럼 번호를 붙여 따로 저장합니다.
- 결과를 보고합니다.
- 전부 성공하면 토스트
ECUC Configuration Import Complete — imported N module configuration(s).가 표시됩니다. - 건너뛰거나 거부된 모듈이 있으면
ECUC Configuration Import — Partial다이얼로그가 표시됩니다. 본문은Imported N module configuration(s).로 시작하고, 이어서Skipped — Module Definition not found:목록과Rejected — definition mismatch:목록이 사유와 함께 나열됩니다. - 파싱 자체가 실패하면
ECUC Configuration Import Failed다이얼로그에 오류가 표시됩니다.
- 전부 성공하면 토스트
- 임포트 전체는
Import ECUC Configuration이라는 하나의 실행 취소 단위로 기록됩니다. 같은 파일에서 함께 쓴 모듈 정의도 같은 단위에 포함되므로Ctrl+Z한 번으로 둘 다 되돌아갑니다.
13.5.2 거부되는 이유
설정값의 컨테이너/파라미터/레퍼런스가 정의 트리에서 찾아지지 않으면 그 모듈 전체가 거부됩니다. 사유 문자열은 다음 형태입니다.
| 사유 | 의미 |
|---|---|
Container definition not found in "<모듈>": <경로> (instance "<이름>") | 컨테이너 정의를 찾지 못했습니다 |
Parameter definition not found in "<모듈>": <경로> | 파라미터 정의를 찾지 못했습니다 |
Reference definition not found in "<모듈>": <경로> | 레퍼런스 정의를 찾지 못했습니다 |
파라미터의 타입이 정의와 다르면 거부하지 않고 정의 쪽 타입으로 맞춘 뒤 경고를 남깁니다:
Parameter "<경로>" type <A> reconciled to <B> per definition.
ECUC 모델의 참조 경로 규칙은 12.3에 정리되어 있습니다.
13.6 DBC
- 임포트: 13.2와 같은 Import 다이얼로그에서
.dbc를 선택하면 됩니다. ARXML과 섞어서 한 번에 선택할 수도 있습니다. - 익스포트: 현재 버전에서는 DBC 익스포트를 제공하지 않습니다. CAN 정보를 다른 도구로
넘기려면 프로젝트 Export 로 만들어지는
<프로젝트명>_COM.arxml을 사용합니다.
13.7 PARA Platform 베이스 설정 가져오기
PopcornSAR AUTOSAR Adaptive Platform의 기본 구성(애플리케이션, 서비스 인터페이스, 에러 도메인, 데이터 타입, 커넥터, Machine 모듈)을 프로젝트에 넣는 기능입니다. 외부 파일을 고르지 않고 제품에 동봉된 세트를 사용합니다.
13.7.1 절차
- VFB 에디터에서 HPC에 매핑된 컴포지션의 Machine Configuration 다이얼로그를 열고 헤더의 PARA Platform 버튼을 누릅니다. 명령 팔레트의 PARA: Import Platform 으로도 시작할 수 있습니다.
Import PARA Platform확인 창이 표시됩니다. 부제는PopcornSAR AUTOSAR Adaptive Platform이고, 실제로 들어갈 개수가 Applications / Service Interfaces / Error Domains / Data Types / Connectors / Machine 항목으로 표시됩니다. 안내 두 줄도 함께 나타납니다.Network binding (SOME/IP, DDS, IPC) is not included. Configure it in Deployment after adding.Existing items with different content will ask for per-item confirmation.
- Import 를 누르면 진행 다이얼로그
Adding PARA Base Configuration이 표시됩니다. Cancel 로 확인 창을 닫으면 아무 일도 일어나지 않습니다. - 이후는 ARXML 임포트와 동일합니다. 저장되지 않은 편집이 먼저 저장되고, 충돌이 있으면 13.2.5의
충돌 다이얼로그가 표시되며, 전체가
Add PARA Base Configuration이라는 하나의 실행 취소 단위로 기록됩니다.

Import PARA Platform 확인 창 — 실제로 들어갈 개수와 두 줄의 안내
13.7.2 제약
- 명령 팔레트에서 실행했는데 처리할 VFB 에디터가 없으면 아무것도 넣지 않고 안내 토스트가
표시됩니다:
Open a VFB editor with an HPC-mapped composition, or use the PARA Platform button in the Machine Configuration dialog. - 다른 임포트가 진행 중이거나 충돌 다이얼로그를 기다리는 중이면 거부됩니다:
Base configuration rejected: <사유>. Finish or cancel it first. - 라이선스가 만료 상태면 거부됩니다. 이 기능은 익스포트가 아니라 쓰기 동작으로 취급됩니다.
13.8 자주 겪는 상황
임포트·익스포트에서 자주 나오는 상황과 그 대응을 모았습니다.
| 상황 | 원인과 대응 |
|---|---|
| Export를 눌렀는데 업그레이드 안내만 표시되는 경우 | 라이선스가 만료(또는 읽기 전용) 상태입니다. 임포트는 계속 사용할 수 있습니다 |
Export failed: OFFLINE_EXPORT_DENIED 가 표시되는 경우 | 익스포트는 서버 검증을 요구합니다. 네트워크 연결을 확인합니다 |
| 임포트 후 편집하던 내용이 사라진 경우 | 임포트는 시작 전에 모든 편집을 저장하므로 정상 흐름에서는 발생하지 않습니다. Ctrl+Z 로 임포트 전체를 되돌릴 수 있습니다 |
Unsaved changes were replaced in ... 토스트가 표시된 경우 | 저장되지 않은 편집이 있는 파일을 외부 쓰기가 덮었다는 뜻입니다. 토스트 안내대로 Ctrl+Z 를 누르면 그 편집이 돌아옵니다. 해당 파일은 계속 변경 표시(dirty)로 남습니다 |
| 충돌 다이얼로그에서 그냥 Resolve 를 눌렀더니 기존 값이 바뀐 경우 | 미결정 항목은 임포트 값으로 덮어쓰는 것이 기본입니다(13.2.5). 기존 값을 지키려면 Keep Project Version 을 명시적으로 선택합니다 |
| ECUC 설정이 임포트되지 않은 경우 | 그 모듈의 정의(.def)가 프로젝트에 없기 때문입니다. 정의를 먼저 임포트하거나, 정의가 든 ARXML을 함께 선택합니다 |
ECUC 설정이 definition mismatch 로 거부되는 경우 | 설정값이 가리키는 컨테이너/파라미터 경로가 정의에 없습니다. 13.5.2의 사유 문자열로 어느 경로인지 확인합니다 |
| DBC의 한글/특수문자가 깨지는 경우 | BOM 없는 UTF-8 파일이기 때문입니다. 파일에 BOM을 넣거나 ISO-8859-1로 저장합니다 |
| Extract 결과에 최신 편집이 빠진 경우 | Extract는 저장된 파일만 읽습니다. 먼저 저장합니다 |
| Extract 다이얼로그가 저절로 닫히지 않는 경우 | 경고가 있어 열어 둔 상태입니다. 체크리스트를 확인하고 Close 로 닫습니다 |
Import rejected: ... 가 표시되는 경우 | 앞선 임포트가 아직 끝나지 않았습니다. 열려 있는 충돌 다이얼로그를 처리하거나 취소합니다 |
export/ 폴더에 만든 파일이 탐색기에 보이지 않는 경우 | 탐색기의 export 폴더는 .arxml, .xml, .dbc 만 표시합니다 |