Hướng dẫn cấu hình tham số chung DCM trong AUTOSAR bằng Vector Configurator Pro

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ộcPhải gán giá trị rõ ràngDcmDevErrorDetect, DcmTaskTime
Có điều kiệnTùy thuộc vào yêu cầu chức năngDcmCalibrationOfObdIdsEnabled
Mặc địnhGiữ nguyên nếu không có lý do đặc biệtDcmDspDataDefaultEndianness
// 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 DcmMaxNumberIterationsPerTask từ 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:

  1. Kiểm tra tĩnh: Dùng chức năng Check Consistency trong Vector Configurator Pro.
  2. 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
  3. 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

Thẻ: AUTOSAR DCM Vector Configurator Pro OBD-II CANoe

Đăng vào ngày 3 tháng 10 lúc 15:55