검증
이 장에서 할 일
이 장에서는 LIN 버스까지 마친 토폴로지에 결함 세 개를 일부러 넣고, PAIO 검증이 그것을 어떻게 보고하는지 본다. PAIO 는 열려 있는 프로젝트를 스스로 검증하므로, 푸터의 V 아이콘으로 VALIDATION 패널을 열어 오류 세 행과 배지 3 을 읽기만 하면 된다. 그다음 행을 클릭해 문제 요소 가까이로 이동하고, 화면에서 값을 고쳐 저장한다.
고칠 곳은 세 군데이다. HPC 의 이더넷 커넥터 EthernetConnector 의 유니캐스트 주소를 192.168.0.11 로 되돌리고, SLAVE_ECU 의 LIN 커넥터 LinConnector 에 컨트롤러 LinSlaveController 를 다시 지정하고, LIN 슬레이브 컨트롤러 LinSlaveController 의 프로토콜 버전을 LIN 2.0 으로 되돌린다. HPC 의 커넥터를 처음부터 끝까지 절차로 보이고, 나머지 둘도 같은 흐름으로 따라간다.
이 장을 마치면 VALIDATION 패널에 No validation issues. 가 보인다. 고친 토폴로지는 LIN 버스를 마친 설계와 같아진다.
시작하기 전에
- LIN 버스를 마친 상태에서 시작한다. 이때 VALIDATION 패널에는
No validation issues.가 보인다. - 이 장의 화면은 그 설계에 아래 결함 세 개가 들어 있는 상태이다. 편집기는 하나도 열려 있지 않고, VALIDATION 패널도 닫혀 있다.
| 결함 | 위치 | 원래 값 | 바뀐 값 |
|---|---|---|---|
HPC 커넥터의 유니캐스트 주소가 멀티캐스트 주소임 | 노드 HPC 의 EthernetConnector › UNICAST IPV4 ADDRESS | 192.168.0.11 | 224.0.0.1 |
SLAVE_ECU 커넥터에 컨트롤러가 없음 | 노드 SLAVE_ECU 의 LinConnector › CONTROLLER | LinSlaveController | 빈 값(Select controller...) |
| LIN 슬레이브 컨트롤러에 프로토콜 버전이 없음 | 노드 SLAVE_ECU 의 LinSlaveController › PROTOCOL VERSION | LIN 2.0 | 빈 값(켜진 버튼 없음) |
참고. 결함 세 개는 모두 화면에서 만들 수 있다. EDITOR 뷰의 DESIGN 아래에서 System 을 클릭해 탭
TopologyDesign:System을 열고, 아래처럼 바꾼 뒤Ctrl+S로 저장한다. 저장한 다음 탭TopologyDesign:System의 × 를 클릭해 탭을 닫고, VALIDATION 패널이 열려 있으면 푸터의 V 아이콘을 클릭해 닫는다. 그래야 이 장의 화면(그림 6-1)과 같은 상태에서 시작한다. 첫째는HPC의EthernetConnector를 클릭하고 UNICAST IPV4 ADDRESS 에224.0.0.1을 입력한 뒤Tab키를 누르면 된다. 칸은 이 값을 그대로 받아들이고 오류로 표시하지 않는다. 둘째는SLAVE_ECU의LinConnector를 클릭하고 CONTROLLER 칸 안, 아래 화살표 왼쪽의 ×(Clear Controller)를 클릭하면 된다. 칸이Select controller...로 바뀌고, 라벨이 빨개지며 안내문Controller is required가 보인다. × 는 칸에 값이 있을 때만 보인다. 셋째는LinSlaveController를 클릭하고 PROTOCOL VERSION 아래에서 켜져 있는LIN 2.0을 한 번 더 클릭해 끄면 된다. 켜진 버튼이 하나도 남지 않는다.
이 장에서 키보드로 입력하는 값은 UNICAST IPV4 ADDRESS 의 192.168.0.11 하나뿐이다. 나머지는 클릭, 드롭다운 선택, Ctrl+S 이다.
검증을 돌리고 VALIDATION 패널 읽기
VALIDATION 패널 열기
-
화면 왼쪽 아래 푸터의 V 아이콘을 본다. PAIO 는 편집기를 열지 않아도 열려 있는 프로젝트를 스스로 검증하므로, 아이콘에는 이미 빨간 배지
3이 붙어 있다. 아이콘에 마우스를 올리면 툴팁이Validation: 3 error(s), 0 warning(s), 0 info(s)이다. -
푸터의 V 아이콘을 클릭한다. 화면 아래에 VALIDATION 패널이 열린다. 제목 옆에 빨간 배지
3(툴팁3 error(s))이 있고, 열 머리글은 ELEMENT TYPE, NAME, DESCRIPTION, CONSTR 이다. 그 아래 오류 세 행이 있다.
그림 6-1. 패널을 연 화면. ① 푸터의 V 아이콘(배지
3), ② 오류 세 행, ③ 패널 제목 VALIDATION 옆의 배지3. 편집기는 열려 있지 않아 가운데는 빈 편집기 영역(Open a file to start editing)이다. 기본 열 너비에서는 NAME 과 DESCRIPTION 이…로 잘린다.
열 읽기
패널의 한 행은 오류 하나이다. 열의 뜻은 다음과 같다.
| 열 | 내용 |
|---|---|
| ELEMENT TYPE | 문제가 있는 요소의 종류 |
| NAME | 그 요소의 이름. SLAVE_ECU/LinConnector 처럼 노드 이름이 앞에 붙는 행도 있다 |
| DESCRIPTION | 무엇이 잘못됐는지 설명하는 문장 |
| CONSTR | AUTOSAR 제약 번호(constr_*) |
-
글자가 잘려 보이면 NAME 과 DESCRIPTION 머리글의 오른쪽 경계를 오른쪽으로 끌어 넓힌다. 이 단계는 선택 사항이다. 넓히면 세 문장이 모두 끝까지 보인다.

그림 6-2. NAME 과 DESCRIPTION 열을 넓힌 VALIDATION 패널. ①
constr_3288행, ②constr_5398행, ③constr_5449행.
세 행은 패널 순서대로 다음과 같다. 모두 오류이다.
| # | ELEMENT TYPE | NAME | DESCRIPTION | CONSTR |
|---|---|---|---|---|
| 1 | EthernetCommunicationConnector | EthernetConnector | Connector "EthernetConnector" unicast IPv4 "224.0.0.1" is not in the unicast range (first octet 224 > 223). | constr_3288 |
| 2 | CommunicationConnector | SLAVE_ECU/LinConnector | Connector "LinConnector" on "SLAVE_ECU" has no commController reference; each CommunicationConnector shall reference exactly one communication controller. | constr_5398 |
| 3 | LinSlave | SLAVE_ECU/LinSlaveController | LIN slave controller "LinSlaveController" on "SLAVE_ECU" has no protocolVersion. | constr_5449 |
참고. 행은 한 번 클릭 하면 이동한다. 이동할 수 있는 행에 마우스를 올리면 툴팁
Go to the element to fix가 뜬다. 이 장의 세 행 가운데 결함이 있는 요소의 속성 패널을 바로 여는 것은constr_5398행뿐이다. 나머지 두 행은 그 요소 가까이까지만 이동하므로, 고칠 요소는 캔버스에서 직접 클릭한다.
HPC 커넥터의 유니캐스트 주소 고치기
행을 클릭해 System 편집기로 이동하기
-
VALIDATION 패널의 첫째 행(
constr_3288)을 클릭한다. System 편집기 탭TopologyDesign:System이 열리고, 노드ZONE의 이더넷 커넥터EthernetConnector가 선택된다. 오른쪽 속성 패널의 제목은 ETHERNET CONNECTOR, CONTROLLER 는EthernetCommController, UNICAST IPV4 ADDRESS 는192.168.0.19이다. VALIDATION 패널은 열린 채로 남는다.
그림 6-3. 첫째 행을 클릭한 결과. ①
constr_3288행, ② 새로 열린 탭TopologyDesign:System, ③ 선택된ZONE의 이더넷 커넥터(캔버스 아래쪽), ④ UNICAST IPV4 ADDRESS =192.168.0.19. EDITOR 뷰에서는 DESIGN 아래의 System 이 강조된다.
주의. 이 행은 결함이 있는
HPC의 커넥터가 아니라ZONE의 커넥터로 이동한다. 두 노드의 이더넷 커넥터 이름이 똑같이EthernetConnector이고, 행은 그중ZONE쪽을 고른다. 캔버스의 빨간 검증 표시도ZONE의 커넥터에 붙는다.ZONE커넥터의 값은 바꾸지 않는다.
HPC 커넥터 선택하기
-
캔버스 아래 툴바의 Fit to View 를 클릭한다. 노드 네 개가 모두 보인다.
-
노드
HPC의 아래 가장자리에 있는 커넥터(EthernetConnector)를 클릭한다. 패널 제목은 그대로 ETHERNET CONNECTOR 이고, CONTROLLER 는EthernetController이다. UNICAST IPV4 ADDRESS 와 MULTICAST IPV4 ADDRESS 가 둘 다224.0.0.1이다.
그림 6-4.
HPC의 커넥터를 선택한 화면. ①HPC의 커넥터, ② UNICAST IPV4 ADDRESS =224.0.0.1, ③ MULTICAST IPV4 ADDRESS =224.0.0.1. 빨간 검증 표시는 아직ZONE의 오른쪽 커넥터에 남아 있다.
참고. UNICAST IPV4 ADDRESS 칸은
224.0.0.1을 오류로 표시하지 않는다. 이 결함은 VALIDATION 패널에서만 보인다.
192.168.0.11 입력하기
-
UNICAST IPV4 ADDRESS 의
224.0.0.1을 지우고192.168.0.11을 입력한 뒤Tab키를 누른다. ADDRESS SOURCE 의 FIXED 와 MULTICAST IPV4 ADDRESS 는 그대로 둔다. -
탭
TopologyDesign:System의 이름 옆에 파란 점(수정됨 표시)이 붙는다. 저장하지 않아도 VALIDATION 패널이 바로 두 행으로 줄고, 패널 제목 옆과 푸터의 배지가2가 된다.ZONE커넥터의 빨간 표시도 사라진다.
그림 6-5. 고친 뒤의 화면. ①
HPC의 커넥터, ② UNICAST IPV4 ADDRESS =192.168.0.11. VALIDATION 패널에는constr_3288이 빠진 두 행이 남는다.
SLAVE_ECU 커넥터에 컨트롤러 지정하기
커넥터 선택하기
-
VALIDATION 패널의
constr_5398행(이제 첫째 행)을 클릭한다. 이번에는 행이 결함이 있는 요소 자체, 곧 노드SLAVE_ECU의 위 가장자리에 있는 커넥터(LinConnector)를 선택하므로 캔버스를 클릭할 필요가 없다. -
속성 패널을 확인한다. 패널 제목은 LIN CONNECTOR 이고, CONTROLLER 에는 기울임꼴 안내 글자
Select controller...가, CONNECTED CHANNEL 에는LinCluster / PhysicalChannel이 보인다. CONTROLLER 는 필수 입력란이라 라벨이 빨갛고 안내문Controller is required가 보인다. 캔버스에는 이 커넥터와 컨트롤러를 잇는 주황 선이 없다.
그림 6-6.
constr_5398행을 클릭한 결과. ①constr_5398행, ② 선택된SLAVE_ECU의 커넥터, ③ 빨간 라벨과Controller is required가 보이는 CONTROLLER =Select controller....
LinSlaveController 고르기
-
CONTROLLER 칸을 클릭한다. 칸이 안내 글자
Type to search...가 있는 검색 칸으로 바뀌고, 목록에는LinSlaveController하나만 보인다.
그림 6-7. 열린 CONTROLLER 목록. ①
SLAVE_ECU의 커넥터, ② CONTROLLER 칸(Type to search...), ③ 하나뿐인 항목LinSlaveController. -
LinSlaveController를 클릭한다. VALIDATION 패널이 한 행으로 줄고 배지가1이 된다.
캔버스에는 커넥터와 컨트롤러를 잇는 주황 선이 다시 생긴다(그림 6-9).
LIN 슬레이브 컨트롤러의 프로토콜 버전 고르기
행을 클릭해 SLAVE_ECU 로 이동하기
-
constr_5449행(이제 하나 남은 행)을 클릭한다. 노드SLAVE_ECU가 선택되고 노드 안이 빨갛게 칠해진다. 패널 제목은 ECU, NAME 은SLAVE_ECU이다. 이 행은 컨트롤러가 아니라 컨트롤러가 들어 있는 노드를 고른다.
그림 6-8.
constr_5449행을 클릭한 결과. ①constr_5449행, ② 빨갛게 표시된 노드SLAVE_ECU의 머리글, ③ 패널 제목 ECU. VALIDATION 패널에는 한 행이 남아 있다.
LIN 2.0 고르기
-
노드
SLAVE_ECU안의 컨트롤러 사각형(LinSlaveController)을 클릭한다. 패널 제목은 LIN SLAVE 이고, LIN SETTINGS 의 PROTOCOL VERSION 은LIN 1.3,LIN 2.0,LIN 2.1,LIN 2.2,ISO 17987버튼 묶음이며 켜진 버튼이 없다. CONTROLLER 와 달리 이 칸은 빨갛게 표시되지 않는다. -
PROTOCOL VERSION 아래에서
LIN 2.0을 클릭한다. 버튼이 켜지고 VALIDATION 패널에서 마지막 행이 사라져No validation issues.가 보인다. 패널 제목 옆과 푸터 V 아이콘의 배지도 사라진다.
그림 6-9. 고친 뒤의 화면. ①
SLAVE_ECU안의 컨트롤러 사각형, ② PROTOCOL VERSION =LIN 2.0. 커넥터와 컨트롤러 사이에 주황 선이 다시 보이고, VALIDATION 패널에는No validation issues.가 보인다.
세 행을 클릭했을 때 선택되는 것과 실제로 고칠 요소를 모으면 다음과 같다.
| 행 | 클릭하면 선택되는 것 | 고칠 요소 |
|---|---|---|
constr_3288 | 탭 TopologyDesign:System 이 열리고 ZONE 의 EthernetConnector | HPC 의 EthernetConnector 를 직접 클릭 |
constr_5398 | SLAVE_ECU 의 LinConnector(패널 LIN CONNECTOR) | 선택된 커넥터 그대로. 캔버스를 클릭할 필요 없음 |
constr_5449 | 노드 SLAVE_ECU(패널 ECU) | 노드 안의 LinSlaveController 를 한 번 더 클릭 |
저장하고 다시 검증하기
-
노드가 없는 빈 캔버스를 클릭한다. 속성 패널이 닫힌다.
-
Ctrl+S를 눌러 저장한다. 탭TopologyDesign:System의 파란 점이 사라진다. -
열린 채로 있는 VALIDATION 패널을 본다. 여전히
No validation issues.가 보이고, 패널 제목 옆과 푸터의 V 아이콘에는 배지가 없다.
그림 6-10. 저장한 뒤의 화면. ① 배지가 없는 푸터의 V 아이콘, ②
No validation issues.행. 속성 패널은 닫혀 있다.
참고. 빈 캔버스를 클릭해 속성 패널을 닫으면 캔버스 배율이 Fit to View 를 누르기 전(그림 6-3)의 배율로 돌아간다. 그래서 그림 6-10 에서는 아래쪽의
SLAVE_ECU와ZONE이 VALIDATION 패널 위에서 잘려 보인다. 화면 배율만 바뀐 것이고 설계는 그대로이다.Ctrl+S는 배율을 바꾸지 않는다.
참고. 건수가 0으로 돌아오면 V 아이콘의 배지는 사라지지만, V 아이콘의 툴팁에는 마지막 건수
Validation: 1 error(s), 0 warning(s), 0 info(s)가 그대로 남는다. 현재 결과는 VALIDATION 패널에서 확인한다.
패널은 값을 고칠 때마다 저장하지 않아도 다시 계산되므로, 이 단계는 저장한 뒤에도 결과가 같은지를 확인하는 것이다. 고칠 때마다 배지는 다음과 같이 줄어든다.
| 고친 뒤 | 패널에 남은 행 | 패널 배지 | 푸터 배지 |
|---|---|---|---|
| 시작 | 3 | 3 | 3 |
HPC 커넥터 UNICAST IPV4 ADDRESS → 192.168.0.11 | 2 (constr_5398, constr_5449) | 2 | 2 |
SLAVE_ECU 커넥터 CONTROLLER → LinSlaveController | 1 (constr_5449) | 1 | 1 |
LinSlaveController PROTOCOL VERSION → LIN 2.0 | 0 (No validation issues.) | 없음 | 없음 |
Ctrl+S 로 저장 | 0 (No validation issues.) | 없음 | 없음 |
세 결함을 고치면 남는 행이 없다. 고친 세 값은 LIN 버스를 마친 설계와 같다.
왜 이렇게 설계하는가
- 유니캐스트 주소는 노드 하나의 주소이다.
224.0.0.1은 이더넷 버스에서 MULTICAST IPV4 ADDRESS 에 넣은, SOME/IP 서비스 디스커버리(SD)에 쓰는 멀티캐스트 주소이다. 유니캐스트 주소는 첫 옥텟이 223 이하여야 하므로 검증은first octet 224 > 223으로 이 값을 거부한다.HPC자신의 주소는 참조 설계의HPC_Endpoint인192.168.0.11이다. - 커넥터는 컨트롤러 하나를 가리켜야 한다. 문장 그대로
each CommunicationConnector shall reference exactly one communication controller.이다. 커넥터는 컨트롤러를 거쳐 버스에 붙으므로, 컨트롤러가 없으면 캔버스에서도 둘을 잇는 주황 선이 사라진다. - LIN 컨트롤러에는 프로토콜 버전이 필요하다. 참조 설계의
LinSlaveController는 프로토콜 버전LIN20을 가지며, PROTOCOL VERSION 의LIN 2.0이 이 값에 해당한다. LIN 버스의 "이 장에서 넣지 않는 값"에서 이 대응을 설명한다.
확인하기
- VALIDATION 패널에
No validation issues.가 보인다. - VALIDATION 패널 제목 옆과 푸터 V 아이콘에 배지가 없다.
-
HPC의EthernetConnector를 선택하면 UNICAST IPV4 ADDRESS 가192.168.0.11, MULTICAST IPV4 ADDRESS 가224.0.0.1이다. -
ZONE의EthernetConnector의 UNICAST IPV4 ADDRESS 는192.168.0.19그대로이다. -
SLAVE_ECU의LinConnector를 선택하면 CONTROLLER 가LinSlaveController이고, 캔버스에 커넥터와 컨트롤러를 잇는 주황 선이 있다. -
LinSlaveController를 선택하면 PROTOCOL VERSION 이LIN 2.0이다. - 탭
TopologyDesign:System에 수정됨 표시가 없다.
다음 단계
ARXML 익스포트에서 고친 토폴로지를 ARXML 파일로 내보내고 참조 설계와 비교한다.