CAN은 컨트롤러 영역 네트워크 규약. 개발한 프로토콜이다. 로버트 보쉬 CAN 프로토콜은 호스트 컴퓨터 없이 마이크로 컨트롤러와 기타 장치가 서로 통신할 수 있도록 설계된 표준입니다. 다른 통신 프로토콜 중에서 CAN 프로토콜을 고유하게 만드는 특징은 버스의 브로드캐스트 유형입니다. 여기서 브로드캐스트란 정보가 모든 노드에 전송되는 것을 의미한다. 노드는 컴퓨터가 USB 케이블이나 이더넷 포트를 통해 네트워크를 통해 통신할 수 있도록 하는 센서, 마이크로 컨트롤러 또는 게이트웨이일 수 있습니다. CAN은 메시지 기반 프로토콜입니다. 즉, 메시지는 메시지 식별자를 전달하고 식별자에 따라 우선순위가 결정됩니다. CAN 네트워크에서는 노드 식별이 필요하지 않으므로 네트워크에 노드를 삽입하거나 삭제하는 것이 매우 쉽습니다. 직렬 반이중 및 비동기식 통신 프로토콜입니다. CAN은 CAN 네트워크가 2선식 버스를 통해 연결되므로 2선식 통신 프로토콜입니다. 전선은 양쪽 끝에 연결된 120Ω 특성 임피던스를 갖는 연선입니다. 처음에는 주로 차량 내 통신을 위해 설계되었으나 현재는 다른 다양한 상황에서도 사용됩니다. UDS 및 KWP 2000과 마찬가지로 CAN도 온보드 진단에 사용할 수 있습니다.
왜 할 수 있나요?
전자 장치의 수가 증가함에 따라 중앙 집중식 표준 통신 프로토콜의 필요성이 생겼습니다. 예를 들어 현대 자동차에는 대시보드, 변속기 제어, 엔진 제어 장치 등과 같은 다양한 하위 시스템에 대해 7개 이상의 TCU가 있을 수 있습니다. 모든 노드가 일대일로 연결되면 통신 속도는 매우 높지만 회선의 복잡성과 비용이 매우 높습니다. 위의 예에서 단일 대시보드에는 8개의 커넥터가 필요하므로 이 문제를 극복하기 위해 CAN은 두 개의 와이어(CAN high 및 CAN low)가 필요한 중앙 집중식 솔루션으로 도입되었습니다. CAN 프로토콜을 사용하는 솔루션은 메시지 우선 순위로 인해 매우 효율적이며 네트워크에 영향을 주지 않고 노드를 삽입하거나 제거할 수 있으므로 유연합니다.
CAN 프로토콜의 응용
처음에 CAN 프로토콜은 차량 내에서 발생하는 통신 문제를 대상으로 설계되었습니다. 하지만 나중에는 그것이 제공하는 기능으로 인해 다양한 분야에서 사용됩니다. 다음은 CAN 프로토콜의 응용 프로그램입니다.
- 자동차(승용차, 트럭, 버스)
- 항공 및 항해용 전자 장비
- 산업 자동화 및 기계 제어
- 엘리베이터 및 에스컬레이터
- 빌딩 자동화
- 의료 기기 및 장비
- 해양, 의료, 산업, 의료
CAN 계층형 아키텍처
우리가 알고 있듯이 OSI 모델 통신 시스템을 7개의 서로 다른 계층으로 분할합니다. 그러나 CAN 계층 아키텍처는 두 개의 계층으로 구성됩니다.
두 레이어를 모두 이해해 봅시다.
- 데이터 링크 계층: 이 계층은 노드 간 데이터 전송을 담당합니다. 연결을 설정하고 종료할 수 있습니다. 물리 계층에서 발생할 수 있는 오류를 감지하고 수정하는 역할도 담당합니다. 데이터 링크 계층은 두 개의 하위 계층으로 나뉩니다.
맥: MAC은 미디어 액세스 제어를 나타냅니다. 이는 네트워크의 장치가 매체에 액세스하는 방법을 정의합니다. 데이터 캡슐화 및 캡슐화 해제, 오류 감지 및 신호 전달 기능을 제공합니다. - 물리 계층: 물리 계층은 원시 데이터 전송을 담당합니다. 이는 전압 레벨, 타이밍, 데이터 속도 및 커넥터와 같은 매개변수의 사양을 정의합니다.
CAN 사양은 CAN 표준에서 정의하는 CAN 프로토콜과 CAN 물리 계층을 정의합니다. ISO 11898. ISO 11898은 세 부분으로 구성됩니다.
모델 예
- ISO 11898-1: 이 부분에는 데이터 링크 계층과 물리적 신호 링크의 사양이 포함되어 있습니다.
- ISO 11898-2: 이 부분은 고속 CAN을 위한 CAN 물리 계층에 속합니다. 고속 CAN은 차량의 파워트레인과 충전 영역에서 사용되는 최대 1Mbps의 데이터 속도를 허용합니다.
- ISO 11898-3: 이 부분은 저속 CAN을 위한 CAN 물리 계층에도 속합니다. 최대 125kbps의 데이터 속도를 허용하며, 통신 속도가 중요한 요소가 아닌 곳에 저속 CAN이 사용됩니다.
CiA DS-102: CiA의 전체 형태는 CAN 커넥터의 사양을 정의하는 CAN in Automation입니다.
구현과 관련하여 CAN 컨트롤러와 CAN 트랜시버는 애플리케이션, 운영 체제 및 네트워크 관리 기능의 도움을 받아 소프트웨어에서 구현됩니다.
CAN 프레이밍
CAN 프레임의 구조를 이해해 봅시다.
이제 CAN 네트워크를 통해 데이터가 어떻게 전송되는지 살펴보겠습니다.
CAN 네트워크는 여러 개의 CAN 노드로 구성됩니다. 위의 경우 3개의 CAN 노드를 고려하여 노드 A, 노드 B, 노드 C로 명명했습니다. CAN 노드는 다음과 같은 세 가지 요소로 구성됩니다.
- 주인
호스트는 특정 작업을 수행하기 위해 일부 응용 프로그램을 실행하는 마이크로 컨트롤러 또는 마이크로 프로세서입니다. 호스트는 수신된 메시지의 의미와 다음에 보내야 할 메시지를 결정합니다. - CAN 컨트롤러
CAN 컨트롤러는 CAN 프로토콜에 설명된 통신 기능을 다룹니다. 또한 CAN 메시지의 전송 또는 수신을 트리거합니다. - CAN 트랜시버
CAN 트랜시버는 CAN 버스에서 데이터의 전송 또는 수신을 담당합니다. 이는 데이터 신호를 CAN 컨트롤러가 이해할 수 있는 CAN 버스에서 수집된 데이터 스트림으로 변환합니다.
위 다이어그램에서는 비차폐 연선 케이블을 사용하여 데이터를 전송하거나 수신합니다. CAN 버스라고도 하며, CAN 버스는 CAN 로우 라인과 CAN 하이 라인이라는 두 개의 라인으로 구성되며 각각 CANH와 CANL이라고도 합니다. 이러한 라인에 적용된 차동 전압으로 인해 전송이 발생합니다. CAN은 환경 때문에 트위스트 페어 케이블과 차동 전압을 사용합니다. 예를 들어 자동차, 모터, 점화 시스템 및 기타 여러 장치에서는 소음으로 인해 데이터 손실 및 데이터 손상이 발생할 수 있습니다. 두 선을 비틀면 자기장이 감소합니다. 버스는 각 끝에서 120Ω 저항으로 종단됩니다.
CAN 특성
차동 전압의 도움으로 CAN 버스를 통해 0과 1이 전송되는 방식을 결정합니다. 위 그림은 CAN low와 CAN high의 전압 레벨을 나타내는 전압 그래프입니다. CAN 용어에서 논리 1은 열성, 논리 0은 지배적이라고 합니다. CAN 하이 라인과 CAN 로우 라인에 2.5V를 인가하면 실제 차동 전압은 0V가 됩니다. CAN 버스의 0V는 CAN 트랜시버에 의해 열성 또는 논리 1로 판독됩니다. CAN 버스의 0V는 버스의 이상적인 상태입니다. CAN 하이 라인이 3.5V까지 풀링되고 CAN 로우 라인이 1.5V로 풀다운되면 버스의 실제 차동 전압은 2V가 됩니다. 이는 CAN 트랜시버에 의해 지배적인 비트 또는 논리 0으로 처리됩니다. 버스 상태가 우성 또는 논리 0에 도달하면 다른 노드가 열성 상태로 이동하는 것이 불가능해집니다.
CAN 특성에서 배운 핵심 포인트
- 논리 1은 열성 상태입니다. CAN 버스에서 1을 전송하려면 CAN high와 CAN low 모두 2.5V를 인가해야 합니다.
- 논리 0은 지배적인 상태입니다. CAN 버스에서 0을 전송하려면 CAN high는 3.5V에 적용되고 CAN low는 1.5V에 적용되어야 합니다.
- 버스의 이상적인 상태는 열성입니다.
- 노드가 우성 상태에 도달하면 다른 노드에 의해 열성 상태로 다시 이동할 수 없습니다.
CAN 버스 로직
위의 시나리오에서 우리는 지배적인 상태가 열성 상태를 덮어쓴다는 것을 알게 됩니다. 노드가 우성 비트와 열성 비트를 동시에 전송하면 버스는 우성 비트를 유지합니다. 열성 레벨은 모든 노드가 열성 비트를 보낼 때만 발생합니다. 이러한 논리를 AND 논리라고 하며, 물리적으로는 오픈 컬렉터 회로로 구현됩니다.
CAN 통신 원리
우리는 중재 필드에 설정된 우선 순위에 따라 메시지가 전송된다는 것을 알고 있습니다. 표준 프레임의 경우 메시지 식별자는 11비트이고, 확장 프레임의 경우 메시지 식별자는 29비트입니다. 이를 통해 시스템 설계자는 설계 자체에서 메시지 식별자를 설계할 수 있습니다. 메시지 식별자가 작을수록 메시지 우선순위가 높아집니다.
흐름도를 통해 중재가 어떻게 진행되는지 이해해 봅시다.
발신자는 메시지를 보내고 CAN 버스가 유휴 상태가 될 때까지 기다리고 있습니다. CAN 버스가 유휴 상태이면 송신자는 버스 액세스를 위해 SOF 또는 주요 비트를 보냅니다. 그런 다음 최상위 비트의 메시지 식별자 비트를 보냅니다. 노드가 열성 비트를 전송하는 동안 버스에서 우세한 비트를 감지하면 이는 노드가 중재를 잃고 추가 비트 전송을 중단했음을 의미합니다. 보낸 사람은 기다렸다가 버스가 무료가 되면 메시지를 다시 보냅니다.
CAN 중재 예시
세 개의 노드, 즉 노드 1, 노드 2 및 노드 3을 고려하면 이들 노드의 메시지 식별자는 각각 0x7F3, 0x6B3 및 0x6D9입니다.
최상위 비트를 가진 세 노드 모두의 전송은 위 다이어그램에 나와 있습니다.
열하나일비트: 노드의 세 비트가 모두 열성이므로 버스 비트도 열성 상태로 유지됩니다.
10일비트: 모든 노드의 10번째 비트가 열성이므로 버스도 열성 상태로 유지됩니다.
9일비트: 노드 1에는 열성 비트가 있고 다른 노드에는 우성 비트가 있으므로 버스도 우성 비트를 유지합니다. 이 경우 노드 1은 중재를 잃었으므로 비트 전송을 중단합니다.
8일비트: 노드 2와 노드 3 모두 열성 비트를 전송하므로 버스 상태는 열성으로 유지됩니다.
7일비트: 노드 2는 우성 비트를 전송하고 노드 3은 열성 비트를 전송하므로 버스 상태는 우성 비트로 유지됩니다. 이 경우 노드 3은 중재에서 패하여 메시지 전송을 중단하고 노드 2가 중재에서 승리하면 메시지가 수신될 때까지 버스를 계속 유지한다는 의미입니다.