plcopen/structures.py
changeset 208 c70aefcadf66
parent 194 1b3f8b4f8e04
child 210 17ce08b81775
equal deleted inserted replaced
207:b1144bb36605 208:c70aefcadf66
    41     block_infos = GetBlockType(type)
    41     block_infos = GetBlockType(type)
    42     if block_infos["type"] == "function":
    42     if block_infos["type"] == "function":
    43         output_variable = block.outputVariables.getvariable()[0]
    43         output_variable = block.outputVariables.getvariable()[0]
    44         output_name = "%s%d_OUT"%(type, block.getlocalId())
    44         output_name = "%s%d_OUT"%(type, block.getlocalId())
    45         if not generator.ComputedBlocks.get(block, False) and not order:
    45         if not generator.ComputedBlocks.get(block, False) and not order:
       
    46             generator.ComputedBlocks[block] = True
    46             if generator.Interface[-1][0] != "VAR" or generator.Interface[-1][1] or generator.Interface[-1][2] or generator.Interface[-1][3]:
    47             if generator.Interface[-1][0] != "VAR" or generator.Interface[-1][1] or generator.Interface[-1][2] or generator.Interface[-1][3]:
    47                 generator.Interface.append(("VAR", False, False, False, []))
    48                 generator.Interface.append(("VAR", False, False, False, []))
    48             if output_variable.connectionPointOut in generator.ConnectionTypes:
    49             if output_variable.connectionPointOut in generator.ConnectionTypes:
    49                 generator.Interface[-1][4].append((generator.ConnectionTypes[output_variable.connectionPointOut], output_name, None, None))
    50                 generator.Interface[-1][4].append((generator.ConnectionTypes[output_variable.connectionPointOut], output_name, None, None))
    50             else:
    51             else:
    62                         else:
    63                         else:
    63                             paths = paths[0] 
    64                             paths = paths[0] 
    64                         value = generator.ComputeLDExpression(paths, True)
    65                         value = generator.ComputeLDExpression(paths, True)
    65                     vars.append(generator.ExtractModifier(variable, value))
    66                     vars.append(generator.ExtractModifier(variable, value))
    66             generator.Program += "  %s := %s(%s);\n"%(output_name, type, ", ".join(vars))
    67             generator.Program += "  %s := %s(%s);\n"%(output_name, type, ", ".join(vars))
    67             generator.ComputedBlocks[block] = True
       
    68         return generator.ExtractModifier(output_variable, output_name)
    68         return generator.ExtractModifier(output_variable, output_name)
    69     elif block_infos["type"] == "functionBlock":
    69     elif block_infos["type"] == "functionBlock":
    70         if not generator.ComputedBlocks.get(block, False) and not order:
    70         if not generator.ComputedBlocks.get(block, False) and not order:
       
    71             generator.ComputedBlocks[block] = True
    71             vars = []
    72             vars = []
    72             for variable in block.inputVariables.getvariable():
    73             for variable in block.inputVariables.getvariable():
    73                 connections = variable.connectionPointIn.getconnections()
    74                 connections = variable.connectionPointIn.getconnections()
    74                 if connections and len(connections) == 1:
    75                 if connections and len(connections) == 1:
    75                     parameter = variable.getformalParameter()
    76                     parameter = variable.getformalParameter()
    82                         else:
    83                         else:
    83                             paths = paths[0] 
    84                             paths = paths[0] 
    84                         value = generator.ComputeLDExpression(paths, True)
    85                         value = generator.ComputeLDExpression(paths, True)
    85                     vars.append("%s := %s"%(parameter, generator.ExtractModifier(variable, value)))
    86                     vars.append("%s := %s"%(parameter, generator.ExtractModifier(variable, value)))
    86             generator.Program += "  %s(%s);\n"%(name, ", ".join(vars))
    87             generator.Program += "  %s(%s);\n"%(name, ", ".join(vars))
    87             generator.ComputedBlocks[block] = True
       
    88         if link:
    88         if link:
    89             connectionPoint = link.getposition()[-1]
    89             connectionPoint = link.getposition()[-1]
    90         else:
    90         else:
    91             connectionPoint = None
    91             connectionPoint = None
    92         for variable in block.outputVariables.getvariable():
    92         for variable in block.outputVariables.getvariable():