🌱 ComStack và Communication trong AUTOSAR: Quản lý giao tiếp giữa các ECU
Một trong những tính năng quan trọng nhất của các ECU trong hệ thống Automotive là khả năng giao tiếp với các thiết bị khác. Trong kiến trúc phân lớp AUTOSAR, Communication Stack hoặc ComStack tạo điều kiện thuận lợi cho giao tiếp mạng trên xe. Do đó, ComStack có thể được định nghĩa là một Software Stack cung cấp các Services giao tiếp truyền thông cho các module Basic Software và Application Layer.
Table of Contents
- 1. Giới thiệu về ComStack trong AUTOSAR
- 2. Các giao thức chính trong AUTOSAR
- 3. Cách truyền và nhận một PDU
- 4. Kết luận
1. Giới thiệu về ComStack trong AUTOSAR
ComStack (Communication Stack) trong AUTOSAR là một phần của Basic Software (BSW), hỗ trợ các giao tiếp giữa các Electronic Control Units (ECU) trong xe. Nó đảm bảo dữ liệu truyền đi qua các mạng như CAN, LIN, FlexRay, và Ethernet được xử lý đúng cách và tuân theo chuẩn AUTOSAR.
ComStack trong AUTOSAR bao gồm các module:
- COM Module (Services Layer)
- PDU Router Module (Services Layer)
- Bus Specific Interface Modules (ECU Abstraction Layer) e.g. CanIf, LinIf, FrIf, etc.,
- External Bus Drivers (ECU Abstraction Layer)
- Internal Bus Drivers (MCAL Layer)
Communication Stack trong Autosar |
ECU gửi message qua các mạng khác nhau (Can, Lin, FlexRay ..) các message này được gọi là PDU (Protocol Data Units)
Mỗi message/PDU bao gồm các Signal khác nhau. Các dữ liệu được truyền hoặc nhận bởi các Application được ánh xạ tới các Signal.
Việc truyền message/PDU giữa các layer được đặt tên có liên quan dựa trên layer chứa nó. Một số PDU:
- I-PDU (Interaction Layer PDU) - Các PDU nằm trong các layer ở trên của Communication Hardware Abstraction layer
- N-PDU (Network Layer PDU) - Các PDU nằm dưới layer PDUR và trên của Communication Drivers
- L-PDU (Data Link Layer PDU) - Các PDU nằm dưới Communication Hardware Abstraction
SDU - Service Data Unit và PCI - Protocol Control Information
SDU - Service Data Unit biểu thị dữ liệu được lên lịch để truyền. Trong quá trình truyền, SDU, cùng với PCI, di chuyển từ các lớp trên xuống các lớp dưới. Khi nhận được data, SDU được trích xuất từ các lớp dưới và chuyển tiếp đến các lớp trên. PCI nắm giữ thông tin quan trọng liên quan đến điểm đến tiếp theo của SDU.
Về cơ bản, nó bao gồm các chi tiết về nguồn và đích của SDU, chỉ ra lớp tiếp theo mà PDU (Protocol Data Unit) phải hướng đến.
Nói một cách đơn giản, PDU được chuyển từ các lớp trên xuống các lớp dưới và ngược lại, trong đó có SDU và PCI.
2. Các giao thức chính trong AUTOSAR
2.1. CAN (Controller Area Network)
CAN là giao thức phổ biến nhất trong các hệ thống Automotive, được sử dụng cho giao tiếp thời gian thực giữa các ECU.
Đặc điểm chính:
- Tốc độ: Tối đa 1 Mbps (CAN Standart), hoặc lên tới 5 Mbps (CAN FD - Flexible Data-rate).
- Truyền thông dựa trên Message ID, cho phép nhiều ECU nhận cùng một message.
- Khả năng phát hiện và sửa lỗi cao nhờ cơ chế kiểm tra lỗi tự động (CRC).
AUTOSAR CAN Modules:
- CAN Driver: Giao tiếp trực tiếp với phần cứng CAN Controller.
- CAN Interface (CanIf): Trừu tượng hóa và cung cấp giao diện thống nhất cho CAN Driver.
- CAN Transport Protocol (CanTp): Hỗ trợ phân mảnh và ghép nối các message lớn hơn giới hạn 8 byte của CAN.
- PDU Router (PduR): Định tuyến message giữa các module.
Ứng dụng: Hệ thống truyền động, kiểm soát động cơ, túi khí, ...
2.2. LIN (Local Interconnect Network)
LIN là giao thức giao tiếp giá rẻ, thường được sử dụng trong các ứng dụng không yêu cầu băng thông cao hoặc độ trễ thấp.
Đặc điểm chính:
- Tốc độ: Tối đa 20 kbps.
- Giao thức dựa trên cấu trúc Master-Slave, với một ECU làm Master điều phối các ECU Slave.
- Chi phí thấp, đơn giản hơn CAN.
AUTOSAR LIN Modules:
- LIN Driver: Điều khiển giao tiếp với phần cứng LIN.
- LIN Interface (LinIf): Cung cấp giao diện thống nhất giữa LIN Driver và lớp trên.
- LIN Transport Protocol (LinTp): Quản lý phân mảnh dữ liệu trong giao thức LIN.
- Diagnostic Communication Manager (DCM): Dùng cho chẩn đoán trên mạng LIN.
Ứng dụng: Điều khiển gương, cửa sổ, hệ thống điều hòa, ...
2.3. FlexRay
FlexRay là giao thức giao tiếp tốc độ cao, được thiết kế để hỗ trợ các hệ thống yêu cầu băng thông lớn và độ tin cậy cao.
Đặc điểm chính:
- Tốc độ: Tối đa 10 Mbps.
- Hỗ trợ cả Static Segment (Thời gian định trước) và Dynamic Segment (Thời gian động).
- Độ tin cậy cao nhờ vào các kênh giao tiếp dự phòng (dual channels).
AUTOSAR FlexRay Modules:
- FlexRay Driver: Tương tác trực tiếp với phần cứng FlexRay Controller.
- FlexRay Interface (FrIf): Trừu tượng hóa giao tiếp FlexRay.
- FlexRay Transport Protocol (FrTp): Quản lý phân mảnh dữ liệu lớn hơn kích thước Frame của FlexRay.
- Network Management (NM): Quản lý trạng thái mạng FlexRay.
Ứng dụng: Hệ thống phanh, kiểm soát ổn định điện tử (ESP), hệ thống lái tự động.
2.4. Ethernet
Ethernet trong ô tô ngày càng phổ biến nhờ vào băng thông cao, khả năng mở rộng và phù hợp với các ứng dụng dữ liệu lớn như ADAS (Advanced Driver Assistance Systems) và Infotainment.
Đặc điểm chính:
- Tốc độ: 100 Mbps đến 1 Gbps (Automotive Ethernet).
- Hỗ trợ giao tiếp IP-based, phù hợp với các hệ thống phức tạp.
- Tích hợp các tính năng bảo mật như Encryption, Authentication.
AUTOSAR Ethernet Modules:
- Ethernet Driver (EthDrv): Giao tiếp với phần cứng Ethernet Controller.
- Ethernet Interface (EthIf): Trừu tượng hóa giao tiếp Ethernet.
- Ethernet Transport Protocol (EthTp): Hỗ trợ phân mảnh và truyền tải dữ liệu lớn.
- Socket Adapter (SoAd): Cầu nối giữa giao thức Ethernet và lớp ứng dụng.
- TCP/IP Stack: Xử lý giao tiếp dựa trên các giao thức IP.
Ứng dụng: Camera 360, radar, hệ thống giải trí, ...
3. Các truyền và nhận một PDU
Bài viết sẽ đề cập đến việc truyền nhận PDU với COMStack trên CAN Bus.
Truyền PDU
Bất cứ khi nào User muốn truyền PDU từ Application (A-SWC)., họ có thể sử dụng API “Rte_write_xx” (ở đây ”xx” là tên Signal) và AUTOSAR SW tiếp tục trigger các API được đề cập bên dưới để truyền PDU từ ECU đến bus phần cứng giao thức cụ thể (CAN Bus/Eth Bus/Flexray Bus, v.v.).
Khi người dùng kích hoạt API “Rte_write_xx”, cách Mô-đun COM AUTOSAR truyền PDU phụ thuộc vào 4 yếu tố chính được đề cập bên dưới:
1 - COM Transfer Mode (Áp dụng cho PDU)
- DIRECT: Message được truyền trong lệnh gọi Com_MainFunctionTx() tiếp theo sau việc trigger event xảy ra.
- PERIODIC: I-PDU được truyền với thời gian chu kỳ được cài đặt trước (ComTxModeTimePeriod).
- MIXED: Kết hợp các chế độ truyền CYCLIC và DIRECT.
- NONE: COM không truyền I-PDU. Việc truyền phải được trigger bởi lớp dưới thông qua Com_TriggerTransmit().
Tất cả các chế độ truyền, ngoại trừ NONE, đều duy trì Thời gian trễ tối thiểu (ComTxIPduMinimumDelayTime) và delay việc truyền nếu cần. Chế độ truyền NONE sẽ không có bất kỳ thuộc tính phụ nào khác trong ComTxMode.
2 - COM Transfer property (Áp dụng cho các tín hiệu trong PDU)
Với việc truyền dữ liệu trong các mode DIRECT hoặc MIXED, khi ghi vào Signal có thể là:
- TRIGGERED: việc truyền message được trigger nếu Signal được ghi bất kể Signal Value là gì
- TRIGGERED_WITHOUT_REPETITION: việc truyền message chỉ được trigger một lần mà không lặp lại
- TRIGGERED_ON_CHANGE: việc truyền message được trigger nếu Signal được ghi và Signal Value đã thay đổi
- TRIGGERED_ON_CHANGE_WITHOUT_REPETITION: việc truyền message chỉ được trigger một lần mà không lặp lại
- PENDING: việc ghi vào Signal không gây ra việc truyền trực tiếp.
3 - Filtering algorithms
Module AUTOSAR COM có thể áp dụng bộ lọc cho các Signal đã nhận ở phía bộ nhận để lọc một số tín hiệu. AUTOSAR COM cũng có thể sử dụng các cơ chế lọc ở phía bộ truyền cho Transmission Mode Conditions (TMC).
Bộ lọc có thể được chọn từ các bộ lọc bên dưới cho ComFilterAlgorithms:
4 - COM Tx Mode selection (Áp dụng cho PDU, Đánh giá dựa trên bộ lọc tín hiệu)
- Nếu module AUTOSAR COM đánh giá TMC của tín hiệu đóng góp là True, AUTOSAR COM sẽ đánh giá TMC là True.
- Sender : Sử dụng TMC để lựa chọn mode cho I-PDU, không có lọc
- Receiver : Lọc chỉ diễn ra ở phía bộ nhận
- COM lưu trữ giá trị cũ để đánh giá bộ lọc (so sánh với giá trị mới)
- False : COM loại bỏ và sẽ không xử lý Signal (Không cập nhật giá trị cũ)
- True : COM chấp nhận và xử lý Signal (Cập nhật giá trị cũ)
- Không truyền PDU với NONE, Com_Trigger-Transmit có thể yêu cầu truyền tín hiệu đó
- Pending Signal + PDU = đã truyền, nếu việc truyền PDU được kích hoạt bởi tín hiệu kích hoạt khác hoặc lập lịch Tx do Periodic/Mixed
Nhận PDU
Bất cứ khi nào message được nhận bởi bus vật lý, Bộ điều khiển sẽ sinh ra một Interrupt và các API khác liên quan đến việc xử lý PDU nhận được hiển thị bên dưới.
Signal Indication on reception (Unpacking of I-PDUs)
Để hỗ trợ cả hệ thống điều khiển ngắt và polling, có thể cấu hình khi signal indication diễn ra. Có hai chế độ signal indication có thể cấu hình là IMMEDIATE và DEFERRED có thể cấu hình thông qua ComIPduSignalProcessing.
- IMMEDIATE
Module AUTOSAR COM ngay lập tức thông báo cho RTE thông qua ComNotifications đã cấu hình cho các tín hiệu và nhóm tín hiệu được bao gồm trong Com_RxIndication hoặc hàm Com_TpRxIndication tương ứng, được PduR (Bộ định tuyến PDU, module lớp dưới) gọi như một indication về việc nhận tín hiệu. - DEFFERED
Module AUTOSAR COM đầu tiên sao chép dữ liệu I-PDU do PduR cung cấp vào COM, sau đó gọi ComNotifications đã cấu hình cho các tín hiệu và nhóm tín hiệu được bao gồm một cách không đồng bộ trong lần gọi tiếp theo của Com_MainFunctionRx.
4. Kết luận
ComStack là nền tảng cho giao tiếp giữa các ECU trong hệ thống ô tô hiện đại. Nhờ vào sự chuẩn hóa của AUTOSAR, các giao thức như CAN, LIN, FlexRay, và Ethernet có thể hoạt động đồng bộ, đảm bảo tính tương thích và hiệu suất cao. Việc lựa chọn giao thức phụ thuộc vào yêu cầu cụ thể về băng thông, độ trễ, và độ tin cậy của từng ứng dụng.
AUTOSAR không chỉ tối ưu hóa giao tiếp trong xe mà còn giúp các nhà phát triển dễ dàng tích hợp các tính năng mới, giảm chi phí phát triển và nâng cao khả năng mở rộng của hệ thống.
> Tham khảo một phần từ tác giả: Ahmed Ferganey
>>>>>> Follow ngay <<<<<<<
Để nhận được những bài học miễn phí mới nhất nhé 😊
Chúc các bạn học tập tốt 😊