Beispiel #1
0
        /// <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;
            }
        }
Beispiel #2
0
 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);
            }
        }