트랜드 오브젝트의 데이터를 엑셀파일로 출력하는 예제 입니다.
[예제]
●예제프로젝트 설명
Cycle태그(초단위 주기) 설정에 따라 트랜드 오브젝트에 표시된 데이터를 엑셀 파일로 출력하는 예제
1. 아래와 같이 데이터 수집모델을 생성합니다.
– 수집방법 : 정주기로 수집
– 수집주기 : 1초
2. 데이터베이스에 3개의 태그를 생성
3. ANA1과 ANA2에 데이터수집 태그로 설정합니다.
4. 트랜드 오브젝트를 생성하여 아래와 같이 설정합니다.
– 오브젝트 이름 : Trend
– 펜등록 : ANA1, ANA2
5. 스크립트를 작성
아래와 같이 스크립트를 작성합니다.
Sub StatusSave()
If GetTagVal(“CYCLE”) <> 0 Then
‘주기가 0이 아닐경우
Set ExcelApp = CreateObject(“Excel.Application”)
fFormName$ = “D:TESTSCADAReport양식양식.xlsx”
‘양식파일 위치
fTodayName$ = “D:TESTSCADAReport출력”+TimeStr(44)+”.xlsx”
‘생성될 파일 위치
If (FileExists(fTodayName$) <> True) Then
‘파일이 없을 경우
FileCopy fFormName$ , fTodayName$
‘양식파일 복사
End If
Set DayRpt = ExcelApp.Workbooks.Open(fTodayName$)
‘Excel Workbook Open
Set Sheet1 = DayRpt.Worksheets(1)
If GetTrendMode(“Trend”) = 1 Then
‘과거 트랜드 모드일 경우
hsTrendTime& = TrendGetTime(“Trend”, 4)
‘트랜드 시작시간
heTrendTime& = TrendGetTime(“Trend”, 5)
‘트랜드 끝시간
hTrendCycleCounter% = ((heTrendTime& – hsTrendTime&) – ((heTrendTime& – hsTrendTime&) Mod GetTagVal(“Cycle”))) / GetTagVal(“Cycle”)
‘데이터 갯수
For i = 0 to hTrendCycleCounter%
hTrendTime& = hsTrendTime& + (i * GetTagVal(“Cycle”))
‘시각값
hTrendTimeStr$ = TimeToStr(hTrendTime&, 12) + TimeToStr(hTrendTime, 5)
‘시간 값을 YYYY년MM월DD일hh시mm분ss초 변환
Set Cell = Sheet1.Range(“A”+CSTR(i + 1))
Cell.Value = hTrendTimeStr$
Set Cell = Sheet1.Range(“B”+CSTR(i + 1))
Cell.Value = Dlogval(“ANA1”,hTrendTimeStr$)
‘ANA1의 수집데이터를 셀에 출력
Set Cell = Sheet1.Range(“C”+CSTR(i + 1))
Cell.Value = Dlogval(“ANA2”,hTrendTimeStr$)
‘ANA2의 수집데이터를 셀에 출력
Next i
Else
‘과거 트랜드 모드일 경우
rsTrendTime& = TrendGetTime(“Trend”, 0)
‘트랜드 시작시간
reTrendTime& = TrendGetTime(“Trend”, 1)
‘트랜드 끝시간
rTrendCycleCounter% = ((reTrendTime& – rsTrendTime&) – ((reTrendTime& – rsTrendTime&) Mod GetTagVal(“Cycle”))) / GetTagVal(“Cycle”)
‘데이터 갯수
For i = 0 to rTrendCycleCounter%
rTrendTime& = rsTrendTime& + (i * GetTagVal(“Cycle”))
‘시각값
rTrendTimeStr$ = TimeToStr(rTrendTime&, 12) + TimeToStr(rTrendTime&, 5)
‘시간 값을 YYYY년MM월DD일hh시mm분ss초 변환
Set Cell = Sheet1.Range(“A”+CSTR(i + 1))
Cell.Value = rTrendTimeStr$
Set Cell = Sheet1.Range(“B”+CSTR(i + 1))
Cell.Value = Dlogval(“ANA1”,rTrendTimeStr$)
‘ANA1의 수집데이터를 셀에 출력
Set Cell = Sheet1.Range(“C”+CSTR(i + 1))
Cell.Value = Dlogval(“ANA2”,rTrendTimeStr$)
‘ANA2의 수집데이터를 셀에 출력
Next i
End If
Sheet1.Calculate
‘ Sheet1.PrintOut
DayRpt.Save
ExcelApp.Quit
Set ExcelApp = Empty
End If
End Sub
이후 CIMONX 실행 후 스크립트 동작 시 설정한 주기로 엑셀파일이 생성되는 것을 확인 할 수 있습니다.
#트랜드#트렌드#Trend#엑셀#excel#엑셀파일#트렌드데이터#트랜드데이터#data