본문으로 건너뛰기

CAN 버스

이 장에서 할 일​

이 장에서는 ECU 속성을 마친 노드 ECU 와 ZONE 을 CAN 버스로 잇는다. 두 노드에 CAN 컨트롤러(CanController, CanCommController)와 CAN 커넥터(CanConnector)를 하나씩 만들고, 커넥터의 + 배지로 CAN 클러스터 CanCluster 를 만들어 물리 채널 PhysicalChannel 에 두 커넥터를 연결한다. NM(네트워크 관리)과 TP(전송 프로토콜)는 새 클러스터에서 꺼져 있고, Communication Cluster Configuration 창에서 클러스터마다 켠다. 참조 설계에는 둘 다 없으므로, 이 창에서는 둘 다 꺼져 있는지 확인만 한다.

이 장을 마치면 System 편집기에 ECU 와 ZONE 을 CanCluster 로 이은 설계가 저장되고, VALIDATION 패널에는 No validation issues. 가 보인다.

시작하기 전에​

  • ECU 속성을 마친 상태에서 시작한다. 노드 네 개(ECU, ZONE, SLAVE_ECU, HPC)에는 아직 컨트롤러, 커넥터, 클러스터가 없고, VALIDATION 패널은 No validation issues. 이다.
  • 탭 TopologyDesign:System 이 열려 있지 않으면 EDITOR 뷰의 DESIGN 아래에서 System 을 클릭한다.
  • VALIDATION 패널이 열려 있으면 푸터의 V 아이콘으로 닫아 둔다. 그림은 패널을 닫은 화면이다.

이 장에서 입력하는 값은 다음과 같다. 채널 이름 PhysicalChannel 은 클러스터를 만들 때 자동으로 붙는 기본값이라 입력하지 않는다.

어디서항목값
CAN CONTROLLER 패널 (노드 ECU)NAMECanController
CAN CONTROLLER 패널 (노드 ECU)SYNC JUMP WIDTH, PROPAGATION SEGMENT, TIME SEGMENT 1, TIME SEGMENT 2네 칸 모두 0
CAN CONTROLLER 패널 (노드 ZONE)NAMECanCommController
CAN CONNECTOR 패널 (노드 ECU)NAME / CONTROLLERCanConnector / CanController 선택
CAN CONNECTOR 패널 (노드 ZONE)NAME / CONTROLLERCanConnector / CanCommController 선택
CAN CLUSTER 패널NAMECanCluster
CAN CLUSTER 패널PHYSICAL CHANNELS › CHANNEL NAMEPhysicalChannel (기본값, 그대로 둔다)
Communication Cluster Configuration 창NM CLUSTER, TRANSPORT PROTOCOL, TIME DOMAIN 탭꺼짐 (기본값, 그대로 둔다)

참고. 속성 패널의 입력란은 칸에서 빠져나와야 값이 확정된다. 이 장에서는 속성 패널에 값을 입력한 뒤 Tab 키를 누른다.

CAN 컨트롤러 만들기​

컨트롤러 추가하기​

  1. 캔버스에서 노드 ECU 안쪽의 빈 곳을 마우스 오른쪽 버튼으로 클릭한다. 메뉴에 Add Connector, Add Controller, Add Ethernet Switch, Add Gateway, SW Mapping, Extract ECU, Delete 가 보인다.

  2. Add Controller 에 마우스를 올리고 하위 메뉴에서 CAN 을 클릭한다.

    노드 ECU 의 우클릭 메뉴에서 Add Controller › CAN 을 고르는 화면

    그림 3-1. 노드 ECU 의 우클릭 메뉴. ① Add Controller, ② 하위 메뉴의 CAN, ③ 오른쪽 클릭한 노드 ECU. Add Controller 의 하위 메뉴는 Ethernet, CAN, LIN Master, LIN Slave 이다.

  3. 노드 안에 작은 사각형이 생긴다. 이것이 CAN 컨트롤러다. 새 컨트롤러는 저절로 선택되지 않으므로 이 사각형을 클릭한다. 오른쪽 속성 패널의 제목은 CAN CONTROLLER 이고, NAME 은 기본 이름 ECU_Can_Controller_0 이다.

    기본 이름의 CAN 컨트롤러

    그림 3-2. 새 CAN 컨트롤러. ① 노드 안의 컨트롤러, ② 패널 제목 CAN CONTROLLER, ③ NAME = ECU_Can_Controller_0, ④ CAN 이 켜진 CAN / CAN FD 토글, ⑤ BIT TIMING CONFIGURATION 의 빈 칸 네 개.

참고. 캔버스의 컨트롤러 사각형에는 이름이 보이지 않는다. 지금 어느 컨트롤러를 고치는지는 패널 제목과 NAME 칸으로 확인한다.

주의. 오른쪽 클릭은 노드 안쪽의 빈 곳에 한다. 노드 이름이나 이미 놓인 컨트롤러, 커넥터 위를 오른쪽 클릭하면 다른 메뉴가 열릴 수 있다.

이름과 비트 타이밍 입력하기​

  1. NAME 칸의 ECU_Can_Controller_0 을 지우고 CanController 를 입력한 뒤 Tab 키를 누른다.

  2. CAN CONTROLLER CONFIGURATION 머리글 오른쪽의 토글은 CAN 이 켜진 그대로 둔다. CAN FD 는 누르지 않는다.

  3. BIT TIMING CONFIGURATION 의 SYNC JUMP WIDTH, PROPAGATION SEGMENT, TIME SEGMENT 1, TIME SEGMENT 2 에 차례로 0 을 입력하고, 칸마다 Tab 키를 누른다. 빈 칸에는 안내문 Unsigned Integer (0..4294967295) 가 보인다.

    이름과 비트 타이밍을 입력한 CAN 컨트롤러

    그림 3-3. 값을 입력한 뒤. ① 컨트롤러, ② 네 칸 모두 0 인 BIT TIMING CONFIGURATION, ③ NAME = CanController. 포커스가 넘어간 MAX TIME QUANTA/BIT 라벨이 파랗게 보인다.

BIT TIMING REQUIREMENTS 의 여섯 칸(MAX TIME QUANTA/BIT 등)은 비워 둔다. CAN 이 켜져 있으면 CAN FD 용 입력란은 패널에 나오지 않는다.

ZONE 에도 컨트롤러 만들기​

  1. 노드 ZONE 안쪽의 빈 곳을 오른쪽 클릭하고 Add Controller › CAN 을 클릭한다. ZONE 안에 컨트롤러 사각형이 생긴다. 이 사각형을 클릭하면 CAN CONTROLLER 패널의 NAME 에 ZONE_Can_Controller_0 이 보인다.

  2. NAME 에 CanCommController 를 입력하고 Tab 키를 누른다. 비트 타이밍 네 칸은 비워 둔다.

    노드 ZONE 의 CAN 컨트롤러

    그림 3-4. 노드 ZONE 의 CAN 컨트롤러. ① ZONE 안의 컨트롤러, ② NAME = CanCommController. 선택이 풀린 ECU 의 컨트롤러는 초록 테두리로 보인다.

두 컨트롤러의 값을 모으면 다음과 같다.

노드기본 이름NAMECAN / CAN FD비트 타이밍 네 칸
ECUECU_Can_Controller_0CanControllerCAN0, 0, 0, 0
ZONEZONE_Can_Controller_0CanCommControllerCAN비워 둔다

CAN 커넥터 만들기​

커넥터 추가하기​

  1. 노드 ECU 안쪽의 빈 곳을 오른쪽 클릭한다.

  2. Add Connector 에 마우스를 올리고 하위 메뉴에서 CAN 을 클릭한다. 하위 메뉴는 Ethernet, CAN, LIN 이다.

    노드 ECU 의 우클릭 메뉴에서 Add Connector › CAN 을 고르는 화면

    그림 3-5. 노드 ECU 의 우클릭 메뉴. ① Add Connector, ② 하위 메뉴의 CAN. 오른쪽 클릭하면 노드 ECU 가 선택되므로 패널에는 ECU 패널이 보인다. CONNECTORS 는 No connectors 이고 CONTROLLERS 에는 CanController 가 있다.

  3. 노드 ECU 의 아래 가장자리에 커넥터 사각형이 생기고, 그 아래에 초록 + 배지가 붙는다. 커넥터도 저절로 선택되지 않으므로 커넥터 사각형을 클릭한다. 패널 제목은 CAN CONNECTOR 이고, NAME 은 ECU_Can_Connector_0, CONTROLLER 는 Select controller..., CONNECTED CHANNEL 은 (None) 이다. CONTROLLER 는 필수 입력란이라, 비어 있는 동안 라벨이 빨갛고 안내문 Controller is required 가 보이며, 푸터의 V 아이콘에 빨간 배지 1 이 붙는다.

    기본 이름의 CAN 커넥터

    그림 3-6. 새 CAN 커넥터. ① 노드 아래 가장자리의 커넥터, ② NAME = ECU_Can_Connector_0, ③ 빨간 라벨과 Controller is required 가 보이는 CONTROLLER = Select controller..., ④ CONNECTED CHANNEL = (None). 커넥터 아래에 초록 + 배지가 보이고, 푸터의 V 아이콘에 배지 1 이 붙어 있다.

CAN CONNECTOR 패널에는 이 밖에 DESCRIPTION, PARTIAL NETWORK, TX FRAMES, RX FRAMES 가 있다. 이 장에서는 NAME 과 CONTROLLER 만 쓴다.

이름과 컨트롤러 지정하기​

  1. NAME 에 CanConnector 를 입력하고 Tab 키를 누른다.

  2. CONTROLLER 칸을 클릭한다. 검색칸 Type to search... 와 목록이 열린다. 목록에는 같은 노드의 CAN 컨트롤러 CanController 하나만 있다.

  3. CanController 를 클릭한다. 캔버스에 커넥터와 컨트롤러를 잇는 주황 선이 생긴다. CONTROLLER 의 빨간 표시와 V 아이콘의 배지가 사라진다.

    CONTROLLER 목록을 연 CAN 커넥터

    그림 3-7. CONTROLLER 목록을 연 화면. ① 목록 항목 CanController, ② NAME = CanConnector, ③ 아직 컨트롤러를 고르지 않아 빨갛게 보이는 CONTROLLER 라벨.

ZONE 에도 커넥터 만들기​

  1. 노드 ZONE 안쪽의 빈 곳을 오른쪽 클릭하고 Add Connector › CAN 을 클릭한다. ZONE 의 아래 가장자리에 커넥터 사각형이 생긴다. 이 사각형을 클릭하면 CAN CONNECTOR 패널의 NAME 에 ZONE_Can_Connector_0 이 보인다.

  2. NAME 에 CanConnector 를 입력하고 Tab 키를 누른다.

  3. CONTROLLER 목록에서 CanCommController 를 클릭한다. 목록 항목은 이것 하나뿐이다.

    노드 ZONE 의 CAN 커넥터

    그림 3-8. 노드 ZONE 의 CAN 커넥터. ① ZONE 의 커넥터, ② NAME = CanConnector, ③ CONTROLLER = CanCommController. 두 노드 모두 커넥터와 컨트롤러가 주황 선으로 이어져 있다. 그림에서는 ZONE 의 컨트롤러가 커넥터 바로 위에 있어 둘 사이의 선이 아주 짧다.

두 커넥터의 값을 모으면 다음과 같다.

노드기본 이름NAMECONTROLLER
ECUECU_Can_Connector_0CanConnectorCanController
ZONEZONE_Can_Connector_0CanConnectorCanCommController

참고. 두 커넥터의 이름은 똑같이 CanConnector 이다. 커넥터는 노드 안에 속하므로 노드가 다르면 이름이 같아도 된다. 클러스터 패널에서는 ZONE/CanConnector, ECU/CanConnector 처럼 노드 이름을 붙여 구별한다.

CAN 클러스터 만들기​

ZONE 커넥터에서 클러스터 만들기​

클러스터를 만든 쪽의 커넥터가 채널의 첫 번째 커넥터가 된다. 참조 설계의 순서(ZONE, ECU)와 맞추려고 ZONE 의 커넥터에서 클러스터를 만든다.

  1. 노드 ZONE 의 CanConnector 아래에 있는 초록 + 배지를 클릭한다.

  2. 열린 메뉴에서 Create CommunicationCluster [Can] 을 클릭한다. 메뉴 항목은 이것 하나뿐이다.

    + 배지 메뉴의 Create CommunicationCluster [Can]

    그림 3-9. ZONE 커넥터의 + 배지 메뉴. ① + 배지, ② Create CommunicationCluster [Can].

  3. ZONE 아래에 클러스터 사각형이 생기고, 사각형 밑에 이름 CanCluster_0 이 보인다. 화면에서 보이지 않으면 캔버스 아래 툴바의 Fit to View 를 클릭한다.

  4. 클러스터 사각형을 클릭한다. 패널 제목은 CAN CLUSTER 이고, NAME 은 CanCluster_0 이다.

    기본 이름의 CAN 클러스터

    그림 3-10. 새 CAN 클러스터. ① 클러스터 사각형, ② NAME = CanCluster_0, ③ 버튼 열 개 가운데 켜진 것이 없는 PROTOCOL › BAUDRATE (ARBITRATION, KBPS), ④ 기본값 PhysicalChannel 이 들어 있는 CHANNEL NAME. Connected Connectors (1) 아래에 ZONE/CanConnector 가 보인다. 사각형 밑 이름의 끝부분은 속성 패널에 가려 있다.

  5. NAME 에 CanCluster 를 입력하고 Tab 키를 누른다. 사각형 밑의 이름도 CanCluster 로 바뀐다. PROTOCOL, BUS-OFF RECOVERY, CHANNEL NAME 은 그대로 둔다.

참고. BAUDRATE (ARBITRATION, KBPS) 의 버튼은 저장한 뒤 클러스터를 다시 선택해도 하나도 켜져 있지 않지만, 저장된 클러스터에는 보오레이트 500000 이 들어간다. 참조 설계의 클러스터에는 보오레이트가 없다. 익스포트 결과의 차이는 ARXML 익스포트에서 다룬다.

참고. 참조 설계의 CanCluster 에는 프로토콜 이름 PROTOCOL-NAME = CAN-FD 가 있다. CAN CLUSTER 패널의 PROTOCOL 섹션에는 PROTOCOL NAME 칸이 있지만 이 튜토리얼에서는 비워 두므로, 이 값은 만들어지지 않는다. 컨트롤러 패널의 CAN / CAN FD 토글은 이것과 다르다. 토글은 컨트롤러의 CAN FD 설정이고, 참조 설계의 CanController 에는 CAN FD 설정이 없으므로 CAN 그대로 둔다.

ECU 커넥터를 채널에 연결하기​

  1. 노드 ECU 의 CanConnector 아래에 있는 초록 + 배지를 클릭한다. 이번에는 메뉴에 Create CommunicationCluster [Can] 과 Connect to Channel... 이 있다.

  2. Connect to Channel... 에 마우스를 올리고, 하위 메뉴의 CanCluster 에 마우스를 올린 뒤, 그 하위 메뉴의 PhysicalChannel 을 클릭한다.

    Connect to Channel... › CanCluster › PhysicalChannel 을 고르는 화면

    그림 3-11. ECU 커넥터의 + 배지 메뉴. ① + 배지, ② Connect to Channel..., ③ CanCluster, ④ PhysicalChannel.

주의. 이 메뉴의 Create CommunicationCluster [Can] 은 새 클러스터를 만드는 항목이다. ECU 의 커넥터는 Connect to Channel... 로 앞에서 만든 채널에 연결한다.

배치 정리하고 저장하기​

  1. 캔버스 아래 툴바의 Auto Layout 을 클릭하고, 이어서 Fit to View 를 클릭한다. 노드가 다시 배치된다.

  2. 클러스터 사각형을 클릭해 Connected Connectors (2) 아래에 ZONE/CanConnector, ECU/CanConnector 가 보이는지 확인한다.

    두 커넥터가 연결된 CAN 클러스터

    그림 3-12. Auto Layout 뒤의 캔버스. ① Auto Layout, ② Fit to View, ③ 클러스터 사각형, ④ CHANNEL NAME PhysicalChannel 과 Connected Connectors (2) 의 ZONE/CanConnector, ECU/CanConnector. 두 커넥터가 파란 선으로 클러스터와 이어져 있다.

  3. 노드가 없는 빈 캔버스를 클릭한 뒤 Ctrl+S 를 눌러 저장한다. 탭 TopologyDesign:System 의 파란 점이 사라진다.

Auto Layout 뒤의 배치는 그림과 조금 다를 수 있고, SLAVE_ECU 와 ECU 의 테두리가 맞닿아 보일 수 있다. 배치 결과이며 오류가 아니므로 노드를 옮기지 않아도 된다.

검증 결과 보기​

  1. 푸터의 V 아이콘을 클릭해 VALIDATION 패널을 연다.

    오류가 없는 Validation 패널

    그림 3-13. 저장 뒤의 VALIDATION 패널. ① 푸터의 V 아이콘, ② No validation issues. 행.

검증 결과는 0건으로, ECU 속성을 마쳤을 때와 같다. NM(네트워크 관리)과 TP(전송 프로토콜)는 새 클러스터에서 꺼져 있으므로, CanCluster 를 만들어도 설계에 NM 클러스터나 TP 설정이 생기지 않는다. 이 둘을 켜는 탭은 다음 두 절에서 본다.

참고. 커넥터의 CONTROLLER 가 비어 있는 동안 V 아이콘에는 빨간 배지 1 이 붙었다. 건수가 0으로 돌아오면 배지는 사라지지만, V 아이콘의 툴팁에는 마지막 건수 Validation: 1 error(s), 0 warning(s), 0 info(s) 가 그대로 남는다. 현재 결과는 VALIDATION 패널에서 확인한다.

네트워크 관리 탭 확인하기​

클러스터 설정 창 열기​

  1. 푸터의 V 아이콘을 다시 클릭해 VALIDATION 패널을 닫는다.

  2. 캔버스의 CanCluster 사각형을 더블클릭한다. 창 Communication Cluster Configuration [CanCluster] 가 열린다. 탭은 CLUSTER, NM CLUSTER, TRANSPORT PROTOCOL, TIME DOMAIN 이고, 처음에는 CLUSTER 탭이 보인다. 표 FRAME TRIGGERINGS [PHYSICALCHANNEL] 에는 No frame triggering. [+] adds a frame of the Signal model. 이, SIGNAL LAYOUT 에는 Select a frame or PDU triggering to see where it is sent and its signal layout. 이 보인다.

  3. NM CLUSTER 탭을 클릭한다.

    Communication Cluster Configuration 창의 꺼진 NM CLUSTER 탭

    그림 3-14. NM CLUSTER 탭. ① 이름 앞에 빈 동그라미가 있는 탭 NM CLUSTER, ② 흐리게 보이고 입력을 받지 않는 편집 영역.

탭 이름 앞의 빈 동그라미는 이 클러스터에서 그 기능이 꺼져 있다는 표시다. NM CLUSTER, TRANSPORT PROTOCOL, TIME DOMAIN 에 모두 빈 동그라미가 있고, 탭 이름도 흐리게 보인다. 이런 탭에 마우스를 올리면 툴팁 Disabled. Right-click to enable. 이 보이고, 오른쪽 클릭하면 항목이 Enable 하나뿐인 메뉴가 열린다.

NM 이 꺼져 있는 동안 이 탭은 NM 편집 화면을 흐린 미리보기로만 보여 주며, 미리보기의 값은 설계에 저장되지 않는다. 왼쪽 NM CONFIGURATION 의 CHANNEL 에는 NAME NmCluster_CanCluster 가 보이고, NM TIMING CONFIGURATION 에는 NM MSG CYCLE TIME 0.5, NM REPEAT MESSAGE TIME 1, NM NETWORK TIMEOUT 2, NM WAIT BUS SLEEP TIME 1.5, NM REMOTE SLEEP INDICATION TIME 1, NM MESSAGE TIMEOUT TIME 2 (모두 s)가 보이며, NM IMMEDIATE NM TRANSMISSIONS 는 0 이다. 오른쪽 NM STATE MACHINE 은 NM 상태도이다.

주의. Enable 은 고르지 않는다. 참조 설계에는 NM 설정이 없으므로, 이 튜토리얼은 CanCluster 의 NM 을 꺼 둔 채로 둔다.

전송 프로토콜 설정 확인하기​

이 절에서는 값을 바꾸지 않는다.

  1. TRANSPORT PROTOCOL 탭을 클릭한다.

    Communication Cluster Configuration 창의 꺼진 TRANSPORT PROTOCOL 탭

    그림 3-16. TRANSPORT PROTOCOL 탭. ① 빈 동그라미가 있는 탭 TRANSPORT PROTOCOL, ② 흐리게 보이는 편집 영역. TP NODE 에는 No TP node yet., TP CONNECTIONS 에는 No TP connection yet. Click [+] to add one. 이 보인다. 오른쪽 TP TOPOLOGY 에서 ECU 와 ZONE 의 CanConnector 는 모두 (free) 이다.

  2. 창 오른쪽 아래의 Close 를 클릭한다. 저장 확인 창 없이 창이 닫힌다.

TP(전송 프로토콜)도 CanCluster 에서 꺼져 있으므로 이 탭도 흐린 미리보기이고, 설계에는 CAN TP 설정이 없다. TIME DOMAIN 탭도 같은 방식으로 꺼져 있다.

참조 설계에는 TP 설정이 없다. 이 튜토리얼은 TP 를 꺼 둔 채로 다음 장으로 넘어간다.

다시 검증하기​

  1. 푸터의 V 아이콘을 클릭해 VALIDATION 패널을 연다. 여전히 No validation issues. 가 보이고, 탭 TopologyDesign:System 에는 수정됨 표시가 없다.

Enable 을 고르지 않고 창을 닫았으므로 설계는 그대로이며, 이 결과는 정상이다.

왜 이렇게 설계하는가​

  • CAN 버스는 ECU 와 ZONE 을 잇는다. 참조 설계의 CanCluster 채널 PhysicalChannel 에는 ZONE 과 ECU 의 커넥터 CanConnector 가 이 순서로 붙어 있다. 클러스터를 ZONE 쪽에서 만드는 것은 이 순서를 맞추기 위해서다.
  • 컨트롤러 이름은 노드마다 다르고, 커넥터 이름은 같다. 참조 설계는 ECU 의 컨트롤러를 CanController, ZONE 의 컨트롤러를 CanCommController 로 부르고, 두 커넥터를 모두 CanConnector 로 부른다.
  • 비트 타이밍은 ECU 의 컨트롤러에만 넣는다. 참조 설계의 CanController 에는 비트 타이밍 네 값이 모두 0 으로 들어 있고, CanCommController 에는 비트 타이밍이 없다.
  • NM 은 꺼 둔다. 참조 설계에는 NM 설정이 없다. NM 은 NM CLUSTER 탭의 Enable 로 클러스터마다 켜고 새 클러스터에서는 꺼져 있으므로, 그대로 두면 CanCluster 에는 NM 클러스터가 생기지 않는다.
  • TP 도 꺼 둔다. 참조 설계에는 TP 설정도 없다. TP 는 TRANSPORT PROTOCOL 탭에서 같은 방식으로 켜며, 꺼 둔 채로 두므로 TP 설정이 만들어지지 않는다.

확인하기​

  • 노드 ECU 에 CAN 컨트롤러 CanController(비트 타이밍 네 칸 0, CAN 켜짐)와 CAN 커넥터 CanConnector(CONTROLLER = CanController)가 있다.
  • 노드 ZONE 에 CAN 컨트롤러 CanCommController 와 CAN 커넥터 CanConnector(CONTROLLER = CanCommController)가 있다.
  • 클러스터 CanCluster 를 선택하면 CHANNEL NAME 이 PhysicalChannel 이고, Connected Connectors (2) 아래에 ZONE/CanConnector, ECU/CanConnector 가 이 순서로 보인다.
  • Communication Cluster Configuration [CanCluster] 의 NM CLUSTER, TRANSPORT PROTOCOL, TIME DOMAIN 탭 이름 앞에 빈 동그라미가 있다.
  • 탭 TopologyDesign:System 에 수정됨 표시가 없다.
  • VALIDATION 패널에 No validation issues. 가 보인다.

다음 단계​

이더넷 버스에서 노드 ZONE 과 HPC 에 이더넷 컨트롤러와 커넥터를 만들고, 이더넷 클러스터 EthernetCluster 로 잇는다.