PLCControler.py
changeset 118 0c53d6a36013
parent 117 bbe0697cf1ea
child 121 40b91ba978db
--- a/PLCControler.py	Fri Oct 26 17:04:18 2007 +0200
+++ b/PLCControler.py	Tue Oct 30 16:53:08 2007 +0100
@@ -1233,6 +1233,11 @@
             if isinstance(instance, plcopen.block):
                 infos["name"] = instance.getInstanceName()
                 infos["type"] = instance.getTypeName()
+                executionOrder = instance.getExecutionOrderId()
+                if executionOrder is not None:
+                    infos["executionOrder"] = executionOrder
+                else:
+                    infos["executionOrder"] = 0
                 infos["connectors"] = {"inputs":[],"outputs":[]}
                 for variable in instance.inputVariables.getVariable():
                     connector = {}
@@ -1258,6 +1263,11 @@
                 infos["name"] = instance.getExpression()
                 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
                 infos["type"] = "input"
+                executionOrder = instance.getExecutionOrderId()
+                if executionOrder is not None:
+                    infos["executionOrder"] = executionOrder
+                else:
+                    infos["executionOrder"] = 0
                 infos["connector"] = {}
                 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition()
                 infos["connector"]["negated"] = instance.getNegated()
@@ -1266,6 +1276,11 @@
                 infos["name"] = instance.getExpression()
                 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
                 infos["type"] = "output"
+                executionOrder = instance.getExecutionOrderId()
+                if executionOrder is not None:
+                    infos["executionOrder"] = executionOrder
+                else:
+                    infos["executionOrder"] = 0
                 infos["connector"] = {}
                 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition()
                 infos["connector"]["negated"] = instance.getNegated()
@@ -1280,6 +1295,11 @@
                 infos["name"] = instance.getExpression()
                 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
                 infos["type"] = "inout"
+                executionOrder = instance.getExecutionOrderId()
+                if executionOrder is not None:
+                    infos["executionOrder"] = executionOrder
+                else:
+                    infos["executionOrder"] = 0
                 infos["connectors"] = {"input":{},"output":{}}
                 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition()
                 infos["connectors"]["output"]["negated"] = instance.getNegatedOut()
@@ -1297,12 +1317,22 @@
                 infos["name"] = instance.getName()
                 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
                 infos["type"] = "continuation"
+                executionOrder = instance.getExecutionOrderId()
+                if executionOrder is not None:
+                    infos["executionOrder"] = executionOrder
+                else:
+                    infos["executionOrder"] = 0
                 infos["connector"] = {}
                 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition()
             elif isinstance(instance, plcopen.connector):
                 infos["name"] = instance.getName()
                 infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
                 infos["type"] = "connection"
+                executionOrder = instance.getExecutionOrderId()
+                if executionOrder is not None:
+                    infos["executionOrder"] = executionOrder
+                else:
+                    infos["executionOrder"] = 0
                 infos["connector"] = {}
                 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition()
                 infos["connector"]["links"] = []
@@ -1333,8 +1363,13 @@
                         connector["links"].append(dic)
                     infos["connectors"].append(connector)
             elif isinstance(instance, plcopen.contact):
+                infos["name"] = instance.getVariable()
                 infos["type"] = "contact"
-                infos["name"] = instance.getVariable()
+                executionOrder = instance.getExecutionOrderId()
+                if executionOrder is not None:
+                    infos["executionOrder"] = executionOrder
+                else:
+                    infos["executionOrder"] = 0
                 infos["negated"] = instance.getNegated()
                 infos["edge"] = instance.getContactEdge()
                 infos["connectors"] = {"input":{},"output":{}}
@@ -1347,8 +1382,13 @@
                         infos["connectors"]["input"]["links"].append(dic)
                 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition()
             elif isinstance(instance, plcopen.coil):
+                infos["name"] = instance.getVariable()
                 infos["type"] = "coil"
-                infos["name"] = instance.getVariable()
+                executionOrder = instance.getExecutionOrderId()
+                if executionOrder is not None:
+                    infos["executionOrder"] = executionOrder
+                else:
+                    infos["executionOrder"] = 0
                 infos["negated"] = instance.getNegated()
                 infos["storage"] = instance.getCoilStorage()
                 infos["connectors"] = {"input":{},"output":{}}
@@ -1361,8 +1401,8 @@
                         infos["connectors"]["input"]["links"].append(dic)
                 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition()
             elif isinstance(instance, plcopen.step):
+                infos["name"] = instance.getName()
                 infos["type"] = "step"
-                infos["name"] = instance.getName()
                 infos["initial"] = instance.getInitialStep()
                 infos["connectors"] = {}
                 if instance.connectionPointIn:
@@ -1470,6 +1510,12 @@
             return infos
         return False
     
+    def ClearCurrentExecutionOrder(self):
+        self.GetCurrentElementEditing().resetExecutionOrder()
+    
+    def ResetCurrentExecutionOrder(self):
+        self.GetCurrentElementEditing().compileExecutionOrder()
+    
     # Return the variable type of the given pou
     def GetCurrentPouVarValueType(self, varname):
         current_name = self.ElementsOpened[self.CurrentElementEditing]
@@ -1533,6 +1579,8 @@
                 block.setInstanceName(value)
             elif param == "type":
                 block.setTypeName(value)
+            elif param == "executionOrder" and block.getExecutionOrderId() != value:
+                self.GetCurrentElementEditing().setElementExecutionOrder(block, value)
             elif param == "height":
                 block.setHeight(value)
             elif param == "width":
@@ -1586,6 +1634,8 @@
         for param, value in infos.items():
             if param == "name":
                 variable.setExpression(value)    
+            elif param == "executionOrder" and variable.getExecutionOrderId() != value:
+                self.GetCurrentElementEditing().setElementExecutionOrder(variable, value)
             elif param == "height":
                 variable.setHeight(value)
             elif param == "width":