gửi tín hiệu xung đi điều khiển
Dưới đây là giải thích đầy đủ – chi tiết – dễ hiểu về PWM trong đoạn code bạn gửi.
Đây là phân tích chuyên sâu cho hệ thống điều tốc thủy điện (guide vane / governor), nơi PWM không phải PWM tần số cao kiểu PLC, mà là PWM chu kỳ dài (ms–giây) để điều khiển van thủy lực.
🟦 I. Ý nghĩa tổng thể của PWM trong code này
-
PWM_1 và PWM_2 → điều khiển van tăng và van giảm.
-
Đây là PWM chu kỳ dài (10ms – vài giây), không phải PWM 1 kHz.
-
PLC dùng xung ON/OFF để điều khiển valve coil chạy theo xung (dạng burst PWM), rất phổ biến trong điều tốc thủy điện.
🟦 II. Giải thích từng khối PWM quan trọng
🟩 1) Thiết lập chu kỳ PWM từ màn hình HMI
-
HMI nhập:
"PWM_1_Pulse_P_HMI"đơn vị = ms -
PLC nhân ×10 → đổi sang 10 × ms = đơn vị 0.1 ms (100 µs)
👉 Ví dụ: HMI nhập 20000 →
PWM_1_Pulse_P = 20000 × 10 = 200000
200000 × 0.1 ms = 20.000 ms = 20 giây chu kỳ
→ CHÍNH XÁC với comment trong code “20毫秒周期” (20s)
➡ Kết luận:
PWM_1_Pulse_P = chu kỳ PWM (period)
đơn vị thực = 0.1 ms
🟩 2) Tính giá trị độ rộng xung (Pulse_t)
-
Nguồn PWM tăng/giảm (#temp_dint6, #temp_dint7) được phóng đại ×5 để tăng độ nhạy.
-
Giới hạn max = 10000
Trong code:
👉 Nghĩa là:
| Giá trị | % Duty |
|---|---|
| 10000 | 100% |
| 5000 | 50% |
| 1000 | 10% |
| 0 | 0% (OFF) |
Pulse_t là độ rộng xung %
🟩 3) Sau đó gán độ rộng xung cho PWM
PWM_t ở đây là duty cycle 0–100% tương ứng 0–10000.
🟩 4) Bộ đếm 20 giây → 2 giây không cho PWM chạy
Nếu một chu kỳ PLC = 1 ms →
18000 → 18 giây
Và điều kiện:
→ 10 ms = khoảng 0.01 giây
Phần dưới:
Ý nghĩa:
👉 Trong chu kỳ 20 giây, có 2 giây bắt buộc tắt PWM
để bảo vệ van, tránh liên tục đóng/mở.
🟩 5) Logic bảo vệ khi chạy máy (并网/孤网/调试)
Nếu hệ thống đạt điều kiện:
-
Feedback nhỏ
-
Lỗi cách ly lưới
-
Không ở chế độ debug
→ PLC ép tắt PWM
(Mục đích: tránh rung van khi tín hiệu không ổn định)
🟩 6) Logic khi STOP máy (关机逻辑)
Có phần đếm thời gian dừng:
-
Đợi ổn định 5 giây
-
Sau đó gửi “pulses” để đóng van từ từ
→ PWM đóng van theo kiểu "pulse → nghỉ → pulse" để tránh sốc thủy lực.
🟩 7) Copy PWM 1–2 sang 3–4
PWM_3 & PWM_4 là buffer / output mirror, hoặc phục vụ phần cứng PTO.
🟦 III. Tóm tắt bản chất PWM trong code
| Biến | Ý nghĩa |
|---|---|
PWM_x_Pulse_P | Chu kỳ PWM (Period), đơn vị 0.1 ms |
PWM_x_Pulse_t | Độ rộng xung (% duty ×100), 0–10000 |
| Duty (%) | = Pulse_t / 100 |
| Chu kỳ | Điều chỉnh từ HMI, thường 20 giây |
| PWM kiểu | ON/OFF dài, dùng điều khiển van thủy lực |
🟦 IV. Hình mô tả chuẩn cho PWM chu kỳ 20s – duty từ 0–100%
Nếu bạn muốn, tôi sẽ vẽ waveform chính xác theo:
-
Chu kỳ 20s
-
Pulse_t (ví dụ 5000 = 50%)
-
PWM 1 và PWM 2 riêng biệt
Chỉ cần bạn đưa:
✔ Giá trị Pulse_P
✔ Pulse_t
Tôi sẽ vẽ dạng xung giống thật

