def get_var_dict_fc_by_ied(self): var_dict = {} [deviceList, self.__error ] = iec61850.IedConnection_getLogicalDeviceList(self.__con) device = iec61850.LinkedList_getNext(deviceList) while device: ld_inst = iec61850.toCharP(device.data) [logicalNodes, self.__error] = iec61850.IedConnection_getLogicalDeviceDirectory( self.__con, iec61850.toCharP(device.data)) lnode = iec61850.LinkedList_getNext(logicalNodes) while lnode: ln_name = iec61850.toCharP(lnode.data) [variables, self.__error ] = iec61850.IedConnection_getLogicalNodeVariables( self.__con, ld_inst + '/' + ln_name) variable = iec61850.LinkedList_get(variables, 0) vIndex = 1 while variable: name = iec61850.toCharP(variable.data) fc_name = name.split("$", 1)[0] if '$' in name: var_name = name.split("$", 1)[1] var_name = var_name.replace("$", ".") #print(fc_name, "-----FC------>" , vIndex) var_dict[ld_inst + '/' + ln_name + '.' + var_name] = fc_name variable = iec61850.LinkedList_get(variables, vIndex) vIndex += 1 iec61850.LinkedList_destroy(variables) lnode = iec61850.LinkedList_getNext(lnode) iec61850.LinkedList_destroy(logicalNodes) device = iec61850.LinkedList_getNext(device) iec61850.LinkedList_destroy(deviceList) return var_dict
def get_dobject_names(self, ld, ln): [dataObjects, self.__error] = iec61850.IedConnection_getLogicalNodeDirectory( self.__con, self.get_name_of(ld) + '/' + self.get_name_of(ln), iec61850.ACSI_CLASS_DATA_OBJECT) dobject = iec61850.LinkedList_get(dataObjects, 0) iIndex = 1 do_names = [] while dobject: do_names.append(iec61850.toCharP(dobject.data)) dobject = iec61850.LinkedList_get(dataObjects, iIndex) iIndex += 1 iec61850.LinkedList_destroy(dataObjects) return do_names
def get_varlist_fc_by_ld_lnname(self, iedldlnname): var_dict = {} [variables, self.__error] = iec61850.IedConnection_getLogicalNodeVariables( self.__con, iedldlnname) variable = iec61850.LinkedList_get(variables, 0) vIndex = 1 while variable: name = iec61850.toCharP(variable.data) fc_name = name.split("$", 1)[0] if '$' in name: var_name = name.split("$", 1)[1] var_name = var_name.replace("$", ".") #print(fc_name, "-----FC------>" , vIndex) var_dict[iedldlnname + '.' + var_name] = fc_name variable = iec61850.LinkedList_get(variables, vIndex) vIndex += 1 iec61850.LinkedList_destroy(variables) return var_dict
def reportCallbackFunction(self, parameter, report): print("Report CallBack Function") size = iec61850.LinkedList_size(parameter) print("Entries count: %s" % size) entry = iec61850.LinkedList_getNext(parameter) Index = 1 while entry: entry_name = iec61850.toCharP(entry.data) print(entry_name, "Entry------->", Index) entry = iec61850.LinkedList_get(parameter, Index) Index += 1 #iec61850.LinkedList_destroy(parameter) print("Report received!")
def get_rcrp_list_by_ldname(self, ldname): rc_names = [] [reports, self.__error] = iec61850.IedConnection_getLogicalNodeDirectory( self.__con, ldname + '/LLN0', iec61850.ACSI_CLASS_URCB) report = iec61850.LinkedList_getNext(reports) repIndex = 1 while report: rc_names.append(iec61850.toCharP(report.data)) report = iec61850.LinkedList_get(reports, repIndex) repIndex += 1 iec61850.LinkedList_destroy(reports) return rc_names