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_SensorData | EVENTGROUP ID 1, EVENTS SensorData (모두 기본값) |
| 제공자 | Provider_Sensor_1 → Provider_Sensor | INSTANCE ID 1 (기본값) |
| 소비자 1 | Consumer_Sensor_1 → Actuator_Sensor | REQUIRED INSTANCE ID ANY (기본값) |
| 소비자 2 | Consumer_Sensor_2 → Fusion_Sensor | REQUIRED INSTANCE ID ANY (기본값) |
SD(Service Discovery) 타이밍은 제공자의 SD SERVER CONFIG 와 소비자의 SD CLIENT CONFIG 에 넣는다. 시간 칸은 값 오른쪽의 단위 선택(ns, us, ms, s)과 함께 쓰며, 아래 표의 "입력값" 은 단위까지 포함한 값이다.
| 칸 | 기본값 | 입력값 | 제공자 | 소비자 |
|---|---|---|---|---|
| INITIAL DELAY MIN | 10 ms | 10 us | 입력 | 입력 |
| INITIAL DELAY MAX | 100 ms | 100 us | 입력 | 입력 |
| REPETITION BASE DELAY | 200 ms | 200 us | 입력 | 입력 |
| REPETITION MAX | 3 | 그대로 | 기본값 | 기본값 |
| OFFER CYCLIC DELAY | 500 ms | 1 ms | 입력 | 칸 없음 |
| TTL | 0xFFFFFF | 그대로 | 기본값 | 기본값 |
| REQUEST RESPONSE DELAY MIN / MAX | 0 s / 0 s | 그대로 | 기본값 | 칸 없음 |
주의. 이 장에서 쓰는 PAIO 는 같은 카드의 SD 칸을 두 개 이상 연달아 고치면 마지막에 고친 칸만 남고 앞의 칸은 기본값으로 되돌아간다. 그래서 이 장은 SD 값을 하나 넣고
Tab키를 누를 때마다 왼쪽 INTERFACES 목록의Sensor를 다시 클릭해 오른쪽 패널을 새로 그리게 한다. 절차의 "Sensor를 다시 클릭한다" 를 빠뜨리지 않도록 한다.
SOME/IP 배포 만들기
인터페이스 Sensor 선택하기
-
탭
AADesign:Interface의 SERVICE 탭에서 왼쪽 INTERFACES 목록의Sensor를 클릭한다. 가운데 CONFIGURATION 에 5장에서 넣은 NAMESensor, C++ NAMESPACEsensor::service, MAJOR VERSION1, MINOR VERSION0과 EVENTS 표의SensorDataByteArray행이 보인다. -
오른쪽 패널을 본다. 서브탭 SOA DEPLOYMENT, SERVICE INSTANCE, DATA TYPE 가운데 SOA DEPLOYMENT 가 활성이고 본문은
No deployments configured이다. 제목줄 오른쪽 끝에 + 버튼(툴팁Add Deployment)과 ⟳ 버튼(툴팁Derive Signal)이 있다.
그림 6-1. 인터페이스
Sensor를 선택한 Interface 편집기. ① 목록에서 선택한Sensor행, ② 활성인 SOA DEPLOYMENT 서브탭, ③ 제목줄의 + 버튼(툴팁Add Deployment). 본문은No deployments configured이다.
오른쪽 패널의 DATA TYPE 서브탭이 활성이라면(5장에서 타입을 고른 뒤 그대로인 경우) SOA DEPLOYMENT 를 클릭해 돌아온다. ⟳ 버튼은 이 장에서 누르지 않는다.
배포 추가하기
-
SOA DEPLOYMENT 제목줄의 + 버튼을 클릭한다. 팝오버에 SOME/IP, DDS, IPC 세 항목이 보인다.

그림 6-2. + 버튼을 누른 뒤의 팝오버. ① 제목줄의 + 버튼, ② 클릭할 SOME/IP 항목. 그 아래 DDS 와 IPC 는 쓰지 않는다.
-
SOME/IP 를 클릭한다. 패널에 접힌 카드
SOME/IPSensor가 생기고 요약에SERVICE ID = 0x0001,VERSION 1.0,EVENTS = 1,METHODS = 1이 보인다. 탭AADesign:Interface에 수정됨 표시 ● 가 붙는다.
그림 6-3. 막 만들어진 배포 카드. ① 접힌 카드
SOME/IPSensor. 요약은SERVICE ID = 0x0001VERSION 1.0EVENTS = 1METHODS = 1이고, 서비스 ID 는 아직 기본값이다.
배포의 이름은 인터페이스 이름 그대로 Sensor 로 정해진다. 요약의 EVENTS = 1 과 METHODS = 1 은 인터페이스에 있던 이벤트 SensorData 와 메서드 Calculation 의 배포가 자동으로 만들어졌다는 뜻이다. 요약의 ID 는 항상 16진수로 보인다.
서비스 ID 입력하기
-
카드 머리글
SOME/IPSensor를 클릭해 카드를 펼친다. 칸 NAMESensor, SERVICE ID1(라벨 오른쪽에 DEC / HEX 토글, DEC 활성), MAJOR VERSION1, MINOR VERSION0과 아코디언 EVENT DEPLOYMENTS, METHOD DEPLOYMENTS, EVENT GROUPS 가 모두 펼쳐진 채 보인다. -
SERVICE ID 입력란의 값을
11로 바꾸고Tab키를 누른다. -
NAME, MAJOR VERSION, MINOR VERSION 은 그대로 둔다. 참조 설계와 같은 값이다.

그림 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 로 바뀐다.
이벤트와 메서드 배포 확인하기
-
EVENT DEPLOYMENTS 아코디언을 본다. 열 머리글 NAME, EVENT ID, TRANSPORT 아래에 행
SensorData가 있고, EVENT ID 는1과 표시(0x8001), TRANSPORT 는 UDP / TCP 세그먼트에서 UDP 가 선택돼 있다. -
METHOD DEPLOYMENTS 아코디언을 본다. 열 머리글 NAME, METHOD ID, TRANSPORT 아래에 행
Calculation이 있고, METHOD ID 는1과 표시(0x0001), TRANSPORT 는 UDP 이다. -
두 행 모두 손대지 않는다. 참조 설계와 같은 값이다.

그림 6-5. 자동으로 만들어진 이벤트·메서드 배포. ① EVENT DEPLOYMENTS 의 행
SensorData1(0x8001)UDP, ② METHOD DEPLOYMENTS 의 행Calculation1(0x0001)UDP.
참고. 이벤트 행의
(0x8001)은 SOME/IP 가 알림 이벤트를 전송할 때 쓰는 형식(0x8000에 이벤트 ID 를 더한 값)을 보여 주는 표시일 뿐이다. 모델과 ARXML 의 이벤트 ID 는1이다.
이벤트 그룹 이름 바꾸기
-
EVENT GROUPS 아코디언을 본다. 열 머리글 NAME, EVENTGROUP ID, EVENTS 아래에 행
EG_SensorData가 있고, EVENTGROUP ID 는1과 표시(0x0001), EVENTS 는SensorData이다. 제목 오른쪽에 + 버튼(제목 줄에 마우스를 올렸을 때만 보임), 행 끝에 × 버튼이 있다. -
행의 NAME 입력란의 값을
Eventgroup_SensorData로 바꾸고Tab키를 누른다. -
EVENTGROUP ID
1과 EVENTSSensorData는 그대로 둔다.그림 6-6. 이름을 바꾼 EVENT GROUPS 행. ① NAME =
Eventgroup_SensorData, ② EVENTGROUP ID =1(표시(0x0001)), ③ EVENTS =SensorData. NAME 칸은 폭이 허용하는 만큼만 이름을 보여 주어 여기서는 마지막 글자 없이Eventgroup_SensorDat까지만 보이지만, 값은Eventgroup_SensorData전체이다.
이벤트 그룹은 이벤트마다 EG_ 접두사를 붙인 이름으로 자동 생성된다. 참조 설계의 이벤트 그룹 이름은 Eventgroup_SensorData 이므로 이름만 바꾼다. + 와 × 버튼, EVENTS 드롭다운은 쓰지 않는다.
서비스 인스턴스 추가하기
제공자 하나와 소비자 둘 추가하기
-
배포 카드의 머리글
SOME/IPSensor에 마우스를 올린다. 머리글 오른쪽 끝에 + 버튼(툴팁Add service instance)과 − 버튼(툴팁Remove deployment)이 나타난다. 두 버튼은 마우스를 올렸을 때만 보인다. -
+ 버튼을 클릭한다. 팝오버에 Provider 와 Consumer 두 항목이 보인다.

그림 6-7. 카드 머리글의 + 버튼을 누른 뒤의 팝오버. ① 마우스를 올려 나타난 + 버튼, ② 팝오버의 Provider 와 Consumer 항목.
-
Provider 를 클릭한다. 제공자 인스턴스 하나가 생긴다.
-
다시 머리글의 + 버튼을 클릭하고 Consumer 를 클릭한다. 한 번 더 반복해 소비자 인스턴스를 둘 만든다.
-
카드 머리글을 클릭해 카드를 접는다. 요약에
SERVICE ID = 0x000BVERSION 1.0EVENTS = 1METHODS = 1과 함께 SERVICE PROVIDERS 아래 행PProvider_Sensor_10x0001, SERVICE CONSUMERS 아래 행CConsumer_Sensor_10xFFFF (ANY)와CConsumer_Sensor_20xFFFF (ANY)가 보인다.
그림 6-8. 인스턴스 세 개를 만든 뒤 접은 배포 카드. ① SERVICE PROVIDERS 의 행
PProvider_Sensor_10x0001, ② SERVICE CONSUMERS 의 행CConsumer_Sensor_10xFFFF (ANY), ③ 행CConsumer_Sensor_20xFFFF (ANY). 요약의 서비스 ID 가0x000B로 바뀌어 있다.
인스턴스의 이름은 Provider_Sensor_1, Consumer_Sensor_1, Consumer_Sensor_2 처럼 역할, 서비스 이름, 번호로 자동 정해진다. 제공자의 인스턴스 ID 는 1(0x0001), 소비자의 요구 인스턴스 ID 는 ANY(0xFFFF)가 기본값이다. 요약의 인스턴스 행을 클릭하면 오른쪽 패널이 SERVICE INSTANCE 서브탭으로 바뀌고 그 인스턴스의 카드가 펼쳐진다.
제공자 Provider_Sensor 설정하기
이름 입력하기
- 요약의 행
PProvider_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)가 보인다. - 제공자 카드의 NAME 입력란의 값을
Provider_Sensor로 바꾸고Tab키를 누른다. 카드 머리글이 글자를 칠 때마다 함께 바뀐다. - INSTANCE ID
1은 그대로 둔다.
NAME 은 글자마다 바로 반영된다. 이름을 바꾼 뒤 처음 Sensor 를 다시 클릭하면 이 카드가 접힌 상태로 돌아오므로, 그때는 머리글 SOME/IP [P] Provider_Sensor 를 클릭해 다시 펼친다. SD 값은 이름을 다 바꾼 다음에 넣는 것이 편하다.
SD SERVER CONFIG 입력하기
-
아코디언 SD SERVER CONFIG 를 클릭해 펼친다. 두 열로 칸 여덟 개 INITIAL DELAY MIN
10 ms, INITIAL DELAY MAX100 ms, REPETITION BASE DELAY200 ms, REPETITION MAX3, OFFER CYCLIC DELAY500 ms, TTL0xFFFFFF(라벨 오른쪽 DEC / HEX 토글, HEX 활성), REQUEST RESPONSE DELAY MIN0 s, REQUEST RESPONSE DELAY MAX0 s가 보인다. -
INITIAL DELAY MIN 의 단위 선택에서
us를 고른 뒤 값을10으로 바꾸고Tab키를 누른다. 왼쪽 INTERFACES 목록의Sensor를 다시 클릭한다. 카드가 접혀 있으면 머리글과 SD SERVER CONFIG 를 차례로 클릭해 둘 다 다시 펼친다. -
INITIAL DELAY MAX 의 단위를
us로 고르고 값을100으로 바꾼 뒤Tab키를 누른다.Sensor를 다시 클릭한다. -
REPETITION BASE DELAY 의 단위를
us로 고르고 값을200으로 바꾼 뒤Tab키를 누른다.Sensor를 다시 클릭한다. -
OFFER CYCLIC DELAY 는 단위
ms그대로 값을1로 바꾸고Tab키를 누른다.Sensor를 다시 클릭한다. -
REPETITION MAX
3, TTL0xFFFFFF, REQUEST RESPONSE DELAY MIN0 s, REQUEST RESPONSE DELAY MAX0 s는 그대로 둔다.
그림 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 확인하기
-
아코디언 EVENT GROUPS 를 클릭해 펼친다. 열 머리글 EVENT GROUP, MULTICAST THRESHOLD 아래에 행
Eventgroup_SensorData0이 있다. -
행을 클릭해 펼친다. MULTICAST THRESHOLD 세그먼트(UNICAST 선택, 오른쪽은 ALWAYS MULTICAST, MULTICAST AT N), IPV4 MULTICAST(안내
IPv4 Address), IPV6 MULTICAST(안내IPv6 Address), MULTICAST UDP PORT0, RESP DELAY MIN0 s, RESP DELAY MAX0 s가 보인다. -
모두 기본값 그대로 둔다. 참조 설계의 MULTICAST THRESHOLD 는
0(UNICAST)이다.
그림 6-10. 제공자 카드의 EVENT GROUPS. ① 펼친 EVENT GROUPS 아코디언, ② 행
Eventgroup_SensorData0, ③ MULTICAST THRESHOLD 세그먼트(UNICAST 선택). 아래 칸은 IPV4 MULTICAST, IPV6 MULTICAST(빈 칸), MULTICAST UDP PORT0, RESP DELAY MIN0 s, RESP DELAY MAX0 s이다.
소비자 Actuator_Sensor 와 Fusion_Sensor 설정하기
첫 소비자 Actuator_Sensor 설정하기
소비자 둘 가운데 첫 번째를 절차로 보인다. 제공자와 같은 순서로 이름을 먼저 바꾸고 SD 값을 넣는다.
-
카드 머리글
SOME/IP[C]Consumer_Sensor_1을 클릭해 펼친다. 칸 NAMEConsumer_Sensor_1, REQUIRED INSTANCE IDANY와 아코디언 SD CLIENT CONFIG, EVENT GROUPS(둘 다 접힘)가 보인다. -
NAME 입력란의 값을
Actuator_Sensor로 바꾸고Tab키를 누른다. -
REQUIRED INSTANCE ID
ANY는 그대로 둔다. -
아코디언 SD CLIENT CONFIG 를 클릭해 펼친다. 칸 다섯 개 INITIAL DELAY MIN
10 ms, INITIAL DELAY MAX100 ms, REPETITION BASE DELAY200 ms, REPETITION MAX3, TTL0xFFFFFF가 보인다. -
INITIAL DELAY MIN 의 단위를
us로 고르고 값을10으로 바꾼 뒤Tab키를 누른다. 왼쪽 목록의Sensor를 다시 클릭한다. 카드가 접혀 있으면 카드와 SD CLIENT CONFIG 를 다시 펼친다. -
INITIAL DELAY MAX 의 단위를
us로 고르고 값을100으로 바꾼 뒤Tab키를 누른다.Sensor를 다시 클릭한다. -
REPETITION BASE DELAY 의 단위를
us로 고르고 값을200으로 바꾼 뒤Tab키를 누른다.Sensor를 다시 클릭한다. -
REPETITION MAX
3과 TTL0xFFFFFF는 그대로 둔다.
그림 6-11. 설정을 마친 첫 소비자 카드. ① NAME =
Actuator_Sensor, ② REQUIRED INSTANCE ID =ANY, ③ SD CLIENT CONFIG 의 다섯 칸 —10 us,100 us,200 us,3,0xFFFFFF. 위의 제공자 카드는 접혀 요약INSTANCE ID = 0x0001SERVICE = 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 설정하기
같은 방법으로 둘째 소비자를 설정한다. 이름만 다르다.
- 카드 머리글
SOME/IP[C]Consumer_Sensor_2를 클릭해 펼친다. - NAME 입력란의 값을
Fusion_Sensor로 바꾸고Tab키를 누른다. REQUIRED INSTANCE IDANY는 그대로 둔다. - SD CLIENT CONFIG 를 펼치고 INITIAL DELAY MIN
10 us, INITIAL DELAY MAX100 us, REPETITION BASE DELAY200 us를 하나씩 넣는다. 값 하나마다Tab키를 누르고Sensor를 다시 클릭한다. REPETITION MAX3과 TTL0xFFFFFF는 그대로 둔다.
저장하기
-
탭 바의 빈 곳을 클릭해 입력 칸에서 빠져나온다.
-
Ctrl+S를 누른다. 탭AADesign:Interface의 수정됨 표시 ● 가 사라지고design/SERVICE.io.model이 새로 만들어진다. -
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) 순으로 보인다.
그림 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 은 바뀌지 않는다.
검증 결과 보기
-
화면 아래 푸터의 왼쪽에서 다섯 번째 아이콘인 V 를 본다. 배지가 붙어 있지 않다.
-
VALIDATION 패널을 본다. 닫혀 있으면 푸터의 V 아이콘을 클릭한다.
그림 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-ID11, 버전1/0이다. 편집기가 인터페이스 이름으로 배포 이름을 정하므로 SERVICE ID 만 입력한다. - 이벤트·메서드 배포는 입력할 값이 없다. 참조 설계의
SOMEIP-EVENT-DEPLOYMENTSensorData는EVENT-ID1/UDP,SOMEIP-METHOD-DEPLOYMENTCalculation은METHOD-ID1/UDP이고, 편집기가 자동으로 만든 값이 이미 그 값이다. - 이벤트 그룹 이름은
Eventgroup_SensorData여야 한다. 참조 설계의SOMEIP-EVENT-GROUP이름이 그것이고, ARXML 익스포트가 그룹의 이벤트를 찾을 때Eventgroup_{이벤트}이름 규칙도 함께 쓴다. 기본 이름EG_SensorData를 두면 익스포트의 이름이 참조 설계와 달라진다. - 인스턴스 이름 세 개는 참조 설계의
SHORT-NAME이다.PROVIDED-SOMEIP-SERVICE-INSTANCEProvider_Sensor(SERVICE-INSTANCE-ID1),REQUIRED-SOMEIP-SERVICE-INSTANCEActuator_Sensor와Fusion_Sensor(REQUIRED-SERVICE-INSTANCE-IDANY)이다. INSTANCE ID1과 REQUIRED INSTANCE IDANY는 기본값이 곧 참조 설계 값이다. - SD 타이밍은 기본값의 1/1000 이다. 참조 설계의
SdServerConfig_Provider_Sensor는INITIAL-DELAY-MIN0.00001,MAX0.0001,INITIAL-REPETITIONS-BASE-DELAY0.0002,INITIAL-REPETITIONS-MAX3,OFFER-CYCLIC-DELAY0.001,REQUEST-RESPONSE-DELAY0/0,SERVICE-OFFER-TIME-TO-LIVE16777215이고,SdClientConfig_Actuator_Sensor와SdClientConfig_Fusion_Sensor는0.00001/0.0001/0.0002/3/SERVICE-FIND-TIME-TO-LIVE16777215이다. 편집기 기본값10 ms,100 ms,200 ms,500 ms와 다르므로 시간 칸 넷(소비자는 셋)을 고친다. SD 설정 요소의 이름SdServerConfig_{인스턴스}/SdClientConfig_{인스턴스}는 익스포터가 붙인다. - 제공자 이벤트 그룹의
MULTICAST-THRESHOLD는0이다. 참조 설계의SOMEIP-PROVIDED-EVENT-GROUP값이고, 편집기 기본값 UNICAST 가 그 값이다. - 소비자의
REQUIRED-MINOR-VERSIONANY와VERSION-DRIVEN-FIND-BEHAVIOR는 입력하지 않는다. 편집기에 칸이 없고 익스포터가 고정값으로 쓴다. - 인스턴스를 머신에 묶는
SOMEIP-SERVICE-INSTANCE-TO-MACHINE-MAPPING은 이 장에서 만들지 않는다. 커넥터에 서비스 인스턴스 바인딩에서 System 편집기로 만든다.
확인하기
- SOA DEPLOYMENT 패널에 카드
SOME/IPSensor하나가 있고, 접힌 요약이SERVICE ID = 0x000BVERSION 1.0EVENTS = 1METHODS = 1이다. - 요약의 SERVICE PROVIDERS 에
PProvider_Sensor0x0001, SERVICE CONSUMERS 에CActuator_Sensor0xFFFF (ANY)와CFusion_Sensor0xFFFF (ANY)가 있다. - 카드를 펼치면 SERVICE ID
11, MAJOR VERSION1, MINOR VERSION0이고, EVENT DEPLOYMENTS 에SensorData1UDP, METHOD DEPLOYMENTS 에Calculation1UDP, EVENT GROUPS 에Eventgroup_SensorData1SensorData가 있다. - 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 포트를 정한다.