System 에디터와 검증
이 장에서 할 일
이 장에서는 지금까지 만든 설계를 두 화면으로 점검한다.
- SYSTEM 패널: System 편집기에서 컴포지션-ECU 매핑을, VFB 편집기에서 차량 전체의 컴포지션 계층을 한눈에 본다.
- VALIDATION 패널: PAIO가 모델을 AUTOSAR 제약(
constr_*)과 PAIO 자체 규칙으로 검사한 결과를 본다. 오류 행을 클릭해 문제 요소로 이동하고, 값을 고쳐 오류를 0건으로 만든다.
이 장을 마치면 검증 패널을 열고 읽는 법, 오류 행에서 수정 위치를 찾아가는 법을 알게 된다. 완성 예제는 "No validation issues."(오류 0건) 상태이고, 따라 만든 프로젝트의 목표도 같다.
시작하기 전에
- PARA 플랫폼 임포트와 PNC 요청 포트를 마쳐야 한다.
- 이 장의 화면은 완성 예제(
PNC)를 보여 준다. 단, 그림 11-4부터 그림 11-12까지는 SOME/IP 소비자 포트가 제공자와 겹쳐 있던 초안 상태를 보여 준다. 앞 장을 그대로 따라 했다면 이 오류는 없으므로, 그 화면들은 읽으며 절차만 익힌다. - 따라 만든 프로젝트가 완성 예제와 다른 점은 부록 — 직접 만든 프로젝트와 완성 예제의 차이에 정리되어 있다.
- 검증 패널의 전체 기능은 PAIO 매뉴얼의 Validation을, System 편집기는 System Editor를 참고한다.
SYSTEM 패널 보기
-
왼쪽 EDITOR 뷰의 DESIGN 아래에서 System을 클릭한다. System 편집기가 탭
PNC:System으로 열린다. 이어서 캔버스 오른쪽 가장자리의 버튼 세 개 중 세 번째인 System 버튼(PAIO 로고)을 클릭한다. 속성 패널이 제목 SYSTEM으로 열리고 NAME, VERSION, DESCRIPTION, ECU MAPPING이 보인다.
그림 11-1. SYSTEM 패널을 연 완성 예제의 System 편집기. 패널 위쪽에 NAME
PncVehicle, VERSION1.0.0, DESCRIPTIONZonal PNC tutorial vehicle이 있다. ① EDITOR 뷰 DESIGN 아래의 System. ② System 버튼. ③ ECU 노드와 HPC 노드마다 한 행씩, 모두 14행인 ECU MAPPING. -
ECU MAPPING 목록을 확인한다. 한 행이 캔버스의 ECU 또는 HPC 노드 하나이고, 노드 이름 앞의 배지는 노드의 종류, 행 오른쪽 끝은 그 노드에 매핑된 컴포지션이다. 모두 14행이다.

그림 11-3. ECU MAPPING. ECU 배지의
WestZone부터MirrorAct_FR까지 13행이 먼저 나오고, 마지막 행이 HPC 배지의HPC이다. 모두 14행이다. 노드마다 같은 이름의 컴포지션이 매핑되어 있다. -
EDITOR 뷰의 DESIGN 아래에서 VFB를 클릭한다. VFB 편집기가 탭
PNC:VFB로 열린다. 이 캔버스에서도 오른쪽 가장자리의 System 버튼을 클릭한다. 속성 패널에 NAME, VERSION, DESCRIPTION, ROOT COMPOSITION(PncVehicle), COMPOSITIONS 트리가 보인다.
그림 11-17. SYSTEM 패널을 연 VFB 편집기. 4단계에서 컴포지션을 접은 뒤의 모습이다. ① DESIGN 아래의 VFB. ② System 버튼. ③ COMPOSITIONS.
-
COMPOSITIONS는 처음에 모든 행이 각 컴포지션 안의 SWC까지 펼쳐져 있다. 루트
PncVehicle아래 컴포지션 14개의 왼쪽 화살표를 하나씩 눌러 접는다. 그러면 컴포지션 14개가 한 화면에 보인다.
그림 11-2. 모든 컴포지션을 접은 VFB 편집기의 SYSTEM 패널. ① ROOT COMPOSITION
PncVehicle. ② COMPOSITIONS. 루트PncVehicle아래에HPC,WestZone부터MirrorAct_FR까지 컴포지션 14개가 있다. 행마다 펼침 화살표, 요소 종류 아이콘, 이름(타입 이름이 다르면 타입 이름도)이 보인다. 트리에는 매핑된 노드를 보여 주는 열이 없으며, 매핑은 System 편집기의 ECU MAPPING(그림 11-3)에서 본다.
참고.
PARA는HPC컴포지션 안에 들어 있는 PARA 플랫폼 컴포지션이며, COMPOSITIONS에서HPC를 펼치면 보인다.HPC가 이미HPC노드에 매핑되어 있으므로PARA를 따로 매핑하지 않으며, 그래서 ECU MAPPING에는PARA가 나오지 않는다.
참고. 컴포지션 행을 펼치거나 접는 것은 화면 상태일 뿐이다. 탭에 저장하지 않은 변경 표시(●)가 생기지 않는다.
참고. ECU MAPPING이나 COMPOSITIONS의 행을 클릭하면 속성 패널이 그 노드나 컴포지션의 속성(예: 제목 ECU, COMPOSITION)으로 바뀐다. SYSTEM 패널로 돌아가려면 System 버튼을 다시 클릭한다.
검증 패널 열기
검증에는 실행 버튼이 없다. 창이 프로젝트를 열면 PAIO가 프로젝트 전체를 바로 검사하고, 모델을 편집하거나 저장할 때마다 자동으로 다시 검사한다.
-
창 맨 위 제목 표시줄을 확인한다.
PAIO [PNC]는 이 창에 프로젝트PNC가 열려 있다는 뜻이다. 편집기를 열지 않아도 프로젝트 전체가 검사된다. -
화면 맨 아래 상태 표시줄 왼쪽 끝에는 토글 버튼이 나란히 있다. 그중 마우스를 올렸을 때 툴팁이 Toggle Validation인 버튼이 검증 아이콘이다(
V모양). 오류가 있으면 아이콘에 빨간 숫자 배지가 붙고, 툴팁이Validation: 4 error(s), 0 warning(s), 0 info(s)처럼 심각도별 건수로 바뀐다.앞 장을 그대로 따라 했다면 이 절이 다루는 SOME/IP 포트 오류는 없다. 아래 그림은 소비자 포트가 겹쳐 있던 초안 상태이다.

그림 11-4. SOME/IP 포트가 겹친 초안 상태의 프로젝트를 연 직후의 창. ① 제목 표시줄
PAIO [PNC]. ② 아무것도 클릭하지 않았는데 상태 표시줄의 검증 아이콘에 빨간 배지4가 붙어 있다. -
검증 아이콘을 클릭한다. 편집기 영역 아래에 VALIDATION 패널이 열린다. 같은 아이콘을 다시 누르거나 패널 오른쪽 위의 × 버튼을 누르면 닫힌다.
검증 패널 읽기
VALIDATION 패널은 한 행이 위반 하나인 표이다. 패널 제목 옆의 빨간 배지는 오류 건수이다.
| 열 | 내용 |
|---|---|
| ELEMENT TYPE | 위반이 난 요소의 종류. 예) SomeipServiceInstanceToMachineMapping, PhysicalChannel, PncMapping |
| NAME | 요소 이름. 예) VehicleState_Consumer, Backbone/VLAN_Body |
| DESCRIPTION | 무엇이 잘못되었는지 설명하는 영어 문장 |
| CONSTR | 위반한 AUTOSAR 제약 번호. 예) constr_5093. AUTOSAR 번호가 없는 PAIO 자체 규칙이면 비어 있다 |
- 심각도: 행 왼쪽 끝의 색 막대로 구분한다. 빨강은 error, 주황은 warning, 파랑은 info이다. 이 장에서 나오는 행은 모두 error이다.
- 열 폭: DESCRIPTION 문장이 길면 뒤가
…로 잘린다. 열 머리글 경계를 끌어 넓힐 수 있다. 넓힌 폭은 모델에 저장되지 않고, 앱을 다시 시작하면 기본 폭으로 돌아온다. 아래 그림은 DESCRIPTION 열을 넓힌 상태이다. - 클릭하면 이동: 행에 마우스를 올리면 툴팁
Go to the element to fix가 나온다. 행을 클릭하면 그 요소를 가진 편집기가 열리고, 요소에 빨간 표시가 붙는다.

그림 11-5. 오류 4건이 보이는 VALIDATION 패널. 제목 옆 배지는 4이다. 4행 모두 ELEMENT TYPE이 SomeipServiceInstanceToMachineMapping이고, CONSTR가 비어 있는 PAIO 자체 규칙이다. 설명은 "한 주소와 포트는 서비스 인스턴스 하나에만 매핑되어야 한다"는 뜻이다. ① 다음 절에서 클릭할 VehicleState_Consumer 행.
오류를 찾아 고치기: SOME/IP 포트 중복
이 절은 소비자 인스턴스 2개가 같은 커넥터의 제공자와 같은 UDP 포트를 쓰던 초안 상태를 고치는 과정이다. 인터페이스와 SOME/IP 서비스에서 소비자 포트를 30503으로 정했다면 이 오류는 나타나지 않는다. 그때는 화면을 보며 읽고, 같은 순서(행 클릭 → 수정 위치 찾기 → 값 수정 → 재검증)를 다른 오류에 적용한다.
| 커넥터 (IP 주소) | 인스턴스 (역할) | 초안 UDP 포트 | 수정 후 |
|---|---|---|---|
HPC_Eth_Rear_Conn (192.168.200.1) | VehicleState_Provider (P) | 30501 | 30501 (그대로) |
HPC_Eth_Rear_Conn (192.168.200.1) | ParkDistance_Consumer (C) | 30501 | 30503 |
SouthZone_Eth_Conn (192.168.200.12) | ParkDistance_Provider (P) | 30502 | 30502 (그대로) |
SouthZone_Eth_Conn (192.168.200.12) | VehicleState_Consumer (C) | 30502 | 30503 |
오류 행에서 요소 찾기
-
VALIDATION 패널에서
VehicleState_Consumer행을 클릭한다.PNC:Interface탭이 열리고 SERVICE 탭에서SVC_VehicleState가 선택된다. 오른쪽 SERVICE INSTANCE 탭에VehicleState_Consumer카드가 빨간 테두리로 펼쳐진다.
그림 11-6. 행을 클릭한 결과. ① 선택된 서비스 인터페이스
SVC_VehicleState. ② 빨간 테두리로 표시된 SOME/IP CVehicleState_Consumer카드(NAME, REQUIRED INSTANCE ID1). 아래 패널에는 오류 4건이 그대로 있다.
참고. 이 카드에는 UDP 포트 칸이 없다. 인스턴스를 어느 주소와 포트에 올리는지는 System 편집기의 커넥터 SERVICE INSTANCES에서 정한다. 오류 행이 가리키는 곳과 값을 고치는 곳이 다르므로, 다음 단계에서 System 편집기로 이동한다.
SouthZone_Eth_Conn 포트 고치기
-
왼쪽 EDITOR 뷰의 DESIGN 아래에서 System을 클릭해 System 편집기(탭
PNC:System)를 연다. -
캔버스에서
SouthZone노드 위쪽의 Ethernet 커넥터를 클릭한다. 오른쪽 속성 패널 제목이 ETHERNET CONNECTOR, NAME이SouthZone_Eth_Conn인지 확인한다. -
SERVICE INSTANCES가 접혀 있으면 클릭해 펼친다. 이어서
VehicleState_Consumer줄을 클릭해 펼친다. IP ADDRESS192.168.200.12, TCP PORT, UDP PORT30502칸이 나타나고, 그 아래에 빈 TLS (TCP), TLS (UDP) 줄이 있다.
그림 11-7. ① 선택한 커넥터
SouthZone_Eth_Conn. CONNECTED CHANNEL은Backbone / VLAN_Rear (VLAN: 200), APPLICATION ENDPOINTS에는SouthZone_Eth_Conn, 192.168.200.12:30502하나가 있다. ② SERVICE INSTANCES. PParkDistance_Provider와 CVehicleState_Consumer가 모두UDP:30502이다. ③ 펼친VehicleState_Consumer의 UDP PORT30502. -
UDP PORT 칸에
30503을 입력하고 Tab을 누른다.참고. UDP PORT 오른쪽 ▾ 목록에는 이 커넥터의 Application Endpoint 포트만 나온다. 목록에
30503이 없으면 직접 입력한다. 새 포트를 입력하면 그 포트의 Application Endpoint(SouthZone_Eth_Conn, 192.168.200.12:30503)가 자동으로 추가된다.저장하지 않아도 바로 다시 검사된다. 카드가 접히고 요약이
UDP:30503으로 바뀐다.SouthZone쪽 포트 오류 2건은 사라진다.포트를 바꾸면 PAIO가 SOME/IP 서비스의 신호와 PDU도 자동으로 만든다(CP-SOA 파생). 파생된
SVC_…신호와 PDU는 곧바로design/SIGNAL.io.model에 써지고, 열려 있는 Interface 편집기에는SVC_…_SR,SVC_…_CS인터페이스가 추가되므로PNC:Interface탭에도 ● 표시가 붙는다. 파생된 요소는 검증 오류를 내지 않으므로 파생을 되돌릴 필요가 없다. -
VehicleState_Consumer줄을 다시 클릭해 카드를 펼치고 UDP PORT가30503인지 확인한다. VALIDATION 배지가2인지도 확인한다. 남은 2건은HPC_Eth_Rear_Conn쪽(192.168.200.1:30501)이다.
그림 11-10. 포트를 바꾼 직후
VehicleState_Consumer카드를 다시 펼친SouthZone_Eth_Conn. ① UDP PORT30503. ② 주황 테두리로 표시한 VALIDATION 패널 전체. 제목 옆 배지가2이다.VehicleState_Provider와ParkDistance_Consumer가192.168.200.1:30501을 함께 쓰고 있다. ③ APPLICATION ENDPOINTS의...:30502와...:30503. 두 탭 모두 ●(저장하지 않은 변경)가 붙어 있다. -
Ctrl+S를 누른다. 활성 탭PNC:System만 저장되고PNC:Interface에는 ● 표시가 남는다. PROJECT › Save All을 선택해 그 탭도 저장한다. 두 탭의 ● 표시가 모두 사라진다.
HPC_Eth_Rear_Conn 포트 고치기
같은 방법으로 남은 2건을 고친다.
-
VALIDATION 패널에서
ParkDistance_Consumer행을 클릭한다.PNC:Interface탭에서ParkDistance_Consumer카드가 빨간 테두리로 표시된다.
그림 11-11. 첫 수정을 저장한 뒤의 패널. 배지
2. ① 클릭할ParkDistance_Consumer행. -
PNC:System탭으로 돌아가HPC노드 아래쪽 가장자리의 커넥터 두 개 중 오른쪽을 클릭한다.HPC에는 Ethernet 커넥터가 둘(HPC_Eth_Body_Conn,HPC_Eth_Rear_Conn) 있으므로, NAME이HPC_Eth_Rear_Conn이고 CONNECTED CHANNEL이Backbone / VLAN_Rear (VLAN: 200)인지 확인한다. -
SERVICE INSTANCES에서
ParkDistance_Consumer줄을 클릭해 펼친다. IP ADDRESS가192.168.200.1, UDP PORT가30501이다. UDP PORT에30503을 입력하고 Tab을 누른다. -
이번에는 카드가 펼쳐진 채로 남고 UDP PORT는
30503이다. 다만 카드 요약 줄은 아직UDP:30501이며, 커넥터를 다시 선택하면 새 포트로 바뀐다. -
패널에 "No validation issues."가 표시되는지 확인한다.

그림 11-12. ① 선택한 커넥터
HPC_Eth_Rear_Conn. APPLICATION ENDPOINTS에...:30501과...:30503이 있다. SERVICE INSTANCES에서 PVehicleState_Provider는UDP:30501이고, CParkDistance_Consumer의 요약 줄도 아직UDP:30501이다. ② UDP PORT30503. ③ "No validation issues.". 아직 저장 전이라PNC:System탭에 ● 표시가 있다. -
Ctrl+S를 눌러 저장한다. 이번에는PNC:System에만 ● 표시가 있으므로Ctrl+S로 충분하다.
저장한 결과 다시 검증하기
-
아무것도 클릭할 필요가 없다. 저장하면 프로젝트가 저절로 다시 검사된다.
-
패널에 "No validation issues."가 표시되고, 패널 제목과 상태 표시줄 검증 아이콘에 배지가 없는지 확인한다.

그림 11-13. 저장한 뒤의 화면. ① "No validation issues.". ② 배지가 없는 상태 표시줄 검증 아이콘. 속성 패널의
ParkDistance_Consumer요약 줄은 커넥터를 다시 선택할 때까지UDP:30501로 보인다.그림 11-14. 오류 0건일 때의 VALIDATION 패널. 제목 옆에 배지가 없고, 표에는 "No validation issues." 한 줄만 있다.
실시간 검증 확인하기: PNC GATEWAY TYPE
검증은 저장하지 않은 편집에도 바로 반응한다. 완성 예제에서 게이트웨이 설정 하나를 잘못 바꿔 보고, 다시 되돌려 오류가 사라지는 것을 확인한다. 이 절에서는 저장하지 않는다.
-
PNC:System탭을 연다(탭이 없으면 EDITOR 뷰의 DESIGN 아래에서 System을 클릭한다).EastZone노드 위쪽의 Ethernet 커넥터를 클릭하고, NAME이EastZone_Eth_Conn, CONNECTED CHANNEL이Backbone / VLAN_Body (VLAN: 100)인지 확인한다. -
속성 패널의 PARTIAL NETWORK가 접혀 있으면 클릭해 펼친다. PNC GATEWAY TYPE이 PASSIVE로 선택되어 있다.
-
ACTIVE를 클릭한다. 저장하지 않아도 VALIDATION 패널에 오류 2건이 나타난다.

그림 11-15. 속성 패널의 NETWORK ENDPOINT / APPLICATION ENDPOINTS / SERVICE INSTANCES / SOCKET CONNECTIONS는 접어 두었다. ① PNC GATEWAY TYPE의 NONE / ACTIVE / PASSIVE 중 ACTIVE가 선택된 상태. ②
PhysicalChannelBackbone/VLAN_Body행,constr_5093:VLAN_Body채널에 active 커넥터가 2개(WestZone_Eth_Conn,EastZone_Eth_Conn)이며 최대 1개만 허용된다는 뜻이다. ③PncMappingPNC_Comfort행,constr_3714:PNC_Comfort의 top-level PNC 코디네이터WestZone과EastZone이 active 커넥터 경로로 서로 이어진다는 뜻이다. 탭에 ● 표시가 붙었다. -
PASSIVE를 다시 클릭한다. 두 행이 바로 사라지고 "No validation issues."로 돌아온다. 다만 설정이 저장된 값으로 돌아왔는데도 탭의 ● 표시는 남아 있다.

그림 11-16. ① PNC GATEWAY TYPE이 다시 PASSIVE. ② "No validation issues.". 탭 이름 옆의 ● 표시는 그대로 있다.
-
이 절에서는 저장하지 않으므로 탭을 저장하지 않고 닫는다.
PNC:System탭에 마우스를 올리면 나타나는 ×(툴팁 Close)를 클릭하고, Unsaved Changes 창이 나타나면 Don't Save를 클릭한다.
참고. 원인 하나가 여러 제약을 동시에 어길 수 있다.
EastZone_Eth_Conn하나를 ACTIVE로 바꾸면 채널 규칙(constr_5093)과 코디네이터 규칙(constr_3714)이 함께 보고된다. 같은 원인을 고치면 둘 다 사라진다.
PNC 설계와 관련된 주요 제약
완성 예제는 아래 제약을 모두 지킨다. 이 표는 예제를 처음 만들 때 검증 패널이 보고했던 항목과 그 수정 내용이다. 앞 장을 그대로 따라 했다면 지금은 나타나지 않는다. 같은 오류가 보이면 해당 장을 다시 확인한다.
| 제약 | 검증 패널이 보고한 내용 | 수정 | 관련 장 |
|---|---|---|---|
constr_3040 | PNC 식별자 8/9/10이 PNC 벡터 비트 범위(16..63) 밖 | 식별자를 17/18/19로 변경 | PNC 정의와 커넥터 PNC 속성 |
constr_3686 | 필터 마스크가 3바이트로, PNC VECTOR LENGTH 6과 다름 | 6바이트로 다시 계산 | PDU GROUPS·MATRIX·NM VECTOR 검토 |
constr_5093 | 백본 채널에 active 게이트웨이 커넥터가 3개 | 백본을 VLAN_Body / VLAN_Rear로 나누고, VLAN마다 active 1개 | 토폴로지 설계 |
constr_3714 / constr_3781 | top-level 코디네이터끼리 active 경로로 이어짐 / 코디네이터가 없음 | WestZone, SouthZone은 양쪽 active(top-level), EastZone은 백본 쪽 passive | PNC 정의와 커넥터 PNC 속성 |
constr_3514 | I-Signal(LockCmd 등) 하나가 PDU 두 개에 매핑됨 | 좌/우 신호를 _FL / _FR로 분리 | 신호·PDU·프레임과 I-PDU Group |
constr_9157–9159, constr_9162 | CanNm 클러스터의 필수 속성 누락 | 통신 클러스터 대화상자의 CAN NM CLUSTER 탭에서 nmBusloadReductionActive, nmImmediateNmTransmissions, nmMessageTimeoutTime, nmRemoteSleepIndicationTime 네 속성을 채움 | NM 설정 |
constr_5222 | UdpNm 클러스터의 필수 속성 누락 | 통신 클러스터 대화상자의 UDP NM CLUSTER 탭에서 nmMessageTimeoutTime, nmRemoteSleepIndicationTime을 채움. 나머지 필수 값(nmMsgCycleTime, nmRepeatMessageTime, nmWaitBusSleepTime, nmNetworkTimeout)은 NM 클러스터가 만들어질 때 기본값으로 들어간다. NmCluster_VLAN_Rear는 화면에서 열 수 없어 이 방법으로 채울 수 없다 | NM 설정 |
constr_9165 / 9166 | NM 클러스터 커플링의 필수 플래그 누락 | 커플링은 현재 화면에서 만들거나 고칠 수 없으며 ARXML을 들여올 때 값과 함께 들어온다 | NM 설정 |
| (PAIO NM 규칙) | NetworkHandle에 INACTIVE→FunctionGroup 상태 매핑이 없음 ("PNC release stops nothing") | ParkAssistFG / TrailerFG의 Off 매핑 추가 | AP 머신 — NM 핸들과 FunctionGroup |
constr_10641 | SM 모듈의 max-action-list-duration 누락 | 1.0 s 설정 | AP 머신 — NM 핸들과 FunctionGroup |
왜 0건을 목표로 하는가
설계 근거. 검증 패널은 정보를 주는 도구이며, 오류가 있어도 저장이나 익스포트를 막지 않는다. 그러나 위 표의 항목은 모두 익스포트한 ARXML을 다른 도구(ComM/Nm 설정 생성기 등)가 해석할 때 실제 동작 오류로 이어진다. 그래서 PNC 설계는 "No validation issues."가 될 때까지 다듬는다. 검증 0건은 AUTOSAR 제약을 지킨다는 뜻이고, ARXML 스키마(XSD) 검사는 익스포트 단계에서 따로 한다.
확인하기
- VFB 편집기 SYSTEM 패널의 COMPOSITIONS에 루트
PncVehicle아래 컴포지션 14개가 있다. - System 편집기 SYSTEM 패널의 ECU MAPPING에 노드 14개(ECU 13개, HPC 1개)가 있고, 모두 같은 이름의 컴포지션에 매핑되어 있다.
- 프로젝트를 연 창의 VALIDATION 패널에 "No validation issues."가 표시되고, 상태 표시줄 검증 아이콘에 배지가 없다.
- 커넥터를 각각 선택하면
HPC_Eth_Rear_Conn의ParkDistance_Consumer와SouthZone_Eth_Conn의VehicleState_Consumer가 모두UDP:30503이다. -
EastZone_Eth_Conn의 PNC GATEWAY TYPE이 PASSIVE이다. - 탭 이름에 저장하지 않은 변경 표시(●)가 없다.
다음 단계
ARXML 익스포트에서 검증을 마친 설계를 ARXML 문서로 내보내고 결과 파일을 확인한다.