Khi mới làm quen với mô-đun DCM (Diagnostic Communication Manager) trong AUTOSAR, kỹ sư thường bối rối trước lượng lớn tùy chọn trong công cụ Vector Configurator Pro. Mỗi tham số đều ảnh hưởng trực tiếp đến hành vi chẩn đoán của ECU — cấu hình sai có thể gây lỗi chức năng hoặc thất bại trong tích hợp hệ thống. Bài viết này cung cấp hướng dẫn thực tế để thiết lập các tham số chung của DCM một cách chính xác và hiệu quả.
1. Cấu trúc giao diện và phân loại tham số
Giao diện cấu hình DCM trong Vector Configurator Pro được chia thành năm nhóm chính:
- DcmDsd: Quản lý lịch trình dịch vụ chẩn đoán
- DcmDsl: Xử lý phiên chẩn đoán (session layer)
- DcmDsp: Xử lý logic dịch vụ chẩn đoán
- DcmGeneral: Các tham số chung (trọng tâm bài viết)
- DcmPageBufferCfg: Cấu hình bộ đệm dữ liệu
Lưu ý: Trước khi chỉnh sửa, hãy sao lưu cấu hình gốc qua
File > Save Asđể tránh mất dữ liệu.
1.1 Phân loại tham số theo mức độ ưu tiên
Trong container DcmGeneral, hơn 30 tham số có thể được nhóm như sau:
| Loại tham số | Chiến lược xử lý | Ví dụ |
|---|---|---|
| Bắt buộc | Phải gán giá trị rõ ràng | DcmDevErrorDetect, DcmTaskTime |
| Có điều kiện | Tùy thuộc vào yêu cầu chức năng | DcmCalibrationOfObdIdsEnabled |
| Mặc định | Giữ nguyên nếu không có lý do đặc biệt | DcmDspDataDefaultEndianness |
// Ví dụ khởi tạo cấu hình DCM
const Dcm_ConfigType DcmGenCfg = {
.DcmDevErrorDetect = TRUE,
.DcmTaskTime = 10U, // Chu kỳ gọi task chính: 10ms
.DcmDemApiVersion = 0x0403U // Phiên bản API DEM
};
2. Phân tích chi tiết các tham số then chốt
2.1 Cấu hình xử lý lỗi và bảo mật
Hai tham số dễ nhầm lẫn:
DcmDevErrorDetect = TRUE: Kích hoạt báo cáo lỗi qua DET — phù hợp giai đoạn phát triển.DcmDefensiveBehaviorEnabled = TRUE: Xử lý lỗi nội bộ mà không báo — tăng độ bền cho bản sản xuất.
Không nên bật đồng thời cả hai trong môi trường sản xuất vì ảnh hưởng hiệu năng.
2.2 Tối ưu lịch trình task
Khi bật DcmSplitTasksEnabled = TRUE, DCM sẽ tách thành hai hàm chính:
Dcm_MainFunctionWorker(chu kỳ =DcmMainFunctionWorkerTaskTime)Dcm_MainFunctionTimer(chu kỳ =DcmTaskTime)
Khuyến nghị:
- Giới hạn
DcmMaxNumberIterationsPerTasktừ 5–10 để tránh quá tải - Đảm bảo
DcmTaskTimeđủ nhỏ để đáp ứng thời gian thực, nhưng không khiến CPU vượt 70%
3. Cấu hình hỗ trợ chuẩn OBD-II
Đối với dự án yêu cầu tuân thủ OBD-II:
DcmCalibrationOfObdIdsEnabled = TRUE
DcmCalibrationOfObdIdsMemoryType = NON_VOLATILE
DcmDtrDataProvisionViaDemEnabled = TRUE // Nếu dùng DEM làm nguồn dữ liệu DTR
DcmSuppressResponseOnCanTpFuncMixedAddrRequests = TRUE
4. Quản lý phiên chẩn đoán và cấp độ bảo mật
Một số cấu hình phổ biến:
DcmSecurityLevelChangeNotificationEnabled = TRUE
DcmRequestManufacturerNotificationEnabled = TRUE
DcmResetToFblAfterSessionFinalResposeEnabled = FALSE
DcmStateRecoveryAfterResetEnabled = TRUE // Giữ trạng thái session sau reset
Lưu ý: Giá trị DcmKeepAliveTime nên ≥ 5 giây để tránh timeout phiên do trễ mạng.
5. Kiểm thử và xác minh cấu hình
Sau khi cấu hình, thực hiện các bước kiểm tra:
- Kiểm tra tĩnh: Dùng chức năng Check Consistency trong Vector Configurator Pro.
- Kiểm thử động: Gửi yêu cầu chẩn đoán qua CANoe, ví dụ:
diagRequest = {0x22, 0xF1, 0x8C}; // Đọc DID F18C - Kiểm thử ngoại lệ: Gửi yêu cầu không hợp lệ để kiểm tra phản hồi lỗi.
Đối với bản sản xuất, nên bật:
DcmVersionInfoApi = TRUE // Cho phép truy vấn thông tin phiên bản DCM