HOME > 고객지원 > Q&A
hist data 관련 예제 입니다. |
---|
작성자: 관리자 2001-04-02 13:20:02 | 4,826 |
이력 파일의 데이타를 'HistData'란 프로그램을 사용하여 조회한 다음 그 내용을 CSV 파일로 만들어 엑셀에서 매크로를 이용하여 레포트로 출력할 수 있습니다. 먼저 이력 파일을 만들기 위해서는 이력을 남기고자 하는 태그에 'Log Data' 옵션에 체크를 하고 Configure에서 'Historical Logging'을 인에이블합니다. 이력 파일은 정해진 폴더 아래에 날짜별(yymmddxx)로 이름을 갖는 '.idx'와 '.lgh' 파일로 저장됩니다. 이 파일은 바이너리 파일로써 'HistData'란 프로그램을 이용해서 이력된 데이타를 조건에 맞게 조회해 올 수 있습니다. 또한 조회된 내용을 CSV 파일로 만들 수 있습니다. 다음은 매일 자정에 레포트를 출력하기 위해서 InTouch에서 해주어야 할 스크립트입니다. Condition Script Condition: $hour == 0 Condition Type: On True DATADIR = InfoInTouchAppDir(); {DATADIR: 이력파일이 있는 폴더} DBDIR = InfoInTouchAppDir(); {DBDIR: tagname.x 파일이 있는 폴더} STARTDATE = StringFromTime(($Date - 1) * 86400, 1); {STARTDATE: 조회 시작일자} {$Date - 1: 하루 전} {86400: 일당 초 수} {1: $DateString 형식으로 출력, 제어판/국가별설정/날짜에서 'MM/dd/yy' 로 설정해야 함} STARTTIME = "00:00:00"; {STARTTIME: 조회 시작시간} DURATION = "24H"; {DURATION: 조회 기간 범위} INTERVAL = "1H"; {INTERVAL: 조회 샘플링 주기} TAGS = "$Time,start,milk_valve,syrup_valve,tank_level"; {TAGS: 조회할 태그들} PRINTTAGNAMES = 0; {1: 출력시 태그이름을 출력함} {0: 출력시 태그이름을 출력 안함} SENDDATA = 1; {조회 시작} DataChange Script Tagname : Senddata IF SENDDATA == 0 THEN {조회가 끝나면} FILENAME = "d:intouchtest" + StringRight( $DateString, 2 ) + StringLeft( $DateString, 2 ) + StringMid( $DateString, 4, 2 ) + ".CSV"; {쓰여질 파일이름 정의, yymmdd.csv} WRITEFILE = 1; {파일에 쓰기 시작} ENDIF; Tagname : writefile IF WRITEFILE == 0 THEN {파일에 쓰기가 끝나면} StartApp "c:program filesmicrosoft officeofficeexcel.exe " + InfoInTouchAppDir() + "" +StringRight( $DateString, 2 ) + StringLeft( $DateString, 2 ) + StringMid( $DateString, 4, 2 ) + ".CSV"; {엑셀 매크로 파일 실행, 매크로 참조} ENDIF; 계속해서 엑셀 매크로를 보면 다음과 같습니다. Sub auto_open() '파일이 열릴 때 자동 수행 Workbooks.Open Filename:="e:kwangyangappreport" + Mid(CStr(Now), 7, 2) + Mid(CStr(Now), 1, 2) + Mid(CStr(Now), 4, 2) + ".csv" '만들어진 CSV 파일 열기 Range("A1:D25").Select '데이타 영역 선택 Selection.Copy '선택된 영역 복사 Windows("Book1.xls").Activate '활성화 파일 이동 Range("A4").Select '붙여질 처음 위치에 커서 이동 Selection.PasteSpecial Paste:=7, Operation:=xlNone, SkipBlanks:=False, Transpose:=False '데이타의 값만 붙여넣기 ActiveWindow.SelectedSheets.PrintOut Copies:=1 '프린터로 출력 End Sub 다음은 InTouch에 사용된 태그입니다. Access Name : HistData Applicaiton Name : HISTDATA Topic Name : ViewStream1 Use Tagname as an Item Nema = Yes PRINTTAGNAMES : I/O Discrete SENDDATA : I/O Integer WRITEFILE : I/O Integer DATADIR : I/O Message DBDIR : I/O Message STARTDATE : I/O Message STARTTIME : I/O Message DURATION : I/O Message INTERVAL : I/O Message TAGS : I/O Message FILENAME : I/O Message |