Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
 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
Esempio n. 4
0
 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!")
Esempio n. 5
0
 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