AP 머신 — NM 핸들과 FunctionGroup
이 장에서 할 일
HPC는 AP(Adaptive Platform) 머신이다. HPC는 PNC(Partial Network Cluster) 게이트웨이가 아니라, NM(Network Management) 네트워크 핸들을 통해 PNC를 요청하고 해제하는 참여자이다. 이 장에서는 HPC의 Machine Configuration 다이얼로그를 열고, PNC와 짝이 되는 FunctionGroup을 먼저 만든 다음 NM 네트워크 핸들을 만들어 둘을 이어 준다.
대표로 ParkAssistFG와 NH_ParkAssist를 처음부터 끝까지 따라 만든다. 나머지는 각 절의 값 표를 보고 같은 방법으로 반복한다.
이 장을 마치면 HPC 머신에 FunctionGroup 4개(MachineFG, ParkAssistFG, TrailerFG, ComfortFG)와 NM 네트워크 핸들 3개(NH_Comfort, NH_ParkAssist, NH_Trailer)가 있다. 핸들마다 PNC 1개와 FunctionGroup 상태 매핑 2개가 들어 있고, State Management 모듈에는 MAX ACTION LIST DURATION 값이 들어 있다.
시작하기 전에
- PDU GROUPS·MATRIX·NM VECTOR 검토까지 마쳐야 한다. 이 장은 그 상태에서 이어진다.
- 이 장에서 만드는 것은 다음 세 가지이다.
- FunctionGroup 3개:
ParkAssistFG,TrailerFG,ComfortFG - State Management 모듈의 MAX ACTION LIST DURATION 값
1s - NM 네트워크 핸들 3개:
NH_ParkAssist,NH_Comfort,NH_Trailer. 핸들마다 PNC 1개와 FunctionGroup 상태 매핑 2개를 넣는다.
- FunctionGroup 3개:
MachineFG는 Machine Configuration 다이얼로그를 열 때 PAIO가 자동으로 넣어 준다. 직접 만들지 않으며, 지울 수도 없다.- Machine Configuration 다이얼로그의 전체 기능은 VFB 에디터의 8.10절을 참고한다.
대표로 따라 만드는 ParkAssistFG와 NH_ParkAssist의 값은 다음과 같다.
| 항목 | 값 |
|---|---|
| FunctionGroup NAME | ParkAssistFG |
| FunctionGroup DESCRIPTION | Park-assist function group driven by PNC_ParkAssist |
| FunctionGroup GROUP NAME / INITIAL MODE | ParkAssistState / Off |
| FunctionGroup MODE DECLARATION | Off, Active |
| 핸들 NAME | NH_ParkAssist |
| 핸들 VLANS (ETHERNET CONNECTORS) | HPC_Eth_Rear_Conn |
| 핸들 PARTIAL NETWORKS | PNC_ParkAssist (PNC 18) |
| 매핑 1 | ParkAssistFG:Active → FUNCTION-GROUP-STATE-TO-NM-HANDLE |
| 매핑 2 | ParkAssistFG:Off → NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE |
Machine Configuration 다이얼로그 열기
-
왼쪽 EDITOR 뷰의 DESIGN 아래에서 VFB를 클릭한다. VFB 편집기가 탭 PNC:VFB로 열리고, 루트 컴포지션
PncVehicle이 보인다. -
캔버스에서 HPC [HPC] 컴포지션을 찾는다. 작게 보이면 Ctrl+마우스 휠로 확대한다.
-
HPC [HPC] 헤더 오른쪽의 머신 아이콘(밝은 파란색 3단 막대 모양)을 클릭한다. 맨 오른쪽 끝의 네모 아이콘은 컴포지션 표시이므로 누르지 않는다. 컴포지션 안으로 들어가지 않고 루트 화면에서 바로 누르면 된다.

그림 9-1. VFB 루트 화면. ① HPC [HPC] 컴포지션. ② 헤더 오른쪽의 머신 아이콘. EastZone [EastZone], MirrorAct_FR [MirrorAct_FR] 같은 다른 컴포지션에는 같은 자리에 초록색 아이콘이 있다. 초록색 아이콘은 ECU Configuration을 연다. ③ EDITOR 뷰 DESIGN 아래의 VFB.

그림 9-2. HPC [HPC] 헤더를 확대한 모습. ① 누를 머신 아이콘.
-
Machine Configuration [HPC] 다이얼로그가 MACHINE 탭으로 열린다.
![Machine Configuration [HPC] 다이얼로그의 MACHINE 탭](/docs/ko/assets/images/09-03-machine-dialog-machine-tab-99ba1b2d178d8d624697a2f0eb4fdb9f.png)
그림 9-3. 막 연 Machine Configuration [HPC] 다이얼로그. 탭은 MACHINE / FUNCTION GROUP / PROCESSES / MODULE이다. 왼쪽에는 HPC와 커넥터
HPC_Eth_Body_Conn,HPC_Eth_Rear_Conn, 그리고BackboneSwitch가 보인다. 오른쪽 MACHINE에는 OSPOSIX, TRUSTED PLATFORM NO SUPPORT, PROCESSORCPU(Core0,Core1)가 있다. 오른쪽 위는 PARA Platform Import 버튼, 오른쪽 아래는 Close 버튼이다. ① 다음 단계에서 누를 FUNCTION GROUP 탭. ② MODULE 탭.
참고. PARA Platform Import 버튼은 PARA 플랫폼 임포트와 PNC 요청 포트에서 사용한다. 이 장에서는 누르지 않는다.
FunctionGroup 살펴보기
NM 핸들은 FunctionGroup의 상태를 참조한다. 핸들보다 FunctionGroup을 먼저 만들어야 한다. 이 절에서는 값을 바꾸지 않고 화면 구성만 본다.
-
FUNCTION GROUP 탭을 누른다. 탭을 연 직후에는 아무 항목도 선택되어 있지 않아, 가운데와 오른쪽 두 자리에 "Select a Function Group"이 표시된다.
-
왼쪽 FUNCTION GROUPS 목록을 본다. 지금은
MachineFG하나만 있다. 목록 제목 오른쪽에는 버튼 3개가 있다.버튼 툴팁 하는 일 + Add Function Group FunctionGroup을 하나 추가한다. − Remove Function Group 고른 FunctionGroup을 지운다. MachineFG는 지워지지 않는다.⚡ Auto-Generate: sync StateClientInterface and SM SWC R-Ports with Function Groups 지금의 FunctionGroup 목록에 맞춰 StateClient…인터페이스와 SM SWC의 R-Port를 다시 맞춘다. 이 장에서는 누르지 않는다. -
목록에서
MachineFG를 누른다. 가운데 CONFIGURATION에 NAME, DESCRIPTION, FUNCTION GROUP 영역(GROUP NAME, INITIAL MODE), MODE DECLARATION 표가 있고, 오른쪽 STATE MACHINE에 상태 그림이 보인다. 앞으로 만들 FunctionGroup도 이 세 자리를 채우는 일이다.
그림 9-4. 이 장을 시작할 때의 FUNCTION GROUP 탭. ① FUNCTION GROUPS 목록.
MachineFG하나뿐이고 선택되어 있다. ② 목록 제목 오른쪽의 버튼 3개 +, −, ⚡. ③MachineFG의 CONFIGURATION. NAME 값은MachineFG, DESCRIPTION 칸은 비어 있고, GROUP NAME 값은MachineState, INITIAL MODE 값은Off이며, MODE DECLARATION 표에Off,Startup,Shutdown,Restart,Verify5행이 있다. 오른쪽 STATE MACHINE에는 그 5개 상태와 전이가 그려져 있다.
참고.
MachineFG는 AP 머신이 항상 가지는 FunctionGroup이다. NAME 칸은 읽기 전용이고, MODE DECLARATION 표의 VALUE 칸은 5행 모두 비어 있다. 이 값들은 그대로 둔다.
FunctionGroup 만들기
대표로 ParkAssistFG를 끝까지 만든다.
-
FUNCTION GROUPS 목록 제목 오른쪽의 + 버튼(툴팁 "Add Function Group")을 누른다.
FunctionGroup_2항목이 목록에 추가되고 선택된다. 다이얼로그 제목 앞에는 저장하지 않은 변경을 뜻하는 점(●)이 붙는다.
그림 9-5. + 버튼을 누른 직후. ① 목록에 추가되어 선택된
FunctionGroup_2. ② CONFIGURATION. NAME 값은FunctionGroup_2, GROUP NAME 칸은 비어 있고 그 아래에 빨간 글씨로 "Name is required"가 표시된다. INITIAL MODE 값은Off, MODE DECLARATION 표에는Off한 행만 있다. ③ STATE MACHINE.Off상자 하나와 왼쪽 점에서 들어오는 화살표만 있다. 다이얼로그 제목 앞에 점(●)이 붙어 있다. -
가운데 CONFIGURATION의 NAME 칸에
ParkAssistFG를 입력하고 Tab 키를 눌러 칸을 빠져나간다. 이름은 칸에서 빠져나갈 때 반영된다. 왼쪽 목록의 라벨은 아직FunctionGroup_2그대로이다. 목록에서 그 항목을 다시 누르거나 다음 FunctionGroup을 추가하면 갱신된다. -
DESCRIPTION 칸에
Park-assist function group driven by PNC_ParkAssist를 입력한다. -
FUNCTION GROUP 영역의 GROUP NAME 칸에
ParkAssistState를 입력하고 Tab 키를 누른다. 이 값이 상태 선언 그룹의 이름이 된다. 입력하면 "Name is required" 오류가 사라진다. -
MODE DECLARATION 표에는 NAME 값이
Off인 행이 하나 들어 있다. 표 제목 오른쪽의 + 버튼(툴팁 "Add Mode Declaration")을 눌러 행을 하나 더 만든다. 새 행의 NAME 값은Mode_0, VALUE 값은0이다. NAME 칸을 눌러Active로 고치고 표 바깥을 클릭해 확정한다. -
INITIAL MODE 값이
Off인지 확인한다. 다른 값이면 드롭다운에서Off를 고른다.
그림 9-6. 값을 채우고 전이를 만들기 직전의 화면. ① NAME 값
ParkAssistFG. ② GROUP NAME 값ParkAssistState. ③ MODE DECLARATION 표의 두 행Off와Active.Active행의 VALUE 값은0이다. ④ STATE MACHINE. 상자Off와Active (0)두 개가 있고 둘 사이의 전이는 아직 없다. 왼쪽 목록의 라벨은 아직FunctionGroup_2이다. -
오른쪽 STATE MACHINE의
Off상자를 마우스 오른쪽 버튼으로 누른다. Set Initial / Transition to / Delete 메뉴가 나온다. Transition to 항목에 마우스를 올리면 하위 메뉴에 나머지 상태가 나오고, 거기서 Active 항목을 누른다. 이어서Active상자에서 같은 방법으로 Transition to › Off 항목을 누른다.
그림 9-7.
Off상자의 오른쪽 클릭 메뉴. 항목은 Set Initial, Transition to, Delete이다. ① 마우스를 올린 Transition to. ② 하위 메뉴에 나온 나머지 상태 Active. 이 항목을 누르면Off→Active전이가 만들어진다. -
왼쪽 FUNCTION GROUPS 목록에서
FunctionGroup_2항목을 한 번 누른다. 목록 라벨이ParkAssistFG로 갱신된다. 결과가 그림 9-8과 같은지 확인한다.
그림 9-8. 전이까지 넣어 완성한
ParkAssistFG. 아직 저장하기 전이라 다이얼로그 제목 앞에 점(●)이 있다. ① FUNCTION GROUPS 목록. 라벨이ParkAssistFG로 갱신되어MachineFG와 함께 2개가 보인다. ② CONFIGURATION. NAME, DESCRIPTION, GROUP NAME 값과 MODE DECLARATION 두 행이 들어가 있다. ③ STATE MACHINE.Off와Active (0)사이에 전이 2개가 짧은 곡선으로 그려져 있다. -
Ctrl+S를 눌러 저장한다. 제목 앞의 점(●)이 사라진다.
참고 1. **+**로 만든 행의 VALUE 칸에는
0이 자동으로 들어가고, STATE MACHINE의 상자에도Active (0)처럼 값이 함께 표시된다. 예제 모델에는 이 값이 없어서 그림 9-9의 VALUE 칸은 비어 있고 상자 이름도Active이다. 이 튜토리얼의 결과에는 영향이 없으므로 그대로 둔다.
참고 2. **+**로 만든 상자는 서로 비스듬히 놓여 전이 2개가 겹쳐 보인다(그림 9-8). 예제 모델은 두 상자가 가로로 나란히 놓여 있어 전이 2개가 따로 보인다(그림 9-9). 상자는 끌어서 옮길 수 있고, 위치는 그림에만 영향을 준다.
참고 3. FunctionGroup을 추가하면 Interface 편집기의 ADAPTIVE 탭에
StateClient_<FunctionGroup 이름>인터페이스가 함께 만들어진다. 이 장을 마치면StateClient_ParkAssistFG,StateClient_TrailerFG,StateClient_ComfortFG3개가 생긴다.StateClient_HPC_MachineFG는 PARA 플랫폼 임포트와 PNC 요청 포트에서 들어온다. FunctionGroup을 지울 때는 확인 창이 이 인터페이스도 함께 지워진다고 알려 준다. 이 튜토리얼에서는 이 인터페이스를 따로 손대지 않는다.
나머지 FunctionGroup 만들기
TrailerFG, ComfortFG도 같은 방법으로 반복한다. 완성된 FunctionGroup 4개의 값은 다음과 같다.
| NAME | DESCRIPTION | GROUP NAME | INITIAL MODE | MODE DECLARATION | 전이 |
|---|---|---|---|---|---|
MachineFG | (비움) | MachineState | Off | Off, Startup, Shutdown, Restart, Verify | 자동으로 들어 있음 |
ParkAssistFG | Park-assist function group driven by PNC_ParkAssist | ParkAssistState | Off | Off, Active | Off → Active, Active → Off |
TrailerFG | Trailer function group driven by PNC_Trailer | TrailerState | Off | Off, Active | Off → Active, Active → Off |
ComfortFG | Comfort function group driven by PNC_Comfort | ComfortState | Off | Off, Active | Off → Active, Active → Off |
-
FunctionGroup 만들기의 1~9단계를 되풀이해
TrailerFG를 만든다. 값은 위 표를 따른다. + 버튼이 만드는 이름은FunctionGroup_3, 그다음은FunctionGroup_4이다. -
같은 방법으로
ComfortFG를 만든다. -
목록에서
ParkAssistFG를 눌러 결과가 그림 9-9와 같은지 확인한다.
그림 9-9. 완성된 FUNCTION GROUP 탭. ① FUNCTION GROUPS 목록.
MachineFG,ParkAssistFG,TrailerFG,ComfortFG4개가 있고ParkAssistFG가 선택되어 있다. ② CONFIGURATION. NAME 값은ParkAssistFG, DESCRIPTION 값은Park-assist function group driven by PNC_ParkAssist, GROUP NAME 값은ParkAssistState, INITIAL MODE 값은Off이고, MODE DECLARATION 표에Off,Active두 행이 있다. ③ STATE MACHINE.Off와Active사이의 전이 2개가 그림으로 보인다. 왼쪽 끝의 점에서Off로 들어오는 화살표가 INITIAL MODE 표시이다.
주의. 뒤 절의 매핑에 쓸 FunctionGroup과 상태는 이 탭에 실제로 있는 것이어야 한다. 이름이나 상태 이름이 표와 다르면 매핑 체크 목록에 나오지 않는다. 여기서 만든 FunctionGroup은 뒤의 FunctionGroup 상태 매핑 추가하기에서
<FunctionGroup>:<상태>형식의 후보 11개로 나온다.

그림 9-10. 뒤 절에서 보게 될 FUNCTION GROUP STATES 체크 목록. MachineFG 5개에 이어 방금 만든 ParkAssistFG, TrailerFG, ComfortFG의 Off와 Active가 후보로 들어가 있다. ① ParkAssistFG:Active. 핸들 이름이 아직 NetworkHandle_0인 것은 이 목록을 확인하려고 핸들을 갓 추가한 상태이기 때문이다.
State Management의 MAX ACTION LIST DURATION 입력하기
State Management 모듈에는 액션 리스트의 최대 수행 시간이 반드시 있어야 한다. 여기서 그 값을 넣는다.
-
MODULE 탭을 누르고, 왼쪽 MODULES 목록에서 State Management 항목을 누른다.
참고. MODULES 목록에는 모듈 11개가 항상 표시된다. 목록에 모듈을 추가하거나 빼는 버튼은 없다. 각 모듈 앞의 초록색 점은 그 모듈이 켜져 있다는 표시이다(툴팁 "Enabled. Right-click to disable."). 이 튜토리얼에서는 모든 모듈을 켜 둔 채로 둔다.
-
가운데 서브탭 NOTIFICATIONS / REQUESTS / ACTION ITEMS 중 ACTION ITEMS 탭을 누른다.
-
맨 위 MAX ACTION LIST DURATION 칸에
1을 입력하고 다른 곳을 눌러 확정한다. 값은 칸에서 빠져나갈 때 반영된다. 칸 오른쪽의 단위 드롭다운은s(초)이다. 그대로 둔다.
그림 9-11. State Management › ACTION ITEMS. ① 입력한 MAX ACTION LIST DURATION 값
1과 오른쪽의 단위s. 아래 NM HANDLE FUNCTION GROUP STATES에는 아직 핸들이 없어 "No NM handle function group state."가 표시된다. 이 표는 뒤 절에서 핸들을 만들면 채워진다. 왼쪽 MODULES 목록에는 모듈 11개가 보인다. -
Ctrl+S로 저장한다.
참고. ACTION LISTS 아래의 "No StateMachine states available. Add a StateMachine in the Notifications sub-tab first."는 이 예제에 SM 알림이 없어서 나오는 문구이다. 이 튜토리얼에서는 그대로 둔다.
주의. MAX ACTION LIST DURATION 칸을 비워 두면 PAIO 검증이
constr_10641오류를 보고한다. State Management 모듈에는 이 값이 반드시 있어야 한다.
NM 네트워크 핸들 추가하기
-
왼쪽 MODULES 목록에서 Network Management 항목을 누른다. 가운데에 NETWORK HANDLES 섹션이 나오고, 아직 핸들이 없으므로 "No network handles. Click + to add one and assign its VLAN (Ethernet connector) group."이 표시된다.

그림 9-12. MODULE 탭의 Network Management. ① MODULES 목록의 Network Management. ② NETWORK HANDLES 제목 오른쪽의 + 버튼(툴팁 "Add Network Handle"). 오른쪽 NM STATE MACHINE에는 "Select a network handle to see the NM state machine of its cluster."가 표시된다.
-
NETWORK HANDLES 제목 오른쪽의 + 버튼을 누른다.
NetworkHandle_0행이 추가되고 바로 펼쳐진다. 다이얼로그 제목 앞에 저장하지 않은 변경을 뜻하는 점(●)이 붙는다.
그림 9-13. + 직후. 위쪽 요약 행에는 NAME / VLANS (ETHERNET CONNECTORS) / PARTIAL NETWORKS가
NetworkHandle_0/-/-로 보인다. 그 아래 펼친 상세에는 같은 세 칸과 FUNCTION GROUP STATES 소제목이 있다. ① NAME 입력칸. 오른쪽 NM STATE MACHINE에는 핸들에 VLAN 커넥터가 없다는 안내가 표시된다. -
펼친 상세의 NAME 칸에
NH_ParkAssist를 입력하고 Tab 키를 누른다. -
이름이 확정되고 요약 행이
NH_ParkAssist로 바뀐다. 행은 펼쳐진 채로 남는다. -
VLANS (ETHERNET CONNECTORS) 칸을 누른다. 체크 목록에서 HPC_Eth_Rear_Conn 항목에 체크하고 Esc 키로 목록을 닫는다.

그림 9-14. VLANS (ETHERNET CONNECTORS) 체크 목록. HPC의 Ethernet 커넥터
HPC_Eth_Body_Conn,HPC_Eth_Rear_Conn두 개가 나온다. ① 체크할 HPC_Eth_Rear_Conn. -
PARTIAL NETWORKS 칸을 누른다. 체크 목록에서 PNC_ParkAssist (PNC 18) 항목에 체크하고 Esc 키로 목록을 닫는다.

그림 9-15. PARTIAL NETWORKS 체크 목록. 요약 행의 VLANS (ETHERNET CONNECTORS) 값이
HPC_Eth_Rear_Conn으로 바뀌어 있다. 목록에는 PNC 정의와 커넥터 PNC 속성에서 만든 PNC 3개가PNC_Comfort (PNC 17),PNC_ParkAssist (PNC 18),PNC_Trailer (PNC 19)로 나온다. ① 체크할 PNC_ParkAssist (PNC 18).
FunctionGroup 상태 매핑 추가하기
NH_ParkAssist에 매핑 2개를 넣는다. 첫 번째는 ParkAssistFG가 Active가 되면 PNC_ParkAssist를 요청하는 매핑이다. 두 번째는 PNC_ParkAssist가 비활성이 되면 ParkAssistFG를 Off로 내리는 매핑이다.
-
펼친 핸들 안의 FUNCTION GROUP STATES 소제목 오른쪽 + 버튼(툴팁 "Add Function Group State")을 누른다. 매핑 행이 추가되고 바로 펼쳐지며 FUNCTION GROUP STATES와 DIRECTION 두 칸이 나온다.
-
FUNCTION GROUP STATES 칸을 누른다. 체크 목록에서 ParkAssistFG:Active 항목에 체크하고 Esc 키로 목록을 닫는다.

그림 9-16. 매핑 행을 추가한 직후의 FUNCTION GROUP STATES 체크 목록. 후보는
<FunctionGroup>:<상태>형식으로 11개이다. 앞 절에서 만든 FunctionGroup에서 나온 값이며,MachineFG5개,ParkAssistFG,TrailerFG,ComfortFG각 2개이다. 목록을 아래로 내리면ComfortFG:Active가 나온다. ① 체크할 ParkAssistFG:Active. -
DIRECTION 칸을 누르고 FUNCTION-GROUP-STATE-TO-NM-HANDLE 항목을 고른다.

그림 9-17. DIRECTION 드롭다운. 선택지는 FUNCTION-GROUP-STATE-TO-NM-HANDLE, NM-HANDLE-ACTIVE-TO-FUNCTION-GROUP-STATE, NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE 세 가지이다. 매핑 요약 행에는 이미
ParkAssistFG:Active가 들어가 있다. ① 고를 FUNCTION-GROUP-STATE-TO-NM-HANDLE. -
FUNCTION GROUP STATES 소제목 오른쪽 + 버튼을 다시 누른다. 두 번째 매핑 행이 추가된다.
-
새로 생긴 아래쪽 매핑 행에서 1~3단계와 같은 방법으로 FUNCTION GROUP STATES 값은 ParkAssistFG:Off, DIRECTION 값은 NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE 로 고른다.
-
다이얼로그 안에서 Ctrl+S를 눌러 저장한다. 제목 앞의 점(●)이 사라진다.

그림 9-18. 저장 후의
NH_ParkAssist. ① 핸들 요약 행:NH_ParkAssist/HPC_Eth_Rear_Conn/PNC_ParkAssist. ② FUNCTION GROUP STATES 표의 매핑 2행:ParkAssistFG:Active/FUNCTION-GROUP-STATE-TO-NM-HANDLE,ParkAssistFG:Off/NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE. 오른쪽 NM STATE MACHINE에는 핸들의 VLAN이 속한 클러스터의 NM 상태 머신 그림이 표시된다. -
MODULES 목록에서 State Management 항목을 누르고 ACTION ITEMS 탭을 본다. 앞 절에서 비어 있던 NM HANDLE FUNCTION GROUP STATES 표에 방금 만든 매핑 2행이 들어와 있다.

그림 9-19. State Management › ACTION ITEMS. ① 앞 절에서 입력한 MAX ACTION LIST DURATION 값
1과 단위s. ② NM HANDLE FUNCTION GROUP STATES 표.NH_ParkAssist의 매핑 2행이 HANDLE / FUNCTION GROUP STATES / DIRECTION 열로 보인다. 이 표는 읽기 전용이며, 매핑은 Network Management 쪽에서 고친다.
참고. 펼친 매핑의 DIRECTION 칸은 폭이 좁아 긴 값이
NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STA…처럼 잘려 보인다. 매핑 요약 행에서는 값 전체가 보인다.
저장한 핸들은 머신 파일 design/Module/Machine/HPC.machine.io.model에 다음과 같이 기록된다. PARTIAL NETWORKS 칸에서 고른 PNC는 경로(/System/PncVehicle/SystemMapping/PNC_ParkAssist)로 저장된다. 실제 파일에서는 키 순서가 아래와 다를 수 있지만 내용은 같다.
{
"name": "NH_ParkAssist",
"vlan-refs": ["HPC_Eth_Rear_Conn"],
"partial-network-refs": ["/System/PncVehicle/SystemMapping/PNC_ParkAssist"],
"function-group-state-mappings": [
{ "mapping-direction": "FUNCTION-GROUP-STATE-TO-NM-HANDLE",
"function-group-states": [{ "context-function-group-ref": "ParkAssistFG", "target-state-ref": "Active" }] },
{ "mapping-direction": "NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE",
"function-group-states": [{ "context-function-group-ref": "ParkAssistFG", "target-state-ref": "Off" }] }
]
}
나머지 핸들 추가하기
NH_Comfort, NH_Trailer도 같은 방법으로 추가한다. 핸들 3개의 값은 다음과 같다.
| NAME | VLANS (ETHERNET CONNECTORS) | PARTIAL NETWORKS | FUNCTION GROUP STATES | DIRECTION |
|---|---|---|---|---|
NH_Comfort | HPC_Eth_Body_Conn | PNC_Comfort (PNC 17) | ComfortFG:Active | NM-HANDLE-ACTIVE-TO-FUNCTION-GROUP-STATE |
ComfortFG:Off | NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE | |||
NH_ParkAssist | HPC_Eth_Rear_Conn | PNC_ParkAssist (PNC 18) | ParkAssistFG:Active | FUNCTION-GROUP-STATE-TO-NM-HANDLE |
ParkAssistFG:Off | NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE | |||
NH_Trailer | HPC_Eth_Rear_Conn | PNC_Trailer (PNC 19) | TrailerFG:Active | NM-HANDLE-ACTIVE-TO-FUNCTION-GROUP-STATE |
TrailerFG:Off | NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE |
DIRECTION 값의 뜻은 다음과 같다.
| DIRECTION | 뜻 | 이 예제에서 |
|---|---|---|
FUNCTION-GROUP-STATE-TO-NM-HANDLE | FunctionGroup이 이 상태가 되면 핸들의 PNC를 요청한다. | ParkAssistFG가 Active(후진 기어)가 되면 PNC_ParkAssist를 요청한다. |
NM-HANDLE-ACTIVE-TO-FUNCTION-GROUP-STATE | 핸들의 PNC가 활성이 되면 FunctionGroup을 이 상태로 바꾼다. | PNC_Comfort, PNC_Trailer가 켜지면 ComfortFG, TrailerFG를 Active로 올린다. |
NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE | 핸들의 PNC가 비활성이 되면 FunctionGroup을 이 상태로 바꾼다. | PNC가 잠들면 세 FunctionGroup을 모두 Off로 내린다. |
-
MODULES 목록에서 Network Management 항목을 다시 누른다.
-
NM 네트워크 핸들 추가하기의 2
6단계와 FunctionGroup 상태 매핑 추가하기의 15단계를 되풀이해NH_Comfort를 만든다. 값은 위 표를 따른다. -
같은 방법으로
NH_Trailer를 만든다. -
Ctrl+S로 저장한다.
-
NH_Comfort가 그림 9-20과 같은지 확인한다. 요약 행을 누르면 그 행이 펼쳐지거나 접히므로, 요약 행NH_Comfort는 접혀 있을 때만 누른다. 화면이 그림과 다를 수 있다. 앞서 추가한 행이 펼쳐진 채로 남아 있을 수 있고, 행 순서는 만든 순서를 따르므로 이 절차대로 만들었다면NH_ParkAssist가 맨 위에 온다. 값만 표와 같으면 된다.
그림 9-20. 완성된 NETWORK HANDLES. ① 핸들 3행
NH_Comfort,NH_ParkAssist,NH_Trailer. ② 펼친NH_Comfort의 상세. PARTIAL NETWORKS 값은PNC_Comfort (PNC 17), 매핑은ComfortFG:Active/NM-HANDLE-ACTIVE-TO-FUNCTION-GROUP-STATE와ComfortFG:Off/NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE이다. -
State Management › ACTION ITEMS 화면을 다시 열면 NM HANDLE FUNCTION GROUP STATES 표에 핸들 3개의 매핑 6행이 보인다.
-
Close 버튼을 눌러 다이얼로그를 닫는다. 저장을 마쳤다면 저장 확인 없이 닫힌다.
주의. PNC를 참조하는 핸들에
NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE매핑이 없으면, PAIO 검증이 그 핸들에 대해 "PNC release stops nothing" 오류를 보고한다. PNC가 해제되어도 멈출 FunctionGroup이 없다는 뜻이다. PARTIAL NETWORKS 값을 고른 핸들에는 반드시 INACTIVE 방향 매핑을 하나 이상 넣는다.
왜 이렇게 설계하는가
- PNC 게이트웨이 유형(PNC GATEWAY TYPE)은 CP(Classic Platform) ECU 커넥터에만 있는 속성이다. AP 머신인 HPC는 PNC 게이트웨이가 될 수 없다. 대신 ara::nm의 NM 네트워크 핸들이 PNC를 참조해, HPC가 PNC의 요청자이자 참여자가 된다.
- FunctionGroup은 AP 머신이 응용을 켜고 끄는 단위이다. PNC마다 FunctionGroup을 하나씩 두면 그 PNC가 살아 있는 동안 동작할 응용을 상태 하나로 묶을 수 있다.
- 핸들과 FunctionGroup 상태를 양방향으로 연결하면 "후진 기어 =
ParkAssistFGActive→PNC_ParkAssist요청", "PNC_Comfort활성 →ComfortFGActive" 같은 동작을 설계 모델에 선언할 수 있다. PNC_ParkAssist에는 웨이크업 프레임이 없다. 이 PNC는 버스 프레임이 아니라 HPC의 FunctionGroup 상태로 요청되기 때문이다.
확인하기
- FUNCTION GROUP 탭의 FUNCTION GROUPS 목록에
MachineFG,ParkAssistFG,TrailerFG,ComfortFG4개가 있다. -
ParkAssistFG,TrailerFG,ComfortFG의 GROUP NAME 값과 MODE DECLARATION 값이 나머지 FunctionGroup 만들기의 표와 같고, INITIAL MODE 값은 모두Off이다. - 세 FunctionGroup의 STATE MACHINE 그림에
Off→Active,Active→Off전이가 있다. - State Management › ACTION ITEMS 화면의 MAX ACTION LIST DURATION 값이
1s이다. - Network Management의 NETWORK HANDLES에
NH_Comfort,NH_ParkAssist,NH_Trailer3행이 있다. - 각 핸들의 VLANS (ETHERNET CONNECTORS) 값과 PARTIAL NETWORKS 값이 나머지 핸들 추가하기의 표와 같다.
- 각 핸들에 매핑이 2개씩 있고, 그중 하나는
NM-HANDLE-INACTIVE-TO-FUNCTION-GROUP-STATE방향이다. -
NH_ParkAssist의ParkAssistFG:Active매핑은FUNCTION-GROUP-STATE-TO-NM-HANDLE방향이다. - State Management › ACTION ITEMS 화면의 NM HANDLE FUNCTION GROUP STATES 표에 6행이 있다.
- Close 버튼을 눌렀을 때 저장 확인 없이 다이얼로그가 닫혔다(저장 완료).
다음 단계
PARA 플랫폼 임포트와 PNC 요청 포트에서 HPC에 PARA 플랫폼을 임포트하고, 응용 AA가 NM 네트워크 핸들로 PNC를 요청하도록 연결한다. 다음 장은 이 장에서 만든 FunctionGroup 4개와 NM 네트워크 핸들 3개를 그대로 쓰므로, 위 표의 값이 모두 들어갔는지 확인하고 넘어간다.