PLCGenerator.py
changeset 1315 ff14a66bbd12
parent 1310 3d7fa2257b24
child 1322 0a9227f743b3
equal deleted inserted replaced
1314:822d483197ad 1315:ff14a66bbd12
   269         var_number = 0
   269         var_number = 0
   270         
   270         
   271         varlists = [(varlist, varlist.getvariable()[:]) for varlist in configuration.getglobalVars()]
   271         varlists = [(varlist, varlist.getvariable()[:]) for varlist in configuration.getglobalVars()]
   272         
   272         
   273         extra_variables = self.Controler.GetConfigurationExtraVariables()
   273         extra_variables = self.Controler.GetConfigurationExtraVariables()
   274         if len(extra_variables) > 0:
   274         extra_global_vars = None
   275             if len(varlists) == 0:
   275         if len(extra_variables) > 0 and len(varlists) == 0:
   276                 varlists = [(PLCOpenParser.CreateElement("globalVars", "interface"), [])]
   276             extra_global_vars = PLCOpenParser.CreateElement("globalVars", "interface")
   277             varlists[-1][1].extend(extra_variables)
   277             configuration.setglobalVars([extra_global_vars])
       
   278             varlists = [(extra_global_vars, [])]
       
   279             
       
   280         for variable in extra_variables:
       
   281             varlists[-1][0].appendvariable(variable)
       
   282             varlists[-1][1].append(variable)
   278             
   283             
   279         # Generate any global variable in configuration
   284         # Generate any global variable in configuration
   280         for varlist, varlist_variables in varlists:
   285         for varlist, varlist_variables in varlists:
   281             variable_type = errorVarTypes.get("VAR_GLOBAL", "var_local")
   286             variable_type = errorVarTypes.get("VAR_GLOBAL", "var_local")
   282             # Generate variable block with modifier
   287             # Generate variable block with modifier
   308                                (" ", ())]
   313                                (" ", ())]
   309                 config += [(": ", ()),
   314                 config += [(": ", ()),
   310                            (var.gettypeAsText(), (tagname, variable_type, var_number, "type"))]
   315                            (var.gettypeAsText(), (tagname, variable_type, var_number, "type"))]
   311                 # Generate variable initial value if exists
   316                 # Generate variable initial value if exists
   312                 initial = var.getinitialValue()
   317                 initial = var.getinitialValue()
   313                 if initial:
   318                 if initial is not None:
   314                     config += [(" := ", ()),
   319                     config += [(" := ", ()),
   315                                (self.ComputeValue(initial.getvalue(), var_type), (tagname, variable_type, var_number, "initial value"))]
   320                                (self.ComputeValue(initial.getvalue(), var_type), (tagname, variable_type, var_number, "initial value"))]
   316                 config += [(";\n", ())]
   321                 config += [(";\n", ())]
   317                 var_number += 1
   322                 var_number += 1
   318             config += [("  END_VAR\n", ())]
   323             config += [("  END_VAR\n", ())]
       
   324         
       
   325         if extra_global_vars is not None:
       
   326             configuration.remove(extra_global_vars)
       
   327         else:
       
   328             for variable in extra_variables:
       
   329                 varlists[-1][1].remove(variable)
       
   330         
   319         # Generate any resource in the configuration
   331         # Generate any resource in the configuration
   320         for resource in configuration.getresource():
   332         for resource in configuration.getresource():
   321             config += self.GenerateResource(resource, configuration.getname())
   333             config += self.GenerateResource(resource, configuration.getname())
   322         config += [("END_CONFIGURATION\n", ())]
   334         config += [("END_CONFIGURATION\n", ())]
   323         return config
   335         return config
   361                                (" ", ())]
   373                                (" ", ())]
   362                 resrce += [(": ", ()),
   374                 resrce += [(": ", ()),
   363                            (var.gettypeAsText(), (tagname, variable_type, var_number, "type"))]
   375                            (var.gettypeAsText(), (tagname, variable_type, var_number, "type"))]
   364                 # Generate variable initial value if exists
   376                 # Generate variable initial value if exists
   365                 initial = var.getinitialValue()
   377                 initial = var.getinitialValue()
   366                 if initial:
   378                 if initial is not None:
   367                     resrce += [(" := ", ()),
   379                     resrce += [(" := ", ()),
   368                                (self.ComputeValue(initial.getvalue(), var_type), (tagname, variable_type, var_number, "initial value"))]
   380                                (self.ComputeValue(initial.getvalue(), var_type), (tagname, variable_type, var_number, "initial value"))]
   369                 resrce += [(";\n", ())]
   381                 resrce += [(";\n", ())]
   370                 var_number += 1
   382                 var_number += 1
   371             resrce += [("    END_VAR\n", ())]
   383             resrce += [("    END_VAR\n", ())]
   378                        (task.getname(), (tagname, "task", task_number, "name")),
   390                        (task.getname(), (tagname, "task", task_number, "name")),
   379                        ("(", ())]
   391                        ("(", ())]
   380             args = []
   392             args = []
   381             single = task.getsingle()
   393             single = task.getsingle()
   382             # Single argument if exists
   394             # Single argument if exists
   383             if single:
   395             if single is not None:
   384                 resrce += [("SINGLE := ", ()),
   396                 resrce += [("SINGLE := ", ()),
   385                            (single, (tagname, "task", task_number, "single")),
   397                            (single, (tagname, "task", task_number, "single")),
   386                            (",", ())]
   398                            (",", ())]
   387             # Interval argument if exists
   399             # Interval argument if exists
   388             interval = task.getinterval()
   400             interval = task.getinterval()
   389             if interval:
   401             if interval is not None:
   390                 resrce += [("INTERVAL := ", ()),
   402                 resrce += [("INTERVAL := ", ()),
   391                            (interval, (tagname, "task", task_number, "interval")),
   403                            (interval, (tagname, "task", task_number, "interval")),
   392                            (",", ())]
   404                            (",", ())]
   393 ##                resrce += [("INTERVAL := t#", ())]
   405 ##                resrce += [("INTERVAL := t#", ())]
   394 ##                if interval.hour != 0:
   406 ##                if interval.hour != 0: