Đọ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)
WinCC15 tháng 7, 2026· 13 phút đọc · 1 lượt xem

Đọ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)

Tìm hiểu cách tích hợp WinCC Flexible với Microsoft Excel bằng OPC DA, CSV, cấu hình OPC Channel và lựa chọn giải pháp trao đổi dữ liệu phù hợp.

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
      │
      ▼
PLC

Trong 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!A1

có thể được công bố thành OPC Item:

Recipe.Speed

WinCC Flexible sau đó chỉ cần ánh xạ OPC Item này tới một HMI Tag, chẳng hạn:

Speed_Setpoint

Khi 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 Cell

Phươ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:

Connections

Bướ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:

OPC

Bướ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.Excel

Tê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

Recipe.Speed

Speed_Setpoint

Recipe.Temperature

Temperature_SP

Recipe.ProductName

Product_Name

Production.TotalCount

Total_Count

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:

  1. Compile dự án.

  2. Kiểm tra lỗi.

  3. Tải dự án xuống HMI hoặc Runtime PC.

  4. Chạy Runtime.

  5. 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 Tag

Excel có thể lưu Worksheet thành file:

Recipe.csv

Sau đó WinCC dùng VBScript và FileSystemObject để đọc nội dung file.


Ví dụ file CSV

Product_A;1200
Product_B;1500
Product_C;1800

Mỗ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:

  1. Mở file CSV.

  2. Đọc lần lượt từng dòng.

  3. Dùng Split() để tách các trường.

  4. Ghi tên Recipe vào HMI Tag.

  5. Chuyển giá trị sang số nguyên bằng CLng().

  6. Ghi giá trị vào Tag tương ứng.

  7. Đó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

CInt() hoặc CLng()

Số thập phân

Double

Real/LReal

CDbl()

Văn bản

String

String/WString

CStr()

TRUE/FALSE

Boolean hoặc String

Bool

CBool() hoặc so sánh chuỗi

Ngày giờ

Date

Date/Date_And_Time

CDate()

Ô trống

Empty

Không ghi trực tiếp

IsEmpty()

Ô chứa lỗi

Error

Không ghi trực tiếp

IsError()


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
FALSE

Có 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 If

Với ô lỗi:

If IsError(cellValue) Then
    HMIRuntime.Trace "Ô Excel chứa giá trị lỗi" & vbCrLf
End If

3. So sánh COM, OPC DA và CSV

Tiêu chí

VBScript + Excel COM

OPC DA

CSV

WinCC TIA Portal

WinCC Flexible

Không hỗ trợ trực tiếp

Đọc/ghi hai chiều

Cập nhật thời gian thực

Tương đối

Tốt

Không

Cần Microsoft Excel

Tùy giải pháp

Không

Cần OPC Server

Không

Không

Cần cấu hình DCOM

Không

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

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.

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.