
Đọc và ghi dữ liệu giữa WinCC và Microsoft Excel: OPC DA, CSV và ánh xạ kiểu dữ liệu (Phần 2)
1. Phương pháp 2 – Tích hợp WinCC Flexible bằng OPC DA
Khác với WinCC Runtime Advanced hoặc Runtime Professional trong TIA Portal, WinCC Flexible 2008 không hỗ trợ tạo trực tiếp đối tượng Excel COM từ VBScript Runtime.
Điều này có nghĩa là WinCC Flexible không thể sử dụng lệnh:
CreateObject("Excel.Application")để mở Workbook, đọc ô dữ liệu hoặc ghi trực tiếp vào Excel như phương pháp đã trình bày ở Phần 1.
Để trao đổi dữ liệu giữa WinCC Flexible và Excel, phương án phổ biến là sử dụng OPC DA làm lớp giao tiếp trung gian.
Kiến trúc OPC DA
Luồng dữ liệu từ Excel đến WinCC Flexible có thể được tổ chức như sau:
Microsoft Excel
│
▼
Excel OPC Server hoặc OPC Add-in
│
▼
OPC DA
│
▼
WinCC Flexible
│
▼
PLCTrong kiến trúc này, Excel không giao tiếp trực tiếp với WinCC Flexible.
Một OPC Server hoặc Add-in cài trên máy tính sẽ:
Đọc các ô dữ liệu trong Excel.
Công bố các ô hoặc vùng dữ liệu dưới dạng OPC Item.
Cho phép WinCC Flexible đọc hoặc ghi các OPC Item đó như Tag thông thường.
OPC Server công bố dữ liệu Excel như thế nào?
Tùy phần mềm sử dụng, OPC Server có thể công bố:
Từng ô Excel.
Named Range.
Một cột dữ liệu.
Một vùng dữ liệu.
Toàn bộ Worksheet.
Ví dụ, ô Excel:
Sheet1!A1có thể được công bố thành OPC Item:
Recipe.SpeedWinCC Flexible sau đó chỉ cần ánh xạ OPC Item này tới một HMI Tag, chẳng hạn:
Speed_SetpointKhi giá trị trong ô Excel thay đổi, OPC Server cập nhật dữ liệu cho WinCC Flexible theo chu kỳ đã cấu hình.
Trao đổi dữ liệu theo chiều ngược lại
Nếu OPC Server hỗ trợ quyền đọc/ghi, WinCC Flexible cũng có thể gửi dữ liệu về Excel.
Luồng dữ liệu khi đó là:
WinCC Tag
│
▼
OPC DA
│
▼
Excel OPC Server
│
▼
Excel CellPhương án này phù hợp với các ứng dụng như:
Nhập và xuất Recipe.
Thay đổi Setpoint từ Excel.
Ghi thông số vận hành vào bảng tính.
Theo dõi dữ liệu WinCC bằng Excel.
Một số giải pháp OPC thường gặp
Có thể sử dụng các OPC Server hoặc Add-in của bên thứ ba, chẳng hạn:
MatrikonOPC
KEPServerEX
OPC Server tùy chỉnh
Excel OPC Add-in
Khi lựa chọn OPC Server, cần kiểm tra:
Có hỗ trợ Excel hay không.
Có hỗ trợ đọc/ghi hai chiều không.
Tương thích với phiên bản Windows đang sử dụng.
Tương thích với WinCC Flexible.
Yêu cầu License.
Cách cấu hình DCOM và bảo mật.
Cấu hình OPC Channel trong WinCC Flexible
Quy trình cấu hình cơ bản gồm các bước sau.
Bước 1: Mở dự án WinCC Flexible
Mở dự án HMI cần kết nối với Excel.
Trong cây dự án, tìm mục:
ConnectionsBước 2: Tạo kết nối mới
Nhấp chuột phải vào Connections, sau đó chọn thêm kết nối mới.
Tại mục Driver, chọn:
OPCBước 3: Chọn OPC Server
Nhập hoặc chọn:
Tên OPC Server.
Tên máy tính đang chạy OPC Server.
ProgID của OPC Server.
Ví dụ:
MatrikonOPC.ExcelTên chính xác phụ thuộc vào OPC Server được cài đặt.
Bước 4: Duyệt OPC Namespace
Sử dụng chức năng Browse trong trình chỉnh sửa Tag để xem các OPC Item mà Server đã công bố.
Các Item có thể tương ứng với:
Cell.
Named Range.
Worksheet.
Các vùng dữ liệu trong Excel.
Nếu không thấy OPC Server hoặc OPC Item, cần kiểm tra:
OPC Server đã chạy chưa.
ProgID có chính xác không.
OPCEnum Service có hoạt động không.
Firewall có chặn kết nối không.
Quyền DCOM đã được thiết lập chưa.
Bước 5: Ánh xạ OPC Item với WinCC Tag
Tạo HMI Tag có kiểu dữ liệu phù hợp và liên kết với OPC Item tương ứng.
Ví dụ:
OPC Item | WinCC Tag |
|---|---|
|
|
|
|
|
|
|
|
Kiểu dữ liệu giữa OPC Item và WinCC Tag phải tương thích.
Bước 6: Thiết lập chu kỳ cập nhật
Cấu hình các thông số như:
Acquisition Cycle.
Update Rate.
Deadband.
Giới hạn giá trị.
Quyền chỉ đọc hoặc đọc/ghi.
Ví dụ, một Setpoint không cần cập nhật quá nhanh có thể dùng chu kỳ 500 ms hoặc 1 giây.
Không nên đặt chu kỳ quá ngắn nếu số lượng Tag lớn vì có thể làm tăng tải CPU và lưu lượng mạng.
Bước 7: Compile và tải dự án
Sau khi cấu hình xong:
Compile dự án.
Kiểm tra lỗi.
Tải dự án xuống HMI hoặc Runtime PC.
Chạy Runtime.
Kiểm tra giá trị OPC Tag.
Lưu ý khi sử dụng OPC DA và DCOM
OPC DA sử dụng công nghệ COM/DCOM của Windows.
Vì vậy, nhiều lỗi kết nối không đến từ WinCC mà liên quan đến cấu hình hệ điều hành.
Các yếu tố cần kiểm tra gồm:
Windows Firewall.
DCOMCNFG.
Quyền Launch và Activation.
Quyền Access.
Tài khoản Windows chạy Runtime.
OPCEnum Service.
Chính sách Active Directory.
Tên máy tính và phân giải mạng.
Trên các phiên bản Windows mới, quyền DCOM mặc định thường chặt chẽ hơn. Vì vậy cần cấu hình đúng theo hướng dẫn của Siemens và nhà cung cấp OPC Server.
2. Phương pháp 3 – Trao đổi dữ liệu bằng file CSV
Nếu ứng dụng không yêu cầu đồng bộ thời gian thực, sử dụng file CSV thường đơn giản hơn OPC DA.
Phương pháp này phù hợp với:
Import Recipe.
Export báo cáo sản xuất.
Nhập danh sách sản phẩm.
Lưu dữ liệu theo ca.
Trao đổi dữ liệu theo lịch.
Chuyển cấu hình từ Excel sang WinCC.
Quy trình đọc CSV vào WinCC
Quy trình cơ bản:
Excel Workbook
│
▼
Save As CSV
│
▼
VBScript đọc file CSV
│
▼
Phân tách từng dòng dữ liệu
│
▼
Ghi giá trị vào WinCC TagExcel có thể lưu Worksheet thành file:
Recipe.csvSau đó WinCC dùng VBScript và FileSystemObject để đọc nội dung file.
Ví dụ file CSV
Product_A;1200
Product_B;1500
Product_C;1800Mỗi dòng gồm:
Tên Recipe.
Giá trị Setpoint.
Hai trường được phân cách bằng dấu chấm phẩy.
Ví dụ VBScript đọc CSV
Const ForReading = 1
Dim fso, ts, line, fields, i
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile("C:\Config\Recipe.csv", ForReading)
i = 1
Do While Not ts.AtEndOfStream
line = ts.ReadLine
fields = Split(line, ";")
HMIRuntime.Tags("Recipe_" & i & "_Name").Write fields(0)
HMIRuntime.Tags("Recipe_" & i & "_Value").Write CLng(fields(1))
i = i + 1
Loop
ts.Close
Set ts = Nothing
Set fso = NothingĐoạn Script thực hiện:
Mở file CSV.
Đọc lần lượt từng dòng.
Dùng
Split()để tách các trường.Ghi tên Recipe vào HMI Tag.
Chuyển giá trị sang số nguyên bằng
CLng().Ghi giá trị vào Tag tương ứng.
Đóng file và giải phóng Object.
Ghi dữ liệu từ WinCC ra CSV
Theo chiều ngược lại, WinCC có thể:
Tạo file CSV.
Ghi thời gian.
Ghi giá trị Tag.
Ghi trạng thái máy.
Ghi sản lượng hoặc Alarm.
Sau đó Excel có thể mở file CSV để tạo báo cáo hoặc phân tích.
Ưu điểm của phương pháp này là WinCC không cần điều khiển trực tiếp Excel.
Ưu điểm của phương pháp CSV
Không cần cài Microsoft Excel trên máy Runtime.
Không cần OPC Server.
Không cần cấu hình DCOM.
Không cần License bổ sung.
Dễ sao lưu và kiểm tra dữ liệu.
Hoạt động được trên cả WinCC TIA Portal và WinCC Flexible.
Phù hợp với Recipe và báo cáo theo lô.
Hạn chế của phương pháp CSV
Không cập nhật thời gian thực.
Cần quản lý quyền truy cập file.
Có thể xảy ra lỗi nếu file đang được ứng dụng khác sử dụng.
Phải kiểm tra định dạng cột và dấu phân cách.
Cần xử lý trường hợp dữ liệu thiếu hoặc sai kiểu.
Không phù hợp với số lượng Tag lớn cần cập nhật liên tục.
Ánh xạ kiểu dữ liệu giữa Excel và WinCC
Khi dữ liệu đi qua Excel, OPC hoặc CSV, cần chuyển đổi đúng kiểu dữ liệu trước khi ghi vào WinCC Tag.
Kiểu dữ liệu Excel | Giá trị trả về trong VBScript | Kiểu Tag WinCC | Hàm chuyển đổi |
Số nguyên | Double | Int/DInt |
|
Số thập phân | Double | Real/LReal |
|
Văn bản | String | String/WString |
|
TRUE/FALSE | Boolean hoặc String | Bool |
|
Ngày giờ | Date | Date/Date_And_Time |
|
Ô trống | Empty | Không ghi trực tiếp |
|
Ô chứa lỗi | Error | Không ghi trực tiếp |
|
Dữ liệu số nguyên
Excel thường trả về kiểu Double ngay cả khi ô hiển thị là số nguyên.
Do đó, trước khi ghi vào Tag kiểu Int hoặc DInt, nên chuyển đổi:
hmiValue = CLng(cellValue)Hoặc:
hmiValue = CInt(cellValue)Cần kiểm tra giá trị có nằm trong phạm vi của kiểu Tag hay không.
Dữ liệu số thực
Với Tag kiểu Real hoặc LReal:
hmiValue = CDbl(cellValue)Ngoài ra cần chú ý dấu phân cách thập phân tùy theo thiết lập vùng của Windows.
Dữ liệu Boolean
Excel có thể trả về:
TRUE
FALSECó thể chuyển đổi bằng:
hmiValue = CBool(cellValue)Hoặc kiểm tra thủ công:
hmiValue = (UCase(CStr(cellValue)) = "TRUE")Ô trống và ô lỗi
Không nên ghi trực tiếp ô trống hoặc ô chứa lỗi vào Tag.
Ví dụ:
If IsEmpty(cellValue) Then
HMIRuntime.Trace "Ô Excel đang trống" & vbCrLf
End IfVới ô lỗi:
If IsError(cellValue) Then
HMIRuntime.Trace "Ô Excel chứa giá trị lỗi" & vbCrLf
End If3. So sánh COM, OPC DA và CSV
Tiêu chí | VBScript + Excel COM | OPC DA | CSV |
WinCC TIA Portal | Có | Có | Có |
WinCC Flexible | Không hỗ trợ trực tiếp | Có | Có |
Đọc/ghi hai chiều | Có | Có | Có |
Cập nhật thời gian thực | Tương đối | Tốt | Không |
Cần Microsoft Excel | Có | Tùy giải pháp | Không |
Cần OPC Server | Không | Có | Không |
Cần cấu hình DCOM | Không | Có | Không |
License bổ sung | Không | Có thể cần | Không |
Mức độ triển khai | Trung bình | Cao | Thấp |
Phù hợp với Recipe | Có | Có | Rất phù hợp |
Phù hợp với dữ liệu liên tục | Hạn chế | Phù hợp | Không phù hợp |
Nên chọn phương pháp nào?
Chọn VBScript và Excel COM khi
Sử dụng WinCC Runtime Advanced hoặc Professional trên PC.
Máy Runtime đã cài Excel.
Cần đọc hoặc ghi trực tiếp Workbook.
Không muốn đầu tư thêm OPC License.
Khối lượng dữ liệu ở mức vừa phải.
Chọn OPC DA khi
Đang sử dụng WinCC Flexible.
Cần cập nhật dữ liệu gần thời gian thực.
Hệ thống đã có OPC Server.
Cần kết nối nhiều nguồn dữ liệu khác nhau.
Có khả năng cấu hình và quản lý DCOM.
Chọn CSV khi
Chủ yếu nhập/xuất Recipe.
Tạo báo cáo theo ca hoặc theo lô.
Không cần cập nhật liên tục.
Muốn giảm độ phức tạp.
Không muốn phụ thuộc vào Excel hoặc OPC Server.



