PLCControler.py
changeset 45 42637f721b5b
parent 42 4a8400732001
child 46 4379e98a30aa
equal deleted inserted replaced
44:c6e153273ea1 45:42637f721b5b
  1071                     connector["negated"] = variable.getNegated()
  1071                     connector["negated"] = variable.getNegated()
  1072                     connector["edge"] = variable.getConnectorEdge()
  1072                     connector["edge"] = variable.getConnectorEdge()
  1073                     infos["connectors"]["outputs"].append(connector)
  1073                     infos["connectors"]["outputs"].append(connector)
  1074             elif isinstance(instance, plcopen.inVariable):
  1074             elif isinstance(instance, plcopen.inVariable):
  1075                 infos["name"] = instance.getExpression()
  1075                 infos["name"] = instance.getExpression()
  1076                 infos["value_type"] = self.GetPouVarValueType(self.GetCurrentElementEditing(), infos["name"])
  1076                 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
  1077                 infos["type"] = "input"
  1077                 infos["type"] = "input"
  1078                 infos["connector"] = {}
  1078                 infos["connector"] = {}
  1079                 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition()
  1079                 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition()
  1080                 infos["connector"]["negated"] = instance.getNegated()
  1080                 infos["connector"]["negated"] = instance.getNegated()
  1081                 infos["connector"]["edge"] = instance.getConnectorEdge()
  1081                 infos["connector"]["edge"] = instance.getConnectorEdge()
  1082             elif isinstance(instance, plcopen.outVariable):
  1082             elif isinstance(instance, plcopen.outVariable):
  1083                 infos["name"] = instance.getExpression()
  1083                 infos["name"] = instance.getExpression()
  1084                 infos["value_type"] = self.GetPouVarValueType(self.GetCurrentElementEditing(), infos["name"])
  1084                 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
  1085                 infos["type"] = "output"
  1085                 infos["type"] = "output"
  1086                 infos["connector"] = {}
  1086                 infos["connector"] = {}
  1087                 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition()
  1087                 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition()
  1088                 infos["connector"]["negated"] = instance.getNegated()
  1088                 infos["connector"]["negated"] = instance.getNegated()
  1089                 infos["connector"]["edge"] = instance.getConnectorEdge()
  1089                 infos["connector"]["edge"] = instance.getConnectorEdge()
  1093                     for link in connections:
  1093                     for link in connections:
  1094                         dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()}
  1094                         dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()}
  1095                         infos["connector"]["links"].append(dic)
  1095                         infos["connector"]["links"].append(dic)
  1096             elif isinstance(instance, plcopen.inOutVariable):
  1096             elif isinstance(instance, plcopen.inOutVariable):
  1097                 infos["name"] = instance.getExpression()
  1097                 infos["name"] = instance.getExpression()
  1098                 infos["value_type"] = self.GetPouVarValueType(self.GetCurrentElementEditing(), infos["name"])
  1098                 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
  1099                 infos["type"] = "inout"
  1099                 infos["type"] = "inout"
  1100                 infos["connectors"] = {"input":{},"output":{}}
  1100                 infos["connectors"] = {"input":{},"output":{}}
  1101                 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition()
  1101                 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition()
  1102                 infos["connectors"]["output"]["negated"] = instance.getNegatedOut()
  1102                 infos["connectors"]["output"]["negated"] = instance.getNegatedOut()
  1103                 infos["connectors"]["output"]["edge"] = instance.getOutputEdge()
  1103                 infos["connectors"]["output"]["edge"] = instance.getOutputEdge()
  1110                     for link in connections:
  1110                     for link in connections:
  1111                         dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()}
  1111                         dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()}
  1112                         infos["connectors"]["input"]["links"].append(dic)
  1112                         infos["connectors"]["input"]["links"].append(dic)
  1113             elif isinstance(instance, plcopen.continuation):
  1113             elif isinstance(instance, plcopen.continuation):
  1114                 infos["name"] = instance.getName()
  1114                 infos["name"] = instance.getName()
  1115                 infos["value_type"] = self.GetPouVarValueType(self.GetCurrentElementEditing(), infos["name"])
  1115                 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
  1116                 infos["type"] = "continuation"
  1116                 infos["type"] = "continuation"
  1117                 infos["connector"] = {}
  1117                 infos["connector"] = {}
  1118                 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition()
  1118                 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition()
  1119             elif isinstance(instance, plcopen.connector):
  1119             elif isinstance(instance, plcopen.connector):
  1120                 infos["name"] = instance.getName()
  1120                 infos["name"] = instance.getName()
  1121                 infos["value_type"] = self.GetPouVarValueType(self.GetCurrentElementEditing(), infos["name"])
  1121                 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
  1122                 infos["type"] = "connection"
  1122                 infos["type"] = "connection"
  1123                 infos["connector"] = {}
  1123                 infos["connector"] = {}
  1124                 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition()
  1124                 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition()
  1125                 infos["connector"]["links"] = []
  1125                 infos["connector"]["links"] = []
  1126                 connections = instance.connectionPointIn.getConnections()
  1126                 connections = instance.connectionPointIn.getConnections()
  1271                         infos["connector"]["links"].append(dic)
  1271                         infos["connector"]["links"].append(dic)
  1272             return infos
  1272             return infos
  1273         return False
  1273         return False
  1274     
  1274     
  1275     # Return the variable type of the given pou
  1275     # Return the variable type of the given pou
  1276     def GetPouVarValueType(self, pou, varname):
  1276     def GetCurrentPouVarValueType(self, varname):
       
  1277         current_name = self.ElementsOpened[self.CurrentElementEditing]
       
  1278         words = current_name.split("::")
       
  1279         if len(words) == 1:
       
  1280             pou = self.Project.getPou(current_name)
       
  1281         else:
       
  1282             pou = self.Project.getPou(words[1])
  1277         for type, varlist in pou.getVars():
  1283         for type, varlist in pou.getVars():
  1278             for var in varlist.getVariable():
  1284             for var in varlist.getVariable():
  1279                 if var.getName() == varname:
  1285                 if var.getName() == varname:
  1280                     return var.getType()
  1286                     return var.getType()
  1281         return ""
  1287         return ""