Ý tưởng chính (3 bước)
Hay — mình hiểu ý bạn: bạn có một PID dùng so sánh điện áp V (SP là V_des, PV là V_meas), nhưng đầu ra PID không trực tiếp điều khiển V mà đi vào một cơ cấu khác (ví dụ tăng/giảm điện áp kích từ E hoặc điều khiển Q). Bạn muốn biết cách biến đầu ra PID thành hành động trên Q (thực tế điều khiển thông qua thay đổi điện áp kích từ) sao cho V được điều chỉnh đúng. Dưới đây là phương án thực tế, kèm công thức + ví dụ mã pseudo/SCL, và lưu ý vận hành.
Ý tưởng chính (3 bước)
-
PID ngoài: dùng SP_V và PV_V → tính OUT_pid (đơn vị: % hoặc V tín hiệu). OUT_pid là mệnh lệnh chỉnh (command) cho cơ cấu điều khiển.
-
Quy đổi OUT_pid → lệnh thực tế cho kích từ (E_cmd) hoặc lệnh Q_set bằng một hệ số chuyển đổi (gain) hoặc bằng vòng trong điều khiển Q (cascade).
-
Giữ vòng bảo vệ: giới hạn, rate limit, anti-windup, deadband, logic ưu tiên (VD: nếu quá tải, chặn).
Cách triển khai chi tiết (2 phương án phổ biến)
Phương án A — Direct mapping (đơn giản)
-
Xác định hệ số chuyển đổi sao cho:
hoặc nếu bạn muốn đặt lệnh theo Q:
-
Thực tế: bạn cần biết độ nhạy giữa E (hoặc lệnh bộ kích từ) và Q hoặc giữa lệnh và V. Đo thử: bước E lên ΔE rồi đo ΔQ và ΔV → tính:
-
Ưu/nhược:
-
Ưu: đơn giản, ít vòng điều khiển.
-
Nhược: nếu quan hệ phi tuyến hoặc thay đổi với trạng thái máy, hiệu quả kém.
-
Phương án B — Cascade control (ổn định, chính xác hơn)
-
Outer loop (PID_V): SP_V - PV_V → OUT_pid (đơn vị: Q_set hoặc E_set).
-
Inner loop (Controller cho Q hoặc E): dùng một PI/PD nhỏ để theo dõi Q_set bằng cách điều khiển tín hiệu kích từ E (hoặc ngược lại). Inner loop nhanh hơn, ổn định hóa biến trung gian.
-
Ví dụ: OUT_pid → Q_set. Inner PID_Q: SP=Q_set, PV=Q_meas → ra E_cmd gửi tới bộ kích từ.
-
Ưu: xử lý phi tuyến, thay đổi trạng thái máy tốt hơn; ổn định khi có độ trễ/pha.
Bổ sung cần thiết khi triển khai
-
Tính nhạy (gain identification): bắt buộc đo ΔQ/ΔE hoặc ΔV/ΔE để chọn K. Làm nghiệm thu bằng 1–2 bước nhỏ và tính slope.
-
Giới hạn (saturation): giới hạn E_cmd, Q_cmd, OUT_pid; xử lý anti-windup cho PID (reset tích phân khi bị bão hòa).
-
Rate limits: hạn chế tốc độ thay đổi (để tránh sốc cho máy).
-
Deadband / hysteresis: tránh dao động khi gần điểm ổn định.
-
Filter cho PV và Q_meas: lọc nhiễu (low-pass) trước khi đưa vào PID.
-
Prioritize bảo vệ: nếu Q vượt ngưỡng hoặc dòng quá lớn, tắt/giới hạn lệnh.
Công thức và bước thực hiện thực tế
-
Tính thể tích dữ liệu đo:
-
Thực hiện một bước ΔE_small (ví dụ +5% trên E_base), ghi ΔQ và ΔV sau ổn định.
-
Tính:
-
-
Chọn chiến lược mapping:
-
Nếu bạn muốn OUT_pid (đơn vị %) chuyển thành E_cmd:
-
Nếu bạn muốn OUT_pid → Q_set và inner loop điều khiển E:
-
Pseudo-code / SCL-like (ví dụ dùng cascade: PID trên V → ra Q_set → PI Q → ra E_cmd)
Chú ý: PID_V_Update và PI_Q_Update đều cần anti-windup.
Tuning (gợi ý)
-
Outer PID (V): thô — chọn Kp nhỏ để tránh kích dao động lớn, Ti lớn hơn (chậm).
-
Inner loop (Q → E): set nhanh, Kp đủ lớn để theo dõi Q_set nhanh.
-
Thực hiện tuning incremental: tune inner loop trước, sau đó outer loop.
-
Sử dụng bước thử tải (step test) để kiểm tra đáp ứng.
Ví dụ số (giả sử)
-
Bước thử: tăng E +1 V làm Q tăng +0.2 MVAr ⇒ .
-
Nếu OUT_pid tính ở thang 0–100 (%), và bạn muốn OUT 100% → tăng E 5 V ⇒ .
-
Khi OUT_pid = 20% → E_cmd tăng 1V → Q tăng ≈ 0.2 MVAr (theo slope).
Lời khuyên vận hành
-
Luôn ghi log PV_V, Q_meas, E_cmd, OUT_pid để hiệu chỉnh K và tuning.
-
Nếu máy có AVR/Automatic Voltage Regulator riêng, coordinate với hệ đó (không "đánh nhau" 2 bộ điều khiển).
-
Nếu hệ phi tuyến (tính trạng tải, cosφ thay đổi) ưu tiên cascade hoặc adaptive gain (tự hiệu chỉnh K theo operating point).
Nếu bạn muốn, mình có thể:
-
Viết đoạn SCL chuẩn hơn theo cú pháp S7 (SCL) cụ thể của bạn.
-
Hoặc nếu bạn cho mình kết quả 1 bước thử (ví dụ: ΔE=+1V → ΔQ=+0.18 MVAr, ΔV=+0.02 pu), mình sẽ tính K và cho mã số cụ thể luôn (không hỏi lại nhiều).
Bạn muốn mình làm tiếp theo theo hướng nào? (viết SCL, tính K từ số đo mẫu, hay mô phỏng bước đáp ứng?)

