PLCControler.py
changeset 507 42150e041dbe
parent 500 b3499ff87178
child 526 79900abdfa3c
equal deleted inserted replaced
504:f88e0ebd8fe4 507:42150e041dbe
   896                 elif var["Option"] == "Non-Retain":
   896                 elif var["Option"] == "Non-Retain":
   897                     current_varlist.setnonretain(True)
   897                     current_varlist.setnonretain(True)
   898             # Create variable and change its properties
   898             # Create variable and change its properties
   899             tempvar = plcopen.varListPlain_variable()
   899             tempvar = plcopen.varListPlain_variable()
   900             tempvar.setname(var["Name"])
   900             tempvar.setname(var["Name"])
   901 
   901             
   902             var_type = plcopen.dataType()
   902             var_type = plcopen.dataType()
   903             if var["Type"] in self.GetBaseTypes():
   903             if isinstance(var["Type"], TupleType):
       
   904                 if var["Type"][0] == "array":
       
   905                     array_type, base_type_name, dimensions = var["Type"]
       
   906                     array = plcopen.derivedTypes_array()
       
   907                     for i, dimension in enumerate(dimensions):
       
   908                         dimension_range = plcopen.rangeSigned()
       
   909                         dimension_range.setlower(dimension[0])
       
   910                         dimension_range.setupper(dimension[1])
       
   911                         if i == 0:
       
   912                             array.setdimension([dimension_range])
       
   913                         else:
       
   914                             array.appenddimension(dimension_range)
       
   915                     if base_type_name in self.GetBaseTypes():
       
   916                         if base_type_name == "STRING":
       
   917                             array.baseType.setcontent({"name" : "string", "value" : plcopen.elementaryTypes_string()})
       
   918                         elif base_type_name == "WSTRING":
       
   919                             array.baseType.setcontent({"name" : "wstring", "value" : plcopen.wstring()})
       
   920                         else:
       
   921                             array.baseType.setcontent({"name" : base_type_name, "value" : None})
       
   922                     else:
       
   923                         derived_datatype = plcopen.derivedTypes_derived()
       
   924                         derived_datatype.setname(base_type_name)
       
   925                         array.baseType.setcontent({"name" : "derived", "value" : derived_datatype})
       
   926                     var_type.setcontent({"name" : "array", "value" : array})
       
   927             elif var["Type"] in self.GetBaseTypes():
   904                 if var["Type"] == "STRING":
   928                 if var["Type"] == "STRING":
   905                     var_type.setcontent({"name" : "string", "value" : plcopen.elementaryTypes_string()})
   929                     var_type.setcontent({"name" : "string", "value" : plcopen.elementaryTypes_string()})
   906                 elif var["Type"] == "WSTRING":
   930                 elif var["Type"] == "WSTRING":
   907                     var_type.setcontent({"name" : "wstring", "value" : plcopen.elementaryTypes_wstring()})
   931                     var_type.setcontent({"name" : "wstring", "value" : plcopen.elementaryTypes_wstring()})
   908                 else:
   932                 else:
   939         tempvar = {"Name": var.getname()}
   963         tempvar = {"Name": var.getname()}
   940 
   964 
   941         vartype_content = var.gettype().getcontent()
   965         vartype_content = var.gettype().getcontent()
   942         if vartype_content["name"] == "derived":
   966         if vartype_content["name"] == "derived":
   943             tempvar["Type"] = vartype_content["value"].getname()
   967             tempvar["Type"] = vartype_content["value"].getname()
       
   968         elif vartype_content["name"] == "array":
       
   969             dimensions = []
       
   970             for dimension in vartype_content["value"].getdimension():
       
   971                 dimensions.append((dimension.getlower(), dimension.getupper()))
       
   972             base_type = vartype_content["value"].baseType.getcontent()
       
   973             if base_type["value"] is None:
       
   974                 base_type_name = base_type["name"]
       
   975             else:
       
   976                 base_type_name = base_type["value"].getname()
       
   977             tempvar["Type"] = ("array", base_type_name, dimensions)
   944         elif vartype_content["name"] in ["string", "wstring"]:
   978         elif vartype_content["name"] in ["string", "wstring"]:
   945             tempvar["Type"] = vartype_content["name"].upper()
   979             tempvar["Type"] = vartype_content["name"].upper()
   946         else:
   980         else:
   947             tempvar["Type"] = vartype_content["name"]
   981             tempvar["Type"] = vartype_content["name"]
   948 
   982