Phương thức giao tiếp của Bus CAN là sự phỏt tỏn thụng tin (Broadcast): mỗi điểm kết nối và mạng thu nhận frame truyền từ nỳt phỏt. Sau đú, mỗi nỳt sẽ quyết định việc xử lý message, cú trả lời hay khụng, cú phản hồi hay khụng… Cỏch thức này giống như sự phỏt thụng tin về đường đi, người lỏi xe cú thể thay đổi lộ trỡnh, dừng xe hay thay đổi tài xế hoặc khụng làm gỡ…
Giao thức CAN cho phộp cỏc nỳt khỏc nhau đưa dữ liệu cựng lỳc vào một quỏ trỡnh nhanh chúng, ổn định của cơ chế xử lý sẽ xỏc định xem nỳt nào được phỏt hiện đầu tiờn.
Để xử lý thời gian thực, dữ liệu phải được truyền nhanh. Điều này ảnh hưởng khụng chỉ đường truyền vật lý cho phộp tới 1Mbit/s, mà cũn đũi hỏi một sự cấp phỏt nhanh Bus trong trường hợp xung đột, khi mà rất nhiều nỳt muốn truyền đồng thời. Khi trao đổi dữ liệu trờn Bus, thứ tự sẽ được xỏc định dựa vào loại thụng tin. Vớ dụ, cỏc giỏ trị hay biến đổi nhanh, như trạng thỏi của một cảm biến, hay phản hồi của một động cơ, phải được truyền liờn tục với độ trễ thấp nhất, hơn là cỏc giỏ trị khỏc như nhiệt độ của động cơ, cỏc giỏ trị thay đổi ớt. Trong mạng CAN, phần ID của mỗi thụng điệp, là một từ gồm 11 bit (Version 2.0A) xỏc định mức ưu tiờn. Phần ưu tiờn này nằm ở đầu mỗi thụng điệp. Mức ưu tiờn xỏc định bởi 7 bit cho version 2.0A, tới 127 mức và mức 128 là 0000000 theo NMT (Network Mangement).
Quy trỡnh xử lý của Bus dựa trờn phõn giải từng bit, theo những nỳt đang tranh chấp, phỏt đồng thời trờn Bus. Nỳt nào mức ưu tiờn thấp hơn sẽ mất sự cạnh tranh với nỳt ưu tiờn cao.
Hỡnh 3.14 Giải quyết tranh chấp trờn Bus
3.1.4. CAN frame
Một khung truyền cú dạng sau:
Hỡnh 3.15 Khung truyền
Chuõ̉n CAN định nghĩa bốn loại Frame: Data Frame dựng khi Node muốn truyền dữ liệu tới cỏc Nodes khỏc. Remote Frame dựng để yờu cầu truyền Data Frame. Error Frame và Overload Frame dựng trong việc xử lý lỗi.
Chi tiết cỏc phần khỏc nhau trong một khung truyền dữ liệu:
Start Of Frame: nằm ở phần đầu của một Frame dữ liệu hay Remote Frame, luụn ở
trạng thỏi dominant. Một nỳt cú thể bắt đầu truyền dữ liệu nếu Bus rảnh. Sau đú tất cả cỏc nỳt đều đồng bộ sau SOF của nỳt bắt đầu truyền.
Hỡnh 3.16 CRC field
CRC Field gồm một chuỗi 15 bits và CRC Delimiter (là 1 bit recessive).
Một chuỗi CRC (Cyclic Redundancy Code) cho phộp kiểm tra sự nguyờn vẹn của dữ
liệu truyền. Tất cả cỏc nỳt nhận phải thực hiện quy trỡnh kiểm tra này. Chỉ vựng SOF, vựng tranh chấp, vựng điều khiển và vựng dữ liệu được sử dụng để tớnh toỏn chuỗi CRC. Trờn thực tế, độ dài cực đại của Frame khụng vượt quỏ 215 bits cho một chuỗi CRC 15 bits.
Trỡnh tự tớnh toỏn
Cỏc bit vừa nờu (trừ cỏc bit Stuffing thờm vào), bao gồm cỏc bits từ đầu Frame đến cuối vựng dữ liệu (cho Frame dữ liệu) hay cuối vựng điều khiển (cho Remote Frame) được coi như một hàm f(x) với hệ số là 0 và 1 theo sự hiện diện số lượng của mỗi một bit. Đa thức nhận được sẽ nhõn với x15 sau đú chia cho hàm gx = x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1. Chuỗi bit tương ứng với hàm này là: 1100010110011001.
- Số dư của phộp chia module [2] hàm fx cho gx sẽ tạo thành chuỗi CRC 15 bits.
- Nếu sai số CRC được phỏt hiện khi kết quả gửi đi khỏc với kết quả nhận được thỡ bờn nhận sẽ gửi đi một message lỗi dưới dạng Request Frame.
ACK Field
Gồm 2 bit: ACK slot và ACK Delimiter (là 1 bit recesive) - Một nỳt đang truyền sẽ gửi một bit recesive trong ACK slot.
- Một nỳt nhận đỳng message thụng bỏo cho nỳt truyền sẽ gửi 1 bit dominant trong ACK slot.
Data Frame: dựng để truyền đi một message. Cú hai dạng: Standard Frame và Extended Frame.
Hỡnh 3.17 Khung truyền dữ liệu CAN
Standad Frame: bắt đầu bằng 1 bit Start Of Frame (SOF) luụn ở trạng thỏi dominant, 11 bit ID tiếp theo, 1 bit Remote Transmit Request (RTR) để phõn biệt Remote Frame và Data Frame nếu bằng dominant nghĩa là Data Frame, nếu bằng recessive nghĩa là Remote Frame. Tiếp đến là 1 bit Identifier Extension (IDE) để phõn biệt giữa Standard Frame (“dominant”) và Extended Frame (“recessive”). Tiếp theo là 1 bit r0 luụn ở trạng thỏi dominant. Tiếp đến là 3 bit Data Length Control cho biết số lượng byte data của Frame. Tiếp đến là 0 đến 8 bytes data. Tiếp đến là 15 bit CRC và 1 bit CRC delimiter. Tiếp đến là 1 bit Acknowledge và 1 bit delimiter, tiếp theo là 7 bits End Of Frame luụn ở trạng thỏi recessive. Cuối cựng là khoảng cỏch tối thiểu giữa 2 Frame truyền Inter-Frame Space (IFS).
Hỡnh 3.18 CAN standard frame
Hỡnh 3.19 CAN Extended frame
Remote Frame: dựng để yờu cầu truyền Data Frame tới một nỳt khỏc. Gần giống Data Frame nhưng cú DLC = 0 và khụng cú Data Field.
Hỡnh 3.20 CAN remote frame
Error Frame: được phỏt ra khi Node phỏt hiện lỗi.
Hỡnh 3.21 CAN error frame
Frame lỗi bao gồm 2 phần: - Cờ lỗi.
- Phần demimiter.
Overload Frame: dựng khi Frame bị tràn bộ đệm.
Nominal Bit Time: là độ dài của một bit trờn Bus. Mỗi nỳt trờn Bus phải điều chỉnh
nhịp cựng với Nominal Bit Time để cú thể phỏt và nhận chớnh xỏc dữ liệu trờn Bus.
Hỡnh 3.22 Baudrate định nghĩa thời gian cho 1 bit
Chuõ̉n BOSCH mụ tả thành phần của Nominal Bit Time, được chia ra thành nhiều đoạn (Segment):
- Đoạn đồng bộ (SYNC_SEG). - Đoạn lan truyền (PROG_SEG). - Đoạn pha buffer 1 (PHASE_SEG1). - Đoạn pha buffer 2 (PHASE_SEG2).
Hỡnh 3.23 Mỗi bit được cấu tạo bởi 4 segments