PLCGenerator.py
changeset 28 fc23e1f415d8
parent 6 c8cf918ee7ea
child 29 3b7e23a323a6
--- a/PLCGenerator.py	Mon Jul 09 11:10:14 2007 +0200
+++ b/PLCGenerator.py	Tue Jul 10 09:52:53 2007 +0200
@@ -66,7 +66,7 @@
     
     def IsAlreadyDefined(self, name):
         for list_type, retain, constant, vars in self.Interface:
-            for var_type, var_name in vars:
+            for var_type, var_name, var_initial in vars:
                 if name == var_name:
                     return True
         return False
@@ -78,7 +78,12 @@
             variables = []
             for var in varlist["value"].getVariable():
                 type = var.getType().getValue()
-                variables.append((type, var.getName()))
+                initial = var.getInitialValue()
+                if initial:
+                    initial_value = initial.getValue()
+                else:
+                    initial_value = None
+                variables.append((type, var.getName(), initial_value))
             self.Interface.append((varTypeNames[varlist["name"]], varlist["value"].getRetain(), 
                             varlist["value"].getConstant(), variables))
     
@@ -138,7 +143,7 @@
                 if self.Interface[-1][0] != "VAR" or self.Interface[-1][1] or self.Interface[-1][2]:
                     self.Interface.append(("VAR", False, False, []))
                 if not self.IsAlreadyDefined(name):
-                    self.Interface[-1][3].append((type, name))
+                    self.Interface[-1][3].append((type, name, None))
                     vars = []
                     for variable in instance.inputVariables.getVariable():
                         connections = variable.connectionPointIn.getConnections()
@@ -428,7 +433,7 @@
         while self.IsAlreadyDefined(name):
             i += 1
             name = "%s%d"%(edge, i)
-        self.Interface[-1][3].append((edge, name))
+        self.Interface[-1][3].append((edge, name, None))
         self.Program += "  %s(CLK := %s);\n"%(name, text)
         return "%s.Q"%name
     
@@ -445,8 +450,11 @@
             if constant:
                 program += " CONSTANT"
             program += "\n"
-            for var_type, var_name in variables:
-                program += "    %s : %s;\n"%(var_name, var_type)
+            for var_type, var_name, var_initial in variables:
+                if var_initial != None:
+                    program += "    %s : %s := %s;\n"%(var_name, var_type, {"TRUE":"0","FALSE":"1"}.get(str(var_initial).upper(),str(var_initial)))
+                else:
+                    program += "    %s : %s;\n"%(var_name, var_type)
             program += "  END_VAR\n"
         program += "\n"
         program += self.Program