app개체는 파워씬의 응용프로그램에 관련된 기능을 제공합니다. 주요 기능은 프로그램 종료, 타프로그램 실행, 사운드 재생, 메시지 출력입니다. app개체의 기능은 파워씬 스튜디오에서 실행 가능하며 기능 중 일부만 데이터 익스플로어에서 지원합니다. app에서 제공하는 함수는 아래와 같습니다.

Methods


리턴 값

함 수

익스플로어 지원

설 명


ackAll()


경보창에 확인하지 않은 경보를 모두 확인(Ack) 처리합니다.


setAlarmStationFilter( name )


PowerScene 경보창에 name에 해당하는 스테이션에 대한 알람만 반영됩니다.

list[str]

analogPointNamesByStation( stationName )

O

해당 스테이션에 속한 아날로그 포인트들의 이름을 반환합니다.

  boolean

checkPassword( password )


로그인시 사용한 비밀번호를 확인하고 성공, 실패를 반환합니다.


clearTimer()


setInterval로 실행한 모든 스크립트를 중지합니다.

list[str]

commChennelGroupNames()


통신 채널 그룹 목록을 반환합니다.

 list[str]

commChennelNames()

O

통신 채널 목록을 반환합니다.

list[str]

commChennelNamesInCommGroup( chennelName )


해당 통신 채널 그룹에 속한 통신 채널 목록을 반환합니다.

 boolean

confirmUserDialog( title, id )


사용자 인증 대화상자 표시하여 인증 절차를 진행합니다.


connect( eventName, func )


로그인, 로그오프 실행시 수신할 수 있는 이벤트 핸들러를 등록합니다.

 str

connectedServer()


스카다 서버의 IP 주소를 반환합니다.


connectValueChange( func, pointNames )


포인트값 변경시 수신되는 이벤트 핸들러를 등록합니다.


copyToClipboard( data )


클립보드에 데이터를 복사합니다.

  list[int]

currentDate()

O

현재 시간을 읽어옵니다. ( 년, 월, 일, 시, 분, 초 )

int

currentDay()

O

현재 시간의 Day를 읽어옵니다.

int

currentHour()

O

현재 시간의 Hour를 읽어옵니다.

int

currentMinute()

O

현재 시간의 Minute를 읽어옵니다.

int

currentMonth()

O

현재 시간의 Month를 읽어옵니다.

int

currentSecond()

O

현재 시간의 Second를 읽어옵니다.

  str

currentUser()


현재 로그인한 사용자 이름을 읽어옵니다.

int

currentYear()

O

현재 시간의 Year를 읽어옵니다.

  list[str]

dataReportNames()


이력 데이터 출력 그룹 목록을 읽어옵니다.

int

daysInMonth( year, month )

O

연도와 월을 입력받아 해당 월의 일수를 반환합니다.

  list[str]

deviceNames()

O

디바이스 목록을 반환합니다.


executeFile( path )


path 경로의 파일을 실행합니다.


exitApp()


구동중인 PowerScene 응용프로그램을 종료합니다.


fullScreen()


구동중인 PowerScene 도면을 모니터 화면 상 최대화 합니다. ( * MS-PPT의 F5 와 같은 기능을 제공합니다. )

list[str]

generateReport( reportName, year, month, day, parameter )


등록된 파워씬 리포트를 생성하고 관련 정보를 반환합니다.

boolean

generateReport( path, reportName, year, month, day, parameter )

O

등록된 파워씬 리포트를 path 경로에 생성하고 결과를 반환합니다.

  str or float or int

getProperty( property )

O

전역 변수의 값을 불러옵니다.

boolean

hasProperty( property )

O

지정한 속성이 존재하는 확인합니다.

 list[str]

historyDataGroupNames()


이력 데이터 그룹 목록을 읽어옵니다.

 boolean

isCalculationRunning( name )

O

데이터 익스 플로러에서 등록한 계산식이 현재 동작하고 있는지를 반환합니다.

boolean

isDataGroupEnabled( name )


이력 데이터 그룹의 수집 여부를 반환합니다.

boolean

isHoliday( year, month, day )

O

선택한 날이 휴일인지 여부를 확인합니다.

  boolean

isLogOn()


현재 로그인 상태를 반환합니다.

  boolean

isTodayHoliday()

O

오늘 날짜의 휴일 여부를 반환합니다.

boolean

isTrendSetEnabled( name )


트랜드 그룹의 수집 여부를 반환합니다.

  boolean

logOn( user, password )


사용자와 비밀번호 입력하여 로그인합니다.

  boolean

logOut( user, password )


사용자와 비밀번호 입력하여 로그아웃합니다.


maximize()


구동중인 PowerScene 창이 모니터화면 상 최대화합니다.


messageBox( text )


메시지 박스를 출력합니다.


messageBox( title, text )


메시지 박스의 타이틀을 지정해 메시지 박스를 출력합니다.


minimize()


구동중인 PowerScene 창을 작업관리바로 내립니다.


moveScreen( number )


파워씬 HMI 프로그램을 원하는 모니터로 이동합니다.

  int

onlineDuration()


스카다 서버의 동작 시간을 초 단위로 불러옵니다.

 str

onlineDurationString()


스카다 서버의 동작 시간을 시간:분:초 단위로 불러옵니다.


openAlarmWindow()


상세 경보 창을 엽니다.

  boolean

openAuthDialog( title )


사용자 인증 화면을 열고 인증의 성공, 실패 여부를 반환합니다.


openExplorer( path )


path 경로의 컴퓨터 탐색창을 엽니다.

 str

openFileDialog( path )


path(확장자)에 해당하는 파일의 대화상자를 열고 파일이 선택되면 파일경로와 파일이름을 반환합니다.

  str

openFolderDialog()


폴더 선택 대화상자를 열고 폴더를 선택하면 선택한 폴더경로를 반환합니다.


openHistoryBrowser()


이력 리포트 조회 창을 엽니다.

boolean

openLoginOutForm()


로그인/아웃 화면을 엽니다.

  list[float]

openNumberInputDialog( title, defaultValue )


숫자 입력 창을 엽니다.

list[str]

openNumberKeypad()


숫자 입력을 위한 키패드 창을 엽니다.

 list[str]

openPasswordInputDialog( title, devaultValue )


패스워스 입력 창을 화면에 출력합니다.


openPointBrowser()


포인트 브라우저를 엽니다.


openReport( reportName, year, month, day )


등록된 파워씬 리포트를 생성하고 엽니다.

  str

openSaveFileDialog( path )


기본으로 저장할 path 경로의 파일 저장 대화상자를 엽니다. 파일 저장 대화상자에서 입력한 파일의 전체 경로가 반환됩니다.

  str

openSaveFileDialog( path, title, ext )


기본으로 저장할 경로와 파일의 확장자명과 대화상자 제목을 설정 후 파일 저장 대화상자를 열 수 있습니다.

파일 저장 대화상자에서 입력한 파일의 전체 경로가 반환됩니다.


openStationBrowser()


스카다 요약정보 창을 엽니다.

list[str]

openStringInputDialog( title, defaultValue )


문자열 입력 창을 화면에 출력합니다.


openTrendView( name )


트랜드 창을 엽니다.

  app.PlatformType

platformType()


현재 HMI 프로그램이 실행 중인 플랫 폼을 반환합니다. ( 데스크탑(PC), 안드로이드, 임베디드 )


playSound( filepath )


해당 경로의 소리 파일을 재생합니다.


playTTS( tts )


입력한 문자를 한글 음성으로 출력합니다. ( 보이스 웨어 TTS 엔진이 설치되야 합니다. )


playTTS( tts, lang )


입력한 문자와 언어에 맞게 문자를 소리로 출력합니다. ( 보이스 웨어 TTS 엔진이 설치되야 합니다. )

  boolean

questionMessageBox( title, message )


예/아니오를 선택 할 수 있는 메시지 창을 엽니다.


reloadSchedule()


간편 스케줄을 재로드합니다.


restore()


fullScreen으로 적용된 화면을 복구시킵니다. ( * 복구된 화면은 maximize 화면입니다. )


restoreCursor()


마우스 포인터를 기본형으로 되돌립니다.


runApp( filepath )


해당 경로의  응용프로그램을 실행합니다.


runApp2( name, parameter )


해당 경로의  응용프로그램을 실행합니다. 실행 시 입력된 parameter를 이용합니다.


setAllTriggerEnabled( enable )


전체 트리거 제어를 활성화 하거나 비활성화합니다.


setCalculationEnable( name, enable )

O

데이터 익스 플로러에서 등록한 계산식을 동작시키거나 정지하도록 합니다.


setDataGroupEnabled( name, enabled )


이력 데이터 그룹의 수집을 활성화하거나 비활성화합니다.


setDataGroupEnabled( enabled )


모든 이력 데이터 그룹의 수집을 활성화하거나 비활성화합니다.


setInterval( script, msec )


스크립트를 특정 시간(msec) 간격으로 반복 실행합니다.


setProperty( property, value )

O

전역 변수를 만들고 값을 설정합니다.


setScreenAutoMove( move )


자동 화면전환 기능을 실행 또는 정지합니다.


setTrandSetEnabled( name, enabled )


트랜드 그룹의 수집을 활성화하거나 비활성화합니다.


setTrandSetEnabled( enabled )


모든 트랜드 그룹의 수집을 활성화하거나 비활성화합니다.


setTriggerEnabled( name, enabled )


트리거 제어 항목을 활성화하거나 비활성화합니다.


showWaitCursor()


마우스 포인터를 모래시계 모양으로 변경합니다.

list[str]

stationNames()

O

프로젝트에 속한 모든 스테이션의 이름을 읽어옵니다.

list[str]

statusPointNamesByStation( stationName )

O

입력한 스테이션에 속한 상태 포인트들의 이름을 반환합니다.


stopInterval( script )


setInterval로 실행한 스크립트를 중지합니다.

  list[int]

sunsetTime( year, month, day, latitude, longitude )

O

입력한 위경도 지역의 입력한 날짜에 해당하는 일몰 시간을 반환합니다.

list[int]

sunriseTime( year, month, day, latitude, longitude )

O

입력한 위경도 지역의 입력한 날짜에 해당하는 일출 시간을 반환합니다.

  list[int]

systemSunsetTime( year, month, day )

O

시스템에 설정된 지역에서 입력한 날짜의 일몰 시간을 반환합니다.

  list[int]

systemSunriseTime( year, month, day )

O

시스템에 설정된 지역의 입력한 날짜의 일출 시간을 반환합니다.

 list[int]

todaySystemSunsetTime()

O

시스템에 설정된 지역의 오늘 일몰 시간을 반환합니다.

list[int]

todaySunsetTime( latitude, longitude )

O

입력한 위경도 지역의 오늘 일몰 시간을 반환합니다.

 list[int]

todaySystemSunriseTime()

O

시스템에 설정된 지역의 오늘 일출 시간을 반환합니다.

  list[int]

todaySunriseTime( latitude, longitude )

O

입력한 위경도 지역의 오늘 일출 시간을 반환합니다.

datetime

toUtcDateTime( localtime )


Local 시간을 UTC 시간으로 변환합니다.

  list[str]

trandSetNames()

O

Dataexplorer에서 지정한 모든 트랜트 그룹 명칭을 읽어옵니다.

  float

trimDecimal( value, decimal )


입력한 값의 소수점 자리수를 설정합니다.


wait( msec )

O

PowerScene 프로그램이 정해진 시간동안 동작을 멈춥니다.




 ackAll()


 경보 창에 확인하지 않은 경보를 모두 확인 처리합니다.


 예)

# 경보 창에 확인하지 않은 경보를 모두 확인 처리합니다.

app.ackAll();  


 




 setAlarmStationFilter( name:스테이션 이름 )


 setAlarmStationFilter는 사용자가 지정한 스테이션에 해당하는 알람만 경보창에 반영되도록 합니다. 특정 스테이션 도면 활용 시 해당 스테이션의 알람만 보고 싶을 경우 사용합니다.


 PowerScene 경보창에 name에 해당하는 스테이션에 대한 알람만 반영됩니다.


 예)

# 경보창에 '주축' 스테이션에 대한 알람만 반영합니다.

app.setAlarmSationFilter('주축');  


 




 boolean checkPassword ( password:비밀번호 ) 


 스크립트 내에서 비밀번호를 확인합니다.

 

 현재 로그인한 사용자에 맞는 비밀번호를 파라미터 password에 문자열로 입력하면 참이나 거짓을 반환합니다.


 예)

# 비밀번호가 1234로 가정하였을 때

# 정상 비밀번호 입력 시 True를 반환합니다.

ret = app.checkPassword('1234');  

# ret 값은 True입니다.

app.messageBox(ret);  



# 잘못된 비밀번호 입력 시 False를 반환합니다.

ret = app.checkPassword('0000');  

# ret 값은 False입니다.

app.messageBox(ret);  


 checkPassword 실행 결과입니다.


 




  clearTimer()


 setInterval() 로 실행되고 있는 모든 스크립트를 중지합니다.


 예)

app.clearTimer()




 list[str] commChennelNames()

 

 데이터베이스에 입력된 통신 채널 목록을 반환합니다.


 예)

#통신 채널 목록을 반환합니다.

list = app.commChennelNames()  


i = 0


for item in list:

    print 'list[', i, '] = ',  item

    i = i + 1


 실행 결과)

list[ 0 ] =  스마트 채널 - 1

list[ 1 ] =  스마트 채널 - 3

list[ 2 ] =  스마트 채널 - 4

list[ 3 ] =  스마트 채널 - 5




 boolean confirmUserDialog( title:인증 제목, id:인증 아이디 )

 

 사용자 인증 대화상자 표시하여 인증 절차를 진행합니다.


 인증 절차 제목 및 인증 절차를 진행하는 사용자를 입력합니다.


 예)

title = '제어 권한'


id = 'admin'


ret = app.confirmUserDialog(title, id)


#인증 성공 시

if ( ret == 1 ) :

    print '성공'


#인증 실패 시

else:        

    print '실패'


 




 str connectedServer()

 

 파워씬 스카다 서버의 IP 주소를 리턴합니다.


 예)

# 스카다 서버의 IP주소를 반환합니다.

app.messageBox(app.connectedServer());  


 connectedServer 을 실행 후 조회한 결과 화면입니다.


 




 copyToClipboard( text:클립보드에 복사할 문자열 )

 

 클립보드에 데이터를 복사합니다.


 메모장이나 액셀, 파워포인트 등 여러 클립 보드를 지원하는 프로그램에서 붙여넣기 기능을 이용하면 클립보드에 복사한 내용을 붙여넣을 수 있습니다.


 예)

app.copyToClipboard('데이터를 복사합니다.');




 list[int] currentDate()

 

 현재 날짜와 시간을 반환합니다.


 예)

# 현재 날짜와 시간을 반환합니다.

year, month, day, hour, minute, second= app.currentDate()  




 int currentDay()

 

 현재 날짜의 '일'을 반환합니다.


 예)

# 현재 날짜의 '일'을 반환합니다.

day = app.currentDay()  




 int currentHour()

 

 현재 시간의 '시'를 반환합니다.


 예)

# 현재 시간의 '시'를 반환합니다.

hour = app.currentHour()  




 int currentMinute()

 

 현재 시간의 '분'을 반환합니다.


 예)

# 현재 시간의 '분'을 반환합니다.

minute = app.currentMinute()  




 int currentMonth()

 

 현재 날짜의 '월'을 반환합니다.


 예)

# 현재 날짜의 '월'을 반환합니다.

month = app.currentMonth()  




 int currentSecond()

 

 현재 시간의 '초'를 반환 합니다.


 예)

# 현재 시간의 '초'를 반환합니다.

second = app.currentSecond()  





 str currentUser()

 

 PowerScene에 로그인한 사용자의 이름을 읽어옵니다.


 예)

# 현재 파워씬에 로그인한 사용자의 이름을 읽어옵니다.

User_Name = app.currentUser();  


 currentUser 정보를 messageBox를 이용하여 출력합니다.


 



 

 int currentYear()

 

 현재 날짜의 '년도'를 반환합니다.


 예)

# 현재 날짜의 '년도'를 반환합니다.

year = app.currentYear()  




 list[str] dataReportNames()

 

 데이터베이스에 이력 데이터 출력 그룹 이름 목록을 반환합니다.


 예)

# 이력 데이터 출력 그룹 목록을 읽어옵니다.

list = app.dataReportNames()  


i = 0


for item in list:

    print 'list[', i, '] = ',  item

    i = i + 1


 실행 결과)

list[ 0 ] =  스마트 채널 - 1

list[ 1 ] =  스마트 채널 - 3

list[ 2 ] =  스마트 채널 - 4

list[ 3 ] =  스마트 채널 - 5




 int daysInMonth( year, month )

 

 년도와 월을 입력받아 해당 월의 일수를 반환합니다.


 예)

# 2017년 2월의 일수를 반환합니다.

days = app.daysInMonth(2017, 2)  

print days 


 출력)

28




 list[str] deviceNames()

 

 데이터 베이스에 입력된 디바이스 목록을 반환합니다.


 예)

# 디바이스 목록을 반환합니다.

list = app.deviceNames()  


i = 0


for item in list:

    print 'list[', i, '] = ',  item

    i = i + 1


 실행 결과)

list[ 0 ] =  스마트 분전반 - 1

list[ 1 ] =  스마트 분전반 - 3

list[ 2 ] =  스마트 분전반 - 4

list[ 3 ] =  스마트 분전반 - 5




 executeFile( path:실행할 파일 경로 )


 path: 실행할 파일 경로를 입력합니다.


 예)

# 'C:/Workspage' 경로에 있는 text.txt 파일을 실행합니다.

app.executeFile('C:/Workspace/test.txt')  


 workspace폴더의 Test.txt 텍스트 파일을 실행합니다.


 


 




 exitApp()

 

 exitApp는 PowerScene HMI 프로그램을 종료합니다.


 구동중인 PowerScene HMI 프로그램을 종료합니다. PushButton 위젯이나 다른 기능들과 혼용하여 사용합니다.


 예)

# 파워씬 HMI를 종료합니다.

app.exitApp();  


 




 fullScreen()

 

 구동중인 PowerScene 도면을 전체 화면 모드로 설정합니다.

 MS-PPT의 기능 중 F5를 눌렀을 때 제공되는 최대화와 같은 기능이며 모니터 화면상 여백없이 도면을 활성화할 경우 이 기능을 사용합니다.


 예)

# 도면을 전체 화면 모드로 설정합니다.

app.fullScreen()  


 




 [str or float or int] getProperty( property:속성 )

 

 지정한 속성의 값을 반환합니다.


 만약 속성값에 해당되는 데이터가 없으면 None 값을 반환합니다.


 예)

Value = app.getProperty('LastResult');




 boolean hasProperty( property:속성 )

 

 지정한 속성이 존재하는 확인합니다. 해당 속성이 있으면 참(true)를 반환하고, 없으면 거짓(false)를 반환합니다.


 예)

app.setProperty('property',1234);


ret = app.hasProperty('property')


if  ret == 1 :

    Value = app. getProperty('property');

    app.messageBox(Value);


 실행 결과)

 




 list[str] historyDataGroupNames()

 

 데이터베이스에 이력 데이터 그룹 이름 목록을 반환합니다.


 예)

# 이력 데이터 그룹 이름 목록을 반환합니다.

list = app.historyDataGroupNames()  


i = 0


for item in list:

    print 'list[', i, '] = ',  item

    i = i + 1


 실행 결과)

list[ 0 ] =  스마트 채널 - 1

list[ 1 ] =  스마트 채널 - 3

list[ 2 ] =  스마트 채널 - 4

list[ 3 ] =  스마트 채널 - 5




 boolean isCalculationRunning( name:스크립트명 )

 

 데이터 익스플로러에서 등록한 계산식이 스카다 서버에서 동작하고 있는지를 나타냅니다.


 스카다 서버에서 스크립트가 동작하고 있으면 참(True)을 반환하고, 동작하고 있지 않으면 거짓(False)을 반환합니다.


 예)

# '태양광, 배터리 전력 계산,PCS전력' 계산식이 스카다 서버에 동작하고 있는지 확인합니다. 동작하고 있으면 True, 동작하지 않으면 False를 반환합니다.

Running = app.isCalculationRunning('태양광, 배터리 전력 계산,PCS전력');  

app.messageBox(Running);


# 'BMS_SOC_상태 알람' 계산식이 스카다 서버에 동작하고 있는지 확인합니다. 동작하고 있으면 True, 동작하지 않으면 False를 반환합니다.

Running = app.isCalculationRunning('BMS_SOC_상태 알람');  

app.messageBox(Running);


 계산식 동작 유무 확인 화면입니다.

 




 boolean isHoliday( year:년도, month:월, day:일 )

 

 입력한 날짜가 휴일인지 확인합니다. 휴일이면 참(True)을 반환하고, 휴일이 아니면 거짓(False)을 반환합니다.


 예)

# 2016년 1월 1일이 휴일인지 확인합니다.

ret = app. isHoliday(2016, 1, 1)  


# 휴일이 맞으면

if (ret == 1) :

    print '2016-1-1 is holiday.'


# 휴일이 아니면

else:

    print '2016-1-1 is not holiday.'




 boolean isLogOn()

 

 현재 파워씬의 상태가 로그인 상태인지 아닌지를 반환합니다.


 예)

# 파워씬 로그인 상태를 반환합니다.

ret = app.isLogOn();  




 boolean isTodayHoliday()

 

 오늘 날짜의 휴일 여부를 확인합니다. 휴일이면 참(True)을 반환하고 휴일이 아니면 거짓(False)을 반환합니다.


 예)

# 오늘 날짜의 휴일 여부를 확인합니다.

ret = app.isTodayHoliday()  


# 휴일이 맞으면

if (ret == 1) :

    print 'today is holiday.'


# 휴일이 아니면

else:

    print 'today is not holiday.'




 boolean logOn( user:사용자, password:비밀번호 )

 

 입력한 사용자와 비밀번호로 로그온을 진행합니다. 로그인 성공시 참(True)을 반환하고 실패시 거짓(False)을 반환합니다.


 예)

#  로그인 성공 시 True를 반환합니다.

Ret = app.logOn('admin', '1234')  

print Ret




 boolean logOut( user:사용자, password:비밀번호 )

 

 입력한 사용자와 비밀번호로 로그아웃을 진행합니다. 로그아웃 성공시 참(True)을 반환하고 실패시 거짓(False)을 반환합니다.


 예)

#  로그아웃 성공 시 True를 반환합니다.

Ret = app.logOut('admin', '1234')  

print Ret




 maximize()

 

 구동중인 PowerScene 창을 모니터화면에서 최대화합니다.


  • maximize 사용 용도는 다음과 같습니다.
    • 조건문에 의한 화면 최대화
    • 프로그램 구동 시 윈도우 창 클릭을 하지 않고 화면 최대화 활성


 예)

# 화면을 최대화합니다.

app.maximize();  


 




 messageBox( text:출력 메시지 )

 

 윈도우 창에 사용자가 작성한 문자열을 출력합니다.


  • messageBox 사용 용도는 다음과 같습니다.
    • 메시지 출력
    • 경고창 출력
  • text에는 문자열을 입력합니다.



 예)

# '화면출력' 메세지가 입력된 윈도우 창을 화면에 출력합니다.

app.messageBox('화면출력');  




 messageBox( title:윈도우 창 이름, text:출력 메시지 )

 

 윈도우 창에 사용자가 작성한 문자열을 출력합니다.


  • messageBox 사용 용도는 다음과 같습니다.
    • 메시지 출력
    • 경고창 출력
  • title은 윈도우 창 이름을 나타내며 문자열을 입력합니다.
  • text에는 문자열을 입력합니다.


 예)

# '타이틀' 윈도우 창에 '메시지 박스 출력 Test' 메시지를 출력합니다.

app.messageBox('타이틀', '메시지 박스 출력 Test');  


 




 minimize()

 

 구동중인 PowerScene 창을 모니터 화면에서 최소화합니다.


  • minimize 사용 용도는 다음과 같습니다.
    • 조건문에 의한 화면 최소화
    • 프로그램 구동 시 윈도우 창 클릭을 하지 않고 화면 최소화 활성


 예)

# 화면을 최소화합니다.

app.minimize();  


 




 moveScreen( number:모니터 번호 )

 

 파워씬 프로그램을 원하는 모니터로 이동합니다.


  • number은 모니터 번호를 나타냅니다.
    • 시스템마다 번호가 다르기 때문에 확인 후 입력해야 합니다.
    • 시스템에서 알려주는 번호에 -1 한 값을 입력해야 합니다.

                        예) 모니터 번호가 1이라면 0을 입력해야 합니다.

                        예) 모니터 번호가 2이라면 1을 입력해야 합니다.


 예)

# 1번 모니터로 이동합니다.

app.moveScreen(0)  


# 2번 모니터로 이동합니다.

app.moveScreen(1)  


 connectedServer 을 실행 후 조회한 결과 화면입니다.

                               

* 1번 모니터 예

* 2번 모니터 예



* 모니터 1로 HMI이동

* 모니터 2로 HMI이동 예



 윈도우 화면 해상도 설정창에서 [확인] 버튼을 통해 모니터 번호를 확인할 수 있습니다.

 




 int onlineDuration()

 

 파워씬 스카다 서버가 운행된 시간을 조회하여 반환합니다.


  • 단위는 초입니다.


 예)

# 서버가 운행된 시간을 초 단위로 반환합니다.

Duration = app.onlineDuration();  


app.messageBox(str(Duration) + '초');


 onlineDuration을 실행 후 조회한 결과 화면입니다.


 




 str onlineDurationString()

 

 파워씬 스카다 서버가 운행된 시간을 조회하여 '시간:분:초'의 형식으로 반환합니다.


 예)

# 서버가 운행된 시간을 '시간:분:초' 형식으로 반환합니다.

Duration = app.onlineDurationString();  


app.messageBox(Duration);


 onlineDurationString을 실행 후 조회한 결과 화면입니다.


 




 openAlarmWindow()

 

 파워씬의 상세 경보 창을 엽니다.


 예)

# 파워씬 상세 경보 창을 엽니다.

app.openAlarmWindow();  


 openAlarmWindow 실행 결과 화면입니다.

 




 boolean openAuthDialog( title:조작명칭 )

 

 사용자 인증창을 엽니다.


  • title은 명령부분에 표시됩니다.
  • 사용자 인증창의 사용자 확인란에 사용자 명과 비밀번호를 입력하여 확인 절차를 거칩니다.
    • 사용자 인증 성공 시 : 참(True)을 반환합니다.
    • 사용자 인증 실패 시 : 거짓(False)을 반환합니다.


 예)

# 사용자 인증창을 엽니다. 이때 명령란에 '사용자 인증이 필요합니다.' 문자열이 표시됩니다.

ret = app.openAuthDialog('사용자 인증이 필요합니다');  


# 사용자 인증 성공 시 True, 인증 실패 시 False 를 반환합니다.

app.messageBox(ret);  


 openAuthDialog 실행 및 결과값 반환합니다.

 




 openExplorer( path:폴더 경로 )

 

 사용자가 지정한 경로의 윈도우 탐색창을 엽니다.


  • path 경로의 컴퓨터 탐색창을 엽니다.


 예)

# 'C:\Program Files' 폴더를 엽니다.

app.openExplorer('C:\Program Files');  


 




 str openFileDialog( path:파일 확장자 )

 

 파일 선택 대화상자를 연 후 입력한 파일 확장자에 해당하는 파일을 보여줍니다. 파일 선택 시 해당 파일의 전체 경로를 반환합니다.


  • openFileDialog 사용 용도는 다음과 같습니다.
    • openFileDialog로 선택한 파일을 파워씬에서 직접 이용
    • 반환된 전체 경로를 runApp를 사용해 응용프로그램 구동
    • 반환된 전체 경로를 playSound를 사용해 소리 재생
  • path는 문자열로 입력합니다.


 예)

# 현재 프로젝트 폴더에서 wav 확장자를 가진 파일을 보여줍니다.

FilePath = app.openFileDialog('*.wav');  


 




 str openFolderDialog()

 

 폴더 선택 대화상자를 연 후 폴더 선택 시 해당 폴더 경로를 반환합니다.


 예)

# 선택한 폴더의 경로를 반환합니다.

FolderPath = app.openFolderDialog();  


 




 openHistoryBrowser()

 

 파워씬의 이력 리포트 조회 창을 엽니다.


 예)

# 이력 리포트 조회 창을 엽니다.

app.openHistoryBrowser();  


 openHistoryBrowser 실행 결과 화면입니다.

 




 boolean openLoginOutForm()

 

 로그인 창을 엽니다.


  • 로그인/로그아웃 성공 시 : 참(True)을 반환합니다.
  • 로그인/로그아웃 실패 시 : 거짓(False)을 반환합니다.


 예)

# 로그인 창을 엽니다.

ret = app.openLoginOutForm();  


app.messageBox(ret);


 openLoginOutForm 실행과 결과 값을 반환합니다.

 




 list[float] openNumberInputDialog( text:타이틀 아래 표시할 텍스트 명칭, default:숫자 입력 창을 열 때 기본 입력 값 )

 

 수치 입력 창을 엽니다.

 

  • OK 버튼을 선택하면 참(1) 값과 수치 값이 반환되고 Cancel 버튼 선택하면 거짓(0) 값과 0 이 반환됩니다.
    • OK 클릭 시 : [ True(1), 수치 값 ]
    • Cancel 클릭 시 : [  False(0), 0 ]


 예)

# 수치 입력 창을 엽니다.

result , value = app.openNumberInputDialog('숫자를 입력하세요.', 12.1234);  


app.messageBox(result);

app.messageBox(value);


 openNumberInputDialog 실행 결과 화면입니다.

 




 list[str] openPasswordInputDialog( text:타이틀 아래 표시할 텍스트 명칭, default:문자열 입력 창을 열 때 기본 입력 값 )

 

 패스워드 입력 창을 엽니다.


  • OK 버튼을 선택하면 참(1) 값과 입력한 문자가 반환되고 Cancel 버튼 선택하면 거짓(0) 값과 빈 문자가 반환됩니다.
    • OK 클릭 시 : [ True(1), 입력한 문자 ]
    • Cancel 클릭 시 : [  False(0), 빈 문자 ]


 예)

# 패스워드 입력 창을 엽니다.

result , value  = app.openPasswordInputDialog('패스워드를 입력하세요.', '1234');  


app.messageBox(result);

app.messageBox(value);


 openPasswordInputDialog 실행 결과 화면입니다.

 




 str openSaveFileDialog( path:폴더 경로 )

 

 사용자가 입력한 폴더 경로의 파일 저장 대화상자를 엽니다.

 

  • 파일 저장 시 파일의 전체 경로가 반환됩니다.


 예)

# 'C:\Program Files' 경로의 파일 저장 대화상자를 엽니다.

path = app.openSaveFileDialog('C:\Program Files');  

print path


 




 str openSaveFileDialog( path:폴더 경로, title:대화상자 제목, ext:저장 파일 확장자 )

 

 사용자가 입력한 폴더 경로의 파일 저장 대화상자를 엽니다.


  • path에는 폴더의 경로를 입력합니다.
  • title에는 파일 저장 대화상자의 제목을 입력합니다.
  • ext에는 저장할 파일의 확장자를 입력합니다.


 예)

# 'C:\Program Files' 경로의 파일 저장 대화상자를 엽니다. 이때 대화상자 제목은 '텍스트 문서 저장'이며 저장할 파일의 확장자는 'txt'입니다.

path = app.openSaveFileDialog('C:\Program Files', '텍스트 문서 저장', 'txt');  

print path


 


 




 openStationBrowser()

 

 파워씬의 스카다 요약 정보 창을 엽니다.


 예)

# 파워씬 스카다 요약 정보 창을 엽니다.

app.openStationBrowser();  


 openStationBrowser 실행 결과 화면입니다.

 




 list[str] openStringInputDialog( text:타이틀 아래 표시할 텍스트 명칭, default:숫자 입력 창을 열 때 기본 입력 값 )

 

 문자열 입력 창을 엽니다.

 

  • OK 버튼을 선택하면 참(1) 값과 입력한 문자가 반환되고 Cancel 버튼 선택하면 거짓(0) 값과 빈 문자가 반환됩니다.
    • OK 클릭 시 : [ True(1), 입력한 문자 ]
    • Cancel 클릭 시 : [  False(0), 빈 문자 ]


 예)

# 문자열 입력 창을 엽니다.

result , value  = app.openStringInputDialog('문자를 입력하세요.', '입력한 문자');  


app.messageBox(result);

app.messageBox(value);


 openStringInputDialog 실행 결과 화면입니다.

 




 openTrendView( name:트랜드 그룹명 )

 

 입력한 트랜드 그룹을 트랜드 뷰어 프로그램으로 열 때 사용합니다.


 예)

# '전체 전류' 트랜드 그룹을 트랜드 뷰어 프로그램으로 엽니다.

app.openTrendView('전체 전류');  


 


 




 app.PlatformType platformType()

 

 현재 HMI 프로그램이 실행 중인 플랫폼을 반환합니다. ( 데스크탑(PC), 안드로이드, 임베디드 )


 예)

# 현재 HMI프로그램이 실행 중인 플랫폼을 반환합니다.

plat = app.platformType()  


# 플랫폼이 데스크탑인 경우

if ( plat == app.DeskTop ):

        print 'PC HMI'


# 플랫폼이 안드로이드인 경우

elif ( plat == app.Mobilie ):

        print 'Android'


# 플랫폼이 임베디드인 경우

elif (plat == app.Embedded):

        print 'Embedded'




 playSound( filepath:파일 경로 )

 

 사용자가 원하는 사운드 파일을 재생할 때 사용합니다.


  • playSound 사용 용도는 다음과 같습니다.
    • 경보 소리 재생
    • 그래픽 이벤트 동작에 따른 소리재생
  • filepath에는 재생할 소리 파일의 경로를 입력하며 문자열로 입력합니다.
  • 지원하는 소리 파일의 확장자는 '.wav' 입니다.


 예)

# 프로젝트 폴더 내의 'soundfile.wav'를 재생합니다.

app.playSound('soundfile');  


 




 playTTS( tts:출력할 문자열 )

 

 문자열을 한글 음성으로 출력합니다.


  • 보이스 웨어 TTS엔진이 설치되야 동작합니다.


 예)

#한글 음성 출력

app.playTTS('환영합니다')   




  playTTS( tts:출력할 문자열 , lang:언어 ) 

 

 문자열을 지정한 음성으로 출력합니다.


  • 보이스 웨어 TTS엔진이 설치되야 동작합니다.


 예)

#한글 음성 출력

app.playTTS('환영합니다',  app.Korean)


#영어 음성 출력

app.playTTS('Welcome',  app.English)  




 boolean questionMessageBox( title:메시지 박스 타이틀 명칭, message:메시지 박스에 표시할 문자열 )

 

 Question 메시지 박스 창을 엽니다.

 

  • OK 버튼을 선택하면 참(True)이 반환되고 Cancel 버튼 선택하면 거짓(False)이 반환됩니다.
    • OK 클릭 시 : True(1)
    • Cancel 클릭 시 : False(0)


 예)

# Question 메시지 박스 창을 엽니다.

ret = app.questionMessageBox('타이틀', '계속 하시겠습니까?');  


app.messageBox(ret);


 questionMessageBox 실행 결과 화면입니다.

 




 restore()

 

 전체 화면 모드로 적용된 화면을 복구시킵니다.

 MS-PPT의 기능 중 F5 키를 눌렀을 경우 제공되는 화면 최소화와 같은 기능을 제공합니다.


  • restore()는 fullScreen() 상태에서만 적용됩니다.


 예)

# 전체 화면 모드로 적용된 화면을 복구 시킵니다.

app.restore()  





 runApp( filepath:응용프로그램 경로 )

 

 입력한 응용프로그램을 PowerScene에서 구동할 수 있는 기능을 제공합니다.


  • PowerScene 사용 중 다른 문서나 그림판 호출 등 다른 프로그램이 필요할 경우 사용합니다.
  • filepath에는 실행할 응용프로그램을 입력합니다. 이때 filepath는 문자열로 입력하고 확장자를 포함해야 합니다.


 예)

# ''PowerScene.exe'를 실행합니다.

app.runApp('PowerScene.exe');  


 




 runApp2( name:응용프로그램 이름, parameter:실행 시 작업할 파일 이름 )

 

 입력한 응용프로그램을 PowerScene에서 구동할 수 있는 기능을 제공합니다.


  • PowerScene 사용 중 다른 문서나 그림판 호출 등 다른 프로그램이 필요할 경우 사용합니다.
  • runApp와 차이점은 단순히 응용프로그램만 실행시켜 주는 것이 아니라 응용프로그램으로 작업한 파일까지 열 수 있습니다.
  • name은 실행할 응용프로그램을 입력합니다. 이때 name은 문자열로 입력하고 확장자를 포함해야 합니다.
  • parameter 입력 시 작업할 파일 경로와 파일 이름을 포함하여 입력해야 합니다.


 예)

app.runApp2('notepad.exe', 'C:/test')


 




 setAllTriggerEnabled( enable )

 

 입력한 트리거 제어 항목 전체를 활성화 하거나 비활성화 합니다.


  • enable에는 0 또는 1을 입력합니다.
    • 활성화할 경우 : 1을 입력
    • 비활성화할 경우 : 0을 입력


 예)

# 전체 트리거 제어 활성화

days = app.setAllTriggerEnabled( 1 )  

# 전체 트리거 제어 비활성화

days = app.setAllTriggerEnabled( 0 )  




 setCalculationEnable( name:계산식명, enable:계산식 동작 유무 )

 

 데이터 익스플로러에 등록한 계산식을 스카다 서버에서 동작시키거나 동작 중인 계산식을 동작하지 않도록 합니다.


 예)

# 'BMS_SOC_상태 알람' 계산식을 동작하지 않도록 설정합니다.

app.setCalculationEnable('BMS_SOC_상태 알람', False);  


Running = app.isCalculationRunning('BMS_SOC_상태 알람');

app.messageBox(Running);


# 'BMS_SOC_상태 알람' 계산식을 동작하도록 설정합니다.

app.setCalculationEnable('BMS_SOC_상태 알람', True);  


Running = app.isCalculationRunning('BMS_SOC_상태 알람');

app.messageBox(Running);


 계산식 동작 설정과 결과 화면입니다.

 




 setProperty( property:속성, value:입력할 값 )

 

 속성을 지정해 속성에 값을 저장합니다.


  • setProperty는 데이터를 저장하는 용도로 사용됩니다.
  • property는 전역 변수의 개념이고 value는 전역 변수에 적용할 값을 의미합니다.


 예)

#LastResult 속성을 만들어 1234를 저장합니다.

app.setProperty('LastResult', 1234);  




 setScreenAutoMove( move:이용 여부 )

 

 자동 화면전환 기능을 실행 또는 정지합니다.


  • 실행 : 1 입력
  • 정지 : 0 입력


 예)

# 자동 화면전환 기능을 실행

app.setScreenAutoMove(1)  

# 자동 화면전환 기능을 정지

app.setScreenAutoMove(0)  




 setTriggerEnabled( triggerName:트리거명, enable:활성화 여부 )

 

 입력한 트리거 제어 항목을 활성화 하거나 비활성화 합니다.


  • triggerName은 문자열로 입력합니다.
  • enable에는 0 또는 1을 입력합니다.
    • 활성화할 경우 : 1을 입력
    • 비활성화할 경우 : 0을 입력


 예)

# 건물 제어 트리거 활성화

days = app.setTriggerEnabled('건문 제어' , 1 )

# 건물 제어 트리거 비활성화

days = app.setTriggerEnabled('건문 제어' , 0 )




 list[str] stationNames()

 

 프로젝트에 속한 모든 스테이션의 이름을 읽어옵니다.


  • 스테이션명칭은 리스트 형태의 구조체입니다.


 예)

# 모든 스테이션 명을 읽어옵니다.

StationNames = app.stationNames();  


for x in StationNames:

    app.messageBox(x);


 반복문을 통해 스테이션 명이 담긴 메시지창을 출력합니다.

 




 list[int] sunsetTime( year:년, month:월, day:일, latitude:위도, longitude:경도 )

 

 입력한 위경도 지역의 입력한 날짜에 해당하는 일몰 시간을 반환합니다.


  • 시, 분, 초 형식으로 리스트를 반환합니다.


 예)

# 위도가 37.300이고 경도가 127.000인 지역의 2016년 7월 25일 일몰 시간을 반환합니다.

hour , minute, second = app.sunsetTime(2016, 7, 25, 37.300, 127.000)  


print "Sunset Time Time : ", hour, ':', minute, ':', second


 실행 결과)

Sunset Time :  19 : 44 : 0


 아래 그림과 같이 [데이터 익스플로러]-[지역 설정] 메뉴에서 시스템에 설정된 지역을 확인할 수 있습니다.

                                




 list[int] sunriseTime( year:년, month:월, day:일, latitude:위도, longitude:경도 )


 입력한 위경도 지역의 입력한 날짜에 해당하는 일출 시간을 반환합니다.


  • 시, 분, 초 형식으로 리스트를 반환합니다.


 예)

# 위도가 37.300이고 경도가 127.000인 지역의 2016년 7월 25일 일출 시간을 반환합니다.

hour , minute, second = app.sunriseTime(2016, 7, 25, 37.300, 127.000)  


print "Sunrise Time : ", hour, ':', minute, ':', second 


 실행 결과)

Sunrise Time :  5 : 32 : 0


 아래 그림과 같이 [데이터 익스플로러]-[지역 설정] 메뉴에서 시스템에 설정된 지역을 확인할 수 있습니다.

                                




 list[int] systemSunsetTime( year:년, month:월, day:일 )

 

 시스템에 설정된 지역에서 입력한 날짜의 일몰 시간을 반환합니다.


  • 시, 분, 초 형식으로 리스트를 반환합니다.


 예)

# 2016년 7월 25일의 일몰 시간을 반환합니다.

hour , minute, second = app.systemSunsetTime(2016, 7, 25)  


print "Sunset Time Time : ", hour, ':', minute, ':', second


 실행 결과)

Sunset Time :  19 : 44 : 0


 아래 그림과 같이 [데이터 익스플로러]-[지역 설정] 메뉴에서 시스템에 설정된 지역을 확인할 수 있습니다.

                                




 list[int] systemSunriseTime( year:년, month:월, day:일 )

 

 시스템에 설정된 지역에서 입력한 날짜의 일출 시간을 반환합니다.


  • 시, 분, 초 형식으로 리스트를 반환합니다.


 예)

# 2016년 7월 25일의 일출 시간은 반환합니다.

hour , minute, second = app.systemSunriseTime(2016, 7, 25)  


print "Sunrise Time : ", hour, ':', minute, ':', second


 실행 결과)

Sunrise Time :  5 : 32 : 0


 아래 그림과 같이 [데이터 익스플로러]-[지역 설정] 메뉴에서 시스템에 설정된 지역을 확인할 수 있습니다.

                                




 list[int] todaySystemSunsetTime()

 

 시스템에 설정된 지역의 오늘 일몰 시간을 반환합니다.


  • 시, 분, 초 형식으로 리스트를 반환합니다.


 예)

# 시스템에 설정된 지역의 오늘 일몰 시간을 반환합니다.

hour , minute, second = app.todaySystemSunsetTime()  


print "Sunset Time Time : ", hour, ':', minute, ':', second


 실행 결과)

Sunset Time :  19 : 44 : 0


 아래 그림과 같이 [데이터 익스플로러]-[지역 설정] 메뉴에서 시스템에 설정된 지역을 확인할 수 있습니다.

                                




 list[int] todaySunsetTime( latitude:위도, longitude:경도 )

 

 시스템에 설정된 지역의 오늘 일몰 시간을 반환합니다.


  • 시, 분, 초 형식으로 리스트를 반환합니다.


 예)

# 위도가 37.300이고 경도가 127.000인 지역의 오늘 일몰 시간을 반환합니다.

hour , minute, second = app.todaySunsetTime(37.300, 127.000)  


print "Sunset Time Time : ", hour, ':', minute, ':', second


 실행 결과)

Sunset Time :  19 : 44 : 0


 아래 그림과 같이 [데이터 익스플로러]-[지역 설정] 메뉴에서 시스템에 설정된 지역을 확인할 수 있습니다.

                                




 list[int] todaySystemSunriseTime()

 

 시스템에 설정된 지역의 오늘 일출 시간을 반환합니다.


  • 시, 분, 초 형식으로 리스트를 반환합니다.


 예)

# 시스템에 설정된 지역의 오늘 일출 시간을 반환합니다.

hour , minute, second = app.todaySystemSunriseTime()  


print "Sunrise Time : ", hour, ':', minute, ':', second 


 실행 결과)

Sunrise Time :  5 : 32 : 0


 아래 그림과 같이 [데이터 익스플로러]-[지역 설정] 메뉴에서 시스템에 설정된 지역을 확인할 수 있습니다.

                                




 list[int] todaySunriseTime( latitude:위도, longitude:경도 )

 

 입력한 위경도 지역의 오늘 일출 시간을 반환합니다.


  • 시, 분, 초 형식으로 리스트를 반환합니다.


 예)

# 위도가 37.300이고 경도가 127.000인 지역의 오늘 일출 시간을 반환합니다.

hour , minute, second = app.todaySunriseTime(37.300, 127.000)  


print "Sunrise Time : ", hour, ':', minute, ':', second 


 실행 결과)

Sunrise Time :  5 : 32 : 0


 아래 그림과 같이 [데이터 익스플로러]-[지역 설정] 메뉴에서 시스템에 설정된 지역을 확인할 수 있습니다.

                                




 datetime toUtcDateTime( localtime:현지 날짜 시각 )

 

 현지 날짜 시각을 인자로 전달하면 UTC로 변환하여 반환합니다.


 예)

import datetime


# 2015년 11월 17일 10시 10분 0초

local = datetime.datetime(2015,11,17,10,10,0);  

app.messageBox(local);


# 입력한 local을 UTC로 변환하여 반환합니다.

UTC = app.toUtcDateTime(local);  

app.messageBox(UTC);




 list[str] trandSetNames()

 

 데이터 익스플로러에 저장된 전체 트랜트 그룹 명을 읽어옵니다.


  • 반환 값은 리스트 형태의 구조체입니다.


 예)

# 트랜드 그룹명을 리스트로 읽어옵니다.

TrandNames = app.trandSetNames();  


for x in TrandNames:

    app.messageBox(x);


 반복문을 통해 트랜드 그룹 명이 담긴 메시지창을 출력합니다.

 




 float trimDecimal( value:수치 값, Decimal:소수점 자리수 )

 

 수치 값을 지정한 소수점 자리수 아래에서 반올림하여 소수점 자리까지 표현한 값을 리턴합니다.


 예)

num = 23.1284;


# 23.1284의 소수점 셋째 자리에서 반올림합니다.

num=app.trimDecimal(num, 2);  


app.messageBox(num);


 소수점 2번째 자리까지 설정 후 출력합니다.

 




 wait( msec:시간 )

 

 PowerScene 프로그램이 정해진 시간(msec)동안 동작을 멈춤니다.


  • msec의 단위는 1000은 1초입니다.


 예)

# 1초동안 동작을 멈춥니다.

app.wait(1000);  



 

 list[str] analogPointNamesByStation( stationName )

 

 입력한 스테이션에 속한 아날로그 포인트 목록을 읽어 옵니다.


 예)

# 스테이션 LP1에 속한 아날로그 포인트 이름을 읽어 옵니다.

pointnames = app.analogPointNamesByStation('LP1');  

print pointnames


 출력)

(u'PCS System State', u'PCS Command', u'System Voltage', u'System Current', u'System Power', u'System RemainEnergy')




 list[str] statusPointNamesByStation( stationName )

 

 입력한 스테이션에 속한 아날로그 포인트 목록을 읽어 옵니다.


 예)

# 스테이션 LP1에 속한 상태 포인트 이름을 읽어 옵니다.

pointnames = app.statusPointNamesByStation('LP1');  

print pointnames


 출력)

(u'Internal DO', u'System Status : System Ready', u'System Status : System Rest', u'System Status : Charging', u'System Status : Discharging', u'System Status : cell Balancing')

       



 setTrandSetEnabled( name:트랜드 그룹명, enabled:수집 유무 )

 

 입력한 트랜드 그룹의 수집을 활성화하거나 비활성화합니다.


  • 수집 활성화     :  1 입력
  • 수집 비활성화  :  0 입력


 예)

# LP#1 전류 - 분기 1~8의 수집을 활성화합니다.

app.setTrandSetEnabled('LP#1 전류 - 분기 1~8',1);  


# LP#1 전류 - 분기 1~8의 수집을 비활성화합니다.

app.setTrandSetEnabled('LP#1 전류 - 분기 1~8',0);  




 setTrandSetEnabled( enabled:수집 유무 )

 

 모든 트랜드 그룹의 수집을 활성화하거나 비활성화합니다.


  • 수집 활성화     :  1 입력
  • 수집 비활성화  :  0 입력


 예)

# 모든 트랜드 그룹의 수집을 활성화합니다.

app.setTrandSetEnabled(1);  


# 모든 트랜드 그룹의 수집을 비활성화합니다.

app.setTrandSetEnabled(0);  




 boolean isTrendSetEnabled( name:트랜드 그룹명 )

 

 입력한 트랜드 그룹의 수집 여부를 반환합니다.


  • 수집할 경우 : 참(true)를 반환합니다.
  • 수집하지 않을 경우 : 거짓(false)를 반환합니다.


 예)

# 입력한 LP#1 전류 - 분기 1~8 트랜드 그룹의 수집 여부를 반환합니다.

app.isTrendSetEnabled('LP#1 전류 - 분기 1~8');  



 

list[str] commChennelGroupNames()

 

 통신 채널 그룹 목록을 반환합니다.


 예)

# 통신 채널 목록을 반환합니다.

app.commChennelGroupNames();  



 

 list[str] commChennelNamesInCommGroup( chennelName:통신 채널 그룹명 )

 

 입력한 통신 채널 그룹명에 해당하는 통신 채널 목록을 반환합니다.


 예)

# 입력한 기본 그룹에 해당하는 통신 채널 목록을 반환합니다.

app.commChennelNamesInCommGroup('기본 그룹');  



 

 showWaitCursor()

 

 마우스 포인터를 모래시계 모양으로 변경합니다.

 실행 시간이 길어질 경우 작업중인 상태를 안내하기 위해 마우스 포인터의 모양을 모래시계 모양(대기 상태)으로 나타낼 수 있습니다.


 예)

# 마우스 포인터를 모리시계 모양으로 변경합니다.

app.showWaitCursor();  



 

 restoreCursor()

 

 마우스 포인터를 기본형으로 되돌립니다.


 예)

# 마우스 포인터를 기본형을 되돌립니다.

app.restoreCursor();  



 

 openPointBrowser()

 

 포인트 브라우저를 엽니다.


 예)

# 포인트 브라우저를 엽니다.

app.openPointBrowser();  



 

 connect( eventName:이벤트 핸들러 이름, func:이벤트 발생시 수신 함수 )

 

 이벤트 핸들러를 등록해 로그인, 로그아웃  이벤트를 수신합니다.


 예)

def onLogOn():

    print 'logoned'


def onLogOut():

    print 'logouted'


# 로그온 핸들러 등록

app.connect('logOned()' , onLogOn )

# 로그 아웃 핸들러 등록

app.connect('logOuted()' , onLogOut )




 result , value = openNumberKeypad(  )

 

 숫자입력용 키패드 창을 엽니다. 숫자 입력을 받을때 사용하실 수 있습니다.

       

 예)

result , value = app.openNumberKeypad()

if ( result == 0 ):

    app.messageBox('취소','입력을 취소합니다')

else:

    print value


 결과)

 




 setDataGroupEnabled ( name:이력 데이터 그룹명, enabled:수집 유무 )

 

 입력한 이력 데이터 그룹의 수집을 활성화하거나 비활성화합니다.


  • 수집 활성화     :  1 입력
  • 수집 비활성화  :  0 입력


 예)

# 15분 전력량 이력 데이터 그룹의 수집을 활성화합니다.

app.setDataGroupEnabled('15분 전력량',1);  


# 15분 전력량 이력 데이터 그룹의 수집을 비활성화합니다.

app.setDataGroupEnabled('15분 전력량',0);  



 setDataGroupEnabled( enabled:수집 유무 )

 

 모든 이력 데이터 그룹의 수집을 활성화하거나 비활성화합니다.


  • 수집 활성화     :  1 입력
  • 수집 비활성화  :  0 입력


 예)

# 모든 이력 데이터 그룹의 수집을 활성화합니다.

app.setDataGroupEnabled(1);  


# 모든 이력 데이터 그룹의 수집을 비활성화합니다.

app.setDataGroupEnabled(0);  




 boolean isDataGroupEnabled ( name:이력 데이터 그룹명 )

 

 입력한 이력 데이터 그룹의 수집 여부를 반환합니다.


  • 수집할 경우 : 참(true)를 반환합니다.
  • 수집하지 않을 경우 : 거짓(false)를 반환합니다.


 예)

# 15분 전력량 이력 데이터 그룹의 수집 여부를 반환합니다.

app.isDataGroupEnabled('15분 전력량');  



 

 list[result, path] generateReport ( reportName:리포트명, year:년, month:월, day:일, parameter:추가 파라미터 전달 )

 

 미리 등록된 파워씬 리포트 양식으로 리포트를 생성하고 관련 정보를 반환합니다.


  • reportName 에는 엑셀로 미리 등록된 파워씬 리포트명을 입력합니다.
  • parameter 에는 추가로 파워씬 리포트 스크립트에 사용될 데이터를 전달합니다.
  • result 에 결과값을 path 에는 저장된 경로를 반환합니다.


 예)

param = {}

param['a'] = '123'

param['b'] = '제주'

param['c'] = 456


ret, path = app.generateReport('도시 리포트', 2022, 4, 12, param)


if (ret == True):

    print path + u'위치에 생성되었습니다.'

else:

    print u'생성에 실패했습니다.'


 파워씬 리포트 등록


  1. 파워씬 리포트 로그인

 


  1. 파워씬 리포트 양식 생성/저장 후 스크립트 작성

 

 


 생성된 리포트

 



 

 boolean generateReport ( path: 저장 경로, reportName:리포트명, year:년, month:월, day:일, parameter:추가 파라미터 전달 )

 

 미리 등록된 파워씬 리포트 양식으로 리포트를 생성하고 결과값을 리턴합니다.

       

  • path 에는 리포트가 저장될 경로를 입력합니다.
  • reportName 에는 엑셀로 미리 등록된 파워씬 리포트명을 입력합니다.
  • parameter 에는 추가로 파워씬 리포트 스크립트에 사용될 데이터를 전달합니다.


 예)

param = {}

param['a'] = '123'

param['b'] = '제주'

param['c'] = 456


ret = app.generateReport('C:\\Report\\', '도시 리포트', 2022, 4, 12, param)


if (ret == True):

    print u'생성되었습니다.'

else:

    print u'생성에 실패했습니다.'



 

 openReport ( reportName:리포트명, year:년, month:월, day:일 )

 

 미리 등록된 파워씬 리포트 양식으로 리포트를 생성하고 엽니다.

       

  • reportName 에는 엑셀로 미리 등록된 파워씬 리포트명을 입력합니다.


 예)

app.openReport('도시 리포트', 2022, 4, 12)


 



 

 reloadSchedule ()

 

 간편 스케줄에 등록된 모든 스케줄을 재로드합니다.

       

 예)

app.reloadSchedule()



 

 setInterval ( script:표현식, msec:실행 주기 )

 

 사용자가 설정한 표현식 스크립트를 msec(1000=1초) 간격으로 실행합니다.


app.setInterval() 로 설정된 스크립트는 전역으로 실행되어 해당 캔버스가 닫혀도 계속 실행됩니다.


 예)

app.setInterval('app.playSound("soundfile")', 5000)


 5초마다 app.playSound("soundfile") 스크립트가 실행됩니다.



 

 stopInterval ( script:표현식 )

 

 사용자가 설정한 표현식 스크립트를 중지합니다.

       

 예)

app.stopInterval('app.playSound("soundfile")')




 connectValueChange ( func:함수, pointNames:포인트명 )


 입력한 포인트값이 변경될 때 등록된 이벤트 핸들러 함수가 실행됩니다.


  • func 에는 실행될 핸들러 함수명을 입력합니다. 핸들러 함수의 원형는 다음과 같습니다.

              def handleChange(name: 변경된 포인트명, value: 변경된 포인트값)

  • pointNames 에는 포인트명을 리스트형태로 입력합니다.


app.connectValueChange() 로 설정된 이벤트 핸들러 함수는 전역으로 실행되어 해당 캔버스가 닫혀도 계속 실행됩니다.


 예)

def handleChange(name, value):

    if name == 'COM.1 충전상태':

        if value == 0:

            app.playSound("alarm.wav")

        elif value == 1:

            app.playSound("confirm.wav")


lst = ['COM.1 충전상태', 'COM.2 충전상태']

app.connectValueChange(handleChange, lst)


 'COM.1 충전상태', 'COM.2 충전상태' 포인트값의 변경에 따라 사운드를 재생합니다.