/// <summary>
        /// Добавить силос в список, из которых весовой бункер может загружать материал
        /// </summary>
        /// <param name="silos">Добавляемый силос</param>
        public void AddSilos(Silos silos)
        {
            if (silos == null)
            {
                Status = Status.Error;
                logger.Error($"Привязываемый силос к весовому бункеру {WeightTankerId} не может быть NULL");
                throw new ArgumentNullException($"Привязываемый силос к весовому бункеру {WeightTankerId} не может быть NULL");
            }

            Siloses.Add(silos);
        }
Exemple #2
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);

            /*********************************************************/
            /* Конец тестирования модуля работы со слоями материалов */
            /*********************************************************/
        }
Exemple #3
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);
        }
        /// <summary>
        /// Загрузка весового бункера из выбранного силоса
        /// </summary>
        /// <param name="silos">Силос, из которого будет загружен материал</param>
        /// <param name="weight">Вес загружаемого материала</param>
        public void Load(Silos silos, double weight)
        {
            Status = Status.Loading;
            if (Siloses.Count == 0)
            {
                Status = Status.Error;
                logger.Error($"Список силосов для весового бункера {WeightTankerId} пуст! Невозможно загрузить материал");
                throw new ArgumentException($"Список силосов для весового бункера {WeightTankerId} пуст! Невозможно загрузить материал");
            }

            bool included = false;

            for (int i = 0; i < Siloses.Count; i++)
            {
                if (silos == Siloses[i])
                {
                    included = true;
                    break;
                }
            }
            if (!included)
            {
                Status = Status.Error;
                logger.Error($"Силос {silos.SilosId} не добавлен в список силосов весового бункера {WeightTankerId}. Загрузка материала невозможна");
                throw new ArgumentOutOfRangeException($"Силос {silos.SilosId} не добавлен в список силосов весового бункера {WeightTankerId}. Загрузка материала невозможна");
            }

            try
            {
                Materials   = silos.Unload(weight);
                LayersCount = Materials.Count;
                Weight      = GetWeight();
            }
            catch (Exception e)
            {
                Status = Status.Error;
                logger.Error(e.Message);
                throw new InvalidOperationException(e.Message);
            }
        }