PLCGenerator.py
changeset 617 1a80e0598045
parent 597 7b17e3c8dbed
child 644 6ff54a34102b
equal deleted inserted replaced
616:8a60ffcfd70b 617:1a80e0598045
   200                                     (element.getname(), (tagname, "struct", i, "name")),
   200                                     (element.getname(), (tagname, "struct", i, "name")),
   201                                     (" : ", ()),
   201                                     (" : ", ()),
   202                                     (elementtype_name, (tagname, "struct", i, "type"))]
   202                                     (elementtype_name, (tagname, "struct", i, "type"))]
   203                     if element.initialValue is not None:
   203                     if element.initialValue is not None:
   204                         element_text.extend([(" := ", ()),
   204                         element_text.extend([(" := ", ()),
   205                                              (self.ComputeValue(element.initialValue.getvalue(), elementtype_name), (tagname, "struct", i, "initial"))])
   205                                              (self.ComputeValue(element.initialValue.getvalue(), elementtype_name), (tagname, "struct", i, "initial value"))])
   206                     element_text.append((";", ()))
   206                     element_text.append((";", ()))
   207                     elements.append(element_text)
   207                     elements.append(element_text)
   208                 datatype_def += [("STRUCT", ())]
   208                 datatype_def += [("STRUCT", ())]
   209                 datatype_def += JoinList([("", ())], elements)
   209                 datatype_def += JoinList([("", ())], elements)
   210                 datatype_def += [("\n  END_STRUCT", ())]
   210                 datatype_def += [("\n  END_STRUCT", ())]
   212             else:
   212             else:
   213                 datatype_def += [(basetype_content["name"], (tagname, "base"))]
   213                 datatype_def += [(basetype_content["name"], (tagname, "base"))]
   214             # Data type has an initial value
   214             # Data type has an initial value
   215             if datatype.initialValue is not None:
   215             if datatype.initialValue is not None:
   216                 datatype_def += [(" := ", ()),
   216                 datatype_def += [(" := ", ()),
   217                                  (self.ComputeValue(datatype.initialValue.getvalue(), datatype_name), (tagname, "initial"))]
   217                                  (self.ComputeValue(datatype.initialValue.getvalue(), datatype_name), (tagname, "initial value"))]
   218             datatype_def += [(";\n", ())]
   218             datatype_def += [(";\n", ())]
   219             self.Program += datatype_def
   219             self.Program += datatype_def
   220 
   220 
   221     # Generate a POU from its name
   221     # Generate a POU from its name
   222     def GeneratePouProgram(self, pou_name):
   222     def GeneratePouProgram(self, pou_name):
   277                            (" ", ())]
   277                            (" ", ())]
   278                 # Generate variable address if exists
   278                 # Generate variable address if exists
   279                 address = var.getaddress()
   279                 address = var.getaddress()
   280                 if address:
   280                 if address:
   281                     config += [("AT ", ()),
   281                     config += [("AT ", ()),
   282                                (address, (tagname, variable_type, var_number, "address")),
   282                                (address, (tagname, variable_type, var_number, "location")),
   283                                (" ", ())]
   283                                (" ", ())]
   284                 config += [(": ", ()),
   284                 config += [(": ", ()),
   285                            (var.gettypeAsText(), (tagname, variable_type, var_number, "type"))]
   285                            (var.gettypeAsText(), (tagname, variable_type, var_number, "type"))]
   286                 # Generate variable initial value if exists
   286                 # Generate variable initial value if exists
   287                 initial = var.getinitialValue()
   287                 initial = var.getinitialValue()
   288                 if initial:
   288                 if initial:
   289                     config += [(" := ", ()),
   289                     config += [(" := ", ()),
   290                                (self.ComputeValue(initial.getvalue(), var_type), (tagname, variable_type, var_number, "initial"))]
   290                                (self.ComputeValue(initial.getvalue(), var_type), (tagname, variable_type, var_number, "initial value"))]
   291                 config += [(";\n", ())]
   291                 config += [(";\n", ())]
   292                 var_number += 1
   292                 var_number += 1
   293             config += [("  END_VAR\n", ())]
   293             config += [("  END_VAR\n", ())]
   294         # Generate any resource in the configuration
   294         # Generate any resource in the configuration
   295         for resource in configuration.getresource():
   295         for resource in configuration.getresource():
   330                            (" ", ())]
   330                            (" ", ())]
   331                 address = var.getaddress()
   331                 address = var.getaddress()
   332                 # Generate variable address if exists
   332                 # Generate variable address if exists
   333                 if address:
   333                 if address:
   334                     resrce += [("AT ", ()),
   334                     resrce += [("AT ", ()),
   335                                (address, (tagname, variable_type, var_number, "address")),
   335                                (address, (tagname, variable_type, var_number, "location")),
   336                                (" ", ())]
   336                                (" ", ())]
   337                 resrce += [(": ", ()),
   337                 resrce += [(": ", ()),
   338                            (var.gettypeAsText(), (tagname, variable_type, var_number, "type"))]
   338                            (var.gettypeAsText(), (tagname, variable_type, var_number, "type"))]
   339                 # Generate variable initial value if exists
   339                 # Generate variable initial value if exists
   340                 initial = var.getinitialValue()
   340                 initial = var.getinitialValue()
   341                 if initial:
   341                 if initial:
   342                     resrce += [(" := ", ()),
   342                     resrce += [(" := ", ()),
   343                                (self.ComputeValue(initial.getvalue(), var_type), (tagname, variable_type, var_number, "initial"))]
   343                                (self.ComputeValue(initial.getvalue(), var_type), (tagname, variable_type, var_number, "initial value"))]
   344                 resrce += [(";\n", ())]
   344                 resrce += [(";\n", ())]
   345                 var_number += 1
   345                 var_number += 1
   346             resrce += [("    END_VAR\n", ())]
   346             resrce += [("    END_VAR\n", ())]
   347         # Generate any task in the resource
   347         # Generate any task in the resource
   348         tasks = resource.gettask()
   348         tasks = resource.gettask()
  1307                 if var_name:
  1307                 if var_name:
  1308                     program += [(var_name, (self.TagName, variable_type, var_number, "name")),
  1308                     program += [(var_name, (self.TagName, variable_type, var_number, "name")),
  1309                                 (" ", ())]
  1309                                 (" ", ())]
  1310                 if var_address != None:
  1310                 if var_address != None:
  1311                     program += [("AT ", ()),
  1311                     program += [("AT ", ()),
  1312                                 (var_address, (self.TagName, variable_type, var_number, "address")),
  1312                                 (var_address, (self.TagName, variable_type, var_number, "location")),
  1313                                 (" ", ())]
  1313                                 (" ", ())]
  1314                 program += [(": ", ()),
  1314                 program += [(": ", ()),
  1315                             (var_type, (self.TagName, variable_type, var_number, "type"))]
  1315                             (var_type, (self.TagName, variable_type, var_number, "type"))]
  1316                 if var_initial != None:
  1316                 if var_initial != None:
  1317                     program += [(" := ", ()),
  1317                     program += [(" := ", ()),
  1318                                 (self.ParentGenerator.ComputeValue(var_initial, var_type), (self.TagName, variable_type, var_number, "initial"))]
  1318                                 (self.ParentGenerator.ComputeValue(var_initial, var_type), (self.TagName, variable_type, var_number, "initial value"))]
  1319                 program += [(";\n", ())]
  1319                 program += [(";\n", ())]
  1320                 var_number += 1
  1320                 var_number += 1
  1321             program += [("  END_VAR\n", ())]
  1321             program += [("  END_VAR\n", ())]
  1322         program += [("\n", ())]
  1322         program += [("\n", ())]
  1323         program += self.Program
  1323         program += self.Program