
Data Logging trên S7-1200: ghi dữ liệu ra thẻ nhớ và xuất file CSV
Trong nhiều ứng dụng sản xuất, việc lưu lại lịch sử dữ liệu quá trình — nhiệt độ, áp suất, sản lượng theo thời gian — là yêu cầu bắt buộc để phục vụ truy vết chất lượng, phân tích hiệu suất, hay báo cáo cho khách hàng. S7-1200 hỗ trợ sẵn tính năng Data Logging, cho phép ghi dữ liệu trực tiếp vào bộ nhớ flash của CPU dưới dạng file CSV, không cần thêm phần cứng lưu trữ hay phần mềm SCADA. Bài viết này sẽ hướng dẫn bạn cách triển khai tính năng này.
1. Data Logging là gì?
Data log là các file dữ liệu được lưu ở định dạng chuẩn CSV (Comma Separated Value), tổ chức theo kiểu circular log file (file dạng vòng) với kích thước xác định trước — khi file đầy, bản ghi cũ nhất sẽ tự động bị ghi đè bởi bản ghi mới.
Về nguyên lý hoạt động: bạn tự định nghĩa một vùng đệm dữ liệu (data buffer) đại diện cho một bản ghi log. Trong quá trình chạy, chương trình sẽ liên tục cập nhật giá trị mới vào vùng đệm này, và khi đủ điều kiện, gọi lệnh ghi để chuyển dữ liệu từ vùng đệm vào file log.
Sau khi có dữ liệu, bạn có thể xem hoặc tải file log về máy tính qua Web Server tích hợp của PLC, rồi mở bằng các công cụ bảng tính quen thuộc như Excel để phân tích.
2. Các lệnh điều khiển Data Log
S7-1200 cung cấp 5 lệnh chính để làm việc với data log:
Lệnh | Vai trò |
|---|---|
DataLogCreate | Tạo và khởi tạo một file data log mới |
DataLogOpen | Mở một file data log đã có sẵn |
DataLogClose | Đóng file data log |
DataLogWrite | Ghi một bản ghi mới vào file |
DataLogNewFile | Tạo file mới có cùng cấu trúc, khi file cũ đã đầy |
Lưu ý về giới hạn số file mở cùng lúc: file data log sẽ tự động mở sau khi thực hiện DataLogCreate hoặc DataLogNewFile, và tự động đóng khi PLC chuyển từ RUN sang STOP hoặc khi mất điện. Bạn có thể mở tối đa 8 file data log cùng lúc — có thể có nhiều hơn 8 file tồn tại trên bộ nhớ, nhưng phải đóng bớt để không vượt quá con số này.
3. Cấu trúc một bản ghi log: tham số DATA và HEADER
Khi gọi DataLogCreate, hai tham số quan trọng nhất quyết định cấu trúc file log là:
Tham số DATA: trỏ tới vùng nhớ tạm (M hoặc DB) chứa bản ghi mới. Bạn có thể gán cả một DB hoặc một phần của DB, với dữ liệu có thể là kiểu đơn, cấu trúc, PLC data type, hoặc mảng dữ liệu — nhưng cấu trúc lồng nhau chỉ được phép tối đa 1 cấp. Số lượng phần tử dữ liệu tối đa là 253 (nếu có timestamp) hoặc 255 (nếu không có timestamp) — giới hạn này nhằm đảm bảo bản ghi không vượt quá giới hạn 256 cột của Excel.
Tham số HEADER: trỏ tới chuỗi ký tự chứa tên các cột, hiển thị ở dòng đầu tiên của file CSV. Dữ liệu HEADER phải theo đúng định dạng CSV chuẩn (các tên cột cách nhau bởi dấu phẩy), và có thể là kiểu string, byte array, hoặc character array. Tham số này không bắt buộc — nếu không gán, file log sẽ không có dòng tiêu đề.
4. Các tham số khác của DataLogCreate
Tham số | Mô tả |
|---|---|
REQ | Sườn lên bắt đầu thao tác tạo file |
RECORDS | Số lượng bản ghi tối đa trong file (không tính dòng header) |
FORMAT | Định dạng file: |
TIMESTAMP |
|
NAME | Tên file log — cũng là tên vật lý của file trên hệ thống, phải tuân theo quy tắc đặt tên file của Windows (không dùng các ký tự |
5. Tính toán dung lượng cần thiết cho file log
Đây là bước quan trọng để tránh tình trạng hết bộ nhớ khi triển khai thực tế. Vì dữ liệu log được lưu dưới dạng ký tự trong file CSV, mỗi kiểu dữ liệu chiếm số byte khác nhau, ví dụ:
Kiểu dữ liệu | Số byte (bao gồm dấu phẩy phân cách) |
|---|---|
Bool | 2 |
Byte | 5 |
Word | 7 |
DWord | 12 |
Real | 16 |
LReal | 25 |
Time | 15 |
DTL | 24 |
Công thức tính kích thước một bản ghi:
Kích thước 1 bản ghi = Tổng số byte của tất cả các trường dữ liệu + 1 (ký tự xuống dòng)Và kích thước cả file log:
Kích thước file log = (Số byte của 1 bản ghi) x (Số lượng bản ghi tối đa)6. Giới hạn dung lượng theo từng dòng CPU
File data log dùng chung vùng load memory với chương trình, dữ liệu cấu hình, trang Web tự thiết kế và dữ liệu hệ thống của PLC — vì vậy không phải muốn tạo file lớn bao nhiêu cũng được. Quy tắc chung: một file data log không được vượt quá 25% dung lượng load memory. Bảng tham khảo dung lượng tối đa cho một file:
CPU | Load memory nội bộ | Kích thước tối đa 1 file (nội bộ) |
|---|---|---|
CPU 1211C | 1 MB | 250 KB |
CPU 1212C | 1 MB | 250 KB |
CPU 1214C | 4 MB | 500 KB |
CPU 1215C | 4 MB | 500 KB |
Nếu dùng thêm thẻ nhớ mở rộng ("Program card"), dung lượng tối đa cho một file có thể lên tới 500 KB (thẻ 2 MB) hoặc 6 MB (thẻ 24 MB). Lưu ý: S7-1200 chỉ dùng được một trong hai loại load memory tại một thời điểm — hoặc bộ nhớ nội bộ, hoặc thẻ nhớ ngoài, không dùng đồng thời cả hai.
Nếu ứng dụng cần lưu nhiều bản ghi hơn giới hạn của một file, hãy dùng lệnh DataLogNewFile để tạo file mới ngay khi file hiện tại đã đầy, thay vì cố ép tăng kích thước một file duy nhất.
7. Quy trình lập trình cơ bản
Tài liệu đưa ra một chương trình ví dụ minh họa quy trình chuẩn:
Network 1: Sườn lên của REQ kích hoạt DataLogCreate để tạo file log.
Network 2: Bắt giá trị DONE của DataLogCreate — vì tham số này chỉ hợp lệ trong đúng một vòng quét.
Network 3: Sườn lên kích hoạt việc lưu giá trị quá trình mới vào vùng đệm dữ liệu (cấu trúc tạm, ví dụ đặt tên "MyData").
Network 4: Trạng thái EN của lệnh ghi phụ thuộc vào việc DataLogCreate đã hoàn tất hay chưa — vì thao tác tạo file kéo dài qua nhiều vòng quét, phải đảm bảo tạo xong mới được phép ghi.
Network 5: Đóng file log sau khi bản ghi cuối cùng đã được ghi — nhận biết qua STATUS = 1 của DataLogWrite.
Network 6-7: Minh họa việc mở lại file log (giả lập nút bấm trên HMI), hoặc tạo file mới bằng DataLogNewFile khi file cũ đã đầy — giữ lại dữ liệu cũ thay vì để bị ghi đè.
Lưu ý khi giám sát trạng thái ghi: chương trình cần theo dõi cả tham số ERROR và STATUS của DataLogWrite. Khi ghi xong bản ghi cuối cùng và file đã đầy, ERROR = 1 và STATUS = W#16#0001 — nhưng hai giá trị này chỉ hợp lệ trong một vòng quét, nên logic giám sát cần dùng ERROR = 1 làm "cổng thời gian" để bắt giá trị STATUS tương ứng.
8. Ba cách xem và tải dữ liệu log
Cách 1 — Qua Web Server (khuyến nghị): Kết nối PC với PLC qua PROFINET, đăng nhập vào Web Server tích hợp, sau đó vào trang chuẩn "Data Logs" để tải bản ghi gần nhất, toàn bộ bản ghi, xóa dữ liệu, hoặc xóa hẳn file log. Đây là cách được khuyến nghị vì Web Server tự quản lý file trên thẻ nhớ, tránh rủi ro làm hỏng dữ liệu do thao tác nhầm.
Cách 2 — Truy cập trực tiếp qua trình duyệt (không cần vào Web Server): nhập URL theo dạng:
http://192.168.0.1/DataLog.html?FileName=MyDataLog.csvvới địa chỉ IP là của CPU và tên file log thực tế đã đặt. Cách này còn cho phép các công cụ thu thập dữ liệu của bên thứ ba truy cập trực tiếp vào file log qua địa chỉ cố định.
Cách 3 — Rút thẻ nhớ ra đọc trực tiếp trên PC: nếu CPU đang dùng thẻ nhớ dạng "Program", bạn có thể rút thẻ, gắn vào đầu đọc thẻ SD/MMC trên PC, sau đó tìm các file .csv trong thư mục \DataLog. Lưu ý quan trọng: chỉ nên sao chép file ra, không nên sửa hoặc xóa trực tiếp file log trên thẻ nhớ bằng Windows Explorer — thao tác nhầm có thể làm hỏng file hệ thống khác, khiến thẻ nhớ không dùng được nữa. Khi rút thẻ, CPU sẽ ở chế độ STOP và chương trình ngừng chạy.
9. Một số lưu ý khi triển khai thực tế
Tính toán trước dung lượng cần thiết dựa trên số trường dữ liệu, kiểu dữ liệu, và tần suất ghi — tránh tình trạng file đầy quá nhanh hoặc chiếm hết load memory.
Ưu tiên dùng Web Server để quản lý file log thay vì thao tác trực tiếp trên thẻ nhớ, để giảm rủi ro hỏng dữ liệu.
Theo dõi đúng cách trạng thái DONE/BUSY/ERROR/STATUS của các lệnh — vì phần lớn thao tác data log là bất đồng bộ, kéo dài qua nhiều vòng quét.
Cân nhắc dùng thẻ nhớ mở rộng nếu ứng dụng cần lưu trữ dữ liệu dài hạn hoặc dung lượng lớn, thay vì chỉ dựa vào bộ nhớ nội bộ vốn khá hạn chế.
Kết luận
Data Logging là giải pháp lưu trữ dữ liệu quá trình gọn nhẹ, tích hợp sẵn trong S7-1200 mà không cần đầu tư thêm hệ thống thu thập dữ liệu (data acquisition) riêng biệt. Với các ứng dụng có yêu cầu truy vết, báo cáo định kỳ ở quy mô vừa và nhỏ, đây là lựa chọn tiết kiệm chi phí và dễ triển khai — miễn là bạn tính toán đúng dung lượng cần thiết và quản lý file log đúng cách qua Web Server.
Ở bài viết tiếp theo, chúng ta sẽ tìm hiểu về PID Control trên S7-1200 — sự khác nhau giữa PID_Compact và PID_3Step, và khi nào nên dùng loại nào.



