điều tốc thủy điện
Đây là một bản phân tích mã lập trình PLC (bộ điều khiển logic khả trình), có khả năng được viết bằng ngôn ngữ Structured Text (ST), dành cho hệ thống điều khiển tua-bin thủy điện, cụ thể là điều khiển cánh hướng (guide vane) và công suất.
Mã được thực thi trong một chu kỳ 10 mili giây.
1. Khởi tạo và Biến đếm (Initialization and Counters)
Bộ đếm chu kỳ: Biến
"my_data1".W_inc_inittăng dần mỗi chu kỳ để theo dõi thời gian chạy của chương trình. Nó được giới hạn ở 5000.Thiết lập thủ công ban đầu: Trong 200 chu kỳ đầu tiên (
< 200), giá trị phản hồi cánh hướng thực tế ("PID_guide_vane_actual") được sao chép và gán cho tất cả các giá trị đặt thủ công/điều khiển ("Y","Y_SD","PID_Gateopening_given","PID_PG_INT"). Đây là cơ chế tiêu chuẩn để đảm bảo việc chuyển đổi sang chế độ điều khiển không bị gián đoạn (bumpless transfer)."PID_YKI_DINT"và"my_data1".PID_YKI_1_DINTđược khởi tạo bằng giá trị phản hồi nhân với 10000.
2. Ánh xạ và Xử lý Tín hiệu Số (I/O Mapping and Digital Signals)
Ánh xạ đầu vào số: Các biến đầu vào như
in_IO_start(khởi động),in_IO_stop(dừng),in_IO_connect(hòa lưới),in_IO_man(thủ công/manual), và các nút tăng/giảm được ánh xạ trực tiếp từ các cổng vật lý (S_IO1_06đếnS_IO1_13).Chốt tín hiệu Lock ON/OFF: Tín hiệu chốt bật (
"in_IO_Lock_ON_P") được xử lý thông qua bộ đếm ("my_data1".C_Lock) để tạo ra tín hiệu Lock ON ("in_IO_Lock_ON") có độ trễ (hơn 200 chu kỳ, tức > 2 giây).
3. Xử lý Tín hiệu Tương tự (Analog Signal Processing)
Code thực hiện việc xử lý tín hiệu tương tự (AD) từ cảm biến và chuyển đổi chúng thành các giá trị kỹ thuật đã được hiệu chỉnh:
Chuyển đổi tín hiệu thô: Tín hiệu AD thô (
"S_IO_ADx") được chuyển đổi và tỉ lệ hóa từ dải 0-32767 sang dải 0-10000.Hiệu chỉnh Phản hồi Cánh Hướng (Guide Vane Feedback):
Phản hồi 1 (
"W_vane_feedback1") và Phản hồi 2 ("W_vane_feedback2") được tính toán bằng cách áp dụng công thức hiệu chỉnh zero ("Par_ADx_Z") và span/gain ("Par_ADx_G"). Kết quả được tỉ lệ hóa (nhân với 9990) và giới hạn trong khoảng từ 0 đến 15000
.
Lựa chọn Phản hồi Cánh Hướng:
Giá trị phản hồi thực tế (
"PID_guide_vane_actual") được chọn từ Phản hồi 1 hoặc 2 dựa trên cờ HMI ("M_HMI_SQ1").Logic dự phòng: Nếu phản hồi đang được chọn bị lỗi (
"M_fault_feedbackx"), hệ thống sẽ tự động chuyển sang sử dụng phản hồi còn lại.
Phản hồi Công suất: Tín hiệu phản hồi công suất (
"W_power_feedback") được tính toán từ AD3 bằng cách hiệu chỉnh Zero ("Par_AD3_Z") và Gain ("Par_AD3_G").Giá trị đặt Công suất (Setpoint): Giá trị đặt công suất từ tín hiệu 4-20mA (
"Par_Power_target420") được tính toán từ AD4 cũng bằng phương pháp hiệu chỉnh Zero/Gain.
4. Phát hiện và Xử lý Lỗi (Fault Detection and Handling)
Lỗi Công suất (
"M_fault_Power"): Được kích hoạt nếu công suất phản hồi thấp (< 100) trong khi cánh hướng đã mở (> 5000) và đang trong chế độ hòa lưới ("in_IO_connect") trong một khoảng thời gian đếm (> 50chu kỳ).Lỗi Hệ thống Servo (Thao tác chậm):
Biến đếm lỗi (
"W_inc_fault_servo_1") tăng lên nếu có độ lệch lớn giữa giá trị đặt và phản hồi (#temp_int1 > 500) VÀ thay đổi vị trí nhỏ trong vòng 0.5s (#temp_int2 < 50). Nếu điều kiện này kéo dài hơn 500 chu kỳ, cờ lỗi
"M_fault_servo_1"được đặt, báo hiệu hệ thống servo không theo kịp lệnh.
Lỗi Đứt dây Phản hồi (Broken Wire):
Sử dụng biến đếm (
"W_inc_ADx_min") để phát hiện nếu tín hiệu AD thô thấp hơn ngưỡng tối thiểu ("Par_ADx_min") trong 5 chu kỳ, sau đó đặt cờ lỗi ("M_fault_feedbackx"). Có logic khôi phục (cờ lỗi được xóa nếu tín hiệu trở lại trên ngưỡng tối thiểu trong 300 chu kỳ)
.
Lỗi Tần số Vượt giới hạn:
Kiểm tra nếu tần số động cơ (
"W_frequency_Engine") nằm ngoài phạm vi (5050/4950) mHz hoặc (5100/4900) mHz so với 50 Hz trong 50 chu kỳ khi đang hòa lưới, để kích hoạt các cờ lỗi"M_frequency_50"và"M_frequency_100".
Tổng hợp Lỗi: Tín hiệu lỗi đầu ra chung (
"out_IO_fault") được kích hoạt bởi các lỗi quan trọng như lỗi PT, lỗi phản hồi, lỗi servo hoặc trạng thái lưới độc lập ("M_sign_isolated_grid").
5. Logic Đầu ra (PWM và Van Nhanh)
Điều khiển PWM (Xung điều chế độ rộng):
Code tính toán độ rộng xung (
"PWM_1_Pulse_t"cho mở,"PWM_2_Pulse_t"cho đóng) dựa trên độ lệch (#temp_int1) giữa giá trị đặt cánh hướng ("PID_guide_vane_target") và giá trị phản hồi thực tế ("PID_guide_vane_actual"). Công thức điều khiển: Dựa trên một tổ hợp giữa thành phần tỉ lệ và một thành phần độ lợi/offset (
"Par_Kx_inc_K","Par_Kx_dec_K","Par_Kx_inc_INC","Par_Kx_dec_DEC"). Độ rộng xung được khuếch đại 5 lần và giới hạn tối đa ở 10000 (tương đương 100% chu kỳ nhiệm vụ cho chu kỳ 20ms).
Điều chỉnh độ nhạy: Khi ở chế độ 3 (
"my_data1".P_GKPD = 3) và độ lệch nhỏ, độ nhạy điều khiển được tăng gấp đôi trong thời gian ngắn.Vùng chết (Deadband): Nếu ở chế độ 3 và độ lệch rất nhỏ (
< \pm 75) cùng các điều kiện khác, xung PWM được tắt ("PWM_1_Pulse_t" := 0; "PWM_2_Pulse_t" := 0) để chống rung động.
Điều khiển Van Chia Đoạn (Dividing Valve):
Sử dụng các bộ đếm (
C_LIM_TFD,C_LIM_FFD) và ngưỡng vị trí cánh hướng ("Par_LIM_TFD") để kích hoạt cờ ("my_data1".M_TFD_BZ,"my_data1".M_FFD_BZ). Các cờ này được sử dụng để kích hoạt Rơ-le đầu ra (
"out_IO_divide_ON","out_IO_divide_OFF") thông qua các Timer Xung (TP) 5 giây.Lưu ý: Đầu ra Rơ-le cuối cùng được đặt thành tín hiệu Lock ON/OFF (
"S_IO2_11" := "in_IO_Lock_ON"; "S_IO2_12" := "in_IO_Lock_OFF").
Điều khiển Van Cắm (Plug Valve - Van Nhanh):
Các van nhanh (
S_IO2_05,S_IO2_06) được kích hoạt nếu độ lệch giữa giá trị đặt và phản hồi vượt quá ngưỡng lớn ("Par_big_valve").Điều kiện ức chế: Các van nhanh này bị vô hiệu hóa (đặt về 0) khi đang ở chế độ hòa lưới (3), tần số ổn định (4950-5050) và không ở chế độ gỡ lỗi (
"M_HMI_sign_debug"=0).
Điều kiện an toàn: Tất cả đầu ra PWM và van nhanh bị buộc phải về 0 trong giai đoạn khởi tạo (
"my_data1".W_inc_init < 500) và khi phát hiện lỗi đứt dây phản hồi ("W_in_AD1_int" < "Par_AD1_min").
Mã này là một đoạn chương trình điều khiển phức tạp, kết hợp nhiều cơ chế điều khiển (chế độ thủ công, điều khiển bằng xung PWM dựa trên độ lệch) và các chức năng an toàn (chuyển đổi phản hồi, phát hiện lỗi công suất/servo/tần số) cho một hệ thống điều tốc thủy điện.

