1. CAN (Controller Area Network)
ㅇ 자동차 내 네트워크 구현을, 안정성,실시간성을 갖춘 시리얼 버스 방식으로 표준화한 것
- 자동차 이외에 항공우주,선박,의료,공장자동화 산업 등에도 활용
. 산업화된 필드 버스들 중에서 학계와 산업계 모두 광범위한 지지기반 획득
2. CAN 역사, 표준화
ㅇ 역사
- 1985년 벤츠社 요구에 의해 자동차 부품업체 Bosch社에서 차량용 네트워크로 최초 개발
. 높은 무결성의 시리얼 버스 시스템으로서, 차량용 네트워크의 산업 표준으로 부상
- 1993년에는 ISO에서 국제 표준 규격 (ISO 11898)으로 제정
- 1994년부터 CANopen, DeviceNet 등 CAN 관련 여러 상위 레벨 프로토콜이 표준화
ㅇ 주요 버전
- v1.0 : 1986년경 초기버전, 125 kbps급
- v2.0A : 1991년경, 1 Mbps급 (standard format)
- v2.0B, v3.0 : 헤더 내 메세지 식별자를 기존 11 비트에서 29 비트로 확장 (extended format)
ㅇ 표준화 규격
- ISO 11519 : 최고 속도 125 kbps용 규격
- ISO 11898 : 최고 속도 1 Mbps용 규격
. ISO 11898-1 : 데이터링크계층 및 물리적 신호 정의 (CAN 프로토콜 속성 및 운영 등)
.. 특히, 프레임 포멧 차이점으로써,
.. 표준 CAN 2.0A : 11 비트 식별자 기반으로 노드 구별
.. 확장 CAN 2.0B : 29 비트 식별자 기반으로 노드 구별
. ISO 11898-2 : 고속 매체 접근 (high speed)
. ISO 11898-3 : 저속 고장 허용형 미디어 기반 인터페이스 (low speed)
. ISO 11898-4 : 시간 기반 CAN
- ISO 11895 : 고속 CAN과 저전력 어플리케이션
3. CAN 기술적 특징
ㅇ 전송률 : 최대 1 Mbps
- 저속 모드 (~ 1 ㎞) : 10 ~ 125 kHz (ISO 11519)
- 고속 모드 (40 m 이내) : 125 kbps ~ 1 Mbps (ISO 11898-2)
ㅇ 전기적 잡음 환경에 대한 강한 면역성
- 하드웨어적 처리
. 통신 프로토콜(프레임), 에러 처리를 하드웨어적으로 처리
- 차동 신호 (Differential Signaling) 방식의 직렬 버스 (Serial Bus)사용
. 2개의 꼬임 쌍선에 의한, 차동 신호 방식의 직렬 버스 사용으로,
. 전자파,잡음에 대해 강한 내성을 갖음
- 오류검출 및 오류정정 부호화/복호화 기능 활용
ㅇ 다중 마스터 다중 슬레이브 통신방식 (Multi Master Multi Slave Communication)
- 버스 통제를 위한 감독자 노드(Bus Master)가 필요 없음
. 모든 노드가 동등 권한
- 메세지 송신은, 매체가 비었다고 판단하면, 누구나 자발적으로 송신 함
. 우선순위 낮은 노드 메세지의 전송 실패시, 자동 재 전송 기능 등을 함
- 메세지 수신은, 모두가 수신 가능하나,
. 메세지 종류에 따라 선별적 수신 함
- 하나의 CAN 버스에, 모든 노드가 멀티드롭 버스 형태로 공유
. 이에따라, 점대점 및 성형 구조에 비해, 배선 길이가 덜 소요됨
ㅇ 메세지 지향성 프로토콜 (Message-Oriented Protocol)
- 노드 주소가 아닌, 메세지 식별자(ID) 우선순위에 의거함
. 수신 노드가 ID 기반으로 판단하며, 선별적으로 수신 또는 무시함
ㅇ 신호 간 충돌 대책 : CSMA/CD + AMP (메세지 식별자 우선순위)
- (Carrier Sense Multiple Access/Collision Detection with Arbitration on Message Priority)
- 메세지 식별자(ID) 값이 낮을수록, 우선순위가 높음
- 두 메세지가 동시 송신시,
. 우선순위 높은 메세지가 먼저 전송됨
. 낮은 우선순위 메세지는 후에 재전송됨
- 따라서, 메세지 간 충돌이 발생하더라도 중요 메세지는 반드시 전송됨
ㅇ 전송 방식 : 반이중 통신
- 한 노드가 송신하면, 나머지 다른 모든 노드들은 수신 만 함 (즉, 전이중 통신방식이 아님)
- (single-producer multiple-consumer)
ㅇ 전송 데이터 단위 : 8 바이트 (산업용/차량용 제어 장치에 적합)
ㅇ 실시간 전송, 저렴한 전송매체 사용 가능, 용이한 노드 추가 가능 등
4. CAN 노드 구성
ㅇ 프로세서 (마이크로 컨트롤러)
- 하부 통신계층의 지원을 받아, 액츄에이터 구동
ㅇ CAN 컨트롤러
- 데이터링크계층 기능 수행
ㅇ CAN 트랜시버
- 물리계층 전송(송신/수신) 기능 수행
5. CAN 계층 구성 (3계층)
ㅇ 응용계층 (사용자 지정)
ㅇ 데이터링크계층 (신뢰적인 통신 보장)
- 프레이밍 (CAN 프레임 구성 및 전송)
- 에러 제어 (오류 감지 및 재전송 등)
- 장치 식별
. 별도의 주소 필드 없이, 그룹핑된 메세지 식별자에 의해, 관련 노드 마다 선별 수신
. 例) 0x01 : 엔진 제어 관련, 0X02 : 파워윈도우 관련 등
. (즉, single-producer multiple-consumer, 1:多)
ㅇ 물리계층 (물리적인 매체를 비교적 자유롭게 선택 가능)
- 신호 전송,변환 기능 등
6. CAN 물리 계층 상의 전기적 규격
ㅇ 케이블 : 2개의 차폐 쌍꼬임선 (120 옴 종단)
ㅇ 커넥터 : 종류는 미 규정됨
- 통상, 4가닥 핀 (CAN_H, CAN_L, CAN_GND, CAN_POWER) 정도를 사용
ㅇ 신호 전송 방식
- 전송부호 : NRZ
- 전송모드 : Differential Mode
- 2가닥 꼬임쌍선 사용
. 두 가닥 중 하나는, CAN_H,+,H (2.5 ~ 3.5 V) 으로 칭함
. 다른 하나는, CAN_L,-,LO (2.5 ~ 1.5 V) 으로 칭함
ㅇ 비트 값 (신호 값)
* (버스 내 두 가닥 선의 전위차로써, 비트 값이 결정됨 (Differential Mode))
- 두 가닥 선의 전위차가, 2 V 이상이면, `(logic) 0`,`dominant` 라고 칭함
. 즉, CAN_H가 3.5 V 정도이고, CAN_L가 1.5 V 정도 일 때
- 두 가닥 선의 전위차가, 0 V 이면, `(logic) 1`,`recessive` 라고 칭함
. 즉, CAN_H가 2.5 V 정도이고, CAN_L가 2.5 V 정도 일 때
. idle 상태에서, 이 값을 유지하게 됨
ㅇ 전송 방향 : 반이중 (Half-Duplex)
- (반이중 : 양방향 전송 가능하나 특정 시점에서는 단방향 만 가능)
7. CAN 프레임 형식
ㅇ 프레임 종류 다섯(5) : data, remote, error, overload, interframe
ㅇ 프레임 형식 둘(2)
- 2.0A : 11 비트 길이의 메시지 식별자를 갖음
- 2.0B : 29 비트 길이의 메시지 식별자를 갖음
ㅇ 2.0A 데이터 프레임 형식
- SOF (Start Of Frame) (1 비트) : 기본값 `0`
. idle 상태(recessive `1`)에서, (dominant `0`)으로 천이되어, 프레임 시작을 알려줌
- Message Identifier (MgId) : 메세지 식별자
. MSB 부터 송신 ☞ 네트워크 전송 순서 참조
- RTR (Remote Transmission Request) (1 비트) : RTR = 0 이면 데이터 프레임
- 중재 필드 (Arbitration Field)
- 제어 영역 (6 비트)
- 데이터 영역 (0~8 비트)
- CRC
- ACK 영역
- EOF (End Of Frame)
- IFS (Interframe Space) : 프레임 간 구분을 위한 비트열