Tự động hóa IoT
Nhà cung cấp thiết bị truyền thông, viễn thông, tự động hóa IoT chuyên nghiệp, liên hệ: Tel/Zalo +84 904 251 826, sales@mctt.com.vn

Part 8. Phần mềm SCADA – Mã lệnh (Script)

Lượt xem: 406

Part 8. Phần mềm SCADA – Mã lệnh (Script)

Trong “Part 8” chúng ta cùng tìm hiểu về ngôn ngữ lập trình Visual Basic “mã lệnh” trong phần mềm Cimon-SCADA

CIMON cho phép sử dụng OLE Automation, vì vậy chương trình người dùng như một chương trình độc lập có thể thực hiện chạy bên trong và bên ngoài CIMON. Chương trình này sử dụng ngôn ngữ Visual Basic, nên không cần đào tạo lập trình đặc biệt. Khi sử dụng các hàm CIMON và hàm của ngôn ngữ Visual Basic, các hàm khác cũng có thể sử dụng.  Hàm CIMON cung cấp nhiều hàm gồm các hàm đầu vào / đầu ra thông tin Tag, các hàm cho hệ thống, các hàm cho SQL.

1. Các tính năng của Script

  • Ngôn ngữ Visual Basic hỗ trợ kiểm soát dữ liệu hoặc đối tượng trong CIMON và liên kết với các chương trình ứng dụng khác.
  • Viết các lệnh cần thực hiện mỗi khi mở và đóng cửa sổ giám sát.
  • Viết các lệnh cần thực hiện khi mỗi người dùng đăng nhập và đăng xuất.
  • Viết các lệnh cần thực hiện khi thực hiện ấn nút hoặc chạm vào màn hình cửa sổ giám sát.
  • Các hàm SQL, để tìm kiếm hoặc tìm kiếm dữ liệu hoặc tìm kiếm từ DB.
  • Cung cấp hơn 500 chức năng đầu vào / đầu ra của tệp và liên kết với đối tượng OLE.

2. Thiết lập cửa sổ Script

Chọn “Tools” => chọn “Scripts” trong menu của CimonD, của sổ của trình quản lý Script sẽ xuất hiện.

3. Menu

Đây là mem được sử dụng trong trình quản lý tập lệnh.

  • Add Script: Sử dụng để viết chương trình mới.

Một tập lệnh mới (vd: Script35) được tạo ở bên trái và một hàm mới (Script35) được hiển thị bên phải. Viết một chương trình mong muốn trong này.

Nếu thay đổi Script35 trong Sub Script35() thành ShowWin() và nhấp vào biểu tượng biên dịch một tập lệnh thì tệp lệnh ShowWin sẽ được thêm vào của sổ cây Script.

  • Compile Script: Sử dụng để kiểm tra và biên dịch một chương trình có sẵn. Nếu không có lỗi, tên chương trình và biến toàn cục sẽ được đăng ký vào cây Script mà không xuất hiện thông báo nào. Nếu có lỗi, hộp thoại Lỗi sẽ xuất hiện.

Nhấn nút “Ok” để đóng hộp thoại và sửa lỗi. Chọn menu Compile Script để biên dịch lại chương trình.

  • Register Script: Sử dụng để kiểm tra và đăng ký tất cả các chương trình chưa được biên dịch. Nếu xảy ra lỗi, tệp lệnh có lỗi sẽ được chọn và hộp thoại lỗi sẽ xuất hiện.

Chú ý: Tệp lệnh có X màu đỏ trên cửa sổ cây Script để báo chưa kiểm tra sau khi chỉnh sửa. Tệp lệnh chưa kiểm tra sẽ không chạy được trong CimonX.

Nhấp vào biểu tượng Add Script.

Thay đổi giá trị của “Tag_9” bằng một tập lệnh.

Thuật toán của tập lệnh được viết như sau: giá trị của “Tag_9” trong phạm vi từ 1 đến 5 sẽ được tăng lên 1. Nếu giá trị bằng 5 thì nó sẽ thay đổi thành 1. Sau khoảng thời gian 2 giây thì giá trị sẽ được thay đổi. Tên tập lệnh là “ColorChange”.

Nội dung của tập lệnh như sau:

Sub ColorChange()
While 1
Tag9 = GetTagVal(“Tag_9”)
If (Tag9 = 5) Then
SetTagVal “Tag_9”, 1
Else
SetTagVal “Tag_9”, Tag9 + 1
End If
Sleep(2000)
Wend
End Sub

Chú thích:

    •  Nếu một tập lệnh được gọi, hành động trong hàm sẽ được thực hiện và tự động thoát.
    •  Nếu không giới hạn thì chương trình sẽ chạy liên tục. Sử dụng hàm StopScript để thoát khỏi tập lệnh.
    •  Sử dụng hàm Sleep để tạo thời gian trễ.

Chương trình được viết lên của sổ như sau:

Nhấp vào biểu tượng “Compile Script” trong thanh công cụ của trình chỉnh sửa tập lệnh để kiểm tra tập lệnh.

Nhấp vào biểu tượng “Save” trên thanh công cụ chuẩn của CimonD để lưu tập lệnh.

Nhấp vào biểu tượng “Đóng” trên thanh điều khiển để thoát trình chỉnh sửa tập lệnh.

5. Chạy/dừng Script

Chạy và dừng một chương trình bằng cách sử dụng các hàm CIMON

  • Hàm CIMON để chạy một chương trình như sau:

RunScript(“Script Name”)

Ví dụ: RunScript(“ColorChange”)

  • Hàm CIMON để dừng một chương trình như sau:

StopScript(“Script Name”)

Ví dụ: StopScript(“ColorChange”)

6. Ví Dụ Script

6.1. Đọc/Ghi giá trị Tag

Để đọc giá trị “TAG_1” và viết nó vào “TAG_2”, có thể sử dụng mẫu tập lệnh như sau:

Sub ValueChange()
A1 = GetTagVal(“TAG_1″)
SetTagVal “TAG_2”, A1
End Sub

Giải thích:

  • GetTagVal(): đọc giá trị “TAG_1” và lưu nó vào biến “A1”.
  • SetTagVal(): ghi giá trị “A1” thành “TAG_2”.

6.2. Cập nhật thời gian hiện tại của hệ thống

Đây là mẫu chương trình cập nhật thời gian hiện tại và viết nó vào Tag chuỗi.

Sub GetCurrTime()
‘ Get current time
CurTime# = Now()
YYYY = Year(CurTime#)
MM = Month(CurTime#)
DD = Day(CurTime#)
HH = Hour(CurTime#)
Min = Minute(CurTime#)
Sec = Second(CurTime#)
SetTagVal “Year”, YYYY
SetTagVal “Month”, MM
SetTagVal “Date”, DD
SetTagVal “Hour”, HH
SetTagVal “Minute”, Min
SetTagVal “Second”, Sec
SetTagVal “Current time”, YYYY & “Year” & MM & “Month” & DD & “Date”_
& HH & “Hour” & Min & “Min” & Sec & “Sec”
End Sub

Giải thích:

  • Thông qua chương trình “Now()”, nó cập nhật thời gian hiện tại và lưu vào biến “CutTime#”.
  • Để cập nhật lại giá trị của năm, tháng, ngày, giờ, phút và giây và lưu nó vào từng biến YYYY, MM, DD, HH, Min và Sec, có thể sử dụng Year, Month, Day, Hour, Minute and Second.
  • Viết chuỗi Year, Month, Date, Hour, Minute and Second bởi lệnh “SetTagVal()” .
  • Tag chuỗi “Current time” được viết là “○○○○Year○○Month○○Date○○Hour○○Min○○Sec”

Ở trên sử dụng ngôn ngữ Basic Script. Có thể sử dụng hàm Cimon như sau:

Sub GetCurrTime()

SetTagVal “Current time”, TimeStr(44)

End Sub

Giải thích: Thông qua lệnh của Cimon TimeStr(), ghi “○○○○Year○○Month○○Date○○Hour○○Min○○Sec” để định dạng tag chuỗi “Current time”.

6.3. Chạy chương trình khác

Mẫu tập lệnh bên dưới được sử dụng để chạy chương trình khác như Internet Explorer

Sub RunExProgram()

id = Shell(“C:\Program Files\Internet Explorer\iexplore.exe “”http://www.kdtsys.com/”””,3)

End Sub

Giải thích: Chạy Internet Explorer và mở (http://www.kdtsys.com/) thông qua lệnh “Shell()”.

Cũng có thể mở tập tin Excel trực tiếp trong CIMON SCADA như sau:

Sub OpenExcelFile()

id = Shell(“C:\Program Files\Microsoft Office\Office\EXCEL.EXE “”C:\Sample.xls”””,3)

End Sub

Giải thích: Chạy chương trình Excel và mở (“C:\Sample.xls”) trực tiếp thông qua lệnh “Shell()”.

Đọc dữ liệu từ Excel

Mẫu tập lệnh bên dưới được sử dụng để đọc dữ liệu từ tệp Excel và lưu nó vào giá trị Tag.

Sub ReadExcel()
Dim ExcelApp As Object
Dim DayRpt As Object
Dim SheetForm As Object
‘ Read file name
fName$ = “C:\Sample.xls”
Set ExcelApp = CreateObject(“Excel.Application”)
Set DayRpt = ExcelApp.Workbooks.Open (fName$)
Set Sheet1 = DayRpt.Worksheets(1)
‘ Read the value from specified cell.
A1# = Sheet1.Range(“A1”).Value
SetTagVal “ANA1”, A1#
DayRpt.Save
DayRpt.Close
ExcelApp.Quit
Set ExcelApp = Empty
End Sub

Giải thích: Lệnh này dành cho đối tượng Excel và mở tệp Excel (“C:\Sample.xls”) và đọc dữ liệu từ ô A1 và lưu  nó vào biến A1# và sau đó ghi nó vào Tag “ANA1”.

Ghi dữ liệu vào Excel

Mẫu tập lệnh bên dưới được sử dụng để ghi giá thị tag vào ô được chỉ định trong tệp Excel.

Sub WriteExcel()
Dim ExcelApp As Object
Dim DayRpt As Object
Dim Sheet1 As Object
‘ Write file name
fName$ = “C:\Sample.xls”
Set ExcelApp = CreateObject(“Excel.Application”)
Set DayRpt = ExcelApp.Workbooks.Open (fName$)
Set Sheet1 = DayRpt.Worksheets(1)
‘ Write tag value to specified Cell
A1# = GetTagVal(“ANA1”)
Sheet1.Range(“A1”).Value = A1#
DayRpt.Save
DayRpt.Close
ExcelApp.Quit
Set ExcelApp = Empty
End Sub

Giải thích: lệnh này dành cho đối tượng Excel và mở tệp Excel (“C:\Sample.xls”) và ghi giá trị tag “ANA1” vào ô A1 được chỉ định.

Bình luận