Chương 4: THIẾT LẬP DỰ ÁN SCADA TRÊN WinCC
Phan Duy Anh Ver.1
THIẾT LẬP DỰ ÁN SCADA TRÊN WinCC Demo Project: Hệ thống trạm trộn (3) Giống như hệ thống trạm trộn (2) ta đã thực hiện ở phần trước, bây giờ bổ sung tính năng chạy tự động/bằng tay (Auto/Manual). Chi tiết được mô tả như sau:
Phan Duy Anh Ver.1
THIẾT LẬP DỰ ÁN SCADA TRÊN WinCC ● Khi Khi swi switc tch h Auto/Manual chuyển Auto/Manual chuyển sang vị trí Auto trí Auto thì hệ thống tự động hoạt động theo một chương trình cài sẵn: Ban đầu Valve A mở để chất lỏng A vào bồn trong thời gian Ta, Sau đó đóng Valve A, mở Vanlve B trong thời gian Tb. Khi hết thời gian này thì đóng Valve B, bật Mixer hoạt động trong thời gian Tm. Sau đó tắt Mixer và mở Valve C để thành phẩm ra ngoài trong khoảng thời gian Tc. Kết thúc khoảng thời gian này, đóng Valve C. ● Thời Thời gian gian Ta, Tb, Tm hay Tc cho Tc cho phép cài đặt bởi người vận hành. ● Khi chạy tự động thì thì các buttons buttons điều khiển bằng tay tay không còn hiệu lực. ● Khi Khi swi switc tch h Auto/Manual chuyển Auto/Manual chuyển sang vị trí Manual thì Manual thì hệ thống hoạt động ở chế độ bằng tay như trong phần 2 đã thực hiện. Phan Duy Anh Ver.1
THIẾT LẬP DỰ ÁN SCADA TRÊN WinCC
Phan Duy Anh Ver.1
Chương 4:
THIẾT LẬP DỰ ÁN SCADA TRÊN WinCC Bài 9:
Visual Basic Script trên WinCC Phan Duy Anh Ver.1
Visual Basic Script trên WinCC * Tổng quan * Visual Basic Script * Viết chương trình cho Project
Phan Duy Anh Ver.1
Tổng quan ● Ngôn ngữ lập trình được được tích hợp kèm các phần mềm SCADA để tăng thêm độ mềm dẻo khi kỹ sư dự án thực hiện các yêu cầu phức tạp. ● WinCC ver ver 5. về trước chỉ hỗ trợ C Script, Script, các phiên phiên bản sau này hỗ trợ tốt cả C Script (CS) và Visual Basic Script (VBS). ● Hầu hết các các phần mềm SCADA khác khác đều sử dụng dụng VBS.
Phan Duy Anh Ver.1
Visual Basic Script trên WinCC * Tổng quan * Visual Basic Script * Viết chương trình cho Project
Phan Duy Anh Ver.1
Visual Basic Script ● VBS được sử dụng trong WinCC để tăng tăng tính linh hoạt cho chương trình điều khiển giám sát bằng cách viết code để tác động đến hệ thống. ● VBS có có các khái khái niệm cần cần lưu ý: + Module + Procedure (thủ tục) + Action (hành động) ● Proc Proced edur ure: e: được dùng để chứa code, mỗi procedure chỉ cần tạo một lần, sử dụng nhiều lần trong toàn bộ project. Thay vì phải code nhiều lần, ta chỉ cần gọi procudure liên quan. Với procedure, code sẽ tường minh, và dễ kiểm soát. Phan Duy Anh Ver.1
Visual Basic Script ● Các procedure proceduress có liên quan nhau nhau thường thường được lưu trong cùng một module. và project module ● Modu Module le:: hai loại standard module và project ● Standa Standard rd module module:: chứa các procedures toàn cục cho các project. Các modules này được lưu trữ theo địa chỉ:
\ApLib\ScriptLibStd\.bmo
● Projec Projectt module module:: chứa các procedures riêng của
project. Các module này được lưu trữ theo địa chỉ: c hỉ: \ScriptLib\.bmo
Phan Duy Anh Ver.1
Visual Basic Script
Các procedures trong một standard module Phan Duy Anh Ver.1
Visual Basic Script ● Trong procedures procedures là các đoạn code chương trình được viết để thực hiện một/những nhiệm vụ nào đó. ● Ví dụ: (xem thêm phần “ VBS VBS for creating Procedures and Actions” trong Actions” trong file WinCC Help) + Đọc/Ghi giá trị Tag: ‘Định nghĩa một biến Dim objTag ‘Gán biến này tới tag Set objTag = HMIRuntime.Tags("Tag1") ‘Đọc giá trị của tag objTag.Read
Phan Duy Anh Ver.1
Visual Basic Script ‘Tăng giá trị này lên 1 đơn vị objTag.Value = objTag.Value + 1 ‘Ghi giá trị này ra tag objTag.Write
+ Chuyển màu nền của hình chữ nhật có tên Rectangle1 trong picture trong picture thành màu đỏ: ‘Định nghĩa một biến Dim objRectangle ‘Gán biến này thành đối tượng "Rectangle1“ trong picture Set objRectangle = ScreenItems("Rectangle ScreenItems("Rectangle1") 1") ‘Thay đổi màu nền của đối tượng thành màu đỏ objRectangle.BackColor = RGB(255,0,0)
Phan Duy Anh Ver.1
Visual Basic Script ● Acti Action on:: là hành động trong đó có chứa một hoặc nhiều procedures và được kích hoạt bởi một sự kiện ki ện trigger nhằm thực thi các đoạn code trong các procedures chứa trong nó.
Phan Duy Anh Ver.1
Visual Basic Script ● Các Các sự sự kiệ kiện n triggers dùng để kích hoạt action trong VBS của WinCC gồm có: timer trigger và tag trigger. ● Timer Timer trig trigger ger:: thực thi một action tại một thời điểm cho trước. Gồm hai loại: trigger có chu kỳ (cyclic) và trigger không có chu kỳ (acyclic). ● Tag trigge trigger: r: thực thi một action khi có sự thay đổi value của tag.
Phan Duy Anh Ver.1
Visual Basic Script trên WinCC * Tổng quan * Visual Basic Script * Viết chương trình cho Project
Phan Duy Anh Ver.1
Viết chương trình cho Project ● Trước tiên, cần thiết kế thêm cho Mixing_Station Mixing_Station picture như hình bên dưới.
Phan Duy Anh Ver.1
Viết chương trình cho Project
Switch Auto/Manual Switch Auto/Manual điều điều khiển tag Auto_Manua tag Auto_Manuall như hình. Khi Switch ở Auto ở Auto thì tag này có giá trị 1, khi switch ở Manual thì tag này có giá trị 0. Phan Duy Anh Ver.1
Viết chương trình cho Project ● Tạo thêm thêm một pictur picture e có tên “ Auto_Param” chẳn Auto_Param” chẳn hạn có các I/O fields ValveA, ValveB, ValveC, Mixer kết nối tương ứng với các tags Time_Valve_A, Time_Valve_B, Time_Valve_C, Time_Mixer qui Time_Mixer qui định thời gian chạy tự động cho từng đối tượng.
Phan Duy Anh Ver.1
Viết chương trình cho Project ● Trên picture picture Mixing_st Mixing_station ation tạo tạo thêm một ‘picture window’ kết window’ kết nối đến picture Auto_Param’. ‘ Auto_Param’.
Phan Duy Anh Ver.1
Viết chương trình cho Project ● Thêm Thêm but butto ton n Config để Config để hiện hay ẩn picture window này
Phan Duy Anh Ver.1
Viết chương trình cho Project ● Sau khi thiết kế hoàn thiện các trang picture, ta tiến hành viết VBS cho chế độ tự động. ● Trên Trên cửa cửa sổ sổ WinCC Explorer , click vào Global Script, mở VBS-Editor.
Phan Duy Anh Ver.1
Viết chương trình cho Project ● Cửa sổ Global Global Script Script VBS xuất xuất hiện hiện
Phan Duy Anh Ver.1
Viết chương trình cho Project ● Tron Trong g tab tab ‘Project Modules’ , tạo mới Module1.bmo. Trong module1, module1, tạo một procedure có tên Tag_setting chứa Tag_setting chứa chương trình tác động và trì hoãn cho một đối tượng tag: 'procedure set gia tri cua Tag len 1 trong 1 khoang thoi gian nhat dinh Sub Tag_setting(Byval specified_amount_Tag, Byref Control_Tag) 'Khai bao thoi gian bat dau Dim start_time 'Gan thoi gian hien tai Start_time =Now() 'Set bit cua Tag Control_Tag.value=1 Control_Tag.write
Phan Duy Anh Ver.1
Viết chương trình cho Project 'Doc value cua Tag chua khoang thoi gian specified_amount_Tag.read(1) 'Neu hieu so giay cua thoi gian hien tai va thoi gian bat dau > ‘specified_amount thi gan 0 cho Tag While ((Hour(Now())*3600 + Minute(Now())*60 + Second(Now()))Second(Now()))-(Hour (Hour (Start_time)*3600 + Minute(Start_time)*60 + Second(Start_time)))<= (specified_amount_Tag.Value) 'khong lam gi ca, chi doi khoang thoi gian specified_amount ket thuc Wend 'Neu hieu so giay cua thoi gian hien tai va thoi gian bat dau > ‘specified_amount thi gan 0 cho Tag Control_Tag.value=0 Control_Tag.write End Sub
Phan Duy Anh Ver.1
Viết chương trình cho Project ● Trong Tab Action, Action, tạo mới mới một action1.bac, action1.bac, là hành động chạy tự động khi chuyển sang Auto mode: Option Explicit Function action 'Khai bao 'Cac bien chua trang thai cac valves, mixer Dim auto 'Gan cac bien voi cac Tag tuong ung Set auto= HMIRuntime.Tags("Auto_manua HMIRuntime.Tags("Auto_manual") l") auto.Read 'Neu Tag auto chuyen tu 0->1 thi chay tu dong If auto.Value Then
Phan Duy Anh Ver.1
Viết chương trình cho Project Dim Valve_A Dim Valve_B Dim Valve_C Dim Mixer 'Cac bien chua thoi gian trong cac tags thoi gian Dim Time_VA Dim Time_VB Dim Time_VC Dim Time_M 'Gan cac bien voi cac Tag tuong ung Set Valve_A= HMIRuntime.Tags("Valve_A") Set Valve_B= HMIRuntime.Tags("Valve_B") Set Valve_C= HMIRuntime.Tags("Valve_C HMIRuntime.Tags("Valve_C") ") Set Mixer= HMIRuntime.Tags("Mixer")
Phan Duy Anh Ver.1
Viết chương trình cho Project Set Time_VA= HMIRuntime.Tags("Time_Valve HMIRuntime.Tags("Time_Valve_A") _A") Set Time_VB= HMIRuntime.Tags("Time_Valve HMIRuntime.Tags("Time_Valve_B") _B") Set Time_VC= HMIRuntime.Tags("Time_Valve_ HMIRuntime.Tags("Time_Valve_C") C") Set Time_M= HMIRuntime.Tags("Time_Mixe HMIRuntime.Tags("Time_Mixer") r") 'Tac dong valve A 'Mo Valve A torng thoi gian Time_VA giay Tag_setting Time_VA , Valve_A 'Tac dong valve B 'Mo Valve A torng thoi gian Time_VA giay Tag_setting Time_VB, Valve_B
Phan Duy Anh Ver.1
Viết chương trình cho Project 'Tac dong Mixer 'Mo Valve A torng thoi gian Time_VA giay Tag_setting Time_M, Mixer 'Tac dong valve C 'Mo Valve A torng thoi gian Time_VA giay Tag_setting Time_VC, Valve_C Else 'Neu Tag auto chuyen tu 1->0 thi ngung chay Valve_A.Value 0 ,1 Valve_B.Value 0 ,1 Valve_C.Value 0 ,1 Mixer.Value 0 ,1 end If 'Ket thuc End Function Phan Duy Anh Ver.1
Viết chương trình cho Project ● Cấu hình hình cho action này này được kích hoạt hoạt khi value của của tag Auto_Manual tag Auto_Manual thay thay đổi: ● Nhấn vào biểu tượng để mở info/Trigger – Dialog.
● Chọn Chọn Tag Tag Auto_Manual làm Auto_Manual làm Trigger Tag cho action1 Phan Duy Anh Ver.1
Viết chương trình cho Project
Phan Duy Anh Ver.1
Viết chương trình cho Project ● Thêm một yêu yêu cầu nữa, khi chuyển mode từ Manual Manual sang Auto thì khóa các buttons điều khiển khiển trên ‘Manual ‘Manual Mode Control Panel’. ● Để làm được được điều này, này, ta khai báo thêm thêm 1 tag ‘Lock_button’ để điều khiển tính năng ‘Operator-Control Enable’. Khi Tag này là 1 thì cho phép các buttons điều khiển, nếu là 0 thì ngược lại
Phan Duy Anh Ver.1
Viết chương trình cho Project Mode) thì tag ● Và khi khi tag tag Auto_Manual là 1 (Auto Mode) Lock_Button là 0 và khi tag Auto_Manual là 0 (Manual Mode) thì tag Lock_Button là 1. ● Để làm điều này, này, ta thêm một một action2 như sau: Option Explicit Function action 'Khai Bao bien Dim auto Dim lock 'Ket noi voi cac Tags tuong ung Set auto=HMIRuntime.Tags("Auto_m auto=HMIRuntime.Tags("Auto_manual") anual") Set lock=HMIRuntime.Tags( lock=HMIRuntime.Tags("Lock_button") "Lock_button")
Phan Duy Anh Ver.1
Viết chương trình cho Project 'Doc gia tri cua tag Auto_manual auto.Read(1) 'Neu tag Auto_manual la 1 thi tag Lock_button la 0 If auto.Value Then lock.Write 0 , 1 Else 'Neu tag Auto_manual la 0 thi tag Lock_button la 1 lock.Write 1 , 1 End If End Function
Phan Duy Anh Ver.1
Viết chương trình cho Project ● Action Action này cũng cũng được kích kích hoạt khi khi tag Auto_Manual tag Auto_Manual thay đổi giá trị.
Phan Duy Anh Ver.1
Visual Basic Script trên WinCC * Tổng quan * Visual Basic Script * Viết chương trình cho Project
Phan Duy Anh Ver.1
Visual Basic Script trên WinCC ● Thiết lập lập thuộc tính Runtime Runtime cho cho Project: Project:
Phan Duy Anh Ver.1
Visual Basic Script trên WinCC ● Nhấn để để thực thi runtime runtime của của project. project. ● Nhấn Nhấn but butto ton n config để config để cài đặt thời gian chạy tự động cho hệ thống.
Phan Duy Anh Ver.1
Visual Basic Script trên WinCC ● Gạt Gạt swi switc tch h Auto/Manual sang Auto/Manual sang Auto Auto Mode, Mode, hệ thống sẽ hoạt động tự động theo các khoảng thời gian cài đặt trước. Lúc này các buttons điều khiển bằng tay trên control panel bị panel bị mờ đi.
Phan Duy Anh Ver.1
Tài Liệu Tham Khảo ● WinCC WinCC User User Manua Manual l ● //---------//-----------------------------------------------------------
Phan Duy Anh Ver.1