scada 개체는 일반적으로 포인트의 값을 읽거나 포인트에 값을 쓸 때 사용하며 시스템 내의 데이터 처리에도 사용할 수 있습니다.

 scada 개체에서 지원하는 함수와 기능 설명은 아래와 같습니다.

Methods


리턴 값

함 수

설 명

  analogData

getAnalogData( name )

아날로그 포인트의 데이터를 읽어옵니다.

  statusData

getStatusData( name )

상태 포인트의 데이터를 읽어옵니다.

  string

getTextValue( name )

텍스트 포인트의 값을 읽어옵니다.

  float

getValue( name )

상태 포인트 또는 아날로그 포인트의 값을 읽어옵니다.

boolean

isPointExist( name )

해당 포인트가 있는지 확인합니다.


resetData( name )

상태 포인트 또는 아날로그 포인트의 현재 값과 이력 데이터 값을 초기화합니다.


restartCalculation()

계산식을 재시작합니다.


sendEvent( level, area, origin, desc, event )

이벤트를 만들어 전송합니다.


setFormula( name, formula )

포인트를 연산할 때 사용합니다.


setSummation( name, datas )

포인트를 합산할 때 사용합니다.


setTextValue( name, value )

텍스트 포인트에 텍스트 값을 씁니다.


setValue( name, value )

상태 포인트 또는 아날로그 포인트에 값을 씁니다.

  boolean

waitForValueChange( name, value, msec )

포인트의 값이 설정한 값이 될 때까지 대기(msec) 합니다.



 analogData getAnalogData( name:포인트명 )


 getAnalogData는 아날로그 포인트의 현재 값을 포함에 아날로그 포인트가 가지고 있는 부가적인 정보를 가져올 수 있습니다.

 반환되는 값은 analogData형식이며 현재 값 이외에 여러가지 값을 포함하고 있습니다.


  예)

# 아날로그 포인트 'Station 1.상전류 A' 의 데이터를 읽어옵니다.

data = scada.getAnalogData('Station 1.상전류 A')


# 현재 값 읽기

current  = data.lastValue()


# 현재 시간 기준 시간 최대값 읽기

current  = data.maxValue()


# 현재 시간 기준 시간 최소값 읽기

current  = data.minValue()


# 현재 시간 기준 시간 평균값 읽기

current  = data.avgValue()


# 현재 시간 기준 시간 변화량  값 읽기

current  = data.accValue()


###################################


# 현재 시간 기준 금일 최소값 읽기

current  = data.dayMaxValue()


# 현재 시간 기준 금일 최대값 읽기

current  = data.dayMinValue()


# 현재 시간 기준 금일 평균값 읽기

current  = data.dayAvgValue()


# 현재 시간 기준 금일 변화량 값 읽기

current  = data.dayAccValue()


###################################


# 현재 시간 기준 금월 최소값 읽기

current  = data.monthMaxValue()


# 현재 시간 기준 금월 최대값 읽기

current  = data.monthMinValue()


# 현재 시간 기준 금월 평균값 읽기

current  = data.monthAvgValue()  


# 현재 시간 기준 금월 변화량 값 읽기

current  = data.monthAccValue()  


###################################

# 현재 시간 기준 금년 최대값 읽기

current  = data.yearMaxValue()  


# 현재 시간 기준 금년 최소값 읽기

current  = data.yearMinValue()  


# 현재 시간 기준 금년 평균값 읽기

current  = data.yearAvgValue()  


# 현재 시간 기준 금년 변화량 값 읽기

current  = data.yearAccValue()  


###################################

# 시스템 가동 시점 부터 현재까지의  최소값 읽기

current  = data.totalMaxValue()  


# 시스템 가동 시점 부터 현재 까지의 최대값 읽기

current  = data.totalMinValue()  


# 시스템 가동 시점 부터 현재 까지의 평균값 읽기

current  = data.totalAvgValue()  


# 시스템 가동 시점 부터 현재 까지의  변화량 값 읽기

current  = data.totalAccValue()  


# 정상적인 데이터 여부 확인

good = data.isGood()  

     



 statusData getStatusData( name:포인트명 )


 getStatusData는 상태 포인트의 현재 값을 포함에 상태 포인트가 가지고 있는 부가적인 정보를 가져올 수 있습니다.

 반환되는 값은 statusData형식이며 현재 값 이외에 여러가지 값을 포함하고 있습니다.


 예)

# 상태 포인트 'Station 1.고장상태' 의 데이터를 읽어옵니다.

data = scada.getStatusData('Station 1.고장상태');  


# 현재 값 읽기

current  = data.lastValue()  


# 현재 시간 기준  현재 시간에 값이 On일 동안의 시간(밀리초)

current  = data.timeOnDuration()  


# 현재 시간 기준 현재 시간에 값이 Off일 동안의 시간(밀리초)

current  = data.timeOffDuration()  


# 현재 시간 기준 현재 시간에 값이 On으로 변한 횟수

current  = data.timeOnCount()  


# 현재 시간 기준 현재 시간에 값이 Off으로 변한 횟수

current  = data.timeOffCount()  


# 현재 시간 기준 현재 시간에 값이 On일 동안의 비율

current  = data.timeOnRatio()  


###################################


# 현재 시간 기준  금일 값이 On일 동안의 시간(밀리초)

current  = data.todayOnDuration()  


# 현재 시간 기준 금일 값이 Off일 동안의 시간(밀리초)

current  = data.todayOffDuration()  


# 현재 시간 기준 금일 값이 On으로 변한 횟수

current  = data.todayOnCount()  


# 현재 시간 기준 금일 값이 Off으로 변한 횟수

current  = data.todayOffCount()  


# 현재 시간 기준 금일 값이 On일 동안의 비율

current  = data.todayOnRatio()  


###################################


# 현재 시간 기준  금월 값이 On일 동안의 시간(밀리초)

current  = data.monthOnDuration()  


# 현재 시간 기준 금월 값이 Off일 동안의 시간(밀리초)

current  = data.monthOffDuration()  


# 현재 시간 기준 금월 값이 On으로 변한 횟수

current  = data.monthOnCount()  


# 현재 시간 기준 금월 값이 Off으로 변한 횟수

current  = data.monthOffCount()  


# 현재 시간 기준  금년 값이 On일 동안의 비율

current  = data.monthOnRatio()  


###################################


# 현재 시간 기준  금년 값이 On일 동안의 시간(밀리초)

current  = data.yearOnDuration()  


# 현재 시간 기준 금년 값이 Off일 동안의 시간(밀리초)

current  = data.yearOffDuration()  


# 현재 시간 기준 금년 값이 On으로 변한 횟수

current  = data.yearOnCount()  


# 현재 시간 기준 금년 값이 Off으로 변한 횟수

current  = data.yearOffCount()  


# 현재 시간 기준 금년 값이 On일 동안의 비율

current  = data.yearOnRatio()  


###################################


# 시스템 가동 시점 부터 현재 까지 값이 On일 동안의 시간(밀리초)

current  = data.totalOnDuration()  


# 시스템 가동 시점 부터 현재 까지 값이 Off일 동안의 시간(밀리초)

current  = data.totalOffDuration()  


# 시스템 가동 시점 부터 현재 까지의 On으로 변한 횟수

current  = data.totalOnCount()  


# 시스템 가동 시점 부터 현재 까지의 Off으로 변한 횟수

current  = data.totalOffCount()  


# 시스템 가동 시점 부터 현재 까지의 On일 동안의 비율

current  = data.totalOnRatio()  


# 정상적인 데이터 여부 확인

good = data.isGood()  




 float getValue( name:포인트명 )


 getValue는 포인트의 값을 읽어옵니다. 아날로그 포인트와 상태 포인트 모두 사용할 수 있습니다.


 예)

# 포인트 'Station 1.고장상태' 의 값을 읽어옵니다.

val = scada.getValue('Station 1.고장상태');

 



 setValue( name:포인트명, value:설정값 )


 setValue는 포인트의 값을 쓸 때 사용합니다. 아날로그 포인트와 상태 포인트 구분없이 사용할 수 있습니다.


 예) 

# 포인트 'Station 1.고장상태' 의 값을 202.4로 설정합니다.

scada.setValue('Station 1.상전류', 202.4);  

 



 string getTextValue( name:포인트명 )


 텍스트 포인트의 값을 읽어옵니다.


  예) 

# 텍스트 포인트 'Station 1.버전 정보' 의 값을 읽어옵니다.

val = scada.getTextValue('Station 1.버전 정보');

 



 setTextValue( name:포인트명, text:텍스트 )


 텍스트 포인트에 값을 쓸 때 사용합니다. 텍스트 포인트에만 사용 가능합니다.


  예) 

# 텍스트 포인트 'Station 1.버전 정보' 의 값을 'myText'로 설정합니다.

scada.setTextValue('Station 1.버전 정보', 'myText');  

 



 boolean waitForValueChange( name:포인트명, value:설정값, msec:대기시간(밀리초) )


 포인트의 값이 설정한 값으로 바뀔 때까지 입력한 시간 동안 대기합니다.(설정한 값으로 바꾸지 않습니다.)

 대기시간 이내에 설정한 값으로 변경되면 True를 바로 리턴하며 대기 시간까지 값이 변경되지 않으면 False를 리턴합니다.


 예)

# 스위치 On 제어를 날립니다.

remote.setValue('Station 1.Control Switch', 1)  


# 스위치의 상태가 1로 변경될 때까지 1초동안 대기 합니다.

ret =  scada.waitForValueChange('Station 1.Switch_Status', 1, 1000);  

if ( ret == 1 ):

    print '변경됨'

else:

    print '변경되지 않음'




 resetData( name:포인트명 )


 포인트의 값을 리셋합니다. 리셋 시 이력 데이터 값도 리셋됩니다.


  예) 

# 상전류 값을 초기화합니다.

scada.resetData('Station 1.상전류')  




 sendEvent( level:경보 레벨, aor: 책임 구역, origin: 발생 위치, desc: 설명, event: 경보내용 )


 이벤트를 생성해 이벤트 창에 출력 합니다.


 예)

scada.sendEvent(1, 1, '시스템', '시스템 진단', '시스템 온도가 100도를 초과하였습니다.')


 출력)

 



 restartCalculation()


 계산식을 재시작합니다.


 예)

# 계산식을 재시작합니다.

scada.restartCalculation()  




 boolean isPointExist( name:포인트명 )


 해당 포인트가 있는지 확인합니다.


 예)

# 'Station 1.상전류 A'의 포인트가 있는지 확인합니다.

ret = scada.isPointExist('Station 1.상전류 A');  

if ( ret == 0 ):

    print '없는 포인트'

else:

    print '있는 포인트' 




 setSummation( name:저장할 포인트 이름, datas:합산할 포인트 이름 목록 )


 계산식에서 여러 포인트의 값을 합산하여 새로운 포인트에 저장할 때 사용합니다. 이때 계산식은 한번만 실행하도록 설정합니다.


  • name은 여러 포인트의 합산된 값이 저장될 포인트 이름입니다.
  • datas는 합산할 포인트 이름 목록으로 형식은 다음과 같습니다.
    • ['포인트1','포인트2']


 예)

# '공통.공통기' 포인트에 'LP 2.분기#1.누적 유효전력량'과 'LP 1.분기#1.누적 유효전력량'를 합산한 값을 저장합니다.

scada.setSummation('공통.공통기', ['LP 2.분기#1.누적 유효전력량', 'LP 1.분기#1.누적 유효전력량']);


# '공통.슈퍼공통기' 포인트에 'LP 3.분기#1.누적 유효전력량'과 '공통.공통기'를 합산한 값을 저장합니다.

scada.setSummation('공통.슈퍼공통기', ['LP 3.분기#1.누적 유효전력량', '공통.공통기']);




 setFormula( name:저장할 포인트 이름, formula: 포인트 연산식 )


 계산식에서 여러 포인트의 값을 연산한 후 새로운 포인트에 저장할 때 사용합니다. 이때 계산식은 한번만 실행하도록 설정합니다.


  • name은 여러 포인트의 값을 연산한 후 저장될 포인트 이름입니다.
  • formula는 포인트 연산식으로 사칙연산이 가능하며 형식은 다음과 같습니다.
    • 포인트1에서 포인트2를 뺄 경우 : " '포인트1' - '포인트2' "
    • 포인트1에서 포인트2를 더한 후 포인트3을 뺄 경우 : " '포인트1' + '포인트2' - '포인트3' "


 예)

# 'SG공통.제1국제관 총 누적 소비전력량' 포인트에 '이공관 HV5.분기#3 제1국제관 전기실 일반.누적 유효전력량' 에서 'SG공통.제1국제관 총-나머지분기'를 뺀 값을 저장합니다.

f = "  '이공관 HV5.분기#3 제1국제관 전기실 일반.누적 유효전력량' - 'SG공통.제1국제관 총-나머지분기' " 

scada.setFormula('SG공통.제1국제관 총 누적 소비전력량', f)


# 'SG공통.이공관 총 누적 소비전력량' 포인트에 '이공관 HV5.분기#1 이공관.누적 유효전력량' + '이공관 HV5.분기#2 정보과학관 전기실.누적 유효전력량' - '이공관 HV5.분기#3 제1국제관 전기실 일반.누적 유효전력량' 한 값을 저장합니다.

f="  '이공관 HV5.분기#1 이공관.누적 유효전력량' + '이공관 HV5.분기#2 정보과학관 전기실.누적 유효전력량' - '이공관 HV5.분기#3 제1국제관 전기실 일반.누적 유효전력량'  "

scada.setFormula('SG공통.이공관 총 누적 소비전력량', f)