Đặt vấn đề Chương 2: Cơ sở lý thuyết Chương 3: Thiết kế phần cứng và lập trình Chương 4: Kết quả thực nghiệm Chương 5: Kết luận và hướng phát triển 2 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. Mạng CAN CAN được phát triển lần đầu tiên bởi Robert Bosch GmbH, Đức vào năm 1986 khi họ được Mercedes yêu cầu phát triển một hệ thống liên lạc giữa ba ECU (bộ điều khiển điện tử) trên xe. Họ nhận thấy rằng UART không còn phù hợp trong tình huống này vì nó được sử dụng trong giao tiếp điểm – điểm. Nhu cầu về một hệ thống liên lạc đa chủ trở nên cấp thiết.
Bởi vậy, mạng CAN đầu tiên đã xuất hiện vào năm 1987 bởi Intel chế tạo. Về mặt lý thuyết, CAN có thể liên kết tới 2032 thiết bị (giả sử một nút với một mã ID) trên một mạng duy nhất. Nó cung cấp tốc độ truyền thông tốc độ cao lên đến 1 Mbits / giây do đó cho phép điều khiển thời gian thực. Ngoài ra, tính năng hạn chế lỗi và phát hiện lỗi làm cho nó đáng tin cậy hơn trong môi trường nhiễu nghiêm trọng.
Dựa trên đặc điểm thông số kỹ thuật của Bosch.0 của CAN được chia thành hai phần: CAN tiêu chuẩn (Phiên bản 2.0A): sử dụng ID (Identifier) 11 bit. CAN mở rộng (Phiên bản 2.0B): sử dụng ID 29 bit. Hai phần được định nghĩa bởi các ID khác nhau của thông điệp, với sự khác biệt chính là độ dài mã ID. Có hai tiêu chuẩn ISO cho CAN.
Sự khác biệt là ở lớp vật lý: ISO 11898 xử lý các ứng dụng tốc độ cao lên đến 1Mbit / giây và ISO 11519 có giới hạn trên là 125kbit / giây. Ưu điểm của CAN Đơn giản, chi phí thấp: bus CAN chỉ có 2 dây giúp kết nối các module điều khiển với nhau dễ dàng hơn khi so sánh với cách làm truyền thống. Kèm theo đó là nhiều lợi ích về việc dễ lắp đặt và dễ sửa chữa, bảo trì khi có sự cố. 3 Tạo ra một giao thức chung: để nhiều nhà cung cấp khác nhau có thể phát triển các module điều khiển tương thích với nhau Tính ưu tiên của thông điệp (Prioritization of messages): mỗi thông điệp được truyền ra từ một nút (node) hay trạm (station) trên bus CAN đều có mức ưu tiên.
Khi nhiều thông điệp được truyền ra bus cùng lúc thì thông điệp có mức ưu tiên cao nhất sẽ được truyền. Cá thông điệp có mức ưu tiên thấp hơn sẽ tạm dừng và được truyền lại khi bus rảnh. Việc xác định mức ưu tiên của thông điệp dựa trên cấu tạo (cấu trúc) thông điệp và cơ chế phân xử quy định trong chuẩn chuẩn CAN. Cấu hình linh hoạt: cho phép thiết lập cấu hình thời gian bit, thời gian đồng bộ, độ dài dữ liệu truyền, dữ liệu nhận, … Nhận dữ liệu đa điểm với sự đồng bộ thời gian: một thông điệp có thể được nhận bởi nhiều node khác nhau trong bus cùng lúc.
Tất cả các node trên bus đều có thể thấy thông điệp đang truyền trên bus, tùy vào cấu hình ở mỗi node mà node sẽ quyết định có chấp nhận thông điệp này hay không. Nhiều master (multimaster) Phát hiện và báo hiệu lỗi: Mỗi thông điệp có kèm theo mã CRC (Cyclic Redundancy Code) để thực hiện kiểm tra lỗi. Nếu lỗi xuất hiện, node nhận sẽ bỏ qua thông điệp lỗi và truyền khung báo lỗi (error frame) lên bus CAN. Mỗi node trong bus có bộ đếm quản lý lỗi truyền nhận riêng để xác định trạng thái lỗi của chính nó.
Nếu lỗi xuất hiện quá nhiều, một node có thể tự động ngắt khỏi bus. Ngoài ra còn một số dạng lỗi khác có thể được phát hiện với chuẩn CAN. Tự động truyền lại các thông điệp bị lỗi khi bus rảnh: Một thông điệp được truyền ra bus nếu bị lỗi thì sẽ không mất đi mà node truyền thông điệp này sẽ giữ nó lại và tự động phát lại thông điệp này khi bus CAN rảnh cho đến khi thành công. Điều này giúp đảm bảo tính toàn vẹn dữ liệu trong bus.
Hoạt động và nguyên tắc CAN sử dụng CSMA / CD + AMP (Carrier Sense Multiple Access / Collision Detection with Arbitration on Message Priority). Trước khi gửi thông điệp, nút CAN sẽ kiểm tra xem bus có bận không. Nó cũng sử dụng để phát hiện khả năng trùng lặp. Những phương thức này cũng tương tự như Ethernet.
Tuy nhiên, khi một mạng Ethernet phát hiện xung đột, cả hai nút gửi sẽ ngừng truyền. Sau đó, nó đợi một khoảng thời gian trễ ngẫu nhiên trước khi thử gửi lại. Điều này làm cho mạng Ethernet rất nhạy cảm với tải bus cao. Có thể giải quyết vấn đề này với nguyên tắc xác định quyền ưu tiên rất thông minh trong mạng CAN.
Thông điệp dữ liệu được truyền từ bất kỳ nút nào trên bus CAN không chứa địa chỉ của nút truyền hoặc của bất kỳ nút nhận dự kiến nào. Thay vào đó, nội dung của thông điệp được gắn nhãn bởi một số nhận dạng (ID) là duy nhất trên toàn mạng. Tất cả các nút khác trên mạng đều nhận được thông điệp và mỗi nút thực hiện kiểm tra sự chấp nhận trên mã ID để xác định xem thông điệp có liên quan đến nút đó hay không. Nếu thông điệp có liên quan, nó sẽ được xử lý; nếu không thì nó bị bỏ qua.
Các loại CAN Frame và giao thức CAN Dữ liệu CAN được truyền dưới dạng các Frame (khung). Có 4 loại Frame khác nhau, đó là: Data Frame (khung dữ liệu): là khung mang dữ liệu từ một bộ truyền dữ liệu đến các bộ nhận dữ liệu. Khung này có vùng để mang các byte dữ liệu. 1: Dữ liệu CAN dưới dạng các khung ( Frame ) Remote Frame (khung yêu cầu hay điều khiển): là khung được truyền từ một Node bất kỳ để yêu cầu dữ liệu từ Node khác.
Khi Node khác đó nhận được yêu cầu sẽ truyền lại dữ liệu có ID (Identifier) trùng với ID được gửi trong Remote Frame. Error Frame (khung lỗi): là khung được truyền bởi bất kỳ Node nào khi Node đó phát hiện lỗi từ Bus. 6 Overflow Frame (khung báo tràn): mỗi Node trong CAN Bus có thể truyền bất kỳ khi nào nếu phát hiện Bus rảnh. Hoặc nếu một Node nhận quá nhiều dữ liệu và không xử lý kịp, nó sẽ gửi Frame này để các Node khác không gửi thêm dữ liệu cho nó.
Data Frame và Remote Frame làm việc theo cơ chế phân xử quyền ưu tiên của tín hiệu vì thế cấu trúc của chúng có vùng phân xử quyền ưu tiên, nơi chứa ID của khung. Và chúng có hai định dạng khác nhau là định dạng chuẩn (Standard) và định dạng mở rộng (Extended): Định dạng khung chuẩn sử dụng ID có độ dài 11 bit. Định dạng khung mở rộng sử dụng ID có độ dài 29 bit. Giao thức CAN hiện có: CAN 2.
Sự khác biệt giữa các loại giao thức CAN nằm trong cấu trúc của các loại khung (Frame). 2: Giao thức CAN 2. 3: Giao thức CAN 2. Các tính năng và chuẩn CAN ISO 11898 Signal Recessive state Dominant State Unit Min Norminal Max Min Norminal Max CAN-H 2.
1: Giá tri CAN ISO 11898 ISO 11519 Signal Recessive state Dominant State Unit Min Norminal Max Min Norminal Max CAN-H 1. 2: Giá trị CAN ISO 11519 8 Các độ dài bus khác nhau và tốc độ bit tối đa tương ứng Chiều dài Bus (m) Tốc độ Bit rate tối đa (bit/s) 40 1 Mbit/s 100 500 kbit/s 200 250 kbit/s 500 125 kbit/s 6km 10 kbit/s Bảng 2. 3: Độ dài Bus CAN và tốc độ Bit Các tính năng BasicCAN Ứng dụng điền vào thanh ghi Tx hoàn chỉnh bao gồm ID, RTR, Truyền datalength, data -> mọi ID đều có thể được truyền Mọi thông điệp CAN đều có thể được nhận Thông thường có hai bộ đệm nhận trong cấu trúc FIFO Nhận Lọc thông điệp. Thông thường không thể thiết lập bộ lọc để chỉ những thông điệp đặc biệt được cho qua -> ứng dụng phải thực hiện lọc lần cuối Xử lý Remote Remote Frame được ứng dụng để phản hồi Frame Ghi đè Giữ lại thông điệp cũ nhất (thông điệp mới hơn sẽ bị mất) Bảng 2.
4: Tính năng BasicCAN 9 Tính năng FullCAN Truyền hộp thư được khởi tạo một lần Truyền Chỉ các byte dữ liệu được ghi trước khi truyền Chỉ những thư có ID được xác định trong hộp thư nhận mới có thể nhận được Nhận Không có bộ đệm kép cho hộp thư Lọc chấp nhận hoàn toàn (chỉ những ID thư chính xác mới được thông qua) Xử lý Remote Remote Frame được trả lời tự động bởi bộ điều khiển Frame Ghi đè Giữ lại thông điệp mới nhất (các thông điệp cũ có cùng ID sẽ bị mất) Bảng 2. 5: Tính năng FullCAN 2. Khái niệm Hình 2. 4: Biểu tượng ngôn ngữ lập trình Python Python là một ngôn ngữ khá cũ được tạo ra bởi Guido Van Rossum.
Thiết kế bắt đầu vào cuối những năm 1980 và được phát hành lần đầu tiên vào tháng 2 năm 1991. Qua quá trình phát triển xuyên suốt bao năm nay, Python đã trở thành một trong những ngôn ngữ hàng đầu với những tính năng chính sau đây: 10 Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng. Nó dễ đọc và viết hơn rất nhiều khi so sánh với những ngôn ngữ lập trình khác như C++, Java, C#. Python làm cho việc lập trình trở nên thú vị, cho phép bạn tập trung vào những giải pháp chứ không phải cú pháp.
Miễn phí, mã nguồn mở: Bạn có thể tự do sử dụng và phân phối Python, thậm chí là dùng nó cho mục đích thương mại. Vì là mã nguồn mở, bạn không những có thể sử dụng các phần mềm, chương trình được viết trong Python mà còn có thể thay đổi mã nguồn của nó. Python có một cộng đồng rộng lớn, không ngừng cải thiện nó mỗi lần cập nhật. Các phiên bản Python đã phát hành: - Python 1.0 tháng Giêng, 1994 - Python 1.5 31 tháng 12, 1997 - Python 1.6 5 tháng 9, 2000 - Python 2.0 16 tháng 11, 2000 - Python 2.1 17 tháng 4, 2001 - Python 2.2 21 tháng 12, 2001 - Python 2.3 29 tháng 7, 2003 - Python 2.4 30 tháng 11, 2004 - Python 2.5 19 tháng 9, 2006 - Python 2.6 1 tháng 11, 2008 - Python 2.7 3 tháng 7, 2010 - Python 3.0 3 tháng 12, 2008 - Python 3.1 27 tháng 6, 2009 - Python 3.2 20 tháng 2, 2011 - Python 3.3 29 tháng 9, 2012 - Python 3.4 16 tháng 3, 2014 - Python 3.5 13 tháng 9, 2015 11 - Python 3.6 23 tháng 12, 2016 - Python 3.7 27 tháng 6, 2018 - Python 3.8 24 tháng 9 năm 2020 - Python 3.