-
제품선택
-
트랜드 오브젝트의 데이터를 엑셀파일로 출력하는 예제 입니다.
[예제]
●예제프로젝트 설명
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
-
안녕하세요, CIMON입니다.
SET, RST 명령어로 인한 과도한 STEP 수는 WAND 명령어를 사용하여 줄일 수 있습니다.
[적용방법]
WAND 명령어는 S1으로 지정된 영역의 각 비트 데이터와 S2로 지정된 영역의 각 비트 데이터를 AND 결합하여 D로 지정된 영역의 각 비트에 저장합니다.
아래와 같은 방법으로 SET, RST 명령어 없이 스텝을 줄 일 수 있습니다.
X00 이 입력이 들어오면 AND 조건에 의해 Y10 이 ON 됩니다.
X01 이 입력이 들어오면 Y11 이 ON 됩니다.
언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.
감사합니다.