CHƯƠNG 3 : BỘ ĐIỀU KHIỂN ĐIỆN TỬ
3.5. Phần mềm điều khiển
3.5.2. Cấu trúc phần mềm
Bộ vi điều khiển trong bộ điều khiển thực hiện các lệnh tuần tự. Mã lệnh được lấy từ bộ nhớ chương trình. Thời gian để đọc và thực hiện lệnh phụ thuộc vào vi điều khiển được sử dụng và tần số xung nhịp. Các bộ vi điều khiển hiện đang được sử dụng trong xe có thể thực hiện tới 1 triệu lệnh mỗi giây.
Do tốc độ mà một chương trình có thể được thực thi bị giới hạn, nên một yêu cầu về một cấu trúc phần mềm có chức năng quan trọng về mặt thời gian có thể được xử lý với mức độ ưu tiên cao.
Chương trình quản lý động cơ phải phản ứng cực nhanh với các tín hiệu từ cảm biến tốc độ, ghi lại tốc độ động cơ và vị trí trục khuỷu. Những tín hiệu này đến trong khoảng thời gian ngắn mà có thể là 1 phần nghìn giây, tùy thuộc vào tốc độ động cơ. Chương trình đơn vị điều khiển phải đánh giá các tín hiệu này với mức độ ưu tiên cao. Các chức năng khác như đọc trong nhiệt độ động cơ không phải tạo ra biến khẩn cấp, vì biến vật lý chỉ thay đổi rất chậm trong trường hợp này.
Kiểm soát ngắt
Ngay khi một biến cố đòi hỏi phản hồi cực nhanh xảy ra (ví dụ: xung cảm biến tốc độ), chương trình hiện đang chạy phải bị gián đoạn. Điều này có thể được thực
hiện bằng cách sử dụng thiết bị điều khiển ngắt vi điều khiển. Các biến cố có thể kích hoạt việc ngắt thực thi chương trình, trong đó chương trình nhảy và thực hiện đoạn chương trình ngắt. Khi đoạn chương trình này đã được thực thi, chương trình sẽ tiếp tục tại điểm mà nó bị gián đoạn (Hình 3.5).
Hình 3.5 ngun lí bộ phân phối nguồn CPU
Việc ngắt có thể được kích hoạt bởi một tín hiệu bên ngồi, ví dụ. Các nguồn ngắt khác là các bộ định thời được tích hợp trong vi điều khiển, với các tín hiệu đầu ra được định thời có thể được tạo ra (ví dụ: tín hiệu đánh lửa: đầu ra đánh lửa của vi điều khiển được chuyển đổi tại một thời điểm được tính tốn trước). Tuy nhiên, bộ đếm thời gian cũng có thể tạo khung thời gian nội bộ.
Chương trình bộ điều khiển phản ứng với một vài trong số việc ngắt này. Do đó, một nguồn ngắt có thể yêu cầu tắt trong khi một đoạn chương trình ngắt khác hiện đang được thực hiện. Do đó, mọi nguồn ngắt đều có mức ưu tiên cố định được gán cho nó. Và bộ điều khiển ưu tiên quyết định ngắt nào được phép ngắt một ngắt khác.
Trục khuỷu được trang bị đĩa xung (Hình 3.6) có số răng nhất định trên chu vi của nó. Răng được quét bởi cảm biến tốc độ. Điều này cho phép ghi lại vị trí trục khuỷu. Khoảng cách điển hình giữa một cặp răng trên bánh xe cảm biến trục khuỷu là 6 °. Để xác định vị trí trục khuỷu, chương trình đơn vị điều khiển phải thực hiện các đoạn chương trình nhất định khi từng răng được phát hiện. Ở tốc độ 6.000 vòng / phút
thời gian phát hiện giữa hai răng xấp xỉ 300µs. Mỗi lệnh trong các đoạn chương trình này phải được thực thi trong thời gian này. Điều này đòi hỏi một phản ứng nhanh với tín hiệu cảm biến tốc độ.. Với mục đích này, tín hiệu tốc độ động cơ được kết nối với đầu vào của phần ngắt vi điều khiển. Mỗi biên tín hiệu rơi ở đầu vào này làm gián đoạn các tính tốn hiện tại đang được tiến hành và buộc một nhánh đến tuyến ngắt. Sau khi thực hiện các lệnh trong thường trình ngắt, chương trình tiếp tục thực hiện tại điểm gốc của nó.
Hình 3.6 Vịng cảm biến trục khuỷa với cảm biến tốc độ a : Kết cấu
b : tín hiệu cảm biến tốc đơ
Để thực hiện một số thao tác nhất định, chương trình bộ điều khiển địi hỏi thời gian mà trục khuỷu di chuyển giữa một răng và tiếp theo. Tính tốn này được thực hiện bởi một bộ đếm thời gian nội bộ. Đây là bộ đếm 16 bit tự do (Hình 3.6) tăng theo một tốc độ nhất định, tùy thuộc vào chu kỳ xung nhịp của bộ điều khiển vi điều khiển. Khung thời gian này lên tới khoảng 0,5µs. Khi sự mất răng xảy ra, trạng thái bộ đếm
hiện tại được ghi lại. Sự khác biệt (và do đó khoảng thời gian trống răng) được tính bằng cách sử dụng bộ đếm được lưu trữ từ răng trước đó.
Ví dụ: tính tốn vị trí trục khuỷu
Hệ thống quản lý động cơ (Motronic cho động cơ xăng, EDC cho động cơ diesel) phải biết vị trí trục khuỷu tại bất kỳ thời điểm nào. Đây là điều kiện tiên quyết để cho việc phun vào đúng xy lanh và vào đúng thời điểm và đảm bảo rằng việc đánh lửa diễn ra ở góc đánh lửa được tính tốn (hệ thống Motronic). Để mà phát hiện vị trí động cơ và tốc độ động cơ, bộ điều khiển đánh giá tín hiệu cảm biến tốc độ (Hình 3.7).
Hình 3.7 Tính tốn thời gian qua bộ đếm thời gian nội bộ a : kết cấu
b : tín hiệu cảm biến tốc độ
Có khoảng trống trên đĩa cảm biến trục khuỷu trong đó hai răng bị mất. Khoảng không mà hai răng bị mất được gọi là không gian răng. Khơng gian răng sở hữu một vị trí xác định liên quan đến trung tâm điểm chết trên (TDC) của xi lanh số1. Chương trình bộ điều khiển phải tự đồng bộ hóa với khơng gian răng này. Điều này được thực hiện bằng cách đo thời gian giữa hai răng quay khuyết liên tiếp. Thời gian cho không gian răng lớn hơn đáng kể so với thời gian trước và sau nó. Theo một chuỗi ngắn ngắn - dài - ngắn, trình tự được quét tiếp theo là biên của răng thứ hai sau khoảng cách.
Trục khuỷu đã được quay 6 ° cho mỗi răng rơi và được phát hiện bởi chương trình của bộ điều khiển. Đây là cách chương trình bộ điều khiển biết vị trí trục khuỷu
trong khung thời gian này.
Kể từ khi xi lanh số 1 ở vị trí khơng gian răng ở gần điểm chết trên (TDC) hoặc điểm chết dưới (BDC), cần có tín hiệu bổ sung để xác định vị trí. Cảm biến trục cam cung cấp một mức điện áp khác nhau cho cả hai trường hợp. Do đó, bộ điều khiển có thể xác định đúng vị trí duy nhất của trục cam và trục khuỷu
Đốt cháy đồng bộ
Một số tính tốn phải được thực hiện cho mỗi chu kỳ đốt. Ví dụ, góc đánh lửa và phun phải được tính tốn đồng bộ với q trình đốt cho mỗi xi lanh. Sau một số răng nhất định, chương trình thực hiện điều này bằng cách phân nhánh vào chương trình đồng bộ hóa trực tuyến (Hình 3.8). Sự gián đoạn này diễn ra sau mỗi 30 răng (khoảng thời gian đánh lửa) cho động cơ bốn xi lanh và cứ sau 20 răng cho động cơ sáu xi lanh.
Hình 3.8 Kích hoạt ngắt đồng bộ với quá trình đốt
Chương trình đồng bộ hóa được chỉ định ở một vị trí răng nhất định và phải được thực hiện với mức độ ưu tiên cao. Vì lý do này, nó được kích hoạt thơng qua một ngắt (được kích hoạt bởi một lệnh trong đoạn chương trình ngắt răng). Khi chương trình đồng bộ hóa chạy trên một số răng ở tốc độ động cơ nhanh, nó phải bị gián đoạn bởi sự gián đoạn răng. Ngắt răng được ưu tiên cao hơn chương trình đồng bộ hóa.
Đầu ra đánh lửa diễn ra trong một phạm vi trục khuỷu nhất định, tùy thuộc vào giá trị từ sơ đồ đánh lửa. Do góc đánh lửa được chỉ định phải được tuân thủ chính xác, đầu ra đánh lửa được điều khiển bởi một ngắt. Giống như chương trình đồng bộ hóa, ngắt đánh lửa cũng được gọi lên một lần trên mỗi chu kỳ đốt.
Chương trình thiết bị điều khiển nhận biết vị trí trục khuỷu trong khung 6 °. Tuy nhiên, khung này khơng đủ chính xác cho đầu ra góc đánh lửa. Vì lý do này, đầu ra đánh lửa chính xác giữa hai răng phải diễn ra cũng như việc tính gần đúng này cho khoảng từ 0 đến 6 độ của trục khuỷu. Điều này được thực hiện bằng cách sử dụng một bộ đếm thời gian (Hình 3.9). Nếu đầu ra góc đánh lửa hoàn toàn là bộ điều khiển hẹn giờ sẽ dẫn đến lỗi đầu ra góc đánh lửa ở động lực tốc độ động cơ cao.
Hình 3.9 Thời gian dừng và thời gian đánh lửa
Đầu tiên, cuộn dây đánh lửa phải được kích hoạt trong một thời gian xác định (cái gọi là thời gian dừng). Để thực hiện việc này, chương trình tính tốn thời gian bật bằng cách tính tốn ngược từ góc đánh lửa mà tại đó cuộn dây đánh lửa phải được tắt. Điều này làm cho nó có thể tính tốn răng sau việc cuộn dây đánh lửa bị tắt (tính gần đúng trong khung thời gian 6 °). Góc cịn lại (đếm chi tiết 0 đến 6 °) được chuyển đổi thành thời gian đầu ra bằng cách sử dụng tốc độ động cơ hiện tại. Ngay sau khi đạt được vị trí răng đã chỉ định bằng cách sử dụng cách tính gần đúng, thời gian sẽ được nạp với giá trị đầu ra từ việc đếm chi tiết. Khi khoảng thời gian này hết hạn, bộ định thời kích hoạt việc ngắt. Các lệnh bật cuộn dây đánh lửa được thiết lập trong đoạn chương trình ngắt này. Sau đó, bộ định thời được đặt trước giá trị thời gian dừng, khi
bộ định thời trơi qua thì một chương trình ngắt sẽ được kích hoạt, tắt cuộn dây đánh lửa và do đó bắt đầu đánh lửa
Khung thời gian
Nhiều thuật tốn điều khiển phải chạy trong một khung thời gian nhất định. Ví dụ, điều khiển Lambda phải được xử lý trong khung thời gian cố định (ví dụ: 10 ms) để các biến đúng được tính đủ nhanh.
Chương trình nền
Tất cả các hoạt động khác khơng chạy trong đoạn chương trình ngắt hay trong khung thời gian thì sẽ được chạy ở chương trình nền. Ở tốc độ động cơ nhanh, chương trình đồng bộ hóa và ngắt răng được gọi thường xuyên, để lại ít thời gian trong CPU cho chương trình nền. Thời gian tiêu tốn cho việc chạy hồn tồn các chương trình nền sẽ tăng nếu tốc độ động cơ tăng. Do đó, chương trình nền phải chỉ chứa các hàm ưu tiên thấp.