--- a/PLCGenerator.py Wed Jan 02 18:15:31 2008 +0100
+++ b/PLCGenerator.py Wed Jan 02 18:16:12 2008 +0100
@@ -61,18 +61,18 @@
datatype = currentProject.getDataType(datatype_name)
datatype_def = " %s :"%datatype.getName()
basetype_content = datatype.baseType.getContent()
- if basetype_content["value"] is None:
- datatype_def += " %s"%basetype_content["name"]
+ if basetype_content["name"] in ["string", "wstring"]:
+ datatype_def += " %s"%basetype_content["name"].upper()
elif basetype_content["name"] == "derived":
basetype_name = basetype_content["value"].getName()
GenerateDataType(basetype_name)
datatype_def += " %s"%basetype_name
elif basetype_content["name"] in ["subrangeSigned", "subrangeUnsigned"]:
base_type = basetype_content["value"].baseType.getContent()
- if base_type["value"] is None:
+ if base_type["name"] == "derived":
+ basetype_name = base_type["value"].getName()
+ else:
basetype_name = base_type["name"]
- else:
- basetype_name = base_type["value"].getName()
GenerateDataType(basetype_name)
min_value = basetype_content["value"].range.getLower()
max_value = basetype_content["value"].range.getUpper()
@@ -84,15 +84,19 @@
datatype_def += " (%s)"%", ".join(values)
elif basetype_content["name"] == "array":
base_type = basetype_content["value"].baseType.getContent()
- if base_type["value"] is None:
+ if base_type["name"] == "derived":
+ basetype_name = base_type["value"].getName()
+ elif base_type["name"] in ["string", "wstring"]:
+ basetype_name = base_type["name"].upper()
+ else:
basetype_name = base_type["name"]
- else:
- basetype_name = base_type["value"].getName()
GenerateDataType(basetype_name)
dimensions = []
for dimension in basetype_content["value"].getDimension():
dimensions.append("0..%d"%(dimension.getUpper() - 1))
datatype_def += " ARRAY [%s] OF %s"%(",".join(dimensions), basetype_name)
+ else:
+ datatype_def += " %s"%basetype_content["name"]
if datatype.initialValue is not None:
datatype_def += " := %s"%str(datatype.initialValue.getValue())
currentProgram += "%s;\n"%datatype_def
@@ -123,10 +127,12 @@
config += "\n"
for var in varlist.getVariable():
vartype_content = var.getType().getContent()
- if vartype_content["value"] is None:
+ if vartype_content["name"] == "derived":
+ var_type = vartype_content["value"].getName()
+ elif vartype_content["name"] in ["string", "wstring"]:
+ var_type = vartype_content["name"].upper()
+ else:
var_type = vartype_content["name"]
- else:
- var_type = vartype_content["value"].getName()
config += " %s "%var.getName()
address = var.getAddress()
if address:
@@ -160,10 +166,12 @@
resrce += "\n"
for var in varlist.getVariable():
vartype_content = var.getType().getContent()
- if vartype_content["value"] is None:
+ if vartype_content["name"] == "derived":
+ var_type = vartype_content["value"].getName()
+ elif vartype_content["name"] in ["string", "wstring"]:
+ var_type = vartype_content["name"].upper()
+ else:
var_type = vartype_content["name"]
- else:
- var_type = vartype_content["value"].getName()
resrce += " %s "%var.getName()
address = var.getAddress()
if address:
@@ -306,17 +314,7 @@
located = False
for var in varlist["value"].getVariable():
vartype_content = var.getType().getContent()
- if vartype_content["value"] is None:
- initial = var.getInitialValue()
- if initial:
- initial_value = initial.getValue()
- else:
- initial_value = None
- address = var.getAddress()
- if address:
- located = True
- variables.append((vartype_content["name"], var.getName(), address, initial_value))
- else:
+ if vartype_content["name"] == "derived":
var_type = vartype_content["value"].getName()
GeneratePouProgram(var_type)
blocktype = GetBlockType(var_type)
@@ -333,6 +331,19 @@
if address:
located = True
variables.append((vartype_content["value"].getName(), var.getName(), address, initial_value))
+ else:
+ initial = var.getInitialValue()
+ if initial:
+ initial_value = initial.getValue()
+ else:
+ initial_value = None
+ address = var.getAddress()
+ if address:
+ located = True
+ if vartype_content["name"] in ["string", "wstring"]:
+ variables.append((vartype_content["name"].upper(), var.getName(), address, initial_value))
+ else:
+ variables.append((vartype_content["name"], var.getName(), address, initial_value))
if len(variables) > 0:
self.Interface.append((varTypeNames[varlist["name"]], varlist["value"].getRetain(),
varlist["value"].getConstant(), located, variables))
@@ -348,10 +359,12 @@
var_type = self.GetVariableType(expression)
if expression == pou.getName():
returntype_content = pou.interface.getReturnType().getContent()
- if returntype_content["value"] is None:
+ if returntype_content["name"] == "derived":
+ var_type = returntype_content["value"].getName()
+ elif returntype_content["name"] in ["string", "wstring"]:
+ var_type = returntype_content["name"].upper()
+ else:
var_type = returntype_content["name"]
- else:
- var_type = returntype_content["value"].getName()
elif var_type is None:
var_type = expression.split("#")[0]
if isinstance(instance, (plcopen.inVariable, plcopen.inOutVariable)):