示例#1
0
        private void TestModule()
        {
            /**********************************************************/
            /* Начало тестирование модуля работы со слоями материалов */
            /**********************************************************/

            Ingot ingot = new Ingot();

            ingot.Test();

            // Установлено подключение к СУБД
            DBConnection db = new DBConnection();

            logger.Info("Подключились к СУБД");

            db.InitDB();
            var data = db.GetMaterials("FeSiMn");

            Material mt = new Material(15, "FeSiMn", 10, 7.9, 8.2);
            bool     m  = db.AddMaterial(mt);

            InputTanker tanker1 = new InputTanker(1);

            tanker1.Load(mt);
            mt = new Material(16, "FeSiMn", 15, 12.3, 12.7);
            tanker1.Load(mt);

            Silos silos1 = new Silos(1);
            Silos silos2 = new Silos(2);

            silos1.Load(tanker1, 12);

            WeightTanker weight1 = new WeightTanker(1);

            weight1.AddSilos(silos1);
            weight1.AddSilos(silos2);
            weight1.Load(silos1, 10);

            List <Material> u = weight1.Unload(1.3);

            Conveyor conveyor1 = new Conveyor(1, Conveyor.Types.Horizontal, 78);

            conveyor1.SetSpeed(3);
            conveyor1.Deliver(u, onDelivered);

            /*********************************************************/
            /* Конец тестирования модуля работы со слоями материалов */
            /*********************************************************/
        }
示例#2
0
        /// <summary>
        /// Первоначальная инициализация техузлов
        /// </summary>
        private void Init()
        {
            db = new DBConnection();
            string msgStats = "{\"Statuses\":[";

            _tanker1   = new InputTanker(1); // Загрузочный бункер 1
            _material1 = "";
            msgStats  += "{\"id\":\"Input1\",\"status\":\"off\"},";

            _tanker2   = new InputTanker(2); // Загрузочный бункер 2
            _material2 = "";
            msgStats  += "{\"id\":\"Input2\",\"status\":\"off\"},";

            _silos1   = new Silos(1); // Силос 1
            msgStats += "{\"id\":\"Silos1\",\"status\":\"off\"},";
            _silos2   = new Silos(2); // Силос 2
            msgStats += "{\"id\":\"Silos2\",\"status\":\"off\"},";
            _silos3   = new Silos(3); // Силос 3
            msgStats += "{\"id\":\"Silos3\",\"status\":\"off\"},";
            _silos4   = new Silos(4); // Силос 4
            msgStats += "{\"id\":\"Silos4\",\"status\":\"off\"},";
            _silos5   = new Silos(5); // Силос 5
            msgStats += "{\"id\":\"Silos5\",\"status\":\"off\"},";
            _silos6   = new Silos(6); // Силос 6
            msgStats += "{\"id\":\"Silos6\",\"status\":\"off\"},";
            _silos7   = new Silos(7); // Силос 7
            msgStats += "{\"id\":\"Silos7\",\"status\":\"off\"},";
            _silos8   = new Silos(8); // Силос 8
            msgStats += "{\"id\":\"Silos8\",\"status\":\"off\"},";

            _conveyor1 = new Conveyor(1, Conveyor.Types.Horizontal, 5);
            msgStats  += "{\"id\":\"Conveyor1\",\"status\":\"off\"},";
            _conveyor2 = new Conveyor(2, Conveyor.Types.Vertical, 25);
            msgStats  += "{\"id\":\"Conveyor2\",\"status\":\"off\"},";
            _conveyor3 = new Conveyor(3, Conveyor.Types.Horizontal, 3);
            msgStats  += "{\"id\":\"Conveyor3\",\"status\":\"off\"}";

            msgStats += "]}";
            Clients.All.SendAsync("statuses", msgStats);
        }
示例#3
0
        /// <summary>
        /// Загрузить материал в силос из загрузочного бункера
        /// </summary>
        /// <param name="source">Загрузочный бункер, из которого принимается материал</param>
        /// <param name="weight">Вес загружаемого материала</param>
        public void Load(InputTanker source, double weight)
        {
            Status = Status.Loading;

            if (source == null)
            {
                Status = Status.Error;
                logger.Error($"Не указан загрузочный бункер при загрузке материала в силос {SilosId}");
                throw new ArgumentNullException($"Не указан загрузочный бункер при загрузке материала в силос {SilosId}");
            }

            if (weight <= 0)
            {
                Status = Status.Error;
                logger.Error($"Вес згаружаемого материала в силос {SilosId} не может быть равен {weight}");
                throw new ArgumentException($"Вес згаружаемого материала в силос {SilosId} не может быть равен {weight}");
            }

            if (Material == "")
            {
                // Если текущий материал загрузочного бункера не выбран, то, вероятнее всего,
                // Можно брать наименование из загружаемого материала и присваивать его материалу бункера

                logger.Warn($"Не установлен материал для загрузки в силос {SilosId}, используется загружаемый материал {source.Material}");
                Material = source.Material;
            }

            if (source.Material != Material)
            {
                Status = Status.Error;
                logger.Error($"Загрузка в силос {SilosId}, содержащего материал {Material} новый материал {source.Material}");
                throw new ArgumentException($"Силос {SilosId} ожидает материал {Material} вместо {source.Material}");
            }

            Materials   = source.Unload(weight);
            LayersCount = Materials.Count;
            Weight      = GetWeight();
        }