1. Các khái niệm cơ bản và lưu ý quan trọng
Mục này trình bày các thuật ngữ và khái niệm cơ bản trước khi đi sâu phân tích chi tiết chuẩn bus CAN.
- Node (Station) là những thành phần độc lập có thể xử lý truyền nhận dữ liệu trên bus CAN, một Node thường có 3 thành phần cơ bản là vi điều khiển MCU, chip điều khiển CAN (CAN controller) và chip thu-phát (CAN transceiver)
- Thông điệp (Message): Thông tin trên bus CAN được gửi dưới dạng các thông điệp có định dạng cố định. Các thông điệp có thể khác nhau nhưng độ dài (số bit trong một thông điệp) là có giới hạn. và được giới hạn về độ dài. Khi bus rảnh (IDLE) thì bất kỳ Node nào trên bus đều có thể bắt đầu truyền một thông điệp mới. Thông điệp được truyền thông qua 4 loại khung (frame) khác nhau là khung dữ liệu (Data frame), khung yêu cầu hay khung điều khiển (remote frame), khung báo lỗi (Error frame) và khung báo quá tải (Overload frame)
- Tốc độ bit (Bit rate): Tốc độ bit của CAN có thể khác nhau trong các hệ thống khác nhau nhưng trong một hệ thống cho trước thì tốc độ bit đồng nhất và cố định. Tốc độ bit còn tùy thuộc vào chiều dài đường truyền. Tốc độ tối đa có thể lên đến 1 Mbit/s. Sau đây là bảng một số thông số tham khảo thực tế:
Tốc độ bit
(Bit Rate – kbit/s)
|
Chiều dài bus
(Bus Length - m)
|
Thời gian bit danh định
(Nominal Bit-time - µs)
|
1000
|
30
|
1
|
800
|
50
|
1.25
|
500
|
100
|
2
|
250
|
250
|
4
|
125
|
500
|
8
|
62.5
|
1000
|
20
|
20
|
2500
|
50
|
10
|
5000
|
100
|
- Tính ưu tiên (Priorities): Mỗi khung dữ liệu hoặc khung yêu cầu sẽ chứa một định danh IDENTIFIER (hay số ID). ID sẽ định nghĩa một mức ưu tiên cố định cho thông điệp trong suốt quá trình truy cập bus.
- Yêu cầu dữ liệu từ xa (Remote data request): Bằng cách gửi một khung yêu cầu (Remote Frame), một Node đang chờ dữ liệu có thể yêu cầu một Node khác gửi một khung dữ liệu (Data Frame) tương ứng với khung yêu cầu đó. Khung dữ liệu và khung yêu cầu tương ứng phải có IDENTIFIER giống nhau.
- Đa master (Multimaster): Khi bus rảnh, mỗi Node đều có thể truyền thông điệp nhưng chỉ Node nào truyền thông điệp có mức ưu tiên cao nhất mới chiếm quyền truy cập bus, tức thông điệp của Node đó được truyền trước. Các thông điệp từ các Node khác phải tạm dừng và chờ truyền sau.
- Giá trị bus (Bus values): Khi hoạt động, bus có thể mang một trong hai giá trị logic là ‘dominant’ (mức trội), tương ứng với mức thấp – bit 0 hay ‘recessive’ (mức lặn) tương ứng mức cao – bit 1. Trong cùng một thời điểm nếu ‘dominant’ và ‘recessive’ cùng được truyền lên bus thì giá trị bus sẽ là ‘dominant’. Đây là cơ chế hoạt động AND-wire của bus.
- Sự phân xử (Arbitration):
- Bất cứ khi nào bus rảnh, mỗi Node đều có thể bắt đầu truyền thông điệp. Như vậy, nếu có hai hay nhiều Node truyền thông điệp trong cùng một thời gian thì sẽ xảy ra xung đột khi truy cập bus. Để tránh xung đột này, cơ chế phân xử từng bit của IDENTIFIER được sử dụng để đảm bảo thông tin không bị mất và thời gian truyền cũng không bị mất. Thông tin không bị mất là vì Node nào thua khi phân xử thì phải dừng lại, thông điệp của Node đó sẽ được phát lại khi bus rảnh. Thời gian không bị mất là vì sự phân xử thực hiện thời gian thực, Node nào thắng trong sự phân xử sẽ tiếp tục truyền tiếp các bit còn lại chứ không phải dừng để truyền lại từ đầu.
- Nếu một khung dữ liệu và một khung yêu cầu có IDENTIFIER giống nhau được bắt đầu cùng một thời gian thì khung dữ liệu chiếm ưu thế hơn khung yêu cầu.
- Mỗi bộ truyền thông điệp lên bus phải giám sát bus để so sánh mức bit mà nó truyền ra và mức bit thể hiện trên bus. Nếu giống nhau, nó tiếp tục truyền bit tiếp theo. Nếu bit truyền ra là reccessive và giá trị giám sát được trên bus là dominant thì Node thua phân xử, phải dừng truyền ngay lập tức từ bit tiếp theo. Nếu bit truyền ra là dominant nhưng giá trị giám sát được là recessive thì đó là lỗi bit.
- Tính an toàn (Safety): Để có được sự an toàn cao cho việc truyền/nhận dữ liệu thì giao thức có quy định các biện pháp phát hiện lỗi, báo hiệu lỗi và tự kiểm tra được thực thi cho mỗi nút CAN.
- Phát hiện lỗi (Error detection): sử dụng cơ chế giám sát (Monitoring – so sánh mức bit được truyền với mức bit trên bus), sử dụng mã kiểm tra CRC – Cyclic Redundancy Check), Chèn bit (Bit stuffing) và kiểm tra khung thông điệp.
- Hiệu quả phát hiện lỗi: Với việc áp dụng các cơ chế phát hiện lỗi, tất cả các lỗi toonge thể (lỗi xảy ra trên toàn bus) được phát hiện, tất cả các lỗi cục bộ ở các bộ truyền được phát hiện, có khả năng phát hiện đến 5 lỗi ngẫu nhiên khác nhau trong 1 thông điệp, các lỗi nhóm với độ dài nhỏ hơn 15 trong một thông điệp, các lỗi với số lẻ lần được phát hiện.
- Xác xuất lỗi không phát hiện được nhỏ hơn: (Tốc độ lỗi thông điệp)×4.7×10^(-11)
- Hạn chế lỗi (Fault Confinement): Các nút CAN có thể nhận biết các nhiễu ngắn từ các sai cố định. Các nút hỏng có thể được tắt khỏi bus.
- Sự kết nối (Connection): Trong bus CAN, số lượng Node nối đến bus là không giới hạn (theo lý thuyết). Trên thực tế, tổng số đơn vị kết nối đến bus bị giới hạn do thời gian trễ và giới hạn về tải trên đường bus.
- Báo nhận (Acknowledgment): Tất cả các bộ nhận sẽ kiểm tra tính phù hợp của thông điệp được nhận và sẽ báo ACK nếu thông điệp được nhận đúng và phù hợp.
- Hoạt động Sleep và Wake-up: Để giảm công suất tiêu thụ hệ thống, một linh kiện CAN (hoặc một Node) có thể được thiết lập chế độ Sleep để không có bất cứ hoạt động nội nào và ngắt bộ lái bus của nó. Chế độ Sleep có thể được thoát ra với cơ chế wake-up từ bất kỳ hoạt động nào trên bus hoặc các điều kiện nội của hệ thống. Khi wake-up, hoạt động nội của Node được khởi động lại và chờ cho nguồn xung clock ổn định. Sau đó là chờ cho đến khi nó tự đồng bộ lại với bus bằng cách kiểm tra có sự xuất hiện của 7 bit recessive liên tiếp trước khi bật lại bộ lái bus. Để wake-up các Node của hệ thống đang trong chế độ Sleep thì một thông điệp đặc biệt được sử dụng với một ID có ưu tiên thấp nhất có thể.
- Bộ truyền hay bộ phát (transmitter): Khi một Node phát đi một thông điệp, Node đó trở thành bộ truyền của thông điệp đó. Node sẽ là bộ truyền cho đến khi nó truyền xong thông điệp này (lúc này bus về trạng thái rảnh) hoặc cho đến khi thua phân xử.
- Bộ nhận hay bộ thu (receiver): một Node là "bộ nhận" của một thông điệp khi nó không là bộ truyền của thông điệp đó và bus không rảnh. Ví dụ, bus đang rảnh (IDLE), lúc này không có thông điệp nào đang lan truyền trên bus, tất cả các Node đều không phải là bộ truyền hoặc bộ nhận. Tại một thời điểm, có 2 Node A và B cùng truyền, lúc này cả A và B đều là bộ truyền, các Node khác trong bus đều là bộ nhận. Sau một khoảng thời gian, Node B thua phân xử và ngưng truyền, Node A thắng phân xử và tiếp tục truyền, lúc này Node B trở thành bộ nhận và Node A là bộ truyền cho đến khi nó truyền xong thông điệp.
- Định tuyến thông tin trong CAN: Trong các hệ thống CAN, một Node không cần sử dụng bất kỳ thông tin nào về cấu hình hệ thống. Điều này làm cho các Node trong một mạng CAN có sự độc lập và linh động cao. Từ đó, CAN mang một số đặc điểm quan trọng sau đây:
- Tính linh động (Flexibility): Các Node CAN có thể được kết nối thêm vào mạng mà không cần phải thay đổi phần mềm hay phần cứng của bất kỳ Node nào khác và lớp ứng dụng.
- Định tuyến thông điệp: Mỗi thông điệp (khung dữ liệu hoặc khung yêu cầu) có một ID (IDENTIFIER). ID không chỉ ra đích đến của thông điệp mà chỉ ra ý nghĩa của dữ liệu mà thông điệp đó mang theo. Vì vậy, tất cả các Node trong mạng đều có thể nhận và quyết định có sử dụng nội dung thông điệp đó hay không. Việc quyết định có sử dụng thông điệp đó hay không là nhờ cơ chế LỌC THÔNG ĐIỆP (MESSAGE FILTERING) có ở mỗi Node CAN
- Đa điểm (Multicast): Như đã nói, bất kỳ Node nào cũng có thể nhận thông điệp. Thông qua cơ chế lọc thông điệp, tại một thời điểm, nhiều Node khác nhau có thể cùng sử dụng và xử lý cùng một thông điệp.
- Tính đồng nhất dữ liệu (Data Consistency): Một mạng CAN luôn đảm bảo một thông điệp sẽ được nhận đồng thời bởi một hoặc nhiều Node hoặc không có Node nào. Do đó, tính đồng nhất của dữ liệu được đảm bảo bởi cơ chế đa điểm và kiểm soát lỗi.
2. Cấu trúc phân lớp của giao thức CAN
Lịch sử cập nhật:
1) 2019.10.18 - Chỉnh sửa link hình minh họa
Chuẩn CAN Specification 2.0 đã được chuẩn hóa trong ISO 11898, chuẩn CAN quy định chi tiết các chức năng và hoạt động của mạng CAN ở hai lớp Data Link và Physical. Đối với lớp ứng dụng (Application) không được quy định trong chuẩn nhưng hiện nay có hai giao thức phổ biến và CANopen và DeviceNet.
Các chức năng của hai lớp này đều do phần cứng (vi mạch, chip) chuyên dụng tự thực hiện theo cấu hình được nạp vào. Các chức năng lớp Data Link do chip chuyên dụng CAN controller (chip số) hoặc ngoại vịiCAN được tích hợp trong vi điều khiển MCU thực hiện. Chức năng lớp vật lý (Physical) do chip CAN transceiver (chip tương tự) thực hiện.
Hình 1. Cấu trúc phân lớp của giao thức CAN |
Lịch sử cập nhật:
0 bình luận:
Đăng nhận xét