HOME > 고객지원 > Q&A
수정하여 다시 올립니다. |
---|
작성자: 관리자 2002-07-03 18:15:18 | 1,619 |
{위의 Script는 ON된 날짜와 OFF된 날짜가 다를 경우 가동시간이 계산되지 않는 에러를 수정하였습니다. } { 현재 가동시간은 분단위로 계산이 되게 되어있습니다. } { 현재 총 가동시간이 35791분 이상은 계산이 되지 않습니다. } { Data란의 93번에 Application 예제를 올려놨습니다. } { 현재 작성된 Application은 날짜 타입 MM-DD-YY 시간은 HH:mm:ss 를 기준으로 작성된 것임 } { Event --> Memory Discrete } { Ja_St_Date_M --> Memory Message } { ja_st_date_i --> Memory Integer } { Ja_St_Time_i --> Memory Integer } { Ja_Ed_Date_M --> Memory Message } { total_time --> Memory Integer } { DateMin --> Memory Integer } { TimeMin --> Memory Integer } { ja_ed_date_i --> Memory Integer } { Ja_Ed_Time_i --> Memory Integer } DIM pump_message AS MESSAGE; DIM pump_filename AS MESSAGE; { 장치가 ON 되었을 경우 } IF Event == 1 THEN { ON된 날짜와 시간 } Ja_St_Date_M = $DateString + " " + $TimeString; { ON된 날짜에 대한 정수값 } ja_st_date_i = $Date; { ON된 시간에 대한 정수값 } Ja_St_Time_i = $Time; { OFF시 저장되는 값들과 가동시간 초기화 } Ja_Ed_Date_M = ""; total_time =0; DateMin = 0; TimeMin = 0; ENDIF; { 장치가 OFF 되었을 경우 } IF Event == 0 THEN { 저장될 파일의 경로와 파일 이름 hkp_YYMMDD.csv형태로 파일 생성 } pump_filename = "hkp_"+ StringRight($DateString, 2 ) + StringLeft( $DateString, 2 ) + StringMid( $DateString, 4, 2 ) + ".csv"; { OFF된 날짜와 시간 } Ja_Ed_Date_M = $DateString + " " + $TimeString; { OFF된 날짜에 대한 정수값 } ja_ed_date_i = $Date; { OFF된 시간에 대한 정수값 } Ja_Ed_Time_i = $Time; { 하루 안에 ON 되고 OFF된 경우 } IF ja_ed_date_i == ja_st_date_i THEN { OFF된 시간에서 ON된 시간을 뺀 후 1분에 대한 값을 나누어 준다 ( 1000Msec * 60 Sec ) } { 만약 1초 단위로 출력하길 원하는 경우 나누기 1000을 해준다 } total_time = ( Ja_Ed_Time_i - Ja_St_Time_i ) / 60000; { ON된 날짜와 OFF된 날짜가 다를 경우 } ELSE { OFF된 시간보다 ON된 시간에대한 정수값이 클 경우 } { 예) ON -> 20일 13시 30분 30초 OFF -> 21일 06시 12분 30초 } { $Time Tag는 하루를 기준으로 초기화 된다. } IF Ja_Ed_Time_i < Ja_St_Time_i THEN { OFF된 날짜의 정수값에서 ON된 날짜에 대한 정수값을 뺀후 일당 MSec값을 곱한다 } { -1을 하는 이유는 13시 30분에서 그날 23시 59분 59초에 대한 차이값만큼 다음날 06시 12분에 더해주면 되기 때문 } DateMin = ( ja_ed_date_i - ja_st_date_i - 1 ) * 86400000; { 23시 59분 59초 999MSec에대한 정수값 => 86399999 } { 시간에 대한 하루의 최고값에서 ON시간에 대한 정수값을 뺀후 더하기 OFF된 시간에 대한 정수값 } { ON되서 OFF되기까지의 총 가동한 시간에 대한 MSec값 } TimeMin = 86399999 - Ja_St_Time_i + Ja_Ed_Time_i; { MSec기준의 가동시간을 1분 단위로 표시하기 위하여 60000 ( 60초 * 1000MSec )로 나누어줌 } total_time = ( DateMin + TimeMin ) / 60000; { OFF된 시간에 대한 정수값 보다 ON된 시간에 대한 정수값이 작을 경우 } { 예) ON -> 20일 13시 30초 OFF -> 21일 18시 30초 } { 하루에 대한 정수값과 OFF된 시간에서 ON된 시간을 뺀 후 더하면 총가동시간에 대한 MSec값이 나온다. } ELSE DateMin = ( ja_ed_date_i - ja_st_date_i ) * 86400000; TimeMin = Ja_Ed_Time_i - Ja_St_Time_i; total_time = ( DateMin + TimeMin ) / 60000; ENDIF; ENDIF; { 파일로 출력을 원하는 값들을 정의 } pump_message ="event," + Ja_St_Date_M + "," + Ja_Ed_Date_M + "," + StringFromIntg(total_time, 10 ); { 파일로 출력 } |