본문으로 건너뛰기

SOME/IP 배포와 서비스 인스턴스

이 장에서 할 일​

이 장에서는 서비스 인터페이스에서 만든 인터페이스 Sensor 에 SOME/IP 배포 하나와 서비스 인스턴스 세 개를 붙인다. Interface 편집기 오른쪽의 SOA DEPLOYMENT 패널에서 + 버튼으로 SOME/IP 배포를 추가하고 SERVICE ID 를 11 로, 이벤트 그룹 이름을 Eventgroup_SensorData 로 바꾼다. 이어서 배포 카드의 + 버튼으로 제공자(Provider) 하나와 소비자(Consumer) 둘을 만들고, SERVICE INSTANCE 패널에서 이름을 Provider_Sensor, Actuator_Sensor, Fusion_Sensor 로 바꾸고 SD SERVER CONFIG / SD CLIENT CONFIG 의 타이밍 값을 참조 설계 값으로 맞춘 뒤 저장한다.

이 장을 마치면 design/SERVICE.io.model 파일이 새로 생기고 그 안에 배포 Sensor, 제공자 Provider_Sensor, 소비자 Actuator_Sensor 와 Fusion_Sensor 가 저장된다. 세 인스턴스는 커넥터에 서비스 인스턴스 바인딩에서 Ethernet 커넥터의 UDP 포트에 묶이고, 서비스 인스턴스 매핑에서 AA 의 포트에 연결된다.

시작하기 전에​

  • 서비스 인터페이스를 마친 상태에서 시작한다. design/ 폴더에 INTERFACE.io.model(서비스 인터페이스 Sensor)이 있고 SERVICE.io.model 과 SIGNAL.io.model 은 아직 없다. VALIDATION 패널은 No validation issues. 이다.
  • 탭 AADesign:Interface 가 열려 있으면 그대로 쓴다. 닫았다면 EDITOR 뷰의 DESIGN 아래에서 Interface 를 클릭해 다시 연다.

이 장에서 입력하거나 바꾸는 값은 다음과 같다. 표에 없는 칸은 모두 기본값을 그대로 둔다.

요소기본 이름 → 입력할 NAME그 밖의 값
SOME/IP 배포Sensor (바꾸지 않음)SERVICE ID 11, MAJOR VERSION 1 / MINOR VERSION 0 (기본값)
이벤트 배포SensorData (자동)EVENT ID 1, TRANSPORT UDP (모두 기본값)
메서드 배포Calculation (자동)METHOD ID 1, TRANSPORT UDP (모두 기본값)
이벤트 그룹EG_SensorData → Eventgroup_SensorDataEVENTGROUP ID 1, EVENTS SensorData (모두 기본값)
제공자Provider_Sensor_1 → Provider_SensorINSTANCE ID 1 (기본값)
소비자 1Consumer_Sensor_1 → Actuator_SensorREQUIRED INSTANCE ID ANY (기본값)
소비자 2Consumer_Sensor_2 → Fusion_SensorREQUIRED INSTANCE ID ANY (기본값)

SD(Service Discovery) 타이밍은 제공자의 SD SERVER CONFIG 와 소비자의 SD CLIENT CONFIG 에 넣는다. 시간 칸은 값 오른쪽의 단위 선택(ns, us, ms, s)과 함께 쓰며, 아래 표의 "입력값" 은 단위까지 포함한 값이다.

칸기본값입력값제공자소비자
INITIAL DELAY MIN10 ms10 us입력입력
INITIAL DELAY MAX100 ms100 us입력입력
REPETITION BASE DELAY200 ms200 us입력입력
REPETITION MAX3그대로기본값기본값
OFFER CYCLIC DELAY500 ms1 ms입력칸 없음
TTL0xFFFFFF그대로기본값기본값
REQUEST RESPONSE DELAY MIN / MAX0 s / 0 s그대로기본값칸 없음

주의. 이 장에서 쓰는 PAIO 는 같은 카드의 SD 칸을 두 개 이상 연달아 고치면 마지막에 고친 칸만 남고 앞의 칸은 기본값으로 되돌아간다. 그래서 이 장은 SD 값을 하나 넣고 Tab 키를 누를 때마다 왼쪽 INTERFACES 목록의 Sensor 를 다시 클릭해 오른쪽 패널을 새로 그리게 한다. 절차의 "Sensor 를 다시 클릭한다" 를 빠뜨리지 않도록 한다.

SOME/IP 배포 만들기​

인터페이스 Sensor 선택하기​

  1. 탭 AADesign:Interface 의 SERVICE 탭에서 왼쪽 INTERFACES 목록의 Sensor 를 클릭한다. 가운데 CONFIGURATION 에 5장에서 넣은 NAME Sensor, C++ NAMESPACE sensor::service, MAJOR VERSION 1, MINOR VERSION 0 과 EVENTS 표의 SensorData ByteArray 행이 보인다.

  2. 오른쪽 패널을 본다. 서브탭 SOA DEPLOYMENT, SERVICE INSTANCE, DATA TYPE 가운데 SOA DEPLOYMENT 가 활성이고 본문은 No deployments configured 이다. 제목줄 오른쪽 끝에 + 버튼(툴팁 Add Deployment)과 ⟳ 버튼(툴팁 Derive Signal)이 있다.

    인터페이스 Sensor 를 선택한 편집기. 오른쪽 SOA DEPLOYMENT 패널은 비어 있다

    그림 6-1. 인터페이스 Sensor 를 선택한 Interface 편집기. ① 목록에서 선택한 Sensor 행, ② 활성인 SOA DEPLOYMENT 서브탭, ③ 제목줄의 + 버튼(툴팁 Add Deployment). 본문은 No deployments configured 이다.

오른쪽 패널의 DATA TYPE 서브탭이 활성이라면(5장에서 타입을 고른 뒤 그대로인 경우) SOA DEPLOYMENT 를 클릭해 돌아온다. ⟳ 버튼은 이 장에서 누르지 않는다.

배포 추가하기​

  1. SOA DEPLOYMENT 제목줄의 + 버튼을 클릭한다. 팝오버에 SOME/IP, DDS, IPC 세 항목이 보인다.

    + 버튼을 눌러 SOME/IP, DDS, IPC 가 보이는 팝오버

    그림 6-2. + 버튼을 누른 뒤의 팝오버. ① 제목줄의 + 버튼, ② 클릭할 SOME/IP 항목. 그 아래 DDS 와 IPC 는 쓰지 않는다.

  2. SOME/IP 를 클릭한다. 패널에 접힌 카드 SOME/IP Sensor 가 생기고 요약에 SERVICE ID = 0x0001, VERSION 1.0, EVENTS = 1, METHODS = 1 이 보인다. 탭 AADesign:Interface 에 수정됨 표시 ● 가 붙는다.

    막 만들어진 SOME/IP 배포 카드. 서비스 ID 는 아직 0x0001 이다

    그림 6-3. 막 만들어진 배포 카드. ① 접힌 카드 SOME/IP Sensor. 요약은 SERVICE ID = 0x0001 VERSION 1.0 EVENTS = 1 METHODS = 1 이고, 서비스 ID 는 아직 기본값이다.

배포의 이름은 인터페이스 이름 그대로 Sensor 로 정해진다. 요약의 EVENTS = 1 과 METHODS = 1 은 인터페이스에 있던 이벤트 SensorData 와 메서드 Calculation 의 배포가 자동으로 만들어졌다는 뜻이다. 요약의 ID 는 항상 16진수로 보인다.

서비스 ID 입력하기​

  1. 카드 머리글 SOME/IP Sensor 를 클릭해 카드를 펼친다. 칸 NAME Sensor, SERVICE ID 1(라벨 오른쪽에 DEC / HEX 토글, DEC 활성), MAJOR VERSION 1, MINOR VERSION 0 과 아코디언 EVENT DEPLOYMENTS, METHOD DEPLOYMENTS, EVENT GROUPS 가 모두 펼쳐진 채 보인다.

  2. SERVICE ID 입력란의 값을 11 로 바꾸고 Tab 키를 누른다.

  3. NAME, MAJOR VERSION, MINOR VERSION 은 그대로 둔다. 참조 설계와 같은 값이다.

    펼친 배포 카드. SERVICE ID 가 11 이다

    그림 6-4. 서비스 ID 를 넣은 배포 카드. ① NAME = Sensor, ② SERVICE ID = 11(DEC 활성), ③ MAJOR VERSION = 1 과 MINOR VERSION = 0. 그 아래 세 아코디언이 펼쳐져 있고 EVENT GROUPS 의 행은 아직 기본 이름 EG_SensorData 이다.

SERVICE ID 는 DEC 모드에서 10진수로 입력한다. HEX 를 누르면 같은 값이 0xB 로 보인다. 카드를 접으면 요약이 SERVICE ID = 0x000B 로 바뀐다.

이벤트와 메서드 배포 확인하기​

  1. EVENT DEPLOYMENTS 아코디언을 본다. 열 머리글 NAME, EVENT ID, TRANSPORT 아래에 행 SensorData 가 있고, EVENT ID 는 1 과 표시 (0x8001), TRANSPORT 는 UDP / TCP 세그먼트에서 UDP 가 선택돼 있다.

  2. METHOD DEPLOYMENTS 아코디언을 본다. 열 머리글 NAME, METHOD ID, TRANSPORT 아래에 행 Calculation 이 있고, METHOD ID 는 1 과 표시 (0x0001), TRANSPORT 는 UDP 이다.

  3. 두 행 모두 손대지 않는다. 참조 설계와 같은 값이다.

    이벤트 배포 SensorData 와 메서드 배포 Calculation 행

    그림 6-5. 자동으로 만들어진 이벤트·메서드 배포. ① EVENT DEPLOYMENTS 의 행 SensorData 1 (0x8001) UDP, ② METHOD DEPLOYMENTS 의 행 Calculation 1 (0x0001) UDP.

참고. 이벤트 행의 (0x8001) 은 SOME/IP 가 알림 이벤트를 전송할 때 쓰는 형식(0x8000 에 이벤트 ID 를 더한 값)을 보여 주는 표시일 뿐이다. 모델과 ARXML 의 이벤트 ID 는 1 이다.

이벤트 그룹 이름 바꾸기​

  1. EVENT GROUPS 아코디언을 본다. 열 머리글 NAME, EVENTGROUP ID, EVENTS 아래에 행 EG_SensorData 가 있고, EVENTGROUP ID 는 1 과 표시 (0x0001), EVENTS 는 SensorData 이다. 제목 오른쪽에 + 버튼(제목 줄에 마우스를 올렸을 때만 보임), 행 끝에 × 버튼이 있다.

  2. 행의 NAME 입력란의 값을 Eventgroup_SensorData 로 바꾸고 Tab 키를 누른다.

  3. EVENTGROUP ID 1 과 EVENTS SensorData 는 그대로 둔다.

    이름을 Eventgroup_SensorData 로 바꾼 이벤트 그룹 행

    그림 6-6. 이름을 바꾼 EVENT GROUPS 행. ① NAME = Eventgroup_SensorData, ② EVENTGROUP ID = 1(표시 (0x0001)), ③ EVENTS = SensorData. NAME 칸은 폭이 허용하는 만큼만 이름을 보여 주어 여기서는 마지막 글자 없이 Eventgroup_SensorDat 까지만 보이지만, 값은 Eventgroup_SensorData 전체이다.

이벤트 그룹은 이벤트마다 EG_ 접두사를 붙인 이름으로 자동 생성된다. 참조 설계의 이벤트 그룹 이름은 Eventgroup_SensorData 이므로 이름만 바꾼다. + 와 × 버튼, EVENTS 드롭다운은 쓰지 않는다.

서비스 인스턴스 추가하기​

제공자 하나와 소비자 둘 추가하기​

  1. 배포 카드의 머리글 SOME/IP Sensor 에 마우스를 올린다. 머리글 오른쪽 끝에 + 버튼(툴팁 Add service instance)과 − 버튼(툴팁 Remove deployment)이 나타난다. 두 버튼은 마우스를 올렸을 때만 보인다.

  2. + 버튼을 클릭한다. 팝오버에 Provider 와 Consumer 두 항목이 보인다.

    배포 카드 머리글의 + 버튼을 눌러 Provider 와 Consumer 가 보이는 팝오버

    그림 6-7. 카드 머리글의 + 버튼을 누른 뒤의 팝오버. ① 마우스를 올려 나타난 + 버튼, ② 팝오버의 Provider 와 Consumer 항목.

  3. Provider 를 클릭한다. 제공자 인스턴스 하나가 생긴다.

  4. 다시 머리글의 + 버튼을 클릭하고 Consumer 를 클릭한다. 한 번 더 반복해 소비자 인스턴스를 둘 만든다.

  5. 카드 머리글을 클릭해 카드를 접는다. 요약에 SERVICE ID = 0x000B VERSION 1.0 EVENTS = 1 METHODS = 1 과 함께 SERVICE PROVIDERS 아래 행 P Provider_Sensor_1 0x0001, SERVICE CONSUMERS 아래 행 C Consumer_Sensor_1 0xFFFF (ANY) 와 C Consumer_Sensor_2 0xFFFF (ANY) 가 보인다.

    접힌 배포 카드의 요약. 기본 이름의 인스턴스 세 개가 보인다

    그림 6-8. 인스턴스 세 개를 만든 뒤 접은 배포 카드. ① SERVICE PROVIDERS 의 행 P Provider_Sensor_1 0x0001, ② SERVICE CONSUMERS 의 행 C Consumer_Sensor_1 0xFFFF (ANY), ③ 행 C Consumer_Sensor_2 0xFFFF (ANY). 요약의 서비스 ID 가 0x000B 로 바뀌어 있다.

인스턴스의 이름은 Provider_Sensor_1, Consumer_Sensor_1, Consumer_Sensor_2 처럼 역할, 서비스 이름, 번호로 자동 정해진다. 제공자의 인스턴스 ID 는 1(0x0001), 소비자의 요구 인스턴스 ID 는 ANY(0xFFFF)가 기본값이다. 요약의 인스턴스 행을 클릭하면 오른쪽 패널이 SERVICE INSTANCE 서브탭으로 바뀌고 그 인스턴스의 카드가 펼쳐진다.

제공자 Provider_Sensor 설정하기​

이름 입력하기​

  1. 요약의 행 P Provider_Sensor_1 을 클릭한다. 오른쪽 패널이 SERVICE INSTANCE 서브탭으로 바뀐다. 제목은 SERVICE INSTANCES 이고 오른쪽 끝에 + 버튼(툴팁 Add service instance)이 있다. 카드 세 장 SOME/IP [P] Provider_Sensor_1(펼침), SOME/IP [C] Consumer_Sensor_1, SOME/IP [C] Consumer_Sensor_2(접힘, 요약 INSTANCE ID = ANY, SERVICE = Sensor)가 보인다.
  2. 제공자 카드의 NAME 입력란의 값을 Provider_Sensor 로 바꾸고 Tab 키를 누른다. 카드 머리글이 글자를 칠 때마다 함께 바뀐다.
  3. INSTANCE ID 1 은 그대로 둔다.

NAME 은 글자마다 바로 반영된다. 이름을 바꾼 뒤 처음 Sensor 를 다시 클릭하면 이 카드가 접힌 상태로 돌아오므로, 그때는 머리글 SOME/IP [P] Provider_Sensor 를 클릭해 다시 펼친다. SD 값은 이름을 다 바꾼 다음에 넣는 것이 편하다.

SD SERVER CONFIG 입력하기​

  1. 아코디언 SD SERVER CONFIG 를 클릭해 펼친다. 두 열로 칸 여덟 개 INITIAL DELAY MIN 10 ms, INITIAL DELAY MAX 100 ms, REPETITION BASE DELAY 200 ms, REPETITION MAX 3, OFFER CYCLIC DELAY 500 ms, TTL 0xFFFFFF(라벨 오른쪽 DEC / HEX 토글, HEX 활성), REQUEST RESPONSE DELAY MIN 0 s, REQUEST RESPONSE DELAY MAX 0 s 가 보인다.

  2. INITIAL DELAY MIN 의 단위 선택에서 us 를 고른 뒤 값을 10 으로 바꾸고 Tab 키를 누른다. 왼쪽 INTERFACES 목록의 Sensor 를 다시 클릭한다. 카드가 접혀 있으면 머리글과 SD SERVER CONFIG 를 차례로 클릭해 둘 다 다시 펼친다.

  3. INITIAL DELAY MAX 의 단위를 us 로 고르고 값을 100 으로 바꾼 뒤 Tab 키를 누른다. Sensor 를 다시 클릭한다.

  4. REPETITION BASE DELAY 의 단위를 us 로 고르고 값을 200 으로 바꾼 뒤 Tab 키를 누른다. Sensor 를 다시 클릭한다.

  5. OFFER CYCLIC DELAY 는 단위 ms 그대로 값을 1 로 바꾸고 Tab 키를 누른다. Sensor 를 다시 클릭한다.

  6. REPETITION MAX 3, TTL 0xFFFFFF, REQUEST RESPONSE DELAY MIN 0 s, REQUEST RESPONSE DELAY MAX 0 s 는 그대로 둔다.

    이름과 SD 서버 설정을 넣은 제공자 카드 Provider_Sensor

    그림 6-9. 설정을 마친 제공자 카드. ① NAME = Provider_Sensor, ② INSTANCE ID = 1, ③ SD SERVER CONFIG 의 여덟 칸 — 10 us, 100 us, 200 us, 3, 1 ms, 0xFFFFFF, 0 s, 0 s. 아래의 EVENT GROUPS 는 접혀 있고, 그 밑에 소비자 카드 Consumer_Sensor_1 과 Consumer_Sensor_2 가 접힌 채 보인다.

참고. 시간 칸은 초 단위로 저장되고 화면에는 ns, us, ms, s 가운데 보기 좋은 단위로 환산되어 보인다. 단위 선택을 바꾸면 표시 숫자만 환산되고 저장값은 바뀌지 않으므로, 반드시 단위를 먼저 고른 뒤 값을 입력한다. 10 us 는 0.00001 초, 1 ms 는 0.001 초로 저장된다. TTL 의 0xFFFFFF 는 10진수 16777215 이며 참조 설계 값과 같다.

EVENT GROUPS 확인하기​

  1. 아코디언 EVENT GROUPS 를 클릭해 펼친다. 열 머리글 EVENT GROUP, MULTICAST THRESHOLD 아래에 행 Eventgroup_SensorData 0 이 있다.

  2. 행을 클릭해 펼친다. MULTICAST THRESHOLD 세그먼트(UNICAST 선택, 오른쪽은 ALWAYS MULTICAST, MULTICAST AT N), IPV4 MULTICAST(안내 IPv4 Address), IPV6 MULTICAST(안내 IPv6 Address), MULTICAST UDP PORT 0, RESP DELAY MIN 0 s, RESP DELAY MAX 0 s 가 보인다.

  3. 모두 기본값 그대로 둔다. 참조 설계의 MULTICAST THRESHOLD 는 0(UNICAST)이다.

    제공자 카드의 EVENT GROUPS 를 펼친 화면. 모두 기본값이다

    그림 6-10. 제공자 카드의 EVENT GROUPS. ① 펼친 EVENT GROUPS 아코디언, ② 행 Eventgroup_SensorData 0, ③ MULTICAST THRESHOLD 세그먼트(UNICAST 선택). 아래 칸은 IPV4 MULTICAST, IPV6 MULTICAST(빈 칸), MULTICAST UDP PORT 0, RESP DELAY MIN 0 s, RESP DELAY MAX 0 s 이다.

소비자 Actuator_Sensor 와 Fusion_Sensor 설정하기​

첫 소비자 Actuator_Sensor 설정하기​

소비자 둘 가운데 첫 번째를 절차로 보인다. 제공자와 같은 순서로 이름을 먼저 바꾸고 SD 값을 넣는다.

  1. 카드 머리글 SOME/IP [C] Consumer_Sensor_1 을 클릭해 펼친다. 칸 NAME Consumer_Sensor_1, REQUIRED INSTANCE ID ANY 와 아코디언 SD CLIENT CONFIG, EVENT GROUPS(둘 다 접힘)가 보인다.

  2. NAME 입력란의 값을 Actuator_Sensor 로 바꾸고 Tab 키를 누른다.

  3. REQUIRED INSTANCE ID ANY 는 그대로 둔다.

  4. 아코디언 SD CLIENT CONFIG 를 클릭해 펼친다. 칸 다섯 개 INITIAL DELAY MIN 10 ms, INITIAL DELAY MAX 100 ms, REPETITION BASE DELAY 200 ms, REPETITION MAX 3, TTL 0xFFFFFF 가 보인다.

  5. INITIAL DELAY MIN 의 단위를 us 로 고르고 값을 10 으로 바꾼 뒤 Tab 키를 누른다. 왼쪽 목록의 Sensor 를 다시 클릭한다. 카드가 접혀 있으면 카드와 SD CLIENT CONFIG 를 다시 펼친다.

  6. INITIAL DELAY MAX 의 단위를 us 로 고르고 값을 100 으로 바꾼 뒤 Tab 키를 누른다. Sensor 를 다시 클릭한다.

  7. REPETITION BASE DELAY 의 단위를 us 로 고르고 값을 200 으로 바꾼 뒤 Tab 키를 누른다. Sensor 를 다시 클릭한다.

  8. REPETITION MAX 3 과 TTL 0xFFFFFF 는 그대로 둔다.

    이름과 SD 클라이언트 설정을 넣은 소비자 카드 Actuator_Sensor

    그림 6-11. 설정을 마친 첫 소비자 카드. ① NAME = Actuator_Sensor, ② REQUIRED INSTANCE ID = ANY, ③ SD CLIENT CONFIG 의 다섯 칸 — 10 us, 100 us, 200 us, 3, 0xFFFFFF. 위의 제공자 카드는 접혀 요약 INSTANCE ID = 0x0001 SERVICE = Sensor 를 보이고, 아래 둘째 소비자 카드는 아직 기본 이름 Consumer_Sensor_2 이다.

소비자 카드의 EVENT GROUPS 아코디언을 펼치면 열 머리글 EVENT GROUP, TTL 아래에 행 Eventgroup_SensorData 0xFFFFFF 가 있고, 행을 펼치면 TTL(DEC / HEX), RESP DELAY MIN, RESP DELAY MAX, RETRY DELAY, RETRY MAX 가 보인다. 이 장에서는 손대지 않는다.

둘째 소비자 Fusion_Sensor 설정하기​

같은 방법으로 둘째 소비자를 설정한다. 이름만 다르다.

  1. 카드 머리글 SOME/IP [C] Consumer_Sensor_2 를 클릭해 펼친다.
  2. NAME 입력란의 값을 Fusion_Sensor 로 바꾸고 Tab 키를 누른다. REQUIRED INSTANCE ID ANY 는 그대로 둔다.
  3. SD CLIENT CONFIG 를 펼치고 INITIAL DELAY MIN 10 us, INITIAL DELAY MAX 100 us, REPETITION BASE DELAY 200 us 를 하나씩 넣는다. 값 하나마다 Tab 키를 누르고 Sensor 를 다시 클릭한다. REPETITION MAX 3 과 TTL 0xFFFFFF 는 그대로 둔다.

저장하기​

  1. 탭 바의 빈 곳을 클릭해 입력 칸에서 빠져나온다.

  2. Ctrl+S 를 누른다. 탭 AADesign:Interface 의 수정됨 표시 ● 가 사라지고 design/SERVICE.io.model 이 새로 만들어진다.

  3. SERVICE INSTANCE 패널에서 아직 펼쳐져 있는 카드의 머리글을 클릭해 모두 접는다. 카드 세 장이 SOME/IP [P] Provider_Sensor(요약 INSTANCE ID = 0x0001, SERVICE = Sensor), SOME/IP [C] Actuator_Sensor, SOME/IP [C] Fusion_Sensor(요약 INSTANCE ID = ANY, SERVICE = Sensor) 순으로 보인다.

    저장한 뒤의 SERVICE INSTANCE 패널. 인스턴스 카드 세 장이 접혀 있다

    그림 6-12. 저장한 뒤의 SERVICE INSTANCE 패널. ① 카드 SOME/IP [P] Provider_Sensor(INSTANCE ID = 0x0001, SERVICE = Sensor), ② 카드 SOME/IP [C] Actuator_Sensor(INSTANCE ID = ANY), ③ 카드 SOME/IP [C] Fusion_Sensor(INSTANCE ID = ANY).

저장된 design/SERVICE.io.model 의 내용은 다음과 같다(날짜 필드와 빈 컬렉션은 줄였고, Fusion_Sensor 는 Actuator_Sensor 와 이름만 다르다).

{
"$schema": "https://autosar.io/schemas/service.schema.json",
"version": "2.0.0",
"metadata": { "name": "Service Model" },
"someip-service-interface-deployments": [
{
"name": "Sensor", "interface": "Sensor", "service-id": 11,
"major-version": 1, "minor-version": 0,
"event-deployments": [ { "event": "SensorData", "event-id": 1, "transport": "udp" } ],
"method-deployments": [ { "method": "Calculation", "method-id": 1, "transport": "udp" } ],
"field-deployments": [],
"event-groups": [ { "id": 1, "name": "Eventgroup_SensorData", "events": [ "SensorData" ] } ]
}
],
"service-providers": { "someip": [
{
"name": "Provider_Sensor", "service": "Sensor", "instance-id": 1,
"sd-server-config": {
"initial-delay-min": 0.00001, "initial-delay-max": 0.0001,
"repetition-base-delay": 0.0002, "repetition-max": 3,
"offer-cyclic-delay": 0.001,
"request-response-delay-min": 0, "request-response-delay-max": 0,
"ttl": 16777215
},
"provided-event-groups": [ { "event-group": "Eventgroup_SensorData", "multicast-threshold": 0 } ]
}
] },
"service-consumers": { "someip": [
{
"name": "Actuator_Sensor", "service": "Sensor", "required-instance-id": 65535,
"sd-client-config": {
"initial-delay-min": 0.00001, "initial-delay-max": 0.0001,
"repetition-base-delay": 0.0002, "repetition-max": 3, "ttl": 16777215
},
"required-event-groups": [ { "event-group": "Eventgroup_SensorData" } ]
},
{ "name": "Fusion_Sensor" }
] }
}

SERVICE ID 11 은 "service-id": 11 로, TRANSPORT UDP 는 "transport": "udp" 로, 화면의 10 us 는 0.00001 로, REQUIRED INSTANCE ID ANY 는 65535 로 저장된다. 이벤트 그룹 행에는 위에 보인 키 말고도 IPV4 MULTICAST 등 상세 칸의 기본값이 함께 저장된다.

이 저장으로 design/ 에는 SIGNAL.io.model 도 함께 생기고 INTERFACE.io.model 에는 Sensor_SR 과 Sensor_CS 가 추가된다. Interface 편집기가 SOME/IP 배포를 보고 자동으로 파생한 Classic Platform 쪽 신호와 인터페이스이며, 이 튜토리얼이 손으로 만드는 설계에는 들어 있지 않다. IVC.io.model 은 바뀌지 않는다.

검증 결과 보기​

  1. 화면 아래 푸터의 왼쪽에서 다섯 번째 아이콘인 V 를 본다. 배지가 붙어 있지 않다.

  2. VALIDATION 패널을 본다. 닫혀 있으면 푸터의 V 아이콘을 클릭한다.

    No validation issues. 가 보이는 Validation 패널

    그림 6-13. 저장한 뒤의 VALIDATION 패널. 헤더에 배지가 없고, 열 머리글 ELEMENT TYPE, NAME, DESCRIPTION, CONSTR 아래에 No validation issues. 한 줄만 있다.

이 장에서 만든 배포 Sensor, 이벤트 그룹 Eventgroup_SensorData, 인스턴스 세 개에 대한 행도, 저장으로 SIGNAL.io.model 에 함께 생긴 파생 신호의 PDU(Sensor_SensorData_PDU, Sensor_Calculation_Call_PDU, Sensor_Calculation_Return_PDU)에 대한 행도 없다.

왜 이렇게 설계하는가​

  • 배포 이름은 Sensor 그대로이다. 참조 설계의 SOMEIP-SERVICE-INTERFACE-DEPLOYMENT 는 이름 Sensor, SERVICE-INTERFACE-ID 11, 버전 1 / 0 이다. 편집기가 인터페이스 이름으로 배포 이름을 정하므로 SERVICE ID 만 입력한다.
  • 이벤트·메서드 배포는 입력할 값이 없다. 참조 설계의 SOMEIP-EVENT-DEPLOYMENT SensorData 는 EVENT-ID 1 / UDP, SOMEIP-METHOD-DEPLOYMENT Calculation 은 METHOD-ID 1 / UDP 이고, 편집기가 자동으로 만든 값이 이미 그 값이다.
  • 이벤트 그룹 이름은 Eventgroup_SensorData 여야 한다. 참조 설계의 SOMEIP-EVENT-GROUP 이름이 그것이고, ARXML 익스포트가 그룹의 이벤트를 찾을 때 Eventgroup_{이벤트} 이름 규칙도 함께 쓴다. 기본 이름 EG_SensorData 를 두면 익스포트의 이름이 참조 설계와 달라진다.
  • 인스턴스 이름 세 개는 참조 설계의 SHORT-NAME 이다. PROVIDED-SOMEIP-SERVICE-INSTANCE Provider_Sensor(SERVICE-INSTANCE-ID 1), REQUIRED-SOMEIP-SERVICE-INSTANCE Actuator_Sensor 와 Fusion_Sensor(REQUIRED-SERVICE-INSTANCE-ID ANY)이다. INSTANCE ID 1 과 REQUIRED INSTANCE ID ANY 는 기본값이 곧 참조 설계 값이다.
  • SD 타이밍은 기본값의 1/1000 이다. 참조 설계의 SdServerConfig_Provider_Sensor 는 INITIAL-DELAY-MIN 0.00001, MAX 0.0001, INITIAL-REPETITIONS-BASE-DELAY 0.0002, INITIAL-REPETITIONS-MAX 3, OFFER-CYCLIC-DELAY 0.001, REQUEST-RESPONSE-DELAY 0 / 0, SERVICE-OFFER-TIME-TO-LIVE 16777215 이고, SdClientConfig_Actuator_Sensor 와 SdClientConfig_Fusion_Sensor 는 0.00001 / 0.0001 / 0.0002 / 3 / SERVICE-FIND-TIME-TO-LIVE 16777215 이다. 편집기 기본값 10 ms, 100 ms, 200 ms, 500 ms 와 다르므로 시간 칸 넷(소비자는 셋)을 고친다. SD 설정 요소의 이름 SdServerConfig_{인스턴스} / SdClientConfig_{인스턴스} 는 익스포터가 붙인다.
  • 제공자 이벤트 그룹의 MULTICAST-THRESHOLD 는 0 이다. 참조 설계의 SOMEIP-PROVIDED-EVENT-GROUP 값이고, 편집기 기본값 UNICAST 가 그 값이다.
  • 소비자의 REQUIRED-MINOR-VERSION ANY 와 VERSION-DRIVEN-FIND-BEHAVIOR 는 입력하지 않는다. 편집기에 칸이 없고 익스포터가 고정값으로 쓴다.
  • 인스턴스를 머신에 묶는 SOMEIP-SERVICE-INSTANCE-TO-MACHINE-MAPPING 은 이 장에서 만들지 않는다. 커넥터에 서비스 인스턴스 바인딩에서 System 편집기로 만든다.

확인하기​

  • SOA DEPLOYMENT 패널에 카드 SOME/IP Sensor 하나가 있고, 접힌 요약이 SERVICE ID = 0x000B VERSION 1.0 EVENTS = 1 METHODS = 1 이다.
  • 요약의 SERVICE PROVIDERS 에 P Provider_Sensor 0x0001, SERVICE CONSUMERS 에 C Actuator_Sensor 0xFFFF (ANY) 와 C Fusion_Sensor 0xFFFF (ANY) 가 있다.
  • 카드를 펼치면 SERVICE ID 11, MAJOR VERSION 1, MINOR VERSION 0 이고, EVENT DEPLOYMENTS 에 SensorData 1 UDP, METHOD DEPLOYMENTS 에 Calculation 1 UDP, EVENT GROUPS 에 Eventgroup_SensorData 1 SensorData 가 있다.
  • SERVICE INSTANCE 패널에 카드 [P] Provider_Sensor, [C] Actuator_Sensor, [C] Fusion_Sensor 세 장이 있다.
  • Provider_Sensor 의 INSTANCE ID 는 1, SD SERVER CONFIG 는 10 us, 100 us, 200 us, 3, 1 ms, 0xFFFFFF, 0 s, 0 s 이다.
  • Actuator_Sensor 와 Fusion_Sensor 의 REQUIRED INSTANCE ID 는 ANY, SD CLIENT CONFIG 는 10 us, 100 us, 200 us, 3, 0xFFFFFF 이다.
  • 탭 AADesign:Interface 에 수정됨 표시 ● 가 없고 design/SERVICE.io.model 파일이 있다.
  • VALIDATION 패널에 No validation issues. 가 보이고 헤더에 배지가 없다.

다음 단계​

커넥터에 서비스 인스턴스 바인딩에서 System 편집기의 Ethernet 커넥터에 인스턴스 Provider_Sensor, Actuator_Sensor, Fusion_Sensor 를 바인딩하고 UDP 포트를 정한다.