PLCControler.py
changeset 1968 64827679f3f1
parent 1881 091005ec69c4
child 1973 cc7a46953471
equal deleted inserted replaced
1967:92796bb8d4fe 1968:64827679f3f1
    40 from plcopen import *
    40 from plcopen import *
    41 from graphics.GraphicCommons import *
    41 from graphics.GraphicCommons import *
    42 from PLCGenerator import *
    42 from PLCGenerator import *
    43 
    43 
    44 duration_model = re.compile("(?:([0-9]{1,2})h)?(?:([0-9]{1,2})m(?!s))?(?:([0-9]{1,2})s)?(?:([0-9]{1,3}(?:\.[0-9]*)?)ms)?")
    44 duration_model = re.compile("(?:([0-9]{1,2})h)?(?:([0-9]{1,2})m(?!s))?(?:([0-9]{1,2})s)?(?:([0-9]{1,3}(?:\.[0-9]*)?)ms)?")
       
    45 VARIABLE_NAME_SUFFIX_MODEL = re.compile('(\d+)$')
    45 
    46 
    46 ITEMS_EDITABLE = [
    47 ITEMS_EDITABLE = [
    47     ITEM_PROJECT,
    48     ITEM_PROJECT,
    48     ITEM_POU,
    49     ITEM_POU,
    49     ITEM_VARIABLE,
    50     ITEM_VARIABLE,
  2330                     text += instance_copy.tostring()
  2331                     text += instance_copy.tostring()
  2331             element.remove(copy_body)
  2332             element.remove(copy_body)
  2332         return text
  2333         return text
  2333 
  2334 
  2334     def GenerateNewName(self, tagname, name, format, start_idx=0, exclude=None, debug=False):
  2335     def GenerateNewName(self, tagname, name, format, start_idx=0, exclude=None, debug=False):
       
  2336         if name is not None:
       
  2337             result = re.search(VARIABLE_NAME_SUFFIX_MODEL, name)
       
  2338             if result is not None:
       
  2339                 format = name[:result.start(1)] + '%d'
       
  2340                 start_idx = int(result.group(1))
       
  2341             else:
       
  2342                 format = name + '%d'
       
  2343 
  2335         names = {} if exclude is None else exclude.copy()
  2344         names = {} if exclude is None else exclude.copy()
  2336         if tagname is not None:
  2345         if tagname is not None:
  2337             names.update(dict([(varname.upper(), True)
  2346             names.update(dict([(varname.upper(), True)
  2338                                for varname in self.GetEditedElementVariables(tagname, debug)]))
  2347                                for varname in self.GetEditedElementVariables(tagname, debug)]))
  2339             words = tagname.split("::")
  2348             words = tagname.split("::")
  2345                                 instance,
  2354                                 instance,
  2346                                 (PLCOpenParser.GetElementClass("step",         "sfcObjects"),
  2355                                 (PLCOpenParser.GetElementClass("step",         "sfcObjects"),
  2347                                  PLCOpenParser.GetElementClass("connector",    "commonObjects"),
  2356                                  PLCOpenParser.GetElementClass("connector",    "commonObjects"),
  2348                                  PLCOpenParser.GetElementClass("continuation", "commonObjects"))):
  2357                                  PLCOpenParser.GetElementClass("continuation", "commonObjects"))):
  2349                             names[instance.getname().upper()] = True
  2358                             names[instance.getname().upper()] = True
       
  2359             elif words[0] == 'R':
       
  2360                 element = self.GetEditedElement(tagname, debug)
       
  2361                 for task in element.gettask():
       
  2362                     names[task.getname().upper()] = True
       
  2363                     for instance in task.getpouInstance():
       
  2364                         names[instance.getname().upper()] = True
       
  2365                 for instance in element.getpouInstance():
       
  2366                     names[instance.getname().upper()] = True
  2350         else:
  2367         else:
  2351             project = self.GetProject(debug)
  2368             project = self.GetProject(debug)
  2352             if project is not None:
  2369             if project is not None:
  2353                 for datatype in project.getdataTypes():
  2370                 for datatype in project.getdataTypes():
  2354                     names[datatype.getname().upper()] = True
  2371                     names[datatype.getname().upper()] = True