PLCControler.py
changeset 3704 c17fac18c663
parent 2739 7278186a2083
child 3750 f62625418bff
equal deleted inserted replaced
3703:4b75f1506ea1 3704:c17fac18c663
   446         pou_infos = self.GetPou(reference, debug)
   446         pou_infos = self.GetPou(reference, debug)
   447         if pou_infos is not None:
   447         if pou_infos is not None:
   448             return len(self.GetInstanceList(pou_infos, name, debug)) > 0
   448             return len(self.GetInstanceList(pou_infos, name, debug)) > 0
   449         return False
   449         return False
   450 
   450 
   451     def GenerateProgram(self, filepath=None):
   451     def GenerateProgram(self, filepath=None, **kwargs):
   452         errors = []
   452         errors = []
   453         warnings = []
   453         warnings = []
   454         if self.Project is not None:
   454         if self.Project is not None:
   455             try:
   455             try:
   456                 self.ProgramChunks = GenerateCurrentProgram(self, self.Project, errors, warnings)
   456                 self.ProgramChunks = GenerateCurrentProgram(self, self.Project, errors, warnings,**kwargs)
   457                 self.NextCompiledProject = self.Copy(self.Project)
   457                 self.NextCompiledProject = self.Copy(self.Project)
   458                 program_text = "".join([item[0] for item in self.ProgramChunks])
   458                 program_text = "".join([item[0] for item in self.ProgramChunks])
   459                 if filepath is not None:
   459                 if filepath is not None:
   460                     programfile = open(filepath, "w")
   460                     programfile = open(filepath, "w")
   461                     programfile.write(program_text.encode("utf-8"))
   461                     programfile.write(program_text.encode("utf-8"))
  1145     def GetConfNodeGlobalInstances(self):
  1145     def GetConfNodeGlobalInstances(self):
  1146         return []
  1146         return []
  1147 
  1147 
  1148     def GetConfigurationExtraVariables(self):
  1148     def GetConfigurationExtraVariables(self):
  1149         global_vars = []
  1149         global_vars = []
  1150         for var_name, var_type, var_initial in self.GetConfNodeGlobalInstances():
  1150         for global_instance in self.GetConfNodeGlobalInstances():
  1151             tempvar = PLCOpenParser.CreateElement("variable", "globalVars")
  1151             if type(global_instance)==tuple:
  1152             tempvar.setname(var_name)
  1152                 # usual global without modifier from a CTN or a library
  1153 
  1153                 var_name, var_type, var_initial = global_instance
  1154             tempvartype = PLCOpenParser.CreateElement("type", "variable")
  1154                 tempvar = PLCOpenParser.CreateElement("variable", "globalVars")
  1155             if var_type in self.GetBaseTypes():
  1155                 tempvar.setname(var_name)
  1156                 tempvartype.setcontent(PLCOpenParser.CreateElement(
  1156 
  1157                     var_type.lower()
  1157                 tempvartype = PLCOpenParser.CreateElement("type", "variable")
  1158                     if var_type in ["STRING", "WSTRING"]
  1158                 if var_type in self.GetBaseTypes():
  1159                     else var_type, "dataType"))
  1159                     tempvartype.setcontent(PLCOpenParser.CreateElement(
       
  1160                         var_type.lower()
       
  1161                         if var_type in ["STRING", "WSTRING"]
       
  1162                         else var_type, "dataType"))
       
  1163                 else:
       
  1164                     tempderivedtype = PLCOpenParser.CreateElement("derived", "dataType")
       
  1165                     tempderivedtype.setname(var_type)
       
  1166                     tempvartype.setcontent(tempderivedtype)
       
  1167                 tempvar.settype(tempvartype)
       
  1168 
       
  1169                 if var_initial != "":
       
  1170                     value = PLCOpenParser.CreateElement("initialValue", "variable")
       
  1171                     value.setvalue(var_initial)
       
  1172                     tempvar.setinitialValue(value)
       
  1173 
       
  1174                 global_vars.append(tempvar)
  1160             else:
  1175             else:
  1161                 tempderivedtype = PLCOpenParser.CreateElement("derived", "dataType")
  1176                 # case of varlists from a TC6 library
  1162                 tempderivedtype.setname(var_type)
  1177                 global_vars.append(global_instance)
  1163                 tempvartype.setcontent(tempderivedtype)
  1178 
  1164             tempvar.settype(tempvartype)
       
  1165 
       
  1166             if var_initial != "":
       
  1167                 value = PLCOpenParser.CreateElement("initialValue", "variable")
       
  1168                 value.setvalue(var_initial)
       
  1169                 tempvar.setinitialValue(value)
       
  1170 
       
  1171             global_vars.append(tempvar)
       
  1172         return global_vars
  1179         return global_vars
  1173 
  1180 
  1174     # Function that returns the block definition associated to the block type given
  1181     # Function that returns the block definition associated to the block type given
  1175     def GetBlockType(self, typename, inputs=None, debug=False):
  1182     def GetBlockType(self, typename, inputs=None, debug=False):
  1176         result_blocktype = {}
  1183         result_blocktype = {}