plcopen/plcopen.py
changeset 278 e3ed4747086f
parent 251 cc5377a296ea
child 282 a18ddbbc5c58
equal deleted inserted replaced
277:5fc11b2d4fbb 278:e3ed4747086f
   313         if pou_type != "program":
   313         if pou_type != "program":
   314             block_infos = {"name" : pou_name, "type" : pou_type, "extensible" : False,
   314             block_infos = {"name" : pou_name, "type" : pou_type, "extensible" : False,
   315                            "inputs" : [], "outputs" : [], "comment" : "",
   315                            "inputs" : [], "outputs" : [], "comment" : "",
   316                            "generate" : generate_block, "initialise" : initialise_block}
   316                            "generate" : generate_block, "initialise" : initialise_block}
   317             if pou.getinterface():
   317             if pou.getinterface():
       
   318                 return_type = pou.interface.getreturnType()
       
   319                 if return_type:
       
   320                     var_type = return_type.getcontent()
       
   321                     if var_type["name"] == "derived":
       
   322                         block_infos["outputs"].append(("", var_type["value"].getname(), "none"))
       
   323                     elif var_type["name"] in ["string", "wstring"]:
       
   324                         block_infos["outputs"].append(("", var_type["name"].upper(), "none"))
       
   325                     else:
       
   326                         block_infos["outputs"].append(("", var_type["name"], "none"))
   318                 for type, varlist in pou.getvars():
   327                 for type, varlist in pou.getvars():
   319                     if type == "InOut":
   328                     if type == "InOut":
   320                         for var in varlist.getvariable():
   329                         for var in varlist.getvariable():
   321                             var_type = var.type.getcontent()
   330                             var_type = var.type.getcontent()
   322                             if var_type["name"] == "derived":
   331                             if var_type["name"] == "derived":
   344                                 block_infos["outputs"].append((var.getname(), var_type["value"].getname(), "none"))
   353                                 block_infos["outputs"].append((var.getname(), var_type["value"].getname(), "none"))
   345                             elif var_type["name"] in ["string", "wstring"]:
   354                             elif var_type["name"] in ["string", "wstring"]:
   346                                 block_infos["outputs"].append((var.getname(), var_type["name"].upper(), "none"))
   355                                 block_infos["outputs"].append((var.getname(), var_type["name"].upper(), "none"))
   347                             else:
   356                             else:
   348                                 block_infos["outputs"].append((var.getname(), var_type["name"], "none"))    
   357                                 block_infos["outputs"].append((var.getname(), var_type["name"], "none"))    
   349                 return_type = pou.interface.getreturnType()
       
   350                 if return_type:
       
   351                     var_type = return_type.getcontent()
       
   352                     if var_type["name"] == "derived":
       
   353                         block_infos["outputs"].append(("", var_type["value"].getname(), "none"))
       
   354                     elif var_type["name"] in ["string", "wstring"]:
       
   355                         block_infos["outputs"].append(("", var_type["name"].upper(), "none"))
       
   356                     else:
       
   357                         block_infos["outputs"].append(("", var_type["name"], "none"))
       
   358             if pou.getbodyType() in ["FBD","LD","SFC"]:
   358             if pou.getbodyType() in ["FBD","LD","SFC"]:
   359                 for instance in pou.getinstances():
   359                 for instance in pou.getinstances():
   360                     if isinstance(instance, PLCOpenClasses.get("commonObjects_comment", None)):
   360                     if isinstance(instance, PLCOpenClasses.get("commonObjects_comment", None)):
   361                         block_infos["comment"] = instance.getcontentText()
   361                         block_infos["comment"] = instance.getcontentText()
   362             self.CustomBlockTypes.append(block_infos)
   362             self.CustomBlockTypes.append(block_infos)