statusData는 scada의 getStatusData 함수를 통해 얻어 온 값입니다.

 이 데이터에는 상태 포인트의 상태, 마지막 데이터, on/off 시간, on/off 횟수, tag, limit, quality 등 다양한 정보를 가지고 있으며 이 다양한 값을 호출할 수 있는 함수가 내장되어 있습니다.


 사용 예)

staData = scada.getStatusData('포인트 명')

val = staData.isGood()


 statusData는 logStatus와 비슷한 함수로 구성되어 있으나 logStatus에서 날짜를 지정하여 검색할 수 있는 것과 달리 가져온 시간을 기준으로 데이터를 취득한다는 점이 다릅니다.

 몇 가지 함수 외에 대부분이 함수가 같은 정보를 반환합니다.

Methods


리턴 값

함 수

설 명

  int

isGood()

데이터가 올바른 데이터인지 아닌지 얻어옵니다.

  float

lastValue()

포인트의 마지막으로 기록된 최근 값을 얻어옵니다.

int

scanTime()

포인트의 계측시간을 얻어옵니다.

int

timeOnDuration()

현재 시간대의 on 상태 시간을 얻어옵니다.

int

timeOffDuration()

현재 시간대의 off 상태 시간을 얻어옵니다.

int

timeOnCount()

현재 시간대의 on 횟수를 얻어옵니다.

int

timeOffCount()

현재 시간대의 off 횟수를 얻어옵니다.

float

timeOnRatio()

현재 시간대의 on, off 비율을 얻어옵니다.

  int

todayOnDuration()

금일 on 상태 시간을 얻어옵니다.

  int

todayOffDuration()

금일 off 상태 시간을 얻어옵니다.

  int

todayOnCount()

금일 on 상태 횟수를 얻어옵니다.

  int

todayOffCount()

금일 off 상태 횟수를 얻어옵니다.

float

todayOnRatio()

금일 on, off 비율을 얻어옵니다.

  int

monthOnDuration()

금월 on 상태 시간을 얻어옵니다.

  int

monthOffDuration()

금월 off 상태 시간을 얻어옵니다.

  int

monthOnCount()

금월 on 상태 횟수를 얻어옵니다.

  int

monthOffCount()

금월 off 상태 횟수를 얻어옵니다.

float

monthOnRatio()

금월 on, off 비율을 얻어옵니다.

int

yearOnDuration()

금년 on 상태 시간을 얻어옵니다.

int

yearOffDuration()

금년 off 상태 시간을 얻어옵니다.

int

yearOnCount()

금년 on 상태 횟수를 얻어옵니다.

int

yearOffCount()

금년 off 상태 횟수를 얻어옵니다.

float

yearOnRatio()

금년 on, off 비율을 얻어옵니다.

  int

totalOnDuration()

전체 누적 이력의 on 상태 시간을 얻어옵니다.

  int

totalOffDuration()

전체 누적 이력의 off 상태 시간을 얻어옵니다.

  int

totalOnCount()

전체 누적 이력의 on 상태 횟수를 얻어옵니다.

  int

totalOffCount()

전체 누적 이력의 off 상태 횟수를 얻어옵니다.

float

totalOnRatio()

전체 누적 이력의 on, off 비율을 얻어옵니다.

  int

tag()

포인트의 금지 설정 정보를 얻어옵니다.

int

limit()

포인트의 상하한치 설정 정보를 얻어옵니다.

  int

quality()

포인트의 상태정보(품질)을 얻어옵니다.



 int isGood()


 isGood은 데이터의 상태를 결과값으로 반환합니다.


  • 결과값이 1일 경우 올바른 데이터입니다.
  • 0일 경우 비정상적인 데이터로 서버의 중지, 드라이버의 비정상 상태, 데이터의 오류 등의 의미가 있으며 quality() 함수에 오류 내용을 담고 있습니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val 값이 1일 경우 올바른 데이터이며 val 값이 0일 경우 비정상적인 데이터입니다.

val = sta_Data.isGood();  




 float lastValue()


 lastValue는 상태 포인트에 마지막으로 기록된 값(최근값)을 반환합니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에는 마지막으로 기록된 값(최근 값)이 입력됩니다.

val = sta_Data.lastValue();  




 int scanTime()


 scanTime은 포인트의 계측 시간을 반환합니다.


  • 반환되는 값은 초단위로 계산된 수입니다.
  • 반환되는 값은 datatime을 통하여 시간값으로 변환할 수 있습니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');


# scanTimedata에 상태 데이터의 계측 시간이 입력됩니다.

scanTimedata = sta_Data.scanTime();  


# 초단위 숫자를 파이썬 날짜 형식으로 변경할 수 있습니다.

tm = datetime.datetime.fromtimestamp(scanTimedata);  




 int timeOnDuration()


 timeOnDuration은 취득 시간을 기준으로 해당 시간대의 on 값일 때의 기간을 읽어옵니다.

 예를 들어 취득 시간이 10시 20분일 경우 10시부터 10시 20분까지의 on값일 때 기간을 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# secTime에 현재 시간대의 on 상태 기간이 입력됩니다.

secTime = sta_Data.timeOnDuration();  




 int timeOffDuration()


 timeOffDuration은 취득 시간을 기준으로 해당 시간대의 off 값일 때의 기간을 읽어옵니다.

 예를 들어 취득 시간이 10시 20분일 경우 10시부터 10시 20분까지의 off값일 때 기간을 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# secTime에 현재 시간대의 off 상태 기간이 입력됩니다.

secTime = sta_Data.timeOffDuration();  




 int timeOnCount()


 timeOnCount는 취득 시간을 기준으로 해당 시간대의 on횟수를 읽어옵니다.

 예를 들어 취득 시간이 10시 20분일 경우 10시부터 10시 20분까지의 on횟수를 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 현재 시간대의 on 횟수가 입력됩니다.

val = sta_Data.timeOnCount();  




 int timeOffCount()


 timeOffCount는 취득 시간을 기준으로 해당 시간대의 off 횟수를 읽어옵니다.

 예를 들어 취득 시간이 10시 20분일 경우 10시부터 10시 20분까지의 off횟수를 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 현재 시간대의 off 횟수가 입력됩니다.

val = sta_Data.timeOffCount();  




 float timeOnRatio()


 timeOnRatio는 취득 시간을 기준으로 해당 시간대의 on, off 비율을 읽어옵니다

 예를 들어 취득 시간이 10시 20분일 경우 10시부터 10시 20분까지의 on, off 비율을 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 현재 시간대의 on, off 비율이 입력됩니다.

val = sta_Data.timeOnRatio();  




 int todayOnDuration()


 todayOnDuration은 취득 시간을 기준으로 해당일의 on 값일 때의 기간을 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# secTime에 당일 on 상태의 기간이 입력됩니다

secTime = sta_Data.todayOnDuration();  




 int todayOffDuration()


 todayOffDuration은 취득 시간을 기준으로 해당일의 off 값일 때의 기간을 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# secTime에 당일 off 상태의 기간이 입력됩니다

secTime = sta_Data.todayOffDuration();  




 int todayOnCount()


 todayOnCount는 취득 시간을 기준으로 해당일의 on 횟수를 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 당일 on 횟수가 입력됩니다

val = sta_Data.todayOnCount();  




 int todayOffCount()


 todayOffCount는 취득 시간을 기준으로 해당일의 off 횟수를 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 당일 off 횟수가 입력됩니다

val = sta_Data.todayOffCount();  




 float todayOnRatio()


 todayOnRatio는 취득 시간을 기준으로 해당일의 on, off 비율을 읽어옵니다


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 당일 on, off 비율이 입력됩니다.

val = sta_Data.todayOnRatio();  




 int monthOnDuration()


 monthOnDuration은 취득 시간을 기준으로 해당 월의 on 값일 때의 기간을 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# secTime에 당월 on 상태의 기간이 입력됩니다

secTime = sta_Data.monthOnDuration();  




 int monthOffDuration()


 monthOffDuration은 취득 시간을 기준으로 해당 월의 off 값일 때의 기간을 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# secTime에 당월 off 상태의 기간이 입력됩니다

secTime = sta_Data.monthOffDuration();  




 int monthOnCount()


 monthOnCount는 취득 시간을 기준으로 해당 월의 on 횟수를 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 당월 on 횟수가 입력됩니다

val = sta_Data.monthOnCount();  




 int monthOffCount()


 monthOffCount는 취득 시간을 기준으로 해당 월의 off 횟수를 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 당월 off 횟수가 입력됩니다

val = sta_Data.monthOffCount();  




 float monthOnRatio()


 monthOnRatio는 취득 시간을 기준으로 해당 월의 on, off 비율을 읽어옵니다


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 당월 on, off 비율이 입력됩니다.

val = sta_Data.monthOnRatio();  




 int yearOnDuration()


 yearOnDuration은 취득 시간을 기준으로 해당 연도의 on 값일 때의 기간을 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# secTime에 해당 연도의 on 상태의 기간이 입력됩니다

secTime = sta_Data.yearOnDuration();  




 int yearOffDuration()


 yearOffDuration은 취득 시간을 기준으로 해당 연도의 off 값일 때의 기간을 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# secTime에 해당 연도의 off 상태의 기간이 입력됩니다

secTime = sta_Data.yearOffDuration();  




 int yearOnCount()


 yearOnCount는 취득 시간을 기준으로 해당 연도의 on 횟수를 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 해당 연도의 on 횟수가 입력됩니다

val = sta_Data.yearOnCount();  




 int yearOffCount()


 yearOffCount는 취득 시간을 기준으로 해당 연도의 off 횟수를 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 해당 연도의 off 횟수가 입력됩니다

val = sta_Data.yearOffCount();  




 float yearOnRatio()


 yearOnRatio는 취득 시간을 기준으로 해당 연도의 on, off 비율을 읽어옵니다


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 해당연도의 on, off 비율이 입력됩니다.

val = sta_Data.yearOnRatio();  




 int totalOnDuration()


 totalOnDuration은 전체 누적 on 값일 때의 기간을 읽어옵니다.


 예).

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# secTime에 전체 누적 on 상태의 기간이 입력됩니다

secTime = sta_Data.totalOnDuration();  




 int totalOffDuration()


 totalOffDuration은 전체 누적 off 값일 때의 기간을 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# secTime에 전체 누적 off 상태의 기간이 입력됩니다

secTime = sta_Data.totalOffDuration();  




 int totalOnCount()


 totalOnCount는 전체 누적 on 횟수를 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 전체 누적 on 횟수가 입력됩니다

val = sta_Data.totalOnCount();  




 int totalOffCount()


 totalOffCount는 전체 누적 off 횟수를 읽어옵니다.


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 전체 누적 off 횟수가 입력됩니다

val = sta_Data.totalOffCount();  




 float totalOnRatio()


 totalOnRatio는 취득시간을 기준으로 전체 누적 on, off 비율을 읽어옵니다


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# val에 전체 누적 on, off 비율이 입력됩니다.

val = sta_Data.totalOnRatio();  




 int tag()


 tag는 포인트의 금지 상태 값을 반환합니다.


  • 반환값이 0일 경우 금지 설정이 되어있지 않습니다.
  • tag 반환값은 사용자가 비교문으로 확인 할 수 있습니다.
  • tag 반환값
    • scada.ControlInhabit (0x01) : 제어 금지
    • scada.AlarmInhibit (0x02) : 경보 금지
    • scada.ScanInhabit (0x04) : 수집 금지
    • scada.UpdateInhabit (0x08) : 갱신 금지


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# tagdata 에는 상태 데이터의 tag 정보가 입력됩니다. tagdata 의 정보가 0이면 금지 설정이 되어있지 않습니다.

tagdata = sta_Data.tag();  


if (tagdata & scada.ControlInhabit):

# if문이 참값이면 제어금지 설정, 거짓이면 제어금지 설정이 되어 있지 않습니다.

if (tagdata & scada.AlarmInhibit):

# if문이 참값이면 경보금지 설정, 거짓이면 경보금지 설정이 되어 있지 않습니다.

if (tagdata & scada.ScanInhabit):

# if문이 참값이면 수집금지 설정, 거짓이면 수집금지 설정이 되어 있지 않습니다.

if (tagdata & scada.UpdateInhabit):

# if문이 참값이면 갱신금지 설정, 거짓이면 갱신금지 설정이 되어 있지 않습니다.




 int quality()


 quality는 상태 포인트의 데이터가 비정상적일 때 사유를 반환합니다.


  • 반환값이 0일 경우 정상적인 데이터 입니다.
  • quality 반환값은 사용자가 비교문으로 확인 할 수 있습니다.
  • quality 반환값
    • scada.NonTelemeted (0x01) : Fep 스캔 실패
    • scada.ManuallyReplaced (0x04) : 수동 기입상태
    • scada.Failed (0x08) : Fep 응답 실패
    • scada.OldData (0x20) : 데이터 상태가 변화없이 특정 시간이상 지속됨
    • scada.BadData (0x40) : 비정상 데이터


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');


# qualitydata에 상태 데이터의 quality정보가 입력됩니다. qualitydata의 정보가 0이면 quality 정보가 없으며 정상 데이터입니다.

qualitydata = sta_Data.quality();  


if (qualitydata& scada.NonTelemeted):

# if문이 참값이면 Fep 스캔을 실패한 데이터, 거짓이면 정상 데이터입니다.

if (qualitydata& scada.ManuallyReplaced):

# if문이 참값이면 수동 기입상태의 데이터, 거짓이면 정상 데이터입니다..

if (qualitydata& scada.Failed):

# if문이 참값이면 Fep 응답 실패 데이터, 거짓이면 정상 데이터입니다.

if (qualitydata& scada.OldData):

# if문이 참값이면 데이터 상태가 변화없이 특정시간 이상 지속된 데이터, 거짓이면 정상 데이터입니다.

if (qualitydata& scada.BadData):

# if문이 참값이면 비정상 데이터, 거짓이면 정상데이터 입니다.




 int limit()


 limit는 상태 포인트의 상한치 하한치 값을 반환합니다.


  • 반환값이 0일 경우 상한/하한에 대한 정보가 없으며 정상 데이터입니다.
  • limit 반환값은 사용자가 비교문으로 확인할 수 있습니다.
  • limit 반환값
    • scada.LowHi (0x01) : Hi Low 초과
    • scada.LowLowHiHi (0x02) : HiHi LowLow 초과
    • scada.UnReasonable (0x04) : 범위 초과 데이터
    • scada.Roc (0x08) : 변화 비율 초과 데이터
    • scada.Abnormal (0x10) : 비정상 데이터


 예)

# 입력한 포인트 명에 해당하는 상태 포인트의 데이터를 읽어옵니다.

sta_Data = scada.getStatusData('포인트 명');  


# limitdata 에는 상태 데이터의 limit 정보가 입력됩니다. limitdata의 정보가 0이면 상한/하한에 대한 정보가 없으며 정상 데이터입니다.

limitdata = sta_Data.limit();  


if (limitdata & scada.LowHi):

# if문이 참값이면 상한/하한 범위 설정 초과, 거짓이면 상한/하한 설정내의 데이터입니다.

if (limitdata & scada.LowLowHiHi):

# if문이 참값이면 상한/하한 범위의 상/하한치, 최하/최상한치 초과 데이터, 거짓이면 설정내 데이터입니다..

if (limitdata & scada.UnReasonable):

# if문이 참값이면 범위 초과 데이터, 거짓이면 범위를 초과하지 않은 데이터입니다.

if (limitdata & scada.Roc):

# if문이 참값이면 변화 비율을 초과한 데이터, 거짓이면 정상 변화 비율 데이터입니다.

if (limitdata & scada.Abnormal):

# if문이 참값이면 비정상 데이터, 거짓이면 정상데이터 입니다.