본문으로 건너뛰기

신호·PDU·프레임과 I-PDU Group

이 장에서 할 일​

PNC(Partial Network Cluster)가 실제로 켜고 끄는 대상은 I-PDU Group(I-Signal I-PDU를 묶은 그룹)이다. 이 장에서는 Signal 편집기에서 CAN 프레임, I-Signal I-PDU, 신호, NM(Network Management)-PDU를 직접 만들어 서로 매핑한다. 이어서 PNC 대화상자에서 PNC별 I-PDU Group을 만들고, 그룹에 PDU를 넣는다.

이 장을 마치면 다음 상태가 된다.

  • Signal 모델에 신호 42개, I-Signal I-PDU 16개, NM-PDU 18개, CAN 프레임 29개(응용 16개 + NM 13개)가 있다. NM 프레임 13개는 현재 버전의 Signal 편집기에서 만들 수 없으므로, 2장부터 직접 만든 프로젝트라면 응용 프레임 16개까지이다(NM-PDU 만들기 참조).
  • Signal 편집기에서 프레임, PDU, 신호, NM 프레임과 NM-PDU를 찾아 값을 확인할 수 있다.
  • PNC 대화상자의 PNC GROUPS에 PNC_Comfort의 그룹 4개, PNC_ParkAssist의 그룹 2개, PNC_Trailer의 그룹 2개가 있고, 각 그룹에 PDU가 들어 있다.

시작하기 전에​

  • PNC 정의와 커넥터 PNC 속성을 마쳐 PNC 3개(17, 18, 19)가 정의되어 있어야 한다.
  • 이 장에서는 대표 한 세트를 처음부터 직접 만든다. CAN 프레임 WestCAN_DoorStatus_FL, 그 프레임과 함께 만들어지는 I-Signal I-PDU DoorStatus_FL_Pdu, 신호 DoorOpen_FL, DoorLock_FL, WindowPos_FL, NM-PDU WestCAN_NmPdu_WestZone, 그리고 I-PDU Group WestCAN_PNC_Comfort_Rx이다. 나머지는 값 표를 보고 같은 조작을 반복한다.
  • 절차 그림은 나머지 프레임과 PDU가 이미 들어 있는 상태에서 대표 세트만 새로 만드는 화면이다. 그래서 목록 아래의 항목 수가 CAN FRAMES "27 items", PDUS "32 items"에서 시작한다. PDU 탭 그림에 보이는 "33 items"는 대표 프레임을 만들어 PDU가 하나 늘어난 뒤의 수이다(그림 4-6). CAN 프레임 살펴보기부터의 그림은 예제를 끝까지 만든 상태(프레임 29개, PDU 34개, 신호 42개)이다. 항목 수만 다르고 라벨, 버튼 위치, 입력하는 값은 같다.
  • NM 프레임 13개는 현재 버전의 Signal 편집기에서 만들 수 없다. 이유와 대처는 NM-PDU 만들기에 적었다.
  • Signal 편집기의 전체 기능은 Signal 편집기를 참고한다.

Signal 편집기 열기​

  1. 왼쪽 EDITOR 뷰의 DESIGN 아래에서 System을 클릭해 System 편집기(탭 PNC:System)를 연다. 이어서 캔버스 왼쪽 가장자리의 세로 아이콘 줄에서 첫 번째(위쪽) 아이콘 Signal을 클릭한다. DESIGN에는 Signal 행이 없으므로 Signal 편집기는 이 아이콘으로 연다.

    DESIGN의 System과 System 편집기 캔버스의 Signal 아이콘

    그림 4-1. System 편집기. ① EDITOR 뷰 DESIGN 아래의 System, ② 캔버스 왼쪽 가장자리 세로 아이콘 줄의 첫 번째(위쪽) 아이콘 Signal. 그 아래는 Partial Network (PNC) 아이콘이다.

  2. 제목이 PNC:Signal인 편집기 탭이 열린다. 편집기 위쪽에는 프로토콜 탭 CAN, LIN, PDU, SIGNAL이 있고, 처음에는 CAN이 선택되어 있다.

편집기는 세 부분으로 나뉜다.

위치내용
왼쪽 목록선택한 탭의 요소 목록(CAN FRAMES, PDUS, SIGNALS). 목록 아래에 항목 수가 표시된다.
가운데CONFIGURATION(선택한 요소의 속성)과 아래쪽 SIGNALS 표
오른쪽CONFIGURATION 필드 오른쪽의 탭 두 개, PREVIEW(바이트와 비트 배치 격자)와 PDU REFERENCES(프레임이 싣는 PDU)이다. PDU에는 PREVIEW만 있다. 편집기를 열면 PREVIEW가 선택되어 있고, 고른 탭은 다른 프레임을 선택해도 그대로 유지된다. SIGNAL 탭에서는 이 자리가 SIGNAL GROUPS 패널로 바뀐다.

CAN 프레임과 PDU 만들기​

대표로 WestCAN_DoorStatus_FL 프레임 하나를 끝까지 만든다. 나머지는 나머지 프레임, PDU, 신호 표를 보고 같은 방법으로 반복한다.

  1. CAN 탭이 선택되어 있는지 확인한다.

  2. CAN FRAMES 머리글 오른쪽의 +(툴팁 Add)를 클릭한다. 그 오른쪽의 **−**는 삭제, **⋯**는 정렬과 필터이다.

    CAN FRAMES 머리글의 + 버튼

    그림 4-2. CAN FRAMES 목록. ① 머리글 오른쪽의 +(툴팁 Add). 목록 아래에 "27 items"가 표시된다.

  3. 목록 맨 아래에 NewFrame이 생기고 자동으로 선택된다. 같은 이름이 이미 있으면 뒤에 번호가 붙는다. 이때 I-Signal I-PDU NewFrame_Pdu가 함께 만들어져 프레임에 연결된다. 오른쪽 열의 PDU REFERENCES 탭을 클릭하면 이 PDU가 보인다. 프레임을 만들면 PDU가 하나 따라오므로 PDU를 따로 만들지 않아도 된다.

    필드새 프레임의 기본값
    NAMENewFrame
    ADDRESSINGSTANDARD
    CAN ID0x100부터 세어 아직 쓰이지 않은 첫 값
    DLC8 (8 bytes)
    UNUSED BIT PATTERN0
    PDU REFERENCESNewFrame_Pdu(LENGTH 8, SIGNALS 0)

    새 프레임의 기본값

    *그림 4-3. **+*를 누르고 이어서 PDU REFERENCES 탭을 클릭한 직후. ① 목록 맨 아래에 추가된 NewFrame(0x100), ② NAME = NewFrame, ③ CAN ID = 0x100, ④ PDU REFERENCES 탭의 NewFrame_Pdu(LENGTH 8, SIGNALS 0). 목록 아래의 항목 수가 "28 items"로 늘고, 탭 이름 PNC:Signal 옆에 저장 안 됨 점이 생긴다.

  4. CONFIGURATION의 NAME 칸을 클릭하고 WestCAN_DoorStatus_FL을 입력한 뒤 Enter를 누른다.

  5. CAN ID 칸을 클릭하고 0x301을 입력한 뒤 Enter를 누른다.

  6. ADDRESSING은 STANDARD, DLC는 8 (8 bytes), UNUSED BIT PATTERN은 0 그대로 둔다. ADDRESSING과 UNUSED BIT PATTERN은 입력 칸이 아니라 값 두 개를 좌우로 붙여 놓은 버튼이다.

    이름과 CAN ID를 입력한 CONFIGURATION

    그림 4-4. CONFIGURATION 확대. ① NAME = WestCAN_DoorStatus_FL, ② CAN ID = 0x301, ③ ADDRESSING = STANDARD(STANDARD | EXTENDED 버튼), ④ PDU REFERENCES 탭. PDU 이름이 이미 프레임 이름을 따라 바뀌어, 탭 줄 오른쪽 끝의 선택 상자와 표에 WestCAN_DoorStatus_FL_Pdu로 보인다.

    CAN ID 라벨 오른쪽의 DEC | HEX로 표기를 바꿀 수 있고 기본은 HEX이다.

    CAN ID의 DEC와 HEX 전환

    그림 4-5. CAN ID의 표기 전환. ① DEC | HEX 버튼, ② DEC를 고른 상태의 값 769. 저장되는 값은 같다.

  7. PDU 탭을 클릭한다. 목록 제목이 PDUS로 바뀐다. 함께 만들어진 PDU는 프레임 이름을 따라 WestCAN_DoorStatus_FL_Pdu로 바뀌어 있다. 이 항목(IS 태그)을 클릭한다.

    필드새 PDU의 기본값
    LENGTH (BYTES)8
    UNUSED BIT PATTERN0
    CYCLE TIME (MS)0
    TRANSMISSION MODENONE

    PDU 탭의 자동 생성 PDU

    그림 4-6. PDU 탭. ① PDU 탭, ② 목록의 WestCAN_DoorStatus_FL_Pdu(IS 태그, 8B), ③ LENGTH (BYTES) = 8, ④ CYCLE TIME (MS) = 0. TRANSMISSION MODE는 NONE이 선택되어 있다.

  8. NAME 칸에 DoorStatus_FL_Pdu를 입력한다. PDU 이름을 바꾸면 그 PDU를 참조하는 프레임과 I-PDU Group의 참조도 함께 바뀐다.

  9. **LENGTH (BYTES)**는 8 그대로 두고, **CYCLE TIME (MS)**에 50을 입력한다.

  10. TRANSMISSION MODE에서 CYCLIC을 선택한다. 선택지는 CYCLIC / EVENT / NOT-USED / NONE이다.

    이름과 주기를 맞춘 PDU

    그림 4-7. 설정을 끝낸 PDU. ① NAME = DoorStatus_FL_Pdu, ② LENGTH (BYTES) = 8, ③ CYCLE TIME (MS) = 50, ④ TRANSMISSION MODE = CYCLIC. UNUSED BIT PATTERN은 0 그대로이다.

  11. Ctrl+S를 눌러 저장한다. 탭 이름 PNC:Signal 옆의 저장 안 됨 점이 사라진다. 되돌리기는 Ctrl+Z, 다시 하기는 Ctrl+Shift+Z이다.

참고. 프레임 이름을 바꾸면 함께 만들어진 PDU 이름도 따라 바뀐다. NewFrame을 WestCAN_DoorStatus_FL로 바꾸면 PDU는 WestCAN_DoorStatus_FL_Pdu가 된다. 이렇게 되는 조건은 네 가지이다. 프레임이 PDU를 하나만 싣고, 그 PDU 이름이 {옛 프레임 이름}_Pdu이고, 그 PDU를 참조하는 프레임이 그 하나뿐이고, 새 이름이 아직 쓰이지 않았을 때이다. 프레임에 PDU가 둘 이상이면 PDU 이름은 그대로 남는다.

참고. 프레임의 PDU REFERENCES 탭에서 탭 줄 오른쪽 끝의 선택 상자에는 I-Signal I-PDU가 후보로 나온다(N-PDU도 후보지만 이 예제에는 없다). 이미 있는 PDU를 다른 프레임에 붙이거나 한 프레임에 PDU 여러 개를 붙일 때 이 선택 상자를 쓴다. PDU 길이 합이 프레임 DLC의 바이트 수보다 크면 PAIO가 DLC를 그에 맞게 올린다. 합이 64바이트(CAN FD 최대 페이로드)를 넘으면 표 아래에 Total PDU size ...B exceeds frame max size ...B 오류가 표시되고, PDU REFERENCES 탭 이름이 빨간색으로 바뀐다.

신호 만들어 PDU에 매핑하기​

신호는 프레임(또는 PDU)을 선택한 상태에서 SIGNALS 표로 만든다. 만들면 선택한 PDU에 바로 매핑된다.

  1. CAN 탭에서 WestCAN_DoorStatus_FL을 클릭한다.

  2. SIGNALS 제목 바로 오른쪽의 +(툴팁 Add Signal)를 클릭한다. 프레임 이름 뒤에 _Sig를 붙인 신호(WestCAN_DoorStatus_FL_Sig)가 만들어져 이 프레임의 PDU에 매핑된다. 기본값은 TYPE UINT, BYTE-ORDER LITTLE-ENDIAN, LENGTH 8, FACTOR 1, OFFSET 0, MIN 0, MAX 255, INIT VALUE 0이고, START는 이미 매핑된 마지막 신호 다음 비트이다. 이 PDU는 아직 비어 있으므로 0이다.

    신호를 추가한 직후의 SIGNALS 표

    그림 4-8. SIGNALS 표 확대. ① SIGNALS 제목 바로 오른쪽의 +(툴팁 Add Signal), ② 추가된 기본값 행 WestCAN_DoorStatus_FL_Sig: START 0, LENGTH 8, MIN 0, MAX 255, INIT VALUE 0.

  3. 새 행의 칸을 클릭해 값을 고친다. 입력 칸이 열리면 값을 입력하고 Enter로 확정한다. Esc를 누르면 입력이 취소된다. LENGTH, START, MAX 순서로 고친다. LENGTH가 8인 채로 START를 옮기면 다른 신호와 비트가 겹칠 수 있다.

    첫 신호를 고친 결과

    그림 4-9. 첫 신호를 고친 결과. ① NAME = DoorOpen_FL, ② LENGTH = 1, ③ MAX = 0. START는 자동값 0 그대로 둔다.

  4. 이 PDU에는 신호 3개가 들어간다. 첫 행은 3단계에서 DoorOpen_FL로 고쳤으므로, 나머지 2개는 + 버튼을 한 번씩 더 눌러 행을 만들고 같은 방법으로 값을 고친다. 그다음 오른쪽 열의 PREVIEW 탭을 클릭해 비트 배치를 확인한다.

    NAMELENGTHSTARTMAX
    DoorOpen_FL10(자동값 그대로)0
    DoorLock_FL21(자동값 그대로)0
    WindowPos_FL88(직접 입력)0

    신호 3개를 매핑한 결과

    그림 4-10. 신호 3개를 매핑한 결과. ① SIGNALS 표의 3행, ② PREVIEW의 Byte 0 아래쪽 비트와 Byte 1 전체, 그리고 오른쪽 범례 DoorOpen_FL, DoorLock_FL, WindowPos_FL, ③ PDU REFERENCES 탭. 이 탭의 DoorStatus_FL_Pdu는 이제 LENGTH 8, SIGNALS 3이다.

  5. Ctrl+S로 저장한다.

주의. LENGTH를 바꿔도 MAX는 255로 남는다. 예제의 신호는 MIN과 MAX가 모두 0이므로 MAX를 직접 0으로 고친다.

주의. 자동 START는 비어 있는 첫 비트가 아니라 마지막 매핑 다음 비트이다(위 표에서는 0 → 1 → 3). 세 번째 신호 WindowPos_FL을 Byte 1부터 놓으려면 START를 8로 직접 입력한다.

참고. 두 번째 이후 신호의 자동 이름도 WestCAN_DoorStatus_FL_Sig이다. 앞 행의 이름을 먼저 바꾸기 때문에 번호가 붙지 않는다. "추가 → 이름 변경 → 다음 추가" 순서로 진행한다.

NM-PDU 만들기​

  1. PDU 탭에서 PDUS 머리글 오른쪽의 +(툴팁 Add)를 클릭한다. 두 단계 메뉴가 열린다.

    메뉴 묶음항목
    Signal I-PDUI-Signal I-PDU, Multiplexed I-PDU
    Network MgmtNM-PDU
    Transport (TP)N-PDU, DCM-I-PDU
    General PurposeGeneral Purpose PDU

    PDUS 머리글의 + 메뉴

    그림 4-11. PDUS 머리글의 + 메뉴. ① 메뉴 묶음 4개, ② Network Mgmt에 마우스를 올려 펼친 하위 항목 NM-PDU. 메뉴가 열리면 목록 선택이 풀려 가운데에 "Select a PDU"가 표시된다.

  2. Network Mgmt에 마우스를 올리고 NM-PDU를 클릭한다. NewNmPdu가 만들어지고 선택된다. 기본값은 LENGTH (BYTES) 8, UNUSED BIT PATTERN 0, NM VOTE INFORMATION FALSE, NM DATA INFORMATION FALSE이다.

    NewNmPdu의 기본값

    그림 4-12. NewNmPdu를 만든 직후. ① 목록 맨 아래의 NewNmPdu(NM 태그, 8B), ② NAME = NewNmPdu, ③ NM VOTE INFORMATION = FALSE, ④ NM DATA INFORMATION = FALSE. SIGNALS 표에는 "No signals. Click + to add a signal."이 표시된다.

  3. NAME 칸에 WestCAN_NmPdu_WestZone을 입력한다.

  4. NM DATA INFORMATION을 TRUE로 바꾼다. 예제의 NM-PDU 18개는 모두 8바이트이고 NM VOTE INFORMATION FALSE, NM DATA INFORMATION TRUE이다.

    설정을 끝낸 NM-PDU

    그림 4-13. 설정을 끝낸 NM-PDU. ① NAME = WestCAN_NmPdu_WestZone, ② NM DATA INFORMATION = TRUE, ③ LENGTH (BYTES) = 8. NM VOTE INFORMATION은 FALSE 그대로 둔다.

  5. 예제의 NM-PDU는 아래 표의 18개이다. 앞에서 만든 WestCAN_NmPdu_WestZone을 뺀 17개를 같은 방법으로 만들고 Ctrl+S로 저장한다.

    참고. 이 18개를 만들고 저장하면 PNC 정의와 커넥터 PNC 속성의 NM 설정에서 미뤄 둔 단계를 할 수 있다. 이 장을 끝까지 마친 뒤 3장으로 한 번 돌아가 NM 노드마다 TX-NM-PDU-REFS와 RX-NM-PDU-REFS를 채운다. 전체 NM 값의 두 번째 표가 노드별 값이다.

    클러스터NM-PDU
    WestCANWestCAN_NmPdu_WestZone, WestCAN_NmPdu_DoorCtrl_FL, WestCAN_NmPdu_SeatCtrl_FL, WestCAN_NmPdu_MirrorAct_FL, WestCAN_NmPdu_WindowSw_FL
    RearCANRearCAN_NmPdu_SouthZone, RearCAN_NmPdu_ParkSensor_RR, RearCAN_NmPdu_TrailerModule, RearCAN_NmPdu_TailLamp_RR
    EastCANEastCAN_NmPdu_EastZone, EastCAN_NmPdu_DoorCtrl_FR, EastCAN_NmPdu_SeatCtrl_FR, EastCAN_NmPdu_MirrorAct_FR
    VLAN_BodyVLAN_Body_NmPdu_HPC, VLAN_Body_NmPdu_WestZone, VLAN_Body_NmPdu_EastZone
    VLAN_RearVLAN_Rear_NmPdu_HPC, VLAN_Rear_NmPdu_SouthZone

주의. 현재 버전에서는 NM 프레임을 Signal 편집기에서 만들 수 없다. CAN 프레임의 PDU REFERENCES 후보에는 I-Signal I-PDU(와 N-PDU)만 나오고 NM-PDU는 나오지 않기 때문이다. 예제의 NM 프레임 13개는 예제 프로젝트에 준비된 값이거나 ARXML 임포트의 결과이다. 이 장의 I-PDU Group 작업에는 NM 프레임이 필요하지 않으므로, 직접 만드는 프로젝트라면 NM 프레임 없이 그대로 진행한다. 아래 NM 프레임 살펴보기는 예제 화면으로 읽는다.

PDU REFERENCES의 후보 목록

그림 4-14. WestCAN_DoorStatus_FL의 PDU REFERENCES 후보. ① PDU REFERENCES 탭을 고른 동안 탭 줄 오른쪽 끝에 보이는 선택 상자, ② 펼쳐진 후보 목록. 후보는 이름 (길이, 신호 수) 형태(예: SeatPosition_FL_Pdu (8B, 2 sig))의 I-Signal I-PDU 16개뿐이고, 방금 만든 WestCAN_NmPdu_WestZone을 비롯한 NM-PDU는 하나도 없다. 목록 폭이 선택 상자만큼 좁아 긴 항목은 두 줄로 나뉜다.

나머지 프레임, PDU, 신호​

예제의 응용 CAN 프레임은 아래 표의 16개이다. 앞에서 만든 WestCAN_DoorStatus_FL(표의 두 번째 행)을 뺀 15개를 같은 방법으로 만든다. 프레임을 만들면 PDU가 함께 생기므로, 프레임 이름과 CAN ID를 넣고 PDU 이름, 길이, 주기를 맞춘 뒤 신호를 매핑한다.

  • ADDRESSING은 모두 STANDARD, DLC는 모두 8 (8 bytes), UNUSED BIT PATTERN은 모두 0이다. PDU 길이가 4, 2, 1바이트인 경우에도 프레임 DLC는 8이다.
  • PDU의 TRANSMISSION MODE는 모두 CYCLIC이다. 새 PDU의 기본값은 NONE이므로 PDU마다 직접 고친다.
  • 신호는 모두 TYPE UINT, BYTE-ORDER LITTLE-ENDIAN, FACTOR 1, OFFSET 0, MIN 0, MAX 0, INIT VALUE 0이다.

참고. 예제의 응용 프레임 16개는 모델에 CAN FD 프레임으로 표시되어 있지만, 현재 버전의 Signal 편집기에는 프레임 수준 CAN FD 필드가 없어 화면에서 확인하거나 바꿀 수 없다. 2장에서 컨트롤러를 CAN FD로 설정한 것과는 별개의 값이며, 이 장의 작업에는 영향이 없다.

프레임CAN IDPDUPDU 길이(B)주기(ms)신호 (START, LENGTH)
WestCAN_ComfortCmd0x300ComfortCmd_West_Pdu820LockCmd_FL(0, 2), WindowCmd_FL(2, 4), SeatMoveCmd_FL(8, 4), SeatHeatCmd_FL(12, 2)
WestCAN_DoorStatus_FL0x301DoorStatus_FL_Pdu850DoorOpen_FL(0, 1), DoorLock_FL(1, 2), WindowPos_FL(8, 8)
WestCAN_SeatPosition_FL0x302SeatPosition_FL_Pdu8100SeatPos_FL(0, 8), SeatHeat_FL(8, 2)
WestCAN_MirrorStatus0x303MirrorStatus_FL_Pdu4100MirrorFoldSts_FL(0, 2), MirrorTiltX_FL(8, 8), MirrorTiltY_FL(16, 8)
WestCAN_MirrorCmd0x304MirrorCmd_FL_Pdu2100MirrorFoldCmd_FL(0, 2), MirrorMoveCmd_FL(2, 4)
WestCAN_WindowSwitch0x305WindowSwitch_Pdu1100WindowSwUp(0, 1), WindowSwDown(1, 1), WindowSwAuto(2, 1)
EastCAN_ComfortCmd0x310ComfortCmd_East_Pdu820LockCmd_FR(0, 2), WindowCmd_FR(2, 4), SeatMoveCmd_FR(8, 4), SeatHeatCmd_FR(12, 2)
EastCAN_DoorStatus_FR0x311DoorStatus_FR_Pdu850DoorOpen_FR(0, 1), DoorLock_FR(1, 2), WindowPos_FR(8, 8)
EastCAN_SeatPosition_FR0x312SeatPosition_FR_Pdu8100SeatPos_FR(0, 8), SeatHeat_FR(8, 2)
EastCAN_MirrorStatus0x313MirrorStatus_FR_Pdu4100MirrorFoldSts_FR(0, 2), MirrorTiltX_FR(8, 8), MirrorTiltY_FR(16, 8)
EastCAN_MirrorCmd0x314MirrorCmd_FR_Pdu2100MirrorFoldCmd_FR(0, 2), MirrorMoveCmd_FR(2, 4)
RearCAN_ParkDistance0x401ParkDistance_Pdu850ParkDist_1(0, 8), ParkDist_2(8, 8), ParkDist_3(16, 8), ParkDist_4(24, 8), ParkSensorFault(32, 1)
RearCAN_TrailerCmd0x410TrailerCmd_Pdu850TrailerLampCmd(0, 8)
RearCAN_TrailerStatus0x411TrailerStatus_Pdu8100TrailerAttached(0, 1), TrailerLampFault(1, 4), TrailerBrakeLamp(5, 1)
RearCAN_TailLampStatus0x412TailLampStatus_Pdu1100TailLampSts(0, 4)
RearCAN_TailLampCmd0x413TailLampCmd_Pdu1100TailLampCmd(0, 4)

이 표에서 응용 CAN 프레임 16개, I-Signal I-PDU 16개, 신호 42개가 나온다. 여기에 NM-PDU 만들기의 NM-PDU 18개와 예제에 준비된 NM 프레임 13개를 더하면 아래 절의 화면과 같은 상태(프레임 29개, PDU 34개, 신호 42개)가 된다.

모두 입력했으면 Ctrl+S로 저장한다.

CAN 프레임 살펴보기​

  1. CAN 탭의 CAN FRAMES 목록에서 WestCAN_DoorStatus_FL을 클릭한다. 각 행 오른쪽에 CAN ID가 보이고, 목록 아래에 "29 items"가 표시된다(NM 프레임이 없는 프로젝트라면 "16 items"). 오른쪽 열에서 PREVIEW 탭을 클릭한다.

    CAN 탭에서 WestCAN_DoorStatus_FL 선택

    그림 4-15. CAN 탭. ① 프로토콜 탭 줄, ② 목록 행 WestCAN_DoorStatus_FL 0x301, ③ CAN ID = 0x301, ④ PDU REFERENCES 탭, ⑤ SIGNALS 표, ⑥ 선택된 PREVIEW 탭.

  2. CONFIGURATION에서 프레임 속성을 확인한 뒤, PDU REFERENCES 탭을 클릭해 프레임이 싣는 PDU를 확인한다.

    CONFIGURATION 섹션 확대

    그림 4-16. CONFIGURATION 확대. ① CAN ID = 0x301(라벨 오른쪽 DEC | HEX 전환, 기본 HEX), ② DLC = 8 (8 bytes), ③ PDU REFERENCES 탭. 표에 DoorStatus_FL_Pdu(LENGTH 8, SIGNALS 3)가 있고, 탭 줄 오른쪽 끝의 선택 상자에 DoorStatus_FL_Pdu (8B, 3 sig)가 보인다.

    필드값
    NAMEWestCAN_DoorStatus_FL
    ADDRESSINGSTANDARD
    CAN ID0x301
    DLC8 (8 bytes)
    UNUSED BIT PATTERN0
  3. 아래 SIGNALS 표에서 이 프레임의 PDU에 매핑된 신호를 확인한다. PREVIEW 탭(그림 4-15)에는 Byte 07 × 비트 70 격자에 신호가 색으로 표시되고, 오른쪽에 범례가 있다.

    NAMESTARTLENGTH
    DoorOpen_FL01
    DoorLock_FL12
    WindowPos_FL88

PDU 살펴보기​

  1. PDU 탭을 클릭한다. 목록 제목이 PDUS로 바뀌고 34개 항목이 나온다. 행 왼쪽의 IS 태그는 I-Signal I-PDU(16개), NM 태그는 NM-PDU(18개)이다. 행 오른쪽에는 길이(8B, 4B, 2B, 1B)가 붙는다.

  2. DoorStatus_FL_Pdu를 클릭한다.

    PDU 탭에서 DoorStatus_FL_Pdu 선택

    그림 4-17. PDU 탭. ① PDU 탭, ② DoorStatus_FL_Pdu(IS 태그), ③ LENGTH (BYTES) = 8, ④ CYCLE TIME (MS) = 50, ⑤ TRANSMISSION MODE = CYCLIC. UNUSED BIT PATTERN은 0이고, SIGNALS 표에는 신호 3개가 있다.

  3. 목록에서 NM 태그가 붙은 WestCAN_NmPdu_WestZone을 클릭한다. NM-PDU에는 NM VOTE INFORMATION과 NM DATA INFORMATION 필드가 있고, 신호는 없다.

    NM-PDU WestCAN_NmPdu_WestZone 선택

    그림 4-18. NM-PDU. ① WestCAN_NmPdu_WestZone, ② NM VOTE INFORMATION = FALSE, ③ NM DATA INFORMATION = TRUE. LENGTH (BYTES) 값은 8이고, SIGNALS 표에는 "No signals. Click + to add a signal."이 표시된다.

    참고. 예제의 NM-PDU 18개는 모두 8바이트이고 NM VOTE INFORMATION = FALSE, NM DATA INFORMATION = TRUE이다. 이 중 5개(VLAN_Body_NmPdu_*, VLAN_Rear_NmPdu_*)는 Ethernet VLAN용이라 CAN 프레임이 없다.

신호 살펴보기​

  1. SIGNAL 탭을 클릭한다. 목록 제목이 SIGNALS로 바뀌고 42개 항목이 나온다. 행 오른쪽에는 1bit, 2bit처럼 비트 길이가 붙는다.

  2. DoorOpen_FL을 클릭한다.

    SIGNAL 탭에서 DoorOpen_FL 선택

    그림 4-19. SIGNAL 탭. ① SIGNAL 탭, ② DoorOpen_FL(1bit), ③ BIT LENGTH = 1. TYPE은 UINT, FACTOR 1, OFFSET 0, MIN 0, MAX 0이고, INIT VALUE에는 boolean (1-bit) 설명과 값 0이 보인다. 오른쪽 패널은 SIGNAL GROUPS("No signal groups")이다.

NM 프레임 살펴보기​

NM 프레임은 예제 프로젝트에 준비되어 있다. 직접 만든 프로젝트에 NM 프레임이 없으면 이 절은 읽으며 화면 구성만 확인한다(NM-PDU 만들기의 주의 참조).

  1. CAN 탭을 클릭하고, 목록에서 WestCAN_NmFrame_WestZone(0x510)을 클릭한다. CAN 프레임 살펴보기에서 클릭한 PDU REFERENCES 탭이 그대로 선택되어 있다.

    NM 프레임 WestCAN_NmFrame_WestZone 선택

    그림 4-20. NM 프레임. ① 목록 행 WestCAN_NmFrame_WestZone 0x510, ② CAN ID = 0x510, ③ PDU REFERENCES 탭의 WestCAN_NmPdu_WestZone. NM-PDU를 가리키므로 LENGTH와 SIGNALS는 -로 표시된다.

    참고. NM 프레임을 선택하면 UNUSED BIT PATTERN 필드가 나타나지 않는다. 현재 버전의 표시 방식이며, 저장된 값에는 영향이 없다. PREVIEW 탭에는 NM-PDU의 빈 8바이트 격자가 보인다. NM-PDU에는 신호가 없기 때문이다.

예제의 NM 프레임은 클러스터마다 0x510부터 노드 순서대로 번호를 붙였다. 이름은 {cluster}_NmFrame_{node}이고, 각 프레임은 같은 노드의 {cluster}_NmPdu_{node}를 싣는다.

클러스터0x5100x5110x5120x5130x514
WestCANWestZoneDoorCtrl_FLSeatCtrl_FLMirrorAct_FLWindowSw_FL
RearCANSouthZoneParkSensor_RRTrailerModuleTailLamp_RR—
EastCANEastZoneDoorCtrl_FRSeatCtrl_FRMirrorAct_FR—

설계 근거. 3장에서 Zone의 CAN 커넥터에 PNC WAKEUP CAN ID 0x500, PNC WAKEUP CAN ID MASK 0x700을 입력했다. 이 조합은 0x500..0x5FF 블록의 프레임을 웨이크업 프레임으로 본다. 위 NM 프레임(0x510..0x514)은 모두 이 블록 안에 있으므로 웨이크업 프레임으로 인식된다. AUTOSAR가 NM CAN ID 대역을 정해 두지는 않으며, 이 대역은 OEM 네트워크 설계 관례를 따른 것이다.

신호 추가 연습​

신호 만들어 PDU에 매핑하기의 조작을 이미 신호가 들어 있는 PDU에서 다시 확인하는 절이다. 여기서 추가하는 ChildLock_FL은 예제에 없는 신호이므로, 연습이 끝나면 저장하지 않고 되돌린다. 앞 절에서 만든 내용은 이미 Ctrl+S로 저장했으므로 여기서 버려지는 것은 연습으로 추가한 신호뿐이다.

  1. CAN 탭에서 WestCAN_DoorStatus_FL을 클릭하고, 오른쪽 열의 PREVIEW 탭을 클릭한다.

  2. SIGNALS 제목 바로 오른쪽의 +(툴팁 Add Signal)를 클릭한다.

    SIGNALS 표의 + 버튼

    그림 4-21. SIGNALS 표 확대. ① +(Add Signal).

  3. 4행에 WestCAN_DoorStatus_FL_Sig가 추가된다. 이름은 프레임 이름 뒤에 _Sig를 붙여 자동으로 만들어진다. 기본값은 START 16, LENGTH 8, MAX 255이다. PDU REFERENCES 탭의 SIGNALS가 4로 바뀌고, 탭 이름 PNC:Signal 옆에 저장 안 됨 점이 생긴다.

    신호를 추가한 직후

    그림 4-22. + 버튼을 누른 직후. ① 새 행 WestCAN_DoorStatus_FL_Sig, ② PREVIEW의 Byte 2 전체가 새 신호 색으로 표시된다.

  4. 새 행의 NAME 칸을 클릭한다. 입력 칸이 열리면 ChildLock_FL을 입력하고 Enter를 누른다. Esc를 누르면 입력이 취소된다.

    NAME 칸에 ChildLock_FL 입력

    그림 4-23. ① NAME 입력 칸에 ChildLock_FL을 입력하는 중.

  5. LENGTH 칸을 클릭하고 2를 입력한 뒤 Enter를 누른다. PREVIEW에서 Byte 2의 비트 1~0만 ChildLock_FL 색으로 바뀐다.

    이름과 길이를 바꾼 결과

    그림 4-24. ① NAME = ChildLock_FL, ② LENGTH = 2, ③ PREVIEW의 Byte 2 비트 1~0.

    주의. LENGTH를 바꿔도 MAX는 255로 남는다. 필요하면 MAX도 직접 고친다. 또 새 신호는 비어 있는 첫 비트가 아니라 마지막 신호 다음 위치(여기서는 START 16)에 놓인다. DoorStatus_FL_Pdu는 비트 3~7이 비어 있지만 자동으로 그 자리에 들어가지 않으므로, 원하는 위치가 있으면 START를 직접 입력한다.

    참고. Ctrl+Z로도 추가한 신호를 되돌릴 수 있다. 다시 하기는 Ctrl+Shift+Z이다.

  6. 연습을 마쳤으면 행 오른쪽 끝의 ×(툴팁 Remove Signal)를 클릭해 ChildLock_FL 행을 지운다.

  7. PNC:Signal 탭에 마우스를 올리면 나타나는 ×(툴팁 Close)를 클릭해 탭을 닫는다. Unsaved Changes 창이 나타나면 Don't Save를 클릭한다. 연습 내용은 저장되지 않고 모두 버려진다.

    주의. Signal 편집기를 저장 안 됨 상태(탭 이름 옆 점)로 열어 둔 채 다음 절에서 PNC 대화상자를 저장하면, PAIO는 열려 있는 Signal 편집기에 그룹을 반영하면서 그 편집기의 내용을 함께 저장한다. 연습으로 바꾼 내용이 저장되지 않도록 PNC 대화상자를 열기 전에 반드시 탭을 저장하지 않고 닫는다.

I-PDU Group 만들기​

I-PDU Group은 PNC 대화상자에서 만든다. 대표로 PNC_Comfort의 WestCAN 수신 그룹 WestCAN_PNC_Comfort_Rx를 만들고 DoorStatus_FL_Pdu를 넣어 본다.

그룹 만들기​

  1. 왼쪽 EDITOR 뷰의 DESIGN 아래에서 System을 클릭해 System 편집기(탭 PNC:System)를 연다.

  2. 캔버스 왼쪽 가장자리의 세로 아이콘 줄에서 두 번째(아래쪽)의 Partial Network (PNC) 아이콘을 클릭한다(그림 3-1). Partial Network (PNC) Configuration 대화상자가 열린다.

  3. PARTIAL NETWORKS 목록에서 PNC 17 PNC_Comfort가 선택되어 있는지 확인한다. 가운데 PNC GROUPS는 비어 있다.

    빈 PNC GROUPS

    그림 4-25. PNC 대화상자. 오른쪽 패널은 PDU GROUPS / MATRIX / NM VECTOR 탭으로 나뉘며 PDU GROUPS가 선택되어 있다. ① PNC 17 PNC_Comfort, ② PNC GROUPS 섹션(열 PDU GROUP / DIRECTION / PDUS). "No PNC group bound yet. Click [+] to create one, or assign a PDU on the PDU GROUPS table (groups are generated on first use)."가 표시된다. ③ +(툴팁 Add I-PDU group to this PNC).

  4. PNC GROUPS 머리글 오른쪽의 + 버튼을 클릭한다. 메뉴에서 New Rx group... 항목을 클릭한다.

    New Rx group 메뉴

    그림 4-26. + 메뉴. ① New Rx group.... 아래의 New Tx group... 항목은 송신 그룹을 만들 때 쓴다.

  5. New Rx I-PDU group 입력 창이 열린다. WestCAN_PNC_Comfort_Rx를 입력하고 OK를 클릭한다.

    New Rx I-PDU group 입력 창

    그림 4-27. 입력 창. 안내 문구는 "I-SIGNAL-I-PDU-GROUP SHORT-NAME (identity, AUTOSAR identifier)."이다. ① 이름 입력 칸, ② OK.

    참고. 입력 칸의 자리 표시는 Cluster_PNC_Rx이다. PAIO는 이름이 AUTOSAR 식별자 형식인지와 중복인지만 검사하고, 아래 명명 규약을 강제하지 않는다. 이름은 규약에 맞춰 직접 입력한다.

  6. PNC GROUPS에 WestCAN_PNC_Comfort_Rx | RX | 0 PDUs 행이 생기고 자동으로 펼쳐진다. 대화상자 제목 앞에 ● 표시가 붙는다.

    그룹이 만들어진 모습

    그림 4-28. ① 새 그룹 행과 상세. GROUP 섹션에 PDU GROUP(이름)과 DIRECTION(RX / TX)이 있고, CONTAINED PDUS에는 "No contained element. Click [+] to reference a PDU, group or NM-PDU."가 표시된다. ② CONTAINED PDUS의 +.

    참고. PNC GROUPS의 + 버튼으로 만든 그룹은 만들 때 선택되어 있던 PNC에 바로 묶인다. 다른 PNC의 그룹을 만들려면 먼저 PARTIAL NETWORKS 목록에서 그 PNC를 선택한다.

그룹에 PDU 넣기​

  1. CONTAINED PDUS 머리글 오른쪽의 +(툴팁 Add contained element)를 클릭한다. 새 행이 생긴다. 열은 # / KIND / REFERENCE / FRAME / FRAME ID / CLUSTER이고, KIND 기본값은 I-SIGNAL-I-PDU이다. PDU를 고르기 전까지 REFERENCE 칸은 빨간색으로 표시된다(툴팁 Reference is required).

  2. 새 행의 REFERENCE 칸을 클릭하고 DoorStatus를 입력한다. 후보가 DoorStatus_FR_Pdu, DoorStatus_FL_Pdu로 좁혀진다.

    REFERENCE 후보 고르기

    그림 4-29. ① REFERENCE 칸에 DoorStatus 입력, ② 후보 DoorStatus_FL_Pdu. KIND 칸은 폭이 좁아 I-SIGNAL-I-P…로 잘려 보인다.

  3. DoorStatus_FL_Pdu를 클릭한다. FRAME, FRAME ID, CLUSTER가 자동으로 채워지고, 그룹 행의 PDUS가 1 PDU로 바뀐다. 오른쪽 PDU GROUPS 표에서는 DoorStatus_FL_Pdu 행이 강조된다.

    PDU를 넣은 결과

    그림 4-30. ① CONTAINED PDUS 행: DoorStatus_FL_Pdu / WestCAN_DoorStatus_FL / CAN 0x301 / WestCAN, ② 오른쪽 PDU GROUPS 표의 DoorStatus_FL_Pdu 행.

  4. Ctrl+S를 눌러 저장한다. 제목 앞의 ● 표시가 사라진다.

참고. PNC 대화상자에서 저장하면 그룹 자체는 SIGNAL 모델(SIGNAL.io.model)에, PNC와 그룹의 연결은 SYSTEM 모델(SYSTEM.io.model)에 기록된다. System 편집기 탭(PNC:System)에는 저장 안 됨 점이 생기지 않는다.

주의. KIND = I-SIGNAL-I-PDU의 REFERENCE 후보에는 I-Signal I-PDU뿐 아니라 CAN NM-PDU(WestCAN_NmPdu_* 등)도 섞여 나온다. NM-PDU는 PNC 그룹에 넣지 않는다(왜 이렇게 설계하는가 참조). 이름이 _Pdu로 끝나는 응용 PDU만 고른다.

주의. 그룹 행 오른쪽 끝의 × 버튼은 PNC와의 연결만 끊는 것이 아니라 그룹 자체를 삭제한다. 다른 PNC에도 묶인 그룹이면 삭제 확인 창이 먼저 나타난다.

나머지 그룹 만들기​

같은 방법으로 아래 표의 그룹을 모두 만들고 PDU를 넣는다.

  • 먼저 앞에서 만든 WestCAN_PNC_Comfort_Rx에 나머지 PDU 3개(SeatPosition_FL_Pdu, MirrorStatus_FL_Pdu, WindowSwitch_Pdu)를 더 넣는다. 그룹 행을 클릭해 펼친 뒤 CONTAINED PDUS의 + 버튼을 PDU마다 한 번씩 누른다.
  • 수신 그룹은 New Rx group..., 송신 그룹은 New Tx group... 항목으로 만든다.
  • 그룹을 만들기 전에 PARTIAL NETWORKS 목록에서 해당 PNC를 선택한다.
  • RearCAN_PNC_ParkAssist_Tx는 그룹만 만들고 PDU를 넣지 않는다.
PNC그룹DIRECTIONCONTAINED PDUS
PNC 17 PNC_ComfortWestCAN_PNC_Comfort_RxRXDoorStatus_FL_Pdu, SeatPosition_FL_Pdu, MirrorStatus_FL_Pdu, WindowSwitch_Pdu
PNC 17 PNC_ComfortWestCAN_PNC_Comfort_TxTXComfortCmd_West_Pdu, MirrorCmd_FL_Pdu
PNC 17 PNC_ComfortEastCAN_PNC_Comfort_RxRXDoorStatus_FR_Pdu, SeatPosition_FR_Pdu, MirrorStatus_FR_Pdu
PNC 17 PNC_ComfortEastCAN_PNC_Comfort_TxTXComfortCmd_East_Pdu, MirrorCmd_FR_Pdu
PNC 18 PNC_ParkAssistRearCAN_PNC_ParkAssist_RxRXParkDistance_Pdu
PNC 18 PNC_ParkAssistRearCAN_PNC_ParkAssist_TxTX(없음)
PNC 19 PNC_TrailerRearCAN_PNC_Trailer_RxRXTrailerStatus_Pdu, TailLampStatus_Pdu
PNC 19 PNC_TrailerRearCAN_PNC_Trailer_TxTXTrailerCmd_Pdu, TailLampCmd_Pdu

모두 입력했으면 Ctrl+S로 저장하고 Close로 닫는다.

완성 화면​

완성 예제에서 Signal 편집기와 PNC 대화상자는 다음과 같이 보인다.

완성 예제의 Signal 편집기

그림 4-31. 완성 예제의 Signal 편집기. ① CAN FRAMES 목록(29개). 선택한 WestCAN_ComfortCmd(0x300)는 ComfortCmd_West_Pdu를 싣고, 신호는 LockCmd_FL(START 0, LENGTH 2), WindowCmd_FL(2, 4), SeatMoveCmd_FL(8, 4), SeatHeatCmd_FL(12, 2)이다. PREVIEW에는 이 신호들이 Byte 0과 Byte 1에 표시된다.

PNC_Comfort의 PNC GROUPS

그림 4-32. 완성 예제의 PNC 17 PNC_Comfort. ① PNC GROUPS: WestCAN_PNC_Comfort_Rx(RX, 4 PDUs), WestCAN_PNC_Comfort_Tx(TX, 2 PDUs), EastCAN_PNC_Comfort_Rx(RX, 3 PDUs), EastCAN_PNC_Comfort_Tx(TX, 2 PDUs). VIRTUAL FUNCTION CLUSTERS (VFC), PHYSICAL CHANNELS, SERVICE INSTANCES와 그 아래의 WAKEUP FRAMES는 PNC 다이얼로그 — PNC별 바인딩에서 채운다.

그룹 행을 클릭하면 펼쳐져 CONTAINED PDUS를 볼 수 있다.

WestCAN_PNC_Comfort_Rx의 CONTAINED PDUS

그림 4-33. WestCAN_PNC_Comfort_Rx를 펼친 모습. ① CONTAINED PDUS 4행: DoorStatus_FL_Pdu(CAN 0x301), SeatPosition_FL_Pdu(CAN 0x302), MirrorStatus_FL_Pdu(CAN 0x303), WindowSwitch_Pdu(CAN 0x305). 모두 CLUSTER WestCAN이다.

PNC_ParkAssist의 PNC GROUPS

그림 4-34. 완성 예제의 PNC 18 PNC_ParkAssist. ① PNC 18 PNC_ParkAssist, ② PNC GROUPS: RearCAN_PNC_ParkAssist_Rx(RX, 1 PDU), RearCAN_PNC_ParkAssist_Tx(TX, 0 PDUs).

명명 규약​

PAIO는 I-PDU Group의 SHORT-NAME을 구조에서 유도하는 규약을 쓴다. ARXML 임포트와 익스포트에서 같은 규약으로 정규화되므로, 예제도 이 이름을 그대로 쓴다.

형태이름예예제의 내용
컨테이너{cluster}_Rx / {cluster}_TxRearCAN_RxRearCAN_PNC_ParkAssist_Rx, RearCAN_PNC_Trailer_Rx, RearCAN_NoPnc_Rx를 담는다.
PNC 리프{cluster}_{pnc}_Rx / {cluster}_{pnc}_TxWestCAN_PNC_Comfort_Rx그 버스에서 그 PNC에 속한 PDU를 담는다.
비참여 리프{cluster}_NoPnc_Rx / {cluster}_NoPnc_TxWestCAN_NoPnc_TxPNC에 속하지 않는 PDU를 담는다. 이 예제는 모든 응용 PDU가 PNC에 속하므로 비어 있다.
NM-PDU{cluster}_NmPdu_{node}WestCAN_NmPdu_WestZone노드마다 1개, 8바이트
NM 프레임{cluster}_NmFrame_{node}WestCAN_NmFrame_WestZone0x510부터 노드 순서대로
  • 방향(_Rx / _Tx)은 Zone(게이트웨이) 관점이다. 말단 ECU가 보내는 상태 PDU(예: DoorStatus_FL_Pdu)는 Zone이 받으므로 _Rx, Zone이 말단 ECU로 내려보내는 명령 PDU(예: ComfortCmd_West_Pdu)는 _Tx이다.
  • PNC에 묶는 것은 PNC 리프 그룹뿐이다. 컨테이너와 NoPnc 그룹은 어느 PNC에도 묶지 않는다.

컨테이너 그룹과 NoPnc 그룹은 PNC GROUPS에 나타나지 않는다. PNC GROUPS는 선택한 PNC에 묶인 그룹만 보여 주기 때문이다. 완성 예제에서는 CONTAINED PDUS에 행을 추가하고 KIND를 GROUP으로 바꾼 뒤 REFERENCE에 이름을 입력하면, 후보 목록에서 이 그룹들의 이름을 볼 수 있다.

GROUP 후보로 보이는 NoPnc 그룹

그림 4-35. 완성 예제에서 KIND = GROUP 행의 REFERENCE에 NoPnc를 입력한 모습. ① REFERENCE 칸, ② 후보 WestCAN_NoPnc_Rx, WestCAN_NoPnc_Tx, EastCAN_NoPnc_Rx, EastCAN_NoPnc_Tx, RearCAN_NoPnc_Rx, RearCAN_NoPnc_Tx. 이 화면은 확인용이므로 후보를 고르지 않고 Esc로 닫은 뒤, 행 오른쪽의 ×(툴팁 Remove contained element)로 행을 지운다.

주의. 현재 PAIO에는 컨테이너 그룹과 NoPnc 그룹을 만드는 전용 화면이 없다. PNC GROUPS의 + 버튼으로 만들면 선택한 PNC에 묶이므로, 이 방법으로 컨테이너나 NoPnc 그룹을 만들지 않는다. 두 종류는 ARXML 임포트로 들어오는 값이며, 완성 예제에도 그렇게 들어 있다. 직접 만드는 프로젝트에는 없어도 된다. PNC에 묶이는 것은 리프 그룹뿐이므로, 없어도 뒤 장의 검증 결과와 PNC에 묶인 그룹의 내용은 같다. 익스포트한 ARXML의 <I-SIGNAL-I-PDU-GROUP> 개수만 달라진다. 그림 4-35는 완성 예제의 확인용 화면이다.

참고. 이 장에서 직접 만들 수 없는 NM 프레임 13개와 컨테이너·NoPnc 그룹을 포함해, 따라 만든 프로젝트가 완성 예제와 달라지는 점은 부록 — 직접 만든 프로젝트와 완성 예제의 차이에 한 표로 정리되어 있다.

왜 이렇게 설계하는가​

설계 근거.

  • PNC가 깨어나거나 잠들 때 실제로 시작하고 멈추는 것은 I-PDU Group이다. 그래서 버스마다 PNC별 Rx/Tx 리프 그룹을 두고, 컨테이너 그룹이 그 버스의 리프를 묶는다. PNC에 속하지 않는 PDU는 NoPnc 그룹에 남긴다.
  • NM-PDU는 PNC 그룹에 넣지 않는다. NM은 PNC가 켜져 있든 꺼져 있든 항상 동작해야 하기 때문이다.
  • 좌/우 편의 기능 명령 신호는 _FL / _FR로 나누어 따로 두었다. 같은 I-Signal을 두 PDU에 매핑하면 constr_3514(I-Signal당 ISignalToIPduMapping 1개)를 위반한다.

확인하기​

  • Signal 편집기의 CAN 탭에 프레임 29개(NM 프레임을 만들 수 없는 프로젝트라면 응용 프레임 16개), PDU 탭에 34개(IS 16, NM 18), SIGNAL 탭에 42개가 있다.
  • PNC:Signal 탭 이름 옆에 저장 안 됨 점이 없다.
  • WestCAN_DoorStatus_FL의 CAN ID가 0x301이고, PDU REFERENCES 탭에 DoorStatus_FL_Pdu(길이 8, 신호 3)가 있다.
  • DoorStatus_FL_Pdu의 **CYCLE TIME (MS)**가 50이고 TRANSMISSION MODE가 CYCLIC이다.
  • 연습으로 추가한 ChildLock_FL이 SIGNALS 표에 남아 있지 않다.
  • PNC 대화상자에서 PNC 17 PNC_Comfort의 PNC GROUPS가 그림 4-32와 같이 4행이다.
  • PNC 18 PNC_ParkAssist의 PNC GROUPS가 RearCAN_PNC_ParkAssist_Rx(1 PDU), RearCAN_PNC_ParkAssist_Tx(0 PDUs)이다.
  • PNC 19 PNC_Trailer의 PNC GROUPS가 RearCAN_PNC_Trailer_Rx(2 PDUs), RearCAN_PNC_Trailer_Tx(2 PDUs)이다.
  • 어느 PNC 그룹의 CONTAINED PDUS에도 NM-PDU(*_NmPdu_*)가 없다.
  • PNC 대화상자 제목 앞에 ● 표시가 없다.
  • 3장의 NM 설정으로 돌아가 NM 노드마다 TX-NM-PDU-REFS 1개와 RX-NM-PDU-REFS를 채웠다.

다음 단계​

3장의 NM 설정으로 돌아가 NM 노드의 NM-PDU 참조를 먼저 채운다. 그다음 인터페이스와 SOME/IP 서비스에서 SOME/IP 서비스 인터페이스와 서비스 인스턴스를 만들고, PNC가 참조할 서비스를 준비한다.