diff -r 822d483197ad -r ff14a66bbd12 PLCGenerator.py --- a/PLCGenerator.py Tue Sep 10 23:23:45 2013 +0200 +++ b/PLCGenerator.py Wed Sep 11 23:48:41 2013 +0200 @@ -271,10 +271,15 @@ varlists = [(varlist, varlist.getvariable()[:]) for varlist in configuration.getglobalVars()] extra_variables = self.Controler.GetConfigurationExtraVariables() - if len(extra_variables) > 0: - if len(varlists) == 0: - varlists = [(PLCOpenParser.CreateElement("globalVars", "interface"), [])] - varlists[-1][1].extend(extra_variables) + extra_global_vars = None + if len(extra_variables) > 0 and len(varlists) == 0: + extra_global_vars = PLCOpenParser.CreateElement("globalVars", "interface") + configuration.setglobalVars([extra_global_vars]) + varlists = [(extra_global_vars, [])] + + for variable in extra_variables: + varlists[-1][0].appendvariable(variable) + varlists[-1][1].append(variable) # Generate any global variable in configuration for varlist, varlist_variables in varlists: @@ -310,12 +315,19 @@ (var.gettypeAsText(), (tagname, variable_type, var_number, "type"))] # Generate variable initial value if exists initial = var.getinitialValue() - if initial: + if initial is not None: config += [(" := ", ()), (self.ComputeValue(initial.getvalue(), var_type), (tagname, variable_type, var_number, "initial value"))] config += [(";\n", ())] var_number += 1 config += [(" END_VAR\n", ())] + + if extra_global_vars is not None: + configuration.remove(extra_global_vars) + else: + for variable in extra_variables: + varlists[-1][1].remove(variable) + # Generate any resource in the configuration for resource in configuration.getresource(): config += self.GenerateResource(resource, configuration.getname()) @@ -363,7 +375,7 @@ (var.gettypeAsText(), (tagname, variable_type, var_number, "type"))] # Generate variable initial value if exists initial = var.getinitialValue() - if initial: + if initial is not None: resrce += [(" := ", ()), (self.ComputeValue(initial.getvalue(), var_type), (tagname, variable_type, var_number, "initial value"))] resrce += [(";\n", ())] @@ -380,13 +392,13 @@ args = [] single = task.getsingle() # Single argument if exists - if single: + if single is not None: resrce += [("SINGLE := ", ()), (single, (tagname, "task", task_number, "single")), (",", ())] # Interval argument if exists interval = task.getinterval() - if interval: + if interval is not None: resrce += [("INTERVAL := ", ()), (interval, (tagname, "task", task_number, "interval")), (",", ())]