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 = {} |