Hướng dẫn mô phỏng hệ thống cấp nước áp suất không đổi dùng PLC Siemens và biến tần

Gần đây tôi đang thực hiện một dự án cấp nước áp suất không đổi với PLC Siemens và nhận ra rằng nó thực sự có thể biến bạn thành một chuyên gia thủy lực nửa vời. Đặc biệt là cấu hình "một kéo ba, một dự phòng" cho khu dân cư, giống như một trò chơi "xổ số máy bơm" – vừa phải giữ áp suất nước ổn định như chó già, vừa phải luân phiên thiết bị để không bị kiệt sức. Hôm nay, tôi sẽ chia sẻ một số kiến thức thực tế với TIA Portal V17 và WinCC.

Cấu hình phần cứng

CPU S7-1500 kết nối với ba biến tần (dòng MM440) và HMI sử dụng màn hình thông minh KTP700. Lưu ý rằng máy bơm dự phòng cần được trang bị mạch khởi động sao-tam giác riêng, để tránh trường hợp tất cả máy bơm chính đều hỏng mà máy dự phòng không thể chạy. Khi cấu hình phần cứng, hãy kéo khối PID vào OB35 (ngắt tổ chức) và đặt chu kỳ lấy mẫu là 200 ms – vừa đủ.

Logic điều khiển PID

Mã lõi nằm trong khối chức năng FB1000. Dưới đây là logic xử lý vòng kín áp suất:


L  "AI_Pressure"          // Đọc giá trị áp suất thực tế
T  #PV                    // Gửi đến đầu vào PID
CALL "PID_Compact_DB"    // Gọi PID nhỏ gọn
PV_IN         := #PV,
SETPOINT      := 3.5,     // Áp suất đặt 3.5 bar
OUTPUT        => #Output;

"Pump1_Speed" := INT_TO_REAL(#Output)*50.0 + 20.0; // Ánh xạ từ 0-100% sang 20-70 Hz

Mẹo: Tại sao không sử dụng toàn bộ dải tần? Dưới 20 Hz, máy bơm dễ bị rung (surge), trên 70 Hz, động cơ có thể quá tải. Khi gỡ lỗi, dùng ứng dụng điện thoại đo áp suất nước. PID nên được tự động chỉnh (auto-tune) trước, nhưng nhớ cắt giảm một nửa thời gian vi phân – vì tự động chỉnh của Siemens phản ứng quá mạnh với hệ thống nước, dễ gây ra dao động kiểu Parkinson.

Giao diện HMI

Giao diện màn hình cảm ứng là linh hồn của hệ thống. Trong WinCC, tôi đã tạo một sơ đồ ống động. Quan trọng là kết nối biến này:


SetTagFloat("PipePressure", GetTagFloat("AI_Pressure"));
SetTagWord("PumpStatus", GetTagByte("Pump1_Run") | GetTagByte("Pump2_Run")<<1);

Sử dụng thao tác bit để nén trạng thái ba máy bơm thành một biến WORD rồi truyền lên HMI. Trên giao diện, dùng đồ họa vector với các lớp riêng biệt để hiển thị. Bỗng nhiên tôi thấy kiến thức vi xử lý ngày xưa không uổng phí...

Logic chuyển đổi máy bơm dự phòng

Khi mô phỏng, phần thú vị nhất là chuyển đổi máy bơm dự phòng. Khi hai máy bơm chính chạy liên tục hơn 8 giờ:


IF "Pump1_Runtime".TON(IN:=TRUE,PT:=T#8h) THEN
    "Standby_Trigger" := TRUE;
    "Pump3_Start" := NOT "Pump3_Start"; // Buộc chuyển sang máy bơm dự phòng
END_IF;

Nhưng đừng viết trực tiếp như vậy! Phải thêm khóa liên động trạng thái lỗi, nếu không, kỹ sư điện tại hiện trường sẽ đến "trao đổi" với bạn. Giải pháp cuối cùng: dừng máy bơm số 1, đợi 5 giây rồi khởi động máy bơm số 3. Trong thời gian chờ, áp suất được duy trì bởi bình tích áp.

Kinh nghiệm xương máu về biểu đồ HMI

Khi tạo biểu đồ xu hướng trên HMI, đừng đặt chu kỳ lấy mẫu quá ngắn. Một lần tôi đặt 500 ms, WinCC chạy ba ngày là ngốn hết RAM của máy tính công nghiệp, khiến áp suất nước toàn khu dao động như tàu lượn – chủ đầu tư suýt bắt tôi "lên dây cót". Từ đó, tôi luôn dùng khoảng thời gian 10 giây. Thực sự hiệu quả.

Bài học lớn nhất sau khi hoàn thành hệ thống này: Cấp nước áp suất không đổi là một mối tình tay ba giữa máy bơm, PID và kỹ sư điện trực. Nếu một ngày nào đó bạn thấy ai đó ôm PLC khóc, đừng hỏi, chỉ cần biết họ đang điều chỉnh tham số và mọi thứ đã vượt tầm kiểm soát...

Thẻ: S7-1500 WinCC TIA Portal PID biến tần MM440

Đăng vào ngày 11 tháng 7 lúc 03:12