CommChannelData는 [통신 채널 그룹 - 통신 채널 - 디바이스]로 구성되는 파워씬 통신 모델 구조에서 통신 채널에 대한 정보를 보유하는 데이터 객체 입니다.

통신 채널 정보에는 통신 설정값뿐 아니라 통신 상태등과 같은 통신 연결 정보를 가지고 있습니다.  사용자는 CommChannelData를 이용하여 다음과 같은 작업을 수행할 수 있습니다.

• 해당 통신 채널에 속한 디바이스 목록을 조회할  수 있습니다.

• 아래 그림과 같이 '스카다 통신 채널 요약 정보' 화면에 표시되는 통신 채널에 관련된 정보들을 읽어올 수 있습니다.

.

CommChannelData를 얻기 위해서는, scada.getCommChannel( ) 함수를 호출합니다. 이때 인자로 조회할 통신채널 이름을 지정할 수 있습니다.

또한 scada.getCommChannelList( ) 함수를 사용하면 전체 통신 채널 목록을 불러올 수 있습니다.

그리고 CommChannelGroupData 개체를 이용해 해당 통신 채널 그룹에 속한 통신 채널 정보를 읽어올 수 있습니다.

Methods


리턴 값

함 수

설 명

int

currentActiveNode( )

현재 활성된 노드정보(메인,백업)를 읽습니다. 0: 백업 채널 , 1: 메인 채널 , 2: 통신 미연결

datetime

getChennelClosedTime( )

통신연결이 해제된 시간을 읽습니다.

datetime

getChennelOpenedTime ( )

통신이 연결된 시간을 읽습니다.

string

getDescription ( )

통신 채널 설명을 읽습니다.

DeviceData

getDevice(index)

통신 채널에 속한 디바이스중 주어진 인덱스에 해당하는 디바이스를 읽습니다.

int

getDeviceCount( )

통신 채널에 속한 디바이스의 갯수를 반환 합니다.

list<DeviceData>

getDeviceList( )

통신 채널에 속한 전체 디바이스 목록을 불러 옵니다.

string

getName( )

통신 채널 이름을 읽습니다.

bool

getStatus( )

통신 채널 상태를 읽습니다. 1: 연결상태 , 0: 연결 해제 상태

int

getTodayFailCount( )

금일 통신 연결 실패 횟수를 조회합니다.

int

getTodayFailDuration( )

금일 통신 연결 해제 시간을 조회합니다(초)

int

getTotalFailCount ( )

전체 통신 연결 실패 횟수를 조회합니다.

int

getTotalFailDuration ( )

전체 통신 연결 해제 시간을 조회합니다(초)



 int  currentActiveNode  ( )

 

현재 활성된 노드정보(메인,백업)를 읽습니다.

•  반환값 :  0: Main 채널 , 1: Backup 채널 , 2: 통신 미연결


 예)

def activeNodeString(value):

    if ( value == 0 ):

        return '백업'

    elif ( value ==1 ):

        return '메인'

    return '연결해제됨'


# 전체 채널을 읽습니다.

channels = scada.getCommChannelList( )


for channel in channels:

#채널 이름과 채널이 활성화된 노드 정보를 읽습니다.

    print channel.getName(), ':' , channel.currentActiveNode() , activeNodeString( channel.currentActiveNode() )


결과) 

PCS1 : 1 메인

BMS1 : 1 메인

PCS2 : 0 백업

BMS2 : 0 백업

ACB1 : 0 백업

PV : 1 메인




 datetime  getChennelClosedTime  ( )

 

통신연결이 해제된 시간을 읽습니다.

•  반환값 : python datetime형식으로 연결 해제된 시간을 반환 합니다.


 예)

# 전체 채널을 읽습니다.

channels = scada.getCommChannelList( )


#채널별로 통신 연결 해제 시간을 불러 옵니다

for channel in channels:

    print channel.getName(), ':' , channel.getChennelClosedTime()


 결과) 

PCS1 : 2025-11-10 15:08:19

BMS1 : 2025-11-10 15:08:19

PCS2 : 1970-01-01 09:00:00

BMS2 : 1970-01-01 09:00:00

ACB1 : 1970-01-01 09:00:00

PV : 2025-11-10 15:08:19




 datetime  getChennelOpenedTime  ( )

 

통신이 연결된 시간을 읽습니다.

•  반환값 : python datetime형식으로 연결 해제된 시간을 반환 합니다.


 예)

# 전체 채널을 읽습니다.

channels = scada.getCommChannelList( )


#채널별로 통신 연결 시간을 불러 옵니다

for channel in channels:

    print channel.getName(), ':' , channel.getChennelOpenedTime()


 결과) 

PCS1 : 2025-11-10 15:09:37

BMS1 : 2025-11-10 15:09:37

PCS2 : 1970-01-01 09:00:00

BMS2 : 1970-01-01 09:00:00

ACB1 : 1970-01-01 09:00:00

PV : 2025-11-10 15:09:37




string  getDescription  ( )

 

통신 채널 그룹 설명을 읽어 옵니다.


 예)

# 통신 채널 목록을 얻어 옵니다.

channels = scada.getCommChannelList( )

# 채널  설명 읽기

for channel in channels:

    print channel.getDescription()




 DeviceData  getDevice  ( index )

 

 통신 채널에 속한 디바이스중 주어진 인덱스에 해당하는 디바이스를 읽습니다.


 예)

# '원암지2' 채널을 읽습니다.

channel = scada.getCommChannel('원암지2')

# '원암지2'속한 디바이스 갯수를 읽습니다.

deviceCount =  channel.getDeviceCount()


for index in range(deviceCount):

# 주어진 인덱스에 해당하는 디바이스를 읽습니다.

    device  = channel.getDevice(index)

    print channel.getName() ,':' ,  device.getName()




 int  getDeviceCount  ( )

 

통신 채널 그룹에 속한 통신 채널 수를 반환 합니다..


 예)

# '원암지2' 채널을 읽습니다.

channel = scada.getCommChannel('원암지2')

# '원암지2'속한 디바이스 갯수를 읽습니다.

deviceCount =  channel.getDeviceCount()


for index in range(deviceCount):

# 주어진 인덱스에 해당하는 디바이스를 읽습니다.

    device  = channel.getDevice(index)

    print channel.getName() ,':' ,  device.getName()




 list<CommChannelData>  getDeviceList  ( )

 

통신 채널 그룹에 속한 통신 채널 목록을 불러 옵니다.


 예)

# '원암지2' 채널을 읽습니다.

channel = scada.getCommChannel('원암지2')

# '원암지2'속한 디바이스 목록을 읽습니다.

devices =  channel.getDeviceList()


for device in devices :

    print channel.getName() ,':' ,  device.getName()




string  getName  ( )

 

통신 채널 그룹 이름을 읽습니다.


 예)

# 통신 채널 목록을 얻어 옵니다.

channels = scada.getCommChannelList( )

# 채널  설명 읽기

for channel in channels:

    print channel.getName()




 int  getStatus  ( )

 

통신 채널 상태를 읽습니다.

•  반환값 : 1: 정상 , 0: 연결 해제


 예)

def channelStatusString(value):

    if ( value == 0 ):

        return '연결 해제'

    elif ( value ==1 ):

        return '정상'

    return '연결 해제'


# 전체 채널을 읽습니다.

channels = scada.getCommChannelList( )


for channel in channels:

#채널 이름과 채널 연결상태를 얻어 옵니다.

    print channel.getName(), ':' , channel.getStatus() , channelStatusString( channel.getStatus() )


결과) 

PCS1 : 1 정상

BMS1 : 1 정상

PCS2 : 0 연결 해제

BMS2 : 0 연결 해제

ACB1 : 0 연결 해제

PV : 1 정상




 int  getTodayFailCount  ( )

 

금일 통신 연결 실패 횟수를 조회합니다.


 예)

# 전체 채널을 읽습니다.

channels = scada.getCommChannelList( )


for channel in channels:

    print channel.getName(), ':' , channel.getTodayFailCount()


결과) 

PCS1 : 0

BMS1 : 0

PCS2 : 0

BMS2 : 0

ACB1 : 0

PV : 0




 int  getTodayFailDuration  ( )

 

금일 통신 연결 해제 시간을 조회합니다(초)


 예)

# 전체 채널을 읽습니다.

channels = scada.getCommChannelList( )


for channel in channels:

    print channel.getName(), ':' , channel.getTodayFailDuration()


결과) 

PCS1 : 0

BMS1 : 0

PCS2 : 0

BMS2 : 0

ACB1 : 0

PV : 0




 int  getTotalFailCount  ( )

 

전체 통신 연결 실패 횟수를 조회합니다.


 예)

# 전체 채널을 읽습니다.

channels = scada.getCommChannelList( )


for channel in channels:

    print channel.getName(), ':' , channel.getTotalFailCount()


결과) 

PCS1 : 72

BMS1 : 69

PCS2 : 0

BMS2 : 0

ACB1 : 0

PV : 76




 int  getTotalFailDuration  ( )

 

전체 통신 연결 해제 시간을 조회합니다(초)


 예)

# 전체 채널을 읽습니다.

channels = scada.getCommChannelList( )


for channel in channels:

    print channel.getName(), ':' , channel.getTotalFailDuration()


결과) 

PCS1 : 71443

BMS1 : 71420

PCS2 : 0

BMS2 : 0

ACB1 : 9900367

PV : 126015