436 self.Interface[-1][3].append((edge, name, None)) |
436 self.Interface[-1][3].append((edge, name, None)) |
437 self.Program += " %s(CLK := %s);\n"%(name, text) |
437 self.Program += " %s(CLK := %s);\n"%(name, text) |
438 return "%s.Q"%name |
438 return "%s.Q"%name |
439 |
439 |
440 def GenerateSTProgram(self): |
440 def GenerateSTProgram(self): |
441 program = "" |
|
442 if self.ReturnType: |
441 if self.ReturnType: |
443 program += "%s %s : %s\n"%(self.Type, self.Name, self.ReturnType) |
442 program = "%s %s : %s\n"%(self.Type, self.Name, self.ReturnType) |
444 else: |
443 else: |
445 program += "%s %s\n"%(self.Type, self.Name) |
444 program = "%s %s\n"%(self.Type, self.Name) |
446 for list_type, retain, constant, variables in self.Interface: |
445 for list_type, retain, constant, variables in self.Interface: |
447 program += " %s"%list_type |
446 program += " %s"%list_type |
448 if retain: |
447 if retain: |
449 program += " RETAIN" |
448 program += " RETAIN" |
450 if constant: |
449 if constant: |
459 program += "\n" |
458 program += "\n" |
460 program += self.Program |
459 program += self.Program |
461 program += "END_%s\n\n"%self.Type |
460 program += "END_%s\n\n"%self.Type |
462 return program |
461 return program |
463 |
462 |
|
463 def GenerateConfiguration(self, configuration): |
|
464 config = "\nCONFIGURATION %s\n"%configuration.getName() |
|
465 for varlist in configuration.getGlobalVars(): |
|
466 config += " VAR_GLOBAL" |
|
467 if varlist.getRetain(): |
|
468 config += " RETAIN" |
|
469 if varlist.getConstant(): |
|
470 config += " CONSTANT" |
|
471 config += "\n" |
|
472 for var in varlist.getVariable(): |
|
473 var_type = var.getType().getValue() |
|
474 var_name = var.getName() |
|
475 initial = var.getInitialValue() |
|
476 if initial: |
|
477 var_initial = initial.getValue() |
|
478 else: |
|
479 var_initial = None |
|
480 if var_initial != None: |
|
481 config += " %s : %s := %s;\n"%(var_name, var_type, {"TRUE":"0","FALSE":"1"}.get(str(var_initial).upper(),str(var_initial))) |
|
482 else: |
|
483 config += " %s : %s;\n"%(var_name, var_type) |
|
484 config += " END_VAR\n" |
|
485 for resource in configuration.getResource(): |
|
486 config += self.GenerateResource(resource) |
|
487 config += "END_CONFIGURATION\n" |
|
488 return config |
|
489 |
|
490 def GenerateResource(self, resource): |
|
491 resrce = "\n RESOURCE %s\n"%resource.getName() |
|
492 for varlist in resource.getGlobalVars(): |
|
493 resrce += " VAR_GLOBAL" |
|
494 if varlist.getRetain(): |
|
495 resrce += " RETAIN" |
|
496 if varlist.getConstant(): |
|
497 resrce += " CONSTANT" |
|
498 resrce += "\n" |
|
499 for var in varlist.getVariable(): |
|
500 var_type = var.getType().getValue() |
|
501 var_name = var.getName() |
|
502 initial = var.getInitialValue() |
|
503 if initial: |
|
504 var_initial = initial.getValue() |
|
505 else: |
|
506 var_initial = None |
|
507 if var_initial != None: |
|
508 resrce += " %s : %s := %s;\n"%(var_name, var_type, {"TRUE":"0","FALSE":"1"}.get(str(var_initial).upper(),str(var_initial))) |
|
509 else: |
|
510 resrce += " %s : %s;\n"%(var_name, var_type) |
|
511 resrce += " END_VAR\n" |
|
512 tasks = resource.getTask() |
|
513 for task in tasks: |
|
514 resrce += " TASK %s("%task.getName() |
|
515 args = [] |
|
516 single = task.getSingle() |
|
517 if single: |
|
518 args.append("SINGLE := %s"%single) |
|
519 interval = task.getInterval() |
|
520 if interval: |
|
521 text = "t#" |
|
522 if interval.hour != 0: |
|
523 text += "%dh"%interval.hour |
|
524 if interval.minute != 0: |
|
525 text += "%dm"%interval.minute |
|
526 if interval.second != 0: |
|
527 text += "%ds"%interval.second |
|
528 if interval.microsecond != 0: |
|
529 text += "%dms"%(interval.microsecond / 1000) |
|
530 args.append("INTERVAL := %s"%text) |
|
531 args.append("PRIORITY := %s"%str(task.priority.getValue())) |
|
532 resrce += ",".join(args) + ");\n" |
|
533 for task in tasks: |
|
534 for instance in task.getPouInstance(): |
|
535 resrce += " PROGRAM %s WITH %s : %s;\n"%(instance.getName(), task.getName(), instance.getType()) |
|
536 for instance in resource.getPouInstance(): |
|
537 resrce += " PROGRAM %s : %s;\n"%(instance.getName(), instance.getType()) |
|
538 resrce += " END_RESOURCE\n" |
|
539 return resrce |
|
540 |
|
541 |
464 def GenerateCurrentProgram(project): |
542 def GenerateCurrentProgram(project): |
465 program = "" |
543 program = "" |
466 for pou in project.getPous(): |
544 for pou in project.getPous(): |
467 pou_type = pou.getPouType().getValue() |
545 pou_type = pou.getPouType().getValue() |
468 if pou_type in pouTypeNames: |
546 if pou_type in pouTypeNames: |