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: |