/// <summary> /// 配置CPU模块 /// </summary> public void ConfigCPUUnits(YZXCPUProject Project) { int statusL = YZXUDT.GetUDTLength(YZXUDTTypes.UnitStatus); UnitStatus = new YZXCPUMemory("UnitStatus", Project.Units.Count * statusL); Mermories["UnitStatus"] = UnitStatus; Units = new Dictionary <string, YZXUnit>(); for (int i = 0; i < Project.Units.Count; i++) { System.Tuple <YZXUnitTypes, YZXUnit> tu = Project.Units[i]; YZXUnit unit = tu.Item2; if (tu.Item1 == YZXUnitTypes.Snap7ClientDB) { Snap7ClientDBUnit u = unit as Snap7ClientDBUnit; u.Client.con(); } unit.Init(); YZXUnitStatus status = (YZXUnitStatus) UnitStatus.InitUDT(YZXUDTTypes.UnitStatus, this, (i * statusL).ToString()); status.Unit = unit; unit.Status = status; Units[unit.Name] = unit; } }
public YZXUnit(string name, ushort length = 100) : base() { Name = name; Length = length; bits = new List <bool>(Length * 16); Status = new YZXUnitStatus(); }
public YZXUDT InitUDT(YZXUDTTypes type, YZXCPU cpu, string addressbase) { switch (type) { case YZXUDTTypes.UnitStatus: YZXUnitStatus status = new YZXUnitStatus(); status.CPU = cpu; status.AddressBase = new YZXAddress(string.Format("{0}.{1}", Name, addressbase)); status.BuildMemberAddress(); return(status); default: return(null); } }