시간 더하기/빼기 함수
@TimePlusMin(year,mon,day,hour,min) 주어진 시간(argument에 들어가는 시간)에 대하여 1분을 더해준다.
@TimePlusHour(year,mon,day,hour) 주어진 시간(argument에 들어가는 시간)에 대하여 1시간을 더해준다.
@TimePlusDay(year,mon,day) 주어진 시간(argument에 들어가는 시간)에 대하여 1일을 더해준다.
@TimePlusMon(year,mon) 주어진 시간(argument에 들어가는 시간)에 대하여 1월을 더해준다.
@TimeMinusMin(year,mon,day,hour,min) 주어진 시간(argument에 들어가는 시간)에 대하여 1분을 빼준다.
@TimeMinusHour(year,mon,day,hour) 주어진 시간(argument에 들어가는 시간)에 대하여 1시간을 빼준다.
@TimeMinusDay(year,mon,day) 주어진 시간(argument에 들어가는 시간)에 대하여 1일을 빼준다.
@TimeMinusMon(year,mon) 주어진 시간(argument에 들어가는 시간)에 대하여 1월을 빼준다.
이 함수를 사용하여 감시프로그램 상에서 사용자가 원하는 시간을 지정할 수 있게끔 해준다.
스크립트 예제)
1) 감시프로그램에서 사용자가 지정한 시간의 리포트 보기
이 기능을 위해서는 @ReportSetTime(year,mon,day)함수와 @ReportView()를 사용하여야 한다.
위의 그림의 시간 설정 하기 화면과 같이
1)-1 우선은 아날로그 입력태그에 YEAR, MON, DAY( 태그 명은 사용자 임의)를 아날로그 입력 태그에 메모리 태그로 등록한다.
1)-2 감시 화면상에 위의 태그를 나타내고, 프로그램 버튼을 사용하여 스크립트를 작성한다.
(스크립트 버튼은 간단히, ‘일’을 +/- 하는 예제를 사용 하겠습니다.)
프로그램 버튼(‘D-‘ 버튼) ‘일’을 빼는 함수를 추가한다.
@TimeMinusDay($YEAR,$MON,$DAY);
위와 같이 한 줄의 함수만 추가하면 된다.
프로그램 버튼중의 하나에 ‘일’을 더해주는 함수를 추가한다.
@TimePlusDay($YEAR,$MON,$DAY);
위와 같이 한 줄의 함수만 추가하면 된다.
1)-3 리포트를 보여주기 위한 프로그램 버튼을 하나 추가한다.
‘리포트 보기’ 버튼에 다음과 같이 스크립트를 추가한다.
@ReportSetTime($YEAR, $MON, $DAY);
@ReportView("Report1.rptx"); // Report1.rptx 는 사용자가 작성한 리포트 파일 이름이다.
위와 같이 사용하면 사용자가 지정한 날짜의 리포트를 볼 수 있다.( 감시프로그램상에서 )
2) 감시프로그램에서 사용자가 지정한 시간의 지난 데이터 보기
이 기능을 수행하기 위해서는 다음과 같은 함수를 사용하여야 한다.
@DataGetAiMin("Tag-name",int Data-Type,year,mon,day,hour,min);
@DataGetAiHour("Tag-name",int Data-Type,year,mon,day,hour);
@DataGetAiDay("Tag-name",int Data-Type,year,mon,day);
@DataGetAiMon("Tag-name",int Data-Type,year,mon);
@DataGetAiYear("Tag-name",int Data-Type,year);
@DataGetDiMin("Tag-name",int Data-Type,year,mon,day,hour,min);
@DataGetDiHour("Tag-name",int Data-Type,year,mon,day,hour);
@DataGetDiDay("Tag-name",int Data-Type,year,mon,day);
@DataGetDiMon("Tag-name",int Data-Type,year,mon);
@DataGetDiYear("Tag-name",int Data-Type,year);
위의 함수는 분/시간/하루/월/년 단위의 저장된 데이터 값을 불러오는 함수이다.
Data-Type
아날로그 입력태그 인 경우 0 : 평균값, 1 : 최소값, 2 : 최대값, 3 : 적산값, 4 : 현재 최대- 지난 최대값
디지털 입력태그 인 경우 0 :ON시간 , 1 : OFF시간, 2 : ON/OFF 횟수
2)-1 1)에서의 예제와 같이 아날로그 입력태그 YEAR,MON,DAY,HOUR,MIN의 메모리태그를 작성한다.
다음에 불러올 데이터를 저장할 아날로그 메모리 태그를 작성한다.
( 예를 들어 AI_0001, AI_0002의 자료에 대한 시간자료를 보기위해서는 이를 저장할 메모리 태그를 만들어 준다. DATAAI_01, DATAAI02 )
2)-2 위의 그림처럼 감시화면 상에는 시간을 설정할 수 있는 화면과 설정된 시간의 자료를 볼 수 있는 화면을 구성한다.
시간 설정화면은 위의 1)의 다음 그림처럼 년/월/일/시 를 바꿀 수 있는 스크립트를 작성한다.
월/일/시 를 사용자가 바꾸기 위해서는 우선 프로그램 버튼을 6개 만든다. ( 월변경+/- 버튼, 일변경 +/-버튼, 시간변경 +/-버튼)
각각의 버튼에 다음 그림과 같이 스크립트를 작성한다.

@TimePlusHour($YEAR,$MON,$DAY,$HOUR); //시간 + 버튼 스크립트
for(i=1 ; i <=2 ; i = i+1 ){
@sprintf(buf,"AI_%04d",i ) ; //buf 라는 변수의 버퍼에 “AI_0001” 과 “AI_0002” 의 스트링을 저장한다. AI_0001/AI_0002는 아날로그 입력
태그이다.
@sprintf(buf1,"DATAAI_%02d",i ) ; // buf1 라는 변수의 버퍼에 “DATAAI_01” 과 “DATAAI_02” 의 스트링을 저장한다.
value=@DataGetAiHour(buf,4,$YEAR,$MON,$DAY,$HOUR); // buf에 저장된 태그의 해당 년/월/일/시 의 지난시간 최대값-현재시간 최대값 을 vlaue라는 변수에 저장한다.
@SetTagValue(buf1,value); //value 의 값을 buf1(DATAAI_01/02)에 저장한다.
}
위에서 설정한 프로그램과 마찬가지로 각각의 6개에 대한 프로그램 버튼에 스크립트를 추가하면 된다.