49 if block_infos["type"] == "function": |
49 if block_infos["type"] == "function": |
50 output_variables = block.outputVariables.getvariable() |
50 output_variables = block.outputVariables.getvariable() |
51 if not generator.ComputedBlocks.get(block, False) and not order: |
51 if not generator.ComputedBlocks.get(block, False) and not order: |
52 generator.ComputedBlocks[block] = True |
52 generator.ComputedBlocks[block] = True |
53 vars = [] |
53 vars = [] |
|
54 one_input_connected = False |
54 for i, variable in enumerate(block.inputVariables.getvariable()): |
55 for i, variable in enumerate(block.inputVariables.getvariable()): |
55 input_info = (generator.TagName, "block", block.getlocalId(), "input", i) |
56 input_info = (generator.TagName, "block", block.getlocalId(), "input", i) |
56 connections = variable.connectionPointIn.getconnections() |
57 connections = variable.connectionPointIn.getconnections() |
57 if connections is not None: |
58 if connections is not None: |
|
59 parameter = variable.getformalParameter() |
|
60 if parameter != "EN": |
|
61 one_input_connected = True |
58 value = generator.ComputeExpression(body, connections, executionOrderId > 0) |
62 value = generator.ComputeExpression(body, connections, executionOrderId > 0) |
59 if len(output_variables) > 1: |
63 if len(output_variables) > 1: |
60 parameter = variable.getformalParameter() |
|
61 vars.append([(parameter, input_info), |
64 vars.append([(parameter, input_info), |
62 (" := ", ())] + generator.ExtractModifier(variable, value, input_info)) |
65 (" := ", ())] + generator.ExtractModifier(variable, value, input_info)) |
63 else: |
66 else: |
64 vars.append(generator.ExtractModifier(variable, value, input_info)) |
67 vars.append(generator.ExtractModifier(variable, value, input_info)) |
65 for i, variable in enumerate(output_variables): |
68 if one_input_connected: |
66 parameter = variable.getformalParameter() |
69 for i, variable in enumerate(output_variables): |
67 if variable.getformalParameter() == "": |
70 parameter = variable.getformalParameter() |
68 variable_name = "%s%d"%(type, block.getlocalId()) |
71 if variable.getformalParameter() == "": |
69 else: |
72 variable_name = "%s%d"%(type, block.getlocalId()) |
70 variable_name = "%s%d_%s"%(type, block.getlocalId(), parameter) |
73 else: |
71 if generator.Interface[-1][0] != "VAR" or generator.Interface[-1][1] or generator.Interface[-1][2] or generator.Interface[-1][3]: |
74 variable_name = "%s%d_%s"%(type, block.getlocalId(), parameter) |
72 generator.Interface.append(("VAR", False, False, False, [])) |
75 if generator.Interface[-1][0] != "VAR" or generator.Interface[-1][1] or generator.Interface[-1][2] or generator.Interface[-1][3]: |
73 if variable.connectionPointOut in generator.ConnectionTypes: |
76 generator.Interface.append(("VAR", False, False, False, [])) |
74 generator.Interface[-1][4].append((generator.ConnectionTypes[variable.connectionPointOut], variable_name, None, None)) |
77 if variable.connectionPointOut in generator.ConnectionTypes: |
75 else: |
78 generator.Interface[-1][4].append((generator.ConnectionTypes[variable.connectionPointOut], variable_name, None, None)) |
76 generator.Interface[-1][4].append(("ANY", variable_name, None, None)) |
79 else: |
77 if len(output_variables) > 1 and parameter not in ["", "OUT"]: |
80 generator.Interface[-1][4].append(("ANY", variable_name, None, None)) |
78 vars.append([(parameter, (generator.TagName, "block", block.getlocalId(), "output", i)), |
81 if len(output_variables) > 1 and parameter not in ["", "OUT"]: |
79 (" => %s"%variable_name, ())]) |
82 vars.append([(parameter, (generator.TagName, "block", block.getlocalId(), "output", i)), |
80 else: |
83 (" => %s"%variable_name, ())]) |
81 output_info = (generator.TagName, "block", block.getlocalId(), "output", i) |
84 else: |
82 output_name = variable_name |
85 output_info = (generator.TagName, "block", block.getlocalId(), "output", i) |
83 generator.Program += [(generator.CurrentIndent, ()), |
86 output_name = variable_name |
84 (output_name, output_info), |
87 generator.Program += [(generator.CurrentIndent, ()), |
85 (" := ", ()), |
88 (output_name, output_info), |
86 (type, (generator.TagName, "block", block.getlocalId(), "type")), |
89 (" := ", ()), |
87 ("(", ())] |
90 (type, (generator.TagName, "block", block.getlocalId(), "type")), |
88 generator.Program += JoinList([(", ", ())], vars) |
91 ("(", ())] |
89 generator.Program += [(");\n", ())] |
92 generator.Program += JoinList([(", ", ())], vars) |
|
93 generator.Program += [(");\n", ())] |
|
94 else: |
|
95 generator.Warnings.append("\"%s\" function cancelled in \"%s\" POU: No input connected"%(type, generator.TagName.split("::")[-1])) |
90 if link: |
96 if link: |
91 connectionPoint = link.getposition()[-1] |
97 connectionPoint = link.getposition()[-1] |
92 else: |
98 else: |
93 connectionPoint = None |
99 connectionPoint = None |
94 for i, variable in enumerate(output_variables): |
100 for i, variable in enumerate(output_variables): |