Điều gì sẽ xảy ra nếu hai phân đoạn ID Node là giống nhau?

Apr 04, 2018Để lại lời nhắn

Điều gì xảy ra nếu hai phân đoạn ID nút giống nhau?




Mạng CAN-bus không cho phép hai nút có cùng phân đoạn ID về nguyên tắc, nhưng điều gì sẽ xảy ra nếu hai phân đoạn ID nút là giống nhau?

Trước cuộc thử nghiệm, chúng ta phải có một sự hiểu biết rõ ràng về cấu trúc của các thông điệp CAN và các nguyên tắc của trọng tài.


Thứ nhất, Cấu trúc thông điệp CAN

Tiêu chuẩn mạng CAN-bus được sử dụng rộng rãi nhất là phiên bản V2.0. Tiêu chuẩn này được chia thành phần A và B. Sự khác biệt chính của họ là độ dài mã ID trong khu vực trọng tài. Trong số đó CAN2.0A (khung chuẩn) là ID 11 bit, CAN2.0B (mở rộng khung) là ID 29 bit. Bảng 1 dưới đây cho thấy cấu trúc của thông báo CAN:

Bảng 1 Cấu trúc thông điệp CAN

Tên Pha Chiều dài / bit pha Sự miêu tả
SOF 1 có nghĩa là bắt đầu giai đoạn dữ liệu, và tạo thành bởi bit thống trị đơn
Giai đoạn Biến Khung tiêu chuẩn 12 Cho biết ưu tiên của khung, được tạo thành bởi 11 địa chỉ ID và 1 RTR
khung mở rộng 32 Cho biết mức độ ưu tiên của khung, được tạo bởi 29 địa chỉ ID, SRR 1 bit, mở rộng IDE và RTR
Giai đoạn kiểm soát 6 có nghĩa là mã nhóm và các bit dành riêng của chiều dài dữ liệu của đoạn dữ liệu
Giai đoạn Dữ liệu 0 ~ 8 nội dung dữ liệu, điều khiển pha điều khiển độ dài dữ liệu
CRC 16 kiểm tra quá trình chuyển đổi khung, từ SOF đến giai đoạn dữ liệu, tất cả các nội dung, trừ các bit điền
ACK 2 các nút khác xác nhận khung này để được nhận đúng
Khung Kết thúc 7 có nghĩa là kết thúc khung


Thứ hai, nguyên tắc trọng tài

CAN bus arbitration dựa trên "dòng và nguyên tắc", như thể hiện trong hình 1. Khi một máy thu phát phát tín hiệu ở các mức khác nhau cùng một lúc, mức recessive luôn luôn được bao phủ bởi mức chi phối. Trong khi gửi tin nhắn, bộ điều khiển CAN sẽ theo dõi xem trạng thái của bus có giống với trạng thái được gửi bởi chính nó hay không. Nếu sự không nhất quán xảy ra trong phân đoạn ID, trọng tài sẽ xảy ra. Nếu nó xảy ra ở các khu vực khác, lỗi tương ứng sẽ được kích hoạt.

Sau đây là điểm chính. Điều gì sẽ xảy ra nếu hai phân đoạn ID nút giống nhau? Chúng tôi bắt đầu thử nghiệm với hai thẻ CAN và một CANScope. Thẻ CAN mô phỏng nút CAN chuẩn để gửi và nhận các tin nhắn, và CANScope thực hiện giám sát truyền thông, như thể hiện trong hình 2.

                                                           

1.jpg

Hình 2 Xây dựng nền tảng thử nghiệm


Thứ ba, thử nghiệm một "Phân đoạn ID là giống nhau nhưng dữ liệu là khác nhau"

Thẻ CAN được sử dụng để gửi khung CAN với dữ liệu ID 000H đến 01020304050607H và một thẻ CAN khác để gửi khung CAN với dữ liệu 000H đến 02020304050607H. Dữ liệu CANScope lắng nghe được hiển thị trong Hình 3. Có thể thấy rằng có rất nhiều trường dữ liệu điền sai sót.


2.jpg

Hình.3 Trường dữ liệu điền erro

Tại sao cái này rất? Đầu tiên chúng ta thu được các dạng sóng tương ứng với hai tin nhắn truyền tải CAN card, như thể hiện trong hình 4. Bởi vì thông báo hai chân là một khung dữ liệu tiêu chuẩn và mỗi khung chứa 8 byte dữ liệu, dạng sóng tương ứng với hai khung của các gói dữ liệu là giống hệt nhau trong phân đoạn ID, RTR, IDE, R0 và DLC. Do đó, vai trò của trọng tài không hiệu quả và cả hai nút coi mình là ưu tiên và tiếp tục gửi dữ liệu.

3.jpg

Bây giờ chúng tôi tập trung vào phân đoạn dữ liệu, dữ liệu byte đầu tiên là như nhau, là 00H; dữ liệu byte thứ hai là khác nhau, tương ứng 01H, 02H. Các mũi tên trong Hình 5 chỉ ra rằng logic của các bit tương ứng là 0 và 1 tương ứng. Trước đó chúng tôi đã đề cập rằng nút CAN sẽ phát hiện xem cấp độ xe buýt có giống như mức độ nó gửi khi gửi tin nhắn không. Nếu sự không nhất quán xảy ra ở khu vực không phải là trọng tài, lỗi tương ứng sẽ được kích hoạt, vì vậy nếu hai khung được gửi đến xe buýt cùng một lúc Các lỗi Bit phải xảy ra. Bởi vì lỗi gửi bit sẽ gây ra nút gửi 6 bit chiếm ưu thế vi phạm nguyên tắc nạp (lỗi chủ động phá hủy dữ liệu khung), trường dữ liệu điền sai xảy ra, như trong hình. 3.


4.jpg

Hình 5 xung đột dữ liệu


Thứ tư, thử nghiệm hai "cùng một dữ liệu với cùng một ID"

Đồng thời, sử dụng hai thẻ CAN để gửi khung CAN có ID là 000H đến 01020304050607H, và CANScope giám sát truyền thông. Trước tiên, chúng tôi không kiểm tra tùy chọn "bus response" để làm cho CANScope hoạt động ở chế độ chỉ nghe. Các kết quả thực nghiệm được thể hiện trong hình 6, và dấu phân cách đáp ứng là sai định dạng.

5.jpg

Hình 6 Tệp định dạng lỗi phân định đáp ứng


Lý do tại sao điều này xảy ra? Nút gửi tin nhắn sẽ gửi hai bit thuần trong đoạn ACK. Nếu nhận được mức ưu thế trong bit đầu tiên, khung được coi là nhận đúng. Bởi vì hai trọng tài viên nghĩ rằng họ đã có được quyền trọng tài khi họ có cùng phân nhóm trọng tài, họ đợi phản ứng trong phân khúc ACK, nhưng chỉ có hai nút trong mạng. Vì vậy, không có phản hồi nào có thể nhận được trong phân đoạn ACK, và một lỗi phân cách đáp ứng xảy ra. Đơn giản chỉ cần nói, tình huống này cũng tương tự như thực tế là chỉ có một nút trong xe buýt sẽ không thể gửi dữ liệu. Hình 7 cho thấy việc so sánh dạng sóng khi không có phản hồi trong đoạn ACK.

6.jpg

Hình.7 ACK Trả lời


Chúng tôi kiểm tra phản ứng của xe buýt và bắt đầu thử nghiệm một lần nữa (tại thời điểm này có 3 nút trong xe buýt). Vào thời điểm này, như thể hiện trong hình. 8, dữ liệu xe buýt được truyền và nhận bình thường.

7.jpg

Hình 8 Bắt đầu Trả lời xe buýt


Tóm tắt: Khi hai nút gửi các gói với cùng một ID và dữ liệu cùng một lúc, trường dữ liệu padding lỗi xảy ra. Khi hai nút gửi các gói có cùng ID và cùng một dữ liệu, không có lỗi nào xảy ra nếu các nút khác đáp ứng. Các nút khác đáp ứng với một lỗi phản hồi. Vì vậy, chúng ta nên tránh tình huống tương tự trong phân đoạn ID khi thiết kế xe buýt CAN.


Gửi yêu cầu

whatsapp

Điện thoại

Thư điện tử

Yêu cầu thông tin