Doanh nghiệp nông nghiệp – thực phẩm
Nâng cấp hệ điều khiển ICS, bốn giai đoạn
Vai trò và phạm vi
| Vai trò | Giai đoạn 1: kỹ sư lập trình. Giai đoạn 2-4: trưởng nhóm lập trình |
|---|---|
| Thời gian | 2018 – 2024 |
| Phạm vi | Hệ điều khiển chính của nhà máy, toàn bộ trạm vận hành |
| Nền tảng kỹ thuật | Modicon M580 · Quantum PLC · WinCC V7.0 SP2 · WinCC V7.5 SP2 · Siemens · Schneider Electric |
Bài toán
Hệ thống điều khiển chính tại nhà máy Vietnam Agribusiness Limited vận hành trên dòng PLC Quantum của Schneider đã dừng hỗ trợ linh kiện thay thế từ hãng, tiềm ẩn rủi ro dừng máy kéo dài nếu xảy ra sự cố phần cứng. Lớp giám sát phía trên sử dụng WinCC V7.0 SP2 của Siemens, với nhiều script xử lý popup template và dữ liệu. Sau nhiều năm hoạt động, mỗi thao tác trên SCADA mất khoảng 3–4 giây mới phản hồi, nên cũng cần được nâng cấp.
Hai hạng mục có tính chất khác nhau: rủi ro thiếu vật tư dự phòng ở tầng điều khiển là vấn đề cấp bách, còn tầng giám sát cần cải thiện về mặt hiệu năng.
Cách tiếp cận
Lộ trình thực hiện được xác định rõ ràng: ưu tiên nâng cấp phần cứng lên dòng Modicon M580 trước, sau đó mới xử lý hệ SCADA. Việc thay thế PLC giúp nhà máy đưa thiết bị về dòng sản phẩm đang lưu hành, giải quyết dứt điểm vấn đề linh kiện dự phòng.
Đối với tầng giám sát, phương án lựa chọn là giữ nguyên nền tảng WinCC thay vì chuyển đổi sang phần mềm của Schneider. Giải pháp này giúp giữ nguyên bố cục màn hình quen thuộc, tránh việc phải đào tạo lại người vận hành và loại bỏ rủi ro thao tác sai khi chuyển giao hệ thống.
Quá trình thi công tại hiện trường chịu ràng buộc lớn về thời gian. Khu vực thi công là khu vực sản xuất của nhà máy, nên việc thay thế và kiểm tra hệ thống chỉ được phép thực hiện từ 22h đến 3h sáng hôm sau. Trong khung giờ đó, đội ngũ phải tháo dỡ Quantum, lắp đặt M580 và kiểm tra tính tương thích với toàn hệ thống. Mọi bước làm đều chuẩn bị sẵn phương án quay lui về cấu hình ban đầu ngay trong cùng khung giờ nếu phát sinh lỗi tương thích, đảm bảo nhà máy luôn sẵn sàng chạy lại.
Khi tầng điều khiển đã chạy ổn định, dự án bước sang giai đoạn nâng cấp WinCC từ bản V7.0 SP2 lên V7.5 SP2 và chuẩn hóa cấu hình cho toàn bộ các máy trạm vận hành.
Điểm nghẽn nằm ở chu kỳ quét của PLC
Sau khi thay M580 ở giai đoạn đầu năm 2018, tín hiệu từ PLC ổn định nhưng phản hồi trên SCADA không cải thiện. Có những thao tác mất tới 10–11 giây mới phản hồi. Đội dự án chia hai hướng: phần cứng kiểm tra PLC, phần mềm rà soát SCADA và các script, đồng thời làm việc cùng hãng. Tôi đề xuất mượn một bộ M580 về văn phòng để dựng môi trường thử nghiệm trước khi mang xuống nhà máy. Sau nhiều vòng thử, nguyên nhân vẫn chưa rõ và hệ thống phải đưa về cấu trúc ban đầu.

Thay vì tiếp tục tập trung vào một phía, chúng tôi rà lại toàn bộ chuỗi xử lý từ SCADA xuống PLC, kể cả những thông số tưởng như ít liên quan đến thời gian phản hồi. Một trong số đó là cấu hình Tác vụ chính, bắt buộc của PLC Modicon M580, chứa phần lớn chương trình điều khiển. Chạy ở chế độ Cyclic (quét liên tục) hoặc Periodic (quét theo nhịp cố định, mỗi vòng bắt đầu theo một chu kỳ đặt trước)., tác vụ chính của PLC. Trên M580, MAST chạy ở một trong hai chế độ. Ở chế độ Cyclic, vòng quét mới bắt đầu ngay khi vòng trước kết thúc và không có thông số thời gian chu kỳ. Ở chế độ Periodic, PLC quét theo nhịp cố định: mỗi vòng quét bắt đầu theo một chu kỳ đặt trước; nếu logic xử lý xong sớm, CPU chờ đến hết chu kỳ mới bắt đầu vòng tiếp theo.
PLC chỉ cần khoảng 15–20 ms để xử lý toàn bộ logic, trong khi Periodic đang được cấu hình ở 120 ms. Phần lớn mỗi vòng quét là thời gian chờ. Điều này ảnh hưởng trực tiếp đến SCADA, vì CPU tiếp nhận các yêu cầu truyền thông với số lượng giới hạn trong mỗi vòng quét MAST. Chu kỳ càng dài, số vòng quét mỗi giây càng ít, và yêu cầu từ SCADA càng phải xếp hàng lâu hơn.
Chúng tôi giữ chế độ Periodic và điều chỉnh chu kỳ theo kết quả đo kiểm: 120 ms → 25 ms.

Khởi động WinCC chậm vì cách chia dữ liệu lưu trữ
Giai đoạn nâng cấp WinCC từ V7.0 SP2 lên V7.5 SP2 bắt đầu năm 2022. Sau nâng cấp, hệ thống không báo lỗi, dữ liệu vẫn được ghi đầy đủ và người vận hành vẫn giám sát, điều khiển được, nhưng mỗi lần khởi động hoặc dừng Runtime mất khoảng 30–40 phút. Kỹ sư hỗ trợ của Siemens chạy thử chính project đó trên máy thử nghiệm chưa có dữ liệu lưu trữ: Runtime khởi động trong khoảng 15 giây. Khác biệt nằm ở phần chỉ có trên máy nhà máy, khoảng 50 GB dữ liệu lưu trữ tích lũy qua nhiều năm vận hành.

Trong WinCC V7, dữ liệu lưu trữ của Tag Logging và Alarm Logging không nằm trong một file duy nhất mà được chia thành nhiều Một phần của archive lưu trữ trong WinCC (Tag Logging, Alarm Logging), gồm một cặp file cơ sở dữ liệu MDF và LDF. WinCC tạo segment mới khi segment hiện tại vượt giới hạn thời gian hoặc dung lượng đã cấu hình.. Cấu hình cũ, giống nhau cho Tag Logging Fast và Slow, giữ toàn bộ archive 3 năm và mỗi segment chứa 1 ngày. Từng con số đều hợp lý, nhưng ghép lại thành hơn 2.000 segment mà Runtime phải liên kết mỗi lần khởi động và tách ra mỗi lần dừng, trong khi khuyến cáo của hãng là tối đa 200 segment, mỗi segment tối đa 2 GB. Trình quản lý archive không kiểm tra tính hợp lý của các thông số này.
Khuyến nghị đầu tiên của hãng là reset toàn bộ archive, nhưng dữ liệu này dùng cho audit nên không thể xóa. Chúng tôi giữ nguyên yêu cầu lưu trữ 3 năm và chỉ đổi cách chia: dung lượng tối đa của tất cả segment là 110 GB, mỗi segment chứa 3 tuần thay vì 1 ngày. Mỗi archive còn khoảng 52 segment, khoảng 104 cho cả Fast và Slow, nằm trong giới hạn 200 của hãng. Số segment phải liên kết giảm khoảng 20 lần.

Đo trên hệ thống đã chạy một năm với cấu hình mới, thời gian khởi động và dừng Runtime còn khoảng 10 phút, không cần thêm máy chủ hay ổ lưu trữ. Hơn 2.000 segment đã tích lũy theo cấu hình cũ vẫn là dữ liệu audit phải giữ lại; giữ chúng thế nào để Runtime không phải mang theo mà khi cần vẫn lấy lại được là phần việc tiếp theo.
Dữ liệu cũ cất đúng chỗ, dữ liệu mới ghi đúng giờ
Cấu hình mới chỉ quyết định cách dữ liệu được lưu từ đó về sau. Hơn 2.000 segment tích lũy theo cấu hình cũ là dữ liệu audit, không thể xóa, nhưng để nguyên thì Runtime lại phải mang chúng theo. Cấu hình mới đã bật backup với một thư mục sao lưu riêng, nên chúng tôi copy toàn bộ segment cũ từ dự án cũ vào chính thư mục đó. Từ đây, thư mục làm việc của Runtime chỉ còn khoảng 104 segment theo cấu hình mới; thư mục backup giữ hơn 2.000 segment cũ cùng các segment WinCC tự đẩy ra sau này.
Dữ liệu audit chỉ có giá trị nếu lấy ra được khi cần. WinCC cho phép chép cặp file MDF/LDF của một segment vào thư mục Thư mục trong project WinCC: segment archive đã sao lưu được chép vào đây sẽ được Runtime tự liên kết và hiển thị trên trend, bảng; lấy file ra khỏi thư mục thì ngắt liên kết. của project để Runtime tự liên kết và hiển thị dữ liệu theo đúng mốc thời gian trên trend và bảng. Để người vận hành không phải tự tìm file, tôi viết C-script trên WinCC: bấm nút, chọn khoảng thời gian trên popup. Import cắt các segment trong khoảng đó từ thư mục backup sang CommonArchiving; Move trả chúng về kho sau khi đối soát xong. Script cắt và dán chứ không sao chép, nên mỗi segment chỉ có một bản. Bước Move quan trọng không kém, vì càng nhiều archive được liên kết thì mở trend và bảng dữ liệu càng chậm.

Trong log gửi Siemens khi hỏi về thời gian khởi động, kỹ sư của hãng còn chỉ ra một dòng lặp lại thường xuyên: "CCWriteArchiveServer — WinCC Process Archiving has stopped". Dòng này không hiện trên giao diện SCADA, chỉ nằm trong log chẩn đoán. Kết luận của hãng: lỗi chỉ xuất hiện khi dữ liệu gửi vào archive mang dấu thời gian không khớp với giờ hiện tại của server. Theo giao thức OPC, dấu thời gian không được phép thay đổi, nên mọi thành phần gửi dữ liệu vào WinCC phải cùng giờ với server.
Chúng tôi cấu hình máy WinCC Server làm NTP server và trỏ đồng bộ thời gian của các máy WinCC Client về máy này. OPC server (Kepware) chạy ngay trên máy Server nên vốn dùng chung đồng hồ; đồng hồ đo điện năng đọc qua Modbus RTU không đồng bộ giờ được, và hãng thống nhất loại nó khỏi phạm vi đồng bộ vì nó chỉ cấp giá trị qua cổng nối tiếp. Sau khi Server và các Client cùng lấy giờ từ một nguồn, dòng thông báo dừng ghi archive không còn xuất hiện trong log.

Bàn giao
Chương trình điều khiển trên PLC M580 cho các phân đoạn chuyển đổi, duy trì kết nối ổn định với hệ WinCC hiện hữu.
Cấu hình MAST task của M580 hiệu chỉnh theo thời gian thực thi đo được: chế độ Periodic, chu kỳ 25 ms.
Quy trình thay thế thiết bị chi tiết theo cửa sổ dừng máy, gồm bước kiểm tra tương thích và phương án hoàn trả cấu hình an toàn.
Dự án WinCC V7.5 SP2 sau nâng cấp cùng bộ cấu hình chuẩn hóa áp dụng đồng bộ cho các trạm vận hành.
Cấu hình lưu trữ mới cho Tag Logging Fast và Slow: giữ dữ liệu 3 năm, tối đa 110 GB, mỗi segment 3 tuần.
C-script Import/Move trên WinCC để gọi segment cũ từ thư mục backup lên CommonArchiving theo khoảng thời gian và trả về sau khi xem; máy WinCC Server cấu hình làm NTP server cho các Client.
Kết quả
Tầng điều khiển vận hành ổn định trên nền tảng M580, đảm bảo nguồn vật tư thay thế sẵn có từ hãng.
Sau khi hiệu chỉnh chu kỳ Periodic, thời gian phản hồi thao tác trên SCADA giảm từ 10–11 giây xuống còn khoảng 1–2 giây.
Sau khi đổi cách chia segment, thời gian khởi động và dừng WinCC Runtime giảm từ 30–40 phút xuống khoảng 10 phút, đo trên hệ thống đã chạy một năm với cấu hình mới.
Hơn 2.000 segment cũ được giữ lại cho audit mà Runtime không phải liên kết; sau khi Server và Client cùng lấy giờ từ một nguồn, thông báo dừng ghi archive không còn xuất hiện trong log.
Ở lớp giám sát, các trạm vận hành dùng chung một cấu hình chuẩn hóa giúp cải thiện tốc độ và chất lượng điều khiển.
Tôi tham gia dự án với vai trò kỹ sư lập trình ở giai đoạn đầu và phụ trách vị trí trưởng nhóm lập trình trong các giai đoạn tiếp theo.
Điều tôi giữ lại từ dự án: khi một hệ thống vận hành chậm, nguyên nhân không nhất thiết là một vấn đề lớn. Nó có thể là một thông số nhỏ đang lệch nhịp với phần còn lại, và chỉ lộ ra khi nhìn cả chuỗi từ SCADA đến PLC thay vì từng phía riêng lẻ. Ở giai đoạn WinCC, đó lại là những thông số lưu trữ hợp lý khi đứng riêng nhưng nhân lên thành gánh nặng sau vài năm vận hành, nên khi cấu hình lưu trữ cần tính trước hệ thống sẽ phải mang theo bao nhiêu segment.
Bạn đang gặp bài toán tương tự tại nhà máy?
Có thể gửi thông tin để cùng trao đổi về phương án kỹ thuật phù hợp.
Trao đổi bài toán thực tế →