--- a/plcopen/structures.py Mon Jan 19 17:07:03 2009 +0100
+++ b/plcopen/structures.py Mon Jan 19 17:08:17 2009 +0100
@@ -51,42 +51,48 @@
if not generator.ComputedBlocks.get(block, False) and not order:
generator.ComputedBlocks[block] = True
vars = []
+ one_input_connected = False
for i, variable in enumerate(block.inputVariables.getvariable()):
input_info = (generator.TagName, "block", block.getlocalId(), "input", i)
connections = variable.connectionPointIn.getconnections()
if connections is not None:
+ parameter = variable.getformalParameter()
+ if parameter != "EN":
+ one_input_connected = True
value = generator.ComputeExpression(body, connections, executionOrderId > 0)
if len(output_variables) > 1:
- parameter = variable.getformalParameter()
vars.append([(parameter, input_info),
(" := ", ())] + generator.ExtractModifier(variable, value, input_info))
else:
vars.append(generator.ExtractModifier(variable, value, input_info))
- for i, variable in enumerate(output_variables):
- parameter = variable.getformalParameter()
- if variable.getformalParameter() == "":
- variable_name = "%s%d"%(type, block.getlocalId())
- else:
- variable_name = "%s%d_%s"%(type, block.getlocalId(), parameter)
- if generator.Interface[-1][0] != "VAR" or generator.Interface[-1][1] or generator.Interface[-1][2] or generator.Interface[-1][3]:
- generator.Interface.append(("VAR", False, False, False, []))
- if variable.connectionPointOut in generator.ConnectionTypes:
- generator.Interface[-1][4].append((generator.ConnectionTypes[variable.connectionPointOut], variable_name, None, None))
- else:
- generator.Interface[-1][4].append(("ANY", variable_name, None, None))
- if len(output_variables) > 1 and parameter not in ["", "OUT"]:
- vars.append([(parameter, (generator.TagName, "block", block.getlocalId(), "output", i)),
- (" => %s"%variable_name, ())])
- else:
- output_info = (generator.TagName, "block", block.getlocalId(), "output", i)
- output_name = variable_name
- generator.Program += [(generator.CurrentIndent, ()),
- (output_name, output_info),
- (" := ", ()),
- (type, (generator.TagName, "block", block.getlocalId(), "type")),
- ("(", ())]
- generator.Program += JoinList([(", ", ())], vars)
- generator.Program += [(");\n", ())]
+ if one_input_connected:
+ for i, variable in enumerate(output_variables):
+ parameter = variable.getformalParameter()
+ if variable.getformalParameter() == "":
+ variable_name = "%s%d"%(type, block.getlocalId())
+ else:
+ variable_name = "%s%d_%s"%(type, block.getlocalId(), parameter)
+ if generator.Interface[-1][0] != "VAR" or generator.Interface[-1][1] or generator.Interface[-1][2] or generator.Interface[-1][3]:
+ generator.Interface.append(("VAR", False, False, False, []))
+ if variable.connectionPointOut in generator.ConnectionTypes:
+ generator.Interface[-1][4].append((generator.ConnectionTypes[variable.connectionPointOut], variable_name, None, None))
+ else:
+ generator.Interface[-1][4].append(("ANY", variable_name, None, None))
+ if len(output_variables) > 1 and parameter not in ["", "OUT"]:
+ vars.append([(parameter, (generator.TagName, "block", block.getlocalId(), "output", i)),
+ (" => %s"%variable_name, ())])
+ else:
+ output_info = (generator.TagName, "block", block.getlocalId(), "output", i)
+ output_name = variable_name
+ generator.Program += [(generator.CurrentIndent, ()),
+ (output_name, output_info),
+ (" := ", ()),
+ (type, (generator.TagName, "block", block.getlocalId(), "type")),
+ ("(", ())]
+ generator.Program += JoinList([(", ", ())], vars)
+ generator.Program += [(");\n", ())]
+ else:
+ generator.Warnings.append("\"%s\" function cancelled in \"%s\" POU: No input connected"%(type, generator.TagName.split("::")[-1]))
if link:
connectionPoint = link.getposition()[-1]
else: