Hướng dẫn chi tiết xuất báo cáo ra excel theo form ra excel, đồng thời lưu trữ theo ngày, người dùng có thể thêm tag, và thay đổi theo form báo cáo chi tiết cho một file nào đó, hệ thống này thực hiện trên tia portal V15 và PLC S71200
Trang 1XUẤT BÁO CÁO RA EXCEL TRONG TIA PORTAL PROFESSIONAL - SIEMENS
Tài liệu được thực hiện bởi: Ngọc Automation (youtube) Website: https://ngocautomation.com hoặc https://hoctudonghoa.com
Hotline zalo hỗ trợ: 0904 701 605
STEP 1: Tạo một giao diện điều khiển cho một hệ thống nào đó như hình sau:
Nguyên lý làm việc của hệ thống: Nhấn nút auto, sau khi chọn đủ các điều kiện vận hành như: Bồn đang
cạn, đã đặt trọng lượng và thời gian thì tiến hành cân liệu vào bồn, sau đó đạt được trọng lượng thì bắt đầu trộn theo thời gian đặt, khi trộn xong thì xả liệu ra, sau khi cảm biến bồn cạn tác động thì xuất báo cáo, nhấn nút xác nhận vận hành thì hệ thống lại trộn lại.
Trang 2STEP 2: Tạo 1 khối database bao gồm các thành phần tags sau
(*) Bảng thống kê tag
Trang 3TT Tên tag Định dạng Giải thích
liệu 2
STEP 3: Trong phần cứng PLC bật các chức năng hệ thống
Trang 4STEP 4: Lập trình chương trình cho PLC
Trang 9STEP 5: Tạo các tag nội và tag dữ liệu báo cáo cho Scada
STEP 6: Tạo VBScript cho Scada (Wincc Professional)
Trang 106.1 Script tạo file mới (Creat_File)
' -Dim dtmDate, objExcel, objWorkbook, path
Dim a
Dim objExcelApp,objExcelApp2
Dim DT,CDT,VBDT,CWT,VBWT,CpHORP,VBpHORP,CQT,VBQT,CFLDREX,VBFLDREX,CFLDRPDF,VBFLDRPDF,CWeb,VBWeb Dim DY,MNTH,YR,MNTHNM
Dim HR,MNT,SCND
Dim i,j
Dim fso, msg,fldr,ReportFolderStatus
Dim fso1, f,fName
DY=Day(Date())
MNTH=Month(Date())
YR=Year(Date())
HR=Hour(Time())
MNT=Minute(Time())
SCND=Second(Time())
MNTHNM=Month(Now)
MNTHNM=MonthName (MNTHNM,True)
' DEFINE MONTH TYPE
Dim MNTH1, DY1
If MNTH < 10 Then
MNTH1 = "0" & MNTH
Else
MNTH1 = MNTH
End If
' DEFINE DATE TYPE
If DY < 10 Then
DY1 = "0" & DY
Else
DY1 = DY
End If
' DEFINE HOUR & MINUTE
Dim HR1, MNT1
'HOUR
If HR < 10 Then
HR1 = "0" & HR
Else
HR1 = HR
End If
'MINUTE
If MNT < 10 Then
MNT1 = "0" & MNT
Else
MNT1 = MNT
End If
'Save link
VBDT= VBFLDREX & "\" & "Report_" & YR & "_" & MNTH1 & "_" & DY1 & "_" & HR1 & "_" & MNT1 & ".xls" ' SAVE THE TARGET FILE TAG
Dim TagLink
Set TagLink = HMIRuntime.Tags("tag_Report_Save_Link")
TagLink.Write (VBDT)
'================ CREAT NEW FILE FOR EACH SEQUENCE ===============================
Dim objFSO
Dim RefFile
Dim TarFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
'
RefFile = "D:\Report\Reference\Report_Reference.xls" 'Reference file
TarFile = VBDT '"D:\scripts\temp\Testghdf.xls"
objFSO.CopyFile RefFile, TarFile
'================ CREAT NEW FILE FOR EACH SEQUENCE ===============================
Trang 116.2 Script tạo thư mục mới mới (Creat_Folder)
' -Dim dtmDate, objExcel, objWorkbook, path
Dim a
Dim objExcelApp,objExcelApp2
Dim DT,CDT,VBDT,CWT,VBWT,CpHORP,VBpHORP,CQT,VBQT,CFLDREX,VBFLDREX,CFLDRPDF,VBFLDRPDF,CWeb,VBWeb Dim DY,MNTH,YR,MNTHNM
Dim HR,MNT,SCND
Dim i,j
Dim fso, msg,fldr,ReportFolderStatus
Dim fso1, f,fName
DY=Day(Date())
MNTH=Month(Date())
YR=Year(Date())
HR=Hour(Time())
MNT=Minute(Time())
SCND=Second(Time())
MNTHNM=Month(Now)
MNTHNM=MonthName (MNTHNM,True)
' DEFINE MONTH TYPE
Dim MNTH1, DY1
If MNTH < 10 Then
MNTH1 = "0" & MNTH
Else
MNTH1 = MNTH
End If
' DEFINE DATE TYPE
If DY < 10 Then
DY1 = "0" & DY
Else
DY1 = DY
End If
' DEFINE HOUR & MINUTE
Dim HR1, MNT1
'HOUR
If HR < 10 Then
HR1 = "0" & HR
Else
HR1 = HR
End If
'MINUTE
If MNT < 10 Then
MNT1 = "0" & MNT
Else
MNT1 = MNT
End If
'Save link
VBFLDREX = "D:\Report\" & YR & MNTH1 & DY1
'======================= CREAT FOLDER ============================================
Set fso1 = CreateObject("Scripting.FileSystemObject")
fso1.CreateFolder(VBFLDREX)
Trang 126.3 Script lấy dữ liệu thời gian hiện tại (Current_Date_Time)
'++++++++++++++++LẤY THỜI GIAN THỰC TẾ++++++++++++++++++++++++++++
Dim DateValue1
Dim TimeValue1
' DOC NGAY THANG THUC TE
DateValue1 = CStr(Date) 'makes characters of date
Dim Date_Tag '(Text tag 8 bit character set)
Set Date_Tag = HMIRuntime.Tags("tag_Current_Date")
Date_Tag.Write (DateValue1) 'write the characters to Tag
' DOC THOI GIAN THUC
TimeValue1 = CStr(Time) 'makes characters of date
Dim Time_Tag '(Text tag 8 bit character set)
Set Time_Tag = HMIRuntime.Tags("tag_Current_Time")
Time_Tag.Write (TimeValue1) 'write the characters to Tag
Dim DateTime1
Dim DateAdnTime
DateTime1 = DateValue1 & " " & TimeValue1
Set DateAdnTime = HMIRuntime.Tags("tag_Current_Date_Time")
DateAdnTime.Write (DateTime1) 'write the characters to Tag
'++++++++++++++++LẤY THỜI GIAN THỰC TẾ++++++++++++++++++++++++++++
6.4 Script xuất báo cáo (Data_Export)
Dim wsh, XLSrunning, TargetBookrunning, objExcelApp, objWorkbook, TheTargetBook, TheTargetBookName
Dim TheCount
Dim objFSO
Const OverwriteExisting = 1
Set wsh = CreateObject("WScript.Shell")
'======================================TAG FOR SAVE LINK========================================
TheTargetBookName = HMIRuntime.Tags("tag_Report_Save_Link").Read '
'===============================================================================================
TheTargetBook = TheTargetBookName
TheCount = GetObject("winmgmts:root\CIMV2").ExecQuery("SELECT * FROM Win32_Process WHERE Name='EXCEL.EXE'").Count
If TheCount > 0 Then
Set objExcelApp = GetObject(,"Excel.Application")
TargetBookrunning = 0
For Each XLSrunning In objExcelApp.Workbooks
If XLSrunning.name = TheTargetBookName Then
TargetBookrunning = 1
End If
Next
If TargetBookrunning = 1 Then
Set objWorkbook = GetObject(TheTargetBook)
Else
Set objWorkbook = objExcelApp.Workbooks.Open(TheTargetBook)
End If
Else
Set objExcelApp = CreateObject("Excel.Application")
Set objWorkbook = objExcelApp.Workbooks.Open(TheTargetBook)
End If
objExcelApp.Visible = False
objExcelApp.ScreenUpdating = True
objExcelApp.DisplayAlerts = True
Dim P100ATheTargetRow,P100BTheTargetRow
With objWorkbook.activesheet
'=======================================EXPORT DATA START======================================================== cells(10, 6) = HMIRuntime.Tags("tag_Current_Date_Time").Read
.cells(14, 3) = HMIRuntime.Tags("report_Setting_Weight_1").Read
.cells(15, 3) = HMIRuntime.Tags("report_Setting_Weight_2").Read
.cells(16, 3) = HMIRuntime.Tags("report_Setting_Time").Read
.cells(14, 4) = HMIRuntime.Tags("report_act_Weight_1").Read
Trang 13.cells(15, 4) = HMIRuntime.Tags("report_act_Weight_2").Read
.cells(16, 4) = HMIRuntime.Tags("report_act_Time").Read
'=======================================EXPORT DATA END======================================================== End With
objWorkbook.Save
objWorkbook.Close
Set objWorkbook = Nothing
objExcelApp.Quit
Set objExcelApp = Nothing
'msgbox "Done"
Set wsh = Nothing
STEP 7: Tạo trigger xuất báo cáo cho Scada
Ở mục schedule tag tạo 4 trigger như sau:
7.1 Trigger tạo folder (Creat_Folder)
Lựa chọn Daily, và vào lúc 12:00:00 AM tức là 0H sáng
(*) Ở mục event chọn script có tên là Creat_Folder
Trang 147.2 Trigger Tạo file mới (Creat_File)
(*) Chọn tag trigger và tag là tag đã tạo bên PLC với tên tag là “report_Trigger_Creat_File”, lựa chọn thuộc tính là Uponchange
(*) Ở mục event chọn script có tên là Creat_File
Trang 157.3 Trigger xuất báo cáo (Data_Export)
(*) Chọn tag trigger và tag là tag đã tạo bên PLC với tên tag là “report_Trigger_Data_Export”, lựa chọn thuộc tính là Uponchange
(*) Ở mục event chọn script có tên là Data_Export
Trang 167.4 Trigger lấy dữ liệu thời gian thực tế (Current_Date_Time)
(*) Lựa chọn Trigger là 1 minute tức là 1 phút sẽ cập nhật giá trị 1 lần, các bạn cũng có thể chọn 1 second
để 1s trigger thay đổi giá trị 1 lần.
(*) Ở mục event chọn script có tên là Current_Date_Time
Trang 17STEP 8: Tạo folder và file excel chuẩn
8.1 Tạo 1 folder có tên là Report ở ổ D của máy tính
8.2 Trong thư mục report tạo 1 folder có tên là Reference
8.3 Tạo 1 file excel chuẩn dạng Excel 2003 (đuôi xls) với tên “Report_Reference.xls” và coppy vào thư mục Reference
Trang 18(*) Nội dung file excel
STEP 9: Thực hiện chạy chương trình và ta có kết quả như sau