시간(Time) 더하기/빼기 스크립트

 

 

시간 더하기/빼기 함수

 

@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개에 대한 프로그램 버튼에 스크립트를 추가하면 된다.