Xác Định Thời Gian Mất Điện Trong Các Ứng Dụng PLC
Kiến thức UPS26 tháng 6, 2026· 7 phút đọc · 29 lượt xem

Xác Định Thời Gian Mất Điện Trong Các Ứng Dụng PLC

Hướng dẫn xác định thời gian mất điện trong PLC bằng RTC và logic quét đầu tiên, bao gồm tính theo giây, lưu DateTime và xử lý trường hợp đặc biệt.

Tổng Quan

Theo dõi thời gian mất điện là một yêu cầu phổ biến trong tự động hóa công nghiệp. Các ứng dụng bao gồm xác định xem quy trình có cần dừng lại sau sự cố mất điện kéo dài hay không, hoặc ghi lại lịch sử sự cố để phân tích bảo trì. Bài viết này trình bày các phương pháp tính toán thời gian mất điện sử dụng đồng hồ thời gian thực (RTC) của PLC và logic quét đầu tiên (first scan logic), với hướng dẫn cụ thể cho CPU AutomationDirect và các kỹ thuật áp dụng cho nền tảng ControlLogix, SLC 500 và MicroLogix.


Hiểu Về Thách Thức

Khi mất điện, PLC tắt hoàn toàn — nội dung RAM có thể được giữ lại tùy thuộc vào phần cứng (pin tụ điện trên các CPU mới hơn, pin backup trên các model cũ hơn). Khi điện được phục hồi, PLC thực thi quy trình Khởi động (Power-Up) trước tác vụ Chính (Main task), tạo cơ hội để:

  • Lấy lại thời gian (timestamp) đã lưu trước đó

  • Tính toán thời gian đã trôi qua kể từ khi mất điện

  • Đưa ra quyết định điều khiển dựa trên thời gian mất điện

Lưu ý quan trọng: Các phương pháp này theo dõi trạng thái hoạt động của bộ xử lý, không phải trạng thái nguồn điện thực sự. Nếu PLC vẫn được cấp điện qua UPS trong khi điện lưới bị mất, phương pháp này sẽ phát hiện chế độ Program hay chế độ Run. Để giám sát nguồn điện thực sự, hãy dùng một đầu vào số (DI) trên PLC được đấu dây tới rơ-le cảm biến điện áp bên ngoài.


Phương Pháp 1: Second-Based Timestamp (Đơn Giản Nhất)

Phương pháp này chuyển đổi giá trị RTC sang giây kể từ nửa đêm, cho phép tính thời gian đã trôi qua bằng phép trừ đơn giản.

Các Bước Triển Khai

  1. Tạo các thẻ (tags):

    • Current_Time_Sec (DINT) — giây kể từ nửa đêm

    • Saved_Time_Sec (DINT) — dấu thời gian lưu từ lần quét cuối

    • Outage_Duration (DINT) — số giây đã trôi qua được tính toán

  2. Mỗi lần quét (cập nhật liên tục):
    Current_Time_Sec := (RTC_Hour × 3600) + (RTC_Minute × 60) + RTC_Second

  3. Lưu vào bộ nhớ lưu trữ (retentive memory):
    Sao chép Current_Time_Sec vào Saved_Time_Sec định kỳ (mỗi lần quét, mỗi giây, hoặc qua bộ đếm thời gian) trong thẻ lưu trữ.

  4. Tại lần quét đầu tiên / Khởi động:
    Outage_Duration := Current_Time_Sec - Saved_Time_Sec
    Nếu Outage_Duration < 0, nghĩa là đã qua nửa đêm:
    Outage_Duration := Outage_Duration + 86400

Kiểm Chứng

Tình huống

Thời gian đã lưu

Thời gian hiện tại

Thời gian tính được

Không qua nửa đêm

10:30:00 (37800)

10:35:00 (38100)

300 giây

Qua nửa đêm

23:55:00 (86100)

00:05:00 (300)

600 giây


Phương Pháp 2: Lưu Trữ Ngày Giờ Đầy Đủ (ControlLogix / RSLogix 5000)

Đối với các nền tảng có kiểu dữ liệu mạnh mẽ hơn, lưu trữ các giá trị ngày/giờ đầy đủ để theo dõi sự cố mất điện kéo dài nhiều ngày.

Cấu Trúc UDT (Kiểu Dữ Liệu Người Dùng Định Nghĩa)

Power_Event_UDT:
  Year     : DINT    // Năm RTC
  Month    : DINT    // Tháng RTC (1-12)
  Day      : DINT    // Ngày RTC
  Hour     : DINT    // Giờ RTC
  Minute   : DINT    // Phút RTC
  Second   : DINT    // Giây RTC
  State    : DINT    // 0 = Mất điện, 1 = Có điện

Triển Khai Bộ Đệm Vòng (Circular Buffer)

  1. Tạo mảng Power_History[0..99] kiểu Power_Event_UDT

  2. Dùng con trỏ chỉ mục Buffer_Index (quay vòng tại 99)

  3. Khi Khởi Động:

    • Lưu dấu thời gian đã lưu với State := 0

    • Lưu dấu thời gian hiện tại với State := 1

  4. Liên tục: Cập nhật định kỳ dấu thời gian hiện tại vào thẻ Saved_DateTime trong bộ nhớ lưu trữ


Chi Tiết Về AutomationDirect DL260

CPU DL260 hỗ trợ:

  • Đồng hồ thời gian thực nội bộ (có pin backup)

  • Vùng dữ liệu lưu trữ: các vị trí V-memory được chỉ định là lưu giữ

  • Bit lần quét đầu: S2:1/15 (file S2, bit 15) — đặt lại khi khởi động

  • Tác vụ Khởi động (Power-Up): có thể cấu hình trong thiết lập CPU

Lưu ý: Các vị trí V-memory của DL260 để truy cập RTC khác với các dòng CPU cũ hơn. Hãy kiểm tra trong Tài liệu Hướng dẫn Người dùng DL260 (thường trong phần Cấu hình Hệ thống mục Đồng hồ/Lịch). Các vị trí phổ biến bao gồm V2000–V2005 cho năm, tháng, ngày, giờ, phút, giây.


Ví Dụ Ứng Dụng: Quyết Định Dừng Quy Trình

Dựa trên trường hợp sử dụng ban đầu — dừng quy trình nếu mất điện vượt quá vài phút:

// Tại lần quét đầu tiên sau khi Khởi Động
IF Outage_Duration > 300 THEN  // 300 giây = 5 phút
    // Kích hoạt trình tự dừng an toàn
    Process_State := SHUTDOWN_REQUIRED
ELSE
    // Tiếp tục vận hành
    Process_State := AUTO_RUN
END_IF

Xử Lý Các Trường Hợp Đặc Biệt

Vấn đề

Giải pháp

Qua ranh giới tháng/năm

Chuyển sang ngày Julius hoặc ngày thứ tự (day-of-year) cho tính toán kéo dài nhiều tháng

Pin hỏng

Phát hiện RTC không hợp lệ (năm = 0 hoặc 2160) và kích hoạt dừng hoàn toàn

Chế độ Program vs Mất điện

Thêm cờ lưu trữ cho biết đang ở chế độ Run; so sánh với cờ đó

UPS giữ PLC hoạt động

Dùng đầu vào cảm biến điện áp bên ngoài để phát hiện mất điện lưới


So Sánh Các Nền Tảng

Nền tảng

Phương thức truy cập RTC

Bit lần quét đầu

Lưu trữ lưu giữ

DL260 (AD)

Địa chỉ V-memory

S2:1/15

Vùng V có thể cấu hình

ControlLogix

GETRTC / GETTCM

S:firstscan

Retain theo tác vụ

MicroLogix 1500

S:50 – S:57

S2:1/15

File số nguyên được đánh dấu retain

S7-1200

RD_LOC_T

Tag FirstScan (hệ thống)

Vùng DB Retain

Chưa biết chọn UPS công suất bao nhiêu?
Nhập danh sách thiết bị, công cụ sẽ tính tự động và gợi ý model phù hợp.
Tính công suất miễn phí

Cần tư vấn giải pháp UPS?

UPSsmart hỗ trợ tư vấn miễn phí, không ràng buộc.