Trong WinCC VBS, có hai phương pháp phổ biến để kiểm tra lỗi: sử dụng hàm MsgBox để hiển thị kết quả của Err.Description dưới dạng cửa sổ thông báo, hoặc sử dụng cửa sổ ứng dụng tích hợp sẵn của WinCC kết hợp với lệnh HMIruntime.Trace để ghi lại thông tin lỗi.
1. Sử dụng On Error Resume Next
Khuyến khích đặt câu lệnh này ở đầu mỗi đoạn mã VBS. Lệnh này cho phép kịch bản tiếp tục thực thi ngay cả khi xảy ra lỗi, đồng thời lưu thông tin lỗi vào biến Err.Description mà không làm gián đoạn chương trình.
2. Hiển thị lỗi bằng MsgBox
Xem xét đoạn mã sau:
' Trong sự kiện của Button 1
On Error Resume Next
Set testTag = HMIRuntime.Tags("SEND")
testTag.Value = 1
testTag.Write
Dim result
result = testTag.Value + 10 ' Giả sử có lỗi ở đây nếu "testTag" không được định nghĩa đúng
MsgBox result
MsgBox Err.Description ' Hiển thị mô tả lỗi nếu có
Khi thực thi đoạn mã trên và nhấn nút, nếu có lỗi xảy ra, một hộp thoại sẽ hiển thị mô tả lỗi. Nếu thay đổi đoạn mã thành:
' Trong sự kiện của Button 1
On Error Resume Next
Set testTag = HMIRuntime.Tags("SEND")
testTag.Value = 1
testTag.Write
Dim anotherResult
anotherResult = 1 / 0 ' Gây ra lỗi chia cho 0
MsgBox Err.Description ' Hiển thị mô tả lỗi
Thực thi đoạn mã này và nhấn nút sẽ hiển thị thông báo lỗi chia cho 0. Điều này cho thấy Err.Description chỉ lưu trữ thông tin lỗi gần nhất. Để xác định vị trí lỗi, bạn có thể đặt các lệnh MsgBox ở các điểm khác nhau trong mã và sử dụng câu lệnh điều kiện để kiểm tra xem có lỗi xảy ra hay không:
' Trong sự kiện của Button 1
On Error Resume Next
Set testTag = HMIRuntime.Tags("SEND")
testTag.Value = 1
testTag.Write
If Err.Description <> "" Then MsgBox "Lỗi tại bước 1: " & Err.Description, vbExclamation, "Thông báo"
Dim anotherResult
anotherResult = 1 / 0 ' Gây ra lỗi chia cho 0
If Err.Description <> "" Then MsgBox "Lỗi tại bước 2: " & Err.Description, vbExclamation, "Thông báo"
Sau khi nhấn nút, thông báo lỗi sẽ giúp xác định vị trí xảy ra sự cố, từ đó có thể sửa đổi mã kịch bản.
3. Sử dụng HMIruntime.Trace và Cửa sổ Ứng dụng
Để chẩn đoán lỗi, trước tiên hãy thêm một cửa sổ ứng dụng vào trang cần kiểm tra. Chọn "Global Script" và sau đó chọn "GSC Diagnostics" trong cửa sổ bật lên.
Trong sự kiện của Button 1, nhập đoạn mã sau:
' Trong sự kiện của Button 1
On Error Resume Next
Set testTag = HMIRuntime.Tags("SEND")
testTag.Value = 1
testTag.Write
If Err.Description <> "" Then HMIruntime.Trace "Lỗi tại bước 1: " & Err.Description & vbCrLf ' vbCrLf để xuống dòng
Dim anotherResult
anotherResult = 1 / 0 ' Gây ra lỗi chia cho 0
If Err.Description <> "" Then HMIruntime.Trace "Lỗi tại bước 2: " & Err.Description & vbCrLf
Khi nhấn Button 1, thông tin lỗi cần theo dõi sẽ xuất hiện trong cửa sổ ứng dụng. Cách sử dụng Err.Description tương tự như với MsgBox.
4. Đối tượng và Phương thức Err
Mã lỗi
Bạn có thể sử dụng Err.Number để hiển thị mã lỗi hiện tại. Mặc dù không được sử dụng thường xuyên, nhưng thông thường người ta đọc trực tiếp mô tả lỗi qua Err.Description. Dưới đây là bảng mã lỗi khi chạy VBS:
[Bảng mã lỗi runtime VBS]
Dưới đây là bảng mã lỗi cú pháp VBS:
[Bảng mã lỗi cú pháp VBS]
Đối tượng và Phương thức Err
...