1231 infos["height"] = instance.getHeight() |
1231 infos["height"] = instance.getHeight() |
1232 infos["width"] = instance.getWidth() |
1232 infos["width"] = instance.getWidth() |
1233 if isinstance(instance, plcopen.block): |
1233 if isinstance(instance, plcopen.block): |
1234 infos["name"] = instance.getInstanceName() |
1234 infos["name"] = instance.getInstanceName() |
1235 infos["type"] = instance.getTypeName() |
1235 infos["type"] = instance.getTypeName() |
|
1236 executionOrder = instance.getExecutionOrderId() |
|
1237 if executionOrder is not None: |
|
1238 infos["executionOrder"] = executionOrder |
|
1239 else: |
|
1240 infos["executionOrder"] = 0 |
1236 infos["connectors"] = {"inputs":[],"outputs":[]} |
1241 infos["connectors"] = {"inputs":[],"outputs":[]} |
1237 for variable in instance.inputVariables.getVariable(): |
1242 for variable in instance.inputVariables.getVariable(): |
1238 connector = {} |
1243 connector = {} |
1239 connector["name"] = variable.getFormalParameter() |
1244 connector["name"] = variable.getFormalParameter() |
1240 connector["position"] = variable.connectionPointIn.getRelPosition() |
1245 connector["position"] = variable.connectionPointIn.getRelPosition() |
1256 infos["connectors"]["outputs"].append(connector) |
1261 infos["connectors"]["outputs"].append(connector) |
1257 elif isinstance(instance, plcopen.inVariable): |
1262 elif isinstance(instance, plcopen.inVariable): |
1258 infos["name"] = instance.getExpression() |
1263 infos["name"] = instance.getExpression() |
1259 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"]) |
1264 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"]) |
1260 infos["type"] = "input" |
1265 infos["type"] = "input" |
|
1266 executionOrder = instance.getExecutionOrderId() |
|
1267 if executionOrder is not None: |
|
1268 infos["executionOrder"] = executionOrder |
|
1269 else: |
|
1270 infos["executionOrder"] = 0 |
1261 infos["connector"] = {} |
1271 infos["connector"] = {} |
1262 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition() |
1272 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition() |
1263 infos["connector"]["negated"] = instance.getNegated() |
1273 infos["connector"]["negated"] = instance.getNegated() |
1264 infos["connector"]["edge"] = instance.getConnectorEdge() |
1274 infos["connector"]["edge"] = instance.getConnectorEdge() |
1265 elif isinstance(instance, plcopen.outVariable): |
1275 elif isinstance(instance, plcopen.outVariable): |
1266 infos["name"] = instance.getExpression() |
1276 infos["name"] = instance.getExpression() |
1267 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"]) |
1277 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"]) |
1268 infos["type"] = "output" |
1278 infos["type"] = "output" |
|
1279 executionOrder = instance.getExecutionOrderId() |
|
1280 if executionOrder is not None: |
|
1281 infos["executionOrder"] = executionOrder |
|
1282 else: |
|
1283 infos["executionOrder"] = 0 |
1269 infos["connector"] = {} |
1284 infos["connector"] = {} |
1270 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition() |
1285 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition() |
1271 infos["connector"]["negated"] = instance.getNegated() |
1286 infos["connector"]["negated"] = instance.getNegated() |
1272 infos["connector"]["edge"] = instance.getConnectorEdge() |
1287 infos["connector"]["edge"] = instance.getConnectorEdge() |
1273 infos["connector"]["links"] = [] |
1288 infos["connector"]["links"] = [] |
1278 infos["connector"]["links"].append(dic) |
1293 infos["connector"]["links"].append(dic) |
1279 elif isinstance(instance, plcopen.inOutVariable): |
1294 elif isinstance(instance, plcopen.inOutVariable): |
1280 infos["name"] = instance.getExpression() |
1295 infos["name"] = instance.getExpression() |
1281 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"]) |
1296 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"]) |
1282 infos["type"] = "inout" |
1297 infos["type"] = "inout" |
|
1298 executionOrder = instance.getExecutionOrderId() |
|
1299 if executionOrder is not None: |
|
1300 infos["executionOrder"] = executionOrder |
|
1301 else: |
|
1302 infos["executionOrder"] = 0 |
1283 infos["connectors"] = {"input":{},"output":{}} |
1303 infos["connectors"] = {"input":{},"output":{}} |
1284 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition() |
1304 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition() |
1285 infos["connectors"]["output"]["negated"] = instance.getNegatedOut() |
1305 infos["connectors"]["output"]["negated"] = instance.getNegatedOut() |
1286 infos["connectors"]["output"]["edge"] = instance.getOutputEdge() |
1306 infos["connectors"]["output"]["edge"] = instance.getOutputEdge() |
1287 infos["connectors"]["input"]["position"] = instance.connectionPointIn.getRelPosition() |
1307 infos["connectors"]["input"]["position"] = instance.connectionPointIn.getRelPosition() |
1295 infos["connectors"]["input"]["links"].append(dic) |
1315 infos["connectors"]["input"]["links"].append(dic) |
1296 elif isinstance(instance, plcopen.continuation): |
1316 elif isinstance(instance, plcopen.continuation): |
1297 infos["name"] = instance.getName() |
1317 infos["name"] = instance.getName() |
1298 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"]) |
1318 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"]) |
1299 infos["type"] = "continuation" |
1319 infos["type"] = "continuation" |
|
1320 executionOrder = instance.getExecutionOrderId() |
|
1321 if executionOrder is not None: |
|
1322 infos["executionOrder"] = executionOrder |
|
1323 else: |
|
1324 infos["executionOrder"] = 0 |
1300 infos["connector"] = {} |
1325 infos["connector"] = {} |
1301 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition() |
1326 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition() |
1302 elif isinstance(instance, plcopen.connector): |
1327 elif isinstance(instance, plcopen.connector): |
1303 infos["name"] = instance.getName() |
1328 infos["name"] = instance.getName() |
1304 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"]) |
1329 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"]) |
1305 infos["type"] = "connection" |
1330 infos["type"] = "connection" |
|
1331 executionOrder = instance.getExecutionOrderId() |
|
1332 if executionOrder is not None: |
|
1333 infos["executionOrder"] = executionOrder |
|
1334 else: |
|
1335 infos["executionOrder"] = 0 |
1306 infos["connector"] = {} |
1336 infos["connector"] = {} |
1307 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition() |
1337 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition() |
1308 infos["connector"]["links"] = [] |
1338 infos["connector"]["links"] = [] |
1309 connections = instance.connectionPointIn.getConnections() |
1339 connections = instance.connectionPointIn.getConnections() |
1310 if connections: |
1340 if connections: |
1331 for link in connection.getConnections(): |
1361 for link in connection.getConnections(): |
1332 dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()} |
1362 dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()} |
1333 connector["links"].append(dic) |
1363 connector["links"].append(dic) |
1334 infos["connectors"].append(connector) |
1364 infos["connectors"].append(connector) |
1335 elif isinstance(instance, plcopen.contact): |
1365 elif isinstance(instance, plcopen.contact): |
|
1366 infos["name"] = instance.getVariable() |
1336 infos["type"] = "contact" |
1367 infos["type"] = "contact" |
1337 infos["name"] = instance.getVariable() |
1368 executionOrder = instance.getExecutionOrderId() |
|
1369 if executionOrder is not None: |
|
1370 infos["executionOrder"] = executionOrder |
|
1371 else: |
|
1372 infos["executionOrder"] = 0 |
1338 infos["negated"] = instance.getNegated() |
1373 infos["negated"] = instance.getNegated() |
1339 infos["edge"] = instance.getContactEdge() |
1374 infos["edge"] = instance.getContactEdge() |
1340 infos["connectors"] = {"input":{},"output":{}} |
1375 infos["connectors"] = {"input":{},"output":{}} |
1341 infos["connectors"]["input"]["position"] = instance.connectionPointIn.getRelPosition() |
1376 infos["connectors"]["input"]["position"] = instance.connectionPointIn.getRelPosition() |
1342 infos["connectors"]["input"]["links"] = [] |
1377 infos["connectors"]["input"]["links"] = [] |
1345 for link in connections: |
1380 for link in connections: |
1346 dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()} |
1381 dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()} |
1347 infos["connectors"]["input"]["links"].append(dic) |
1382 infos["connectors"]["input"]["links"].append(dic) |
1348 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition() |
1383 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition() |
1349 elif isinstance(instance, plcopen.coil): |
1384 elif isinstance(instance, plcopen.coil): |
|
1385 infos["name"] = instance.getVariable() |
1350 infos["type"] = "coil" |
1386 infos["type"] = "coil" |
1351 infos["name"] = instance.getVariable() |
1387 executionOrder = instance.getExecutionOrderId() |
|
1388 if executionOrder is not None: |
|
1389 infos["executionOrder"] = executionOrder |
|
1390 else: |
|
1391 infos["executionOrder"] = 0 |
1352 infos["negated"] = instance.getNegated() |
1392 infos["negated"] = instance.getNegated() |
1353 infos["storage"] = instance.getCoilStorage() |
1393 infos["storage"] = instance.getCoilStorage() |
1354 infos["connectors"] = {"input":{},"output":{}} |
1394 infos["connectors"] = {"input":{},"output":{}} |
1355 infos["connectors"]["input"]["position"] = instance.connectionPointIn.getRelPosition() |
1395 infos["connectors"]["input"]["position"] = instance.connectionPointIn.getRelPosition() |
1356 infos["connectors"]["input"]["links"] = [] |
1396 infos["connectors"]["input"]["links"] = [] |
1359 for link in connections: |
1399 for link in connections: |
1360 dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()} |
1400 dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()} |
1361 infos["connectors"]["input"]["links"].append(dic) |
1401 infos["connectors"]["input"]["links"].append(dic) |
1362 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition() |
1402 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition() |
1363 elif isinstance(instance, plcopen.step): |
1403 elif isinstance(instance, plcopen.step): |
|
1404 infos["name"] = instance.getName() |
1364 infos["type"] = "step" |
1405 infos["type"] = "step" |
1365 infos["name"] = instance.getName() |
|
1366 infos["initial"] = instance.getInitialStep() |
1406 infos["initial"] = instance.getInitialStep() |
1367 infos["connectors"] = {} |
1407 infos["connectors"] = {} |
1368 if instance.connectionPointIn: |
1408 if instance.connectionPointIn: |
1369 infos["connectors"]["input"] = {} |
1409 infos["connectors"]["input"] = {} |
1370 infos["connectors"]["input"]["position"] = instance.connectionPointIn.getRelPosition() |
1410 infos["connectors"]["input"]["position"] = instance.connectionPointIn.getRelPosition() |
1468 dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()} |
1508 dic = {"refLocalId":link.getRefLocalId(),"points":link.getPoints(),"formalParameter":link.getFormalParameter()} |
1469 infos["connector"]["links"].append(dic) |
1509 infos["connector"]["links"].append(dic) |
1470 return infos |
1510 return infos |
1471 return False |
1511 return False |
1472 |
1512 |
|
1513 def ClearCurrentExecutionOrder(self): |
|
1514 self.GetCurrentElementEditing().resetExecutionOrder() |
|
1515 |
|
1516 def ResetCurrentExecutionOrder(self): |
|
1517 self.GetCurrentElementEditing().compileExecutionOrder() |
|
1518 |
1473 # Return the variable type of the given pou |
1519 # Return the variable type of the given pou |
1474 def GetCurrentPouVarValueType(self, varname): |
1520 def GetCurrentPouVarValueType(self, varname): |
1475 current_name = self.ElementsOpened[self.CurrentElementEditing] |
1521 current_name = self.ElementsOpened[self.CurrentElementEditing] |
1476 words = current_name.split("::") |
1522 words = current_name.split("::") |
1477 if words[0] in ["P","T","A"]: |
1523 if words[0] in ["P","T","A"]: |
1531 for param, value in infos.items(): |
1577 for param, value in infos.items(): |
1532 if param == "name": |
1578 if param == "name": |
1533 block.setInstanceName(value) |
1579 block.setInstanceName(value) |
1534 elif param == "type": |
1580 elif param == "type": |
1535 block.setTypeName(value) |
1581 block.setTypeName(value) |
|
1582 elif param == "executionOrder" and block.getExecutionOrderId() != value: |
|
1583 self.GetCurrentElementEditing().setElementExecutionOrder(block, value) |
1536 elif param == "height": |
1584 elif param == "height": |
1537 block.setHeight(value) |
1585 block.setHeight(value) |
1538 elif param == "width": |
1586 elif param == "width": |
1539 block.setWidth(value) |
1587 block.setWidth(value) |
1540 elif param == "x": |
1588 elif param == "x": |
1584 def SetCurrentElementEditingVariableInfos(self, id, infos): |
1632 def SetCurrentElementEditingVariableInfos(self, id, infos): |
1585 variable = self.GetCurrentElementEditing().getInstance(id) |
1633 variable = self.GetCurrentElementEditing().getInstance(id) |
1586 for param, value in infos.items(): |
1634 for param, value in infos.items(): |
1587 if param == "name": |
1635 if param == "name": |
1588 variable.setExpression(value) |
1636 variable.setExpression(value) |
|
1637 elif param == "executionOrder" and variable.getExecutionOrderId() != value: |
|
1638 self.GetCurrentElementEditing().setElementExecutionOrder(variable, value) |
1589 elif param == "height": |
1639 elif param == "height": |
1590 variable.setHeight(value) |
1640 variable.setHeight(value) |
1591 elif param == "width": |
1641 elif param == "width": |
1592 variable.setWidth(value) |
1642 variable.setWidth(value) |
1593 elif param == "x": |
1643 elif param == "x": |