giải pháp kiện hàng
Giải pháp duy nhất 1 Data Block (DB) kết hợp cấu trúc mảng (Array of Struct/UDT) phân biệt theo thời gian và mã tối ưu và chuyên nghiệp hơn rất nhiều.
Dưới đây là so sánh chi tiết để bạn đưa ra lựa chọn phù hợp nhất cho hệ thống:
So sánh hai giải pháp
| Tiêu chí | Giải pháp 1: 250 DB / Array riêng | Giải pháp 2: 1 DB duy nhất (Array of Struct) |
| Quản lý tài nguyên PLC | Lãng phí bộ nhớ và DB number. Khó quản lý trên TIA Portal. | Tối ưu dung lượng bộ nhớ (Work/Load Memory), gọn gàng. |
| Lập trình & Code | Phải truy xuất động (Pointers/PEEK-POKE) phức tạp, dễ lỗi. | Lập trình vòng lặp (FOR...DO) và chỉ số mảng (DB.Batch[i]) cực kỳ linh hoạt. |
| Truyền dữ liệu lên DB (SQL/MQTT) | Phải viết nhiều lệnh hoặc loop qua hàng trăm DB. | Chỉ cần 1 Query hoặc 1 Lệnh ghi duy nhất theo mảng/index. |
| Khả năng mở rộng | Rất khó khi tăng số kiện hàng (ví dụ lên 500 kiện/ngày). | Chỉ cần đổi kích thước mảng Array[1..500] trong UDT. |
Phương án thiết kế khuyến nghị (Giải pháp 2)
Tạo một User Defined Type (UDT) tên là
UDT_PackageData:PackageID: String / DInt (Mã kiện hàng)Timestamp: Date_And_Time / DTL (Thời gian lưu)Weight/Status: Real / Int (Thông số liên quan)
Tạo 1 Data Block duy nhất
DB_PackageHistory:List:Array[1..250] of UDT_PackageDataCurrentIndex: Int (Con trỏ ghi vị trí kiện hàng hiện tại)
Cơ chế lưu:
Dùng cơ chế Circular Buffer (Mảng vòng): Khi
CurrentIndexđạt 250, tự động quay về 1 (hoặc reset vào đầu ngày mới).Khi ghi vào Database bên ngoài (Node-RED/C#/SQL), bạn chỉ cần quét qua DB này hoặc gửi trigger theo sự kiện từng kiện.

