• 제품선택
  • 트랜드 오브젝트의 데이터를 엑셀파일로 출력하는 예제 입니다.  

    [예제]   

    ●예제프로젝트 설명 

    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이 되겠습니다.

    감사합니다.