public static Device GetDevice(Project project, int index)
        {
            DeviceComposition allDevices = project.Devices;
            Device            device     = allDevices[index];

            return(device);
        }
Beispiel #2
0
 private static void IterDevice(IList <HmiTarget> hmi, DeviceComposition devices)
 {
     foreach (Device d in devices)
     {
         HandleDevice(hmi, d);
     }
 }
Beispiel #3
0
 private static void IterDevice(NodeHandler handler, DeviceComposition devices)
 {
     foreach (Device d in devices)
     {
         HandleDevice(handler, d);
     }
 }
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            DeviceComposition = await _context.DeviceCompositions.FirstOrDefaultAsync(m => m.ID == id);

            if (DeviceComposition == null)
            {
                return(NotFound());
            }
            return(Page());
        }
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            DeviceComposition = await _context.DeviceCompositions.FindAsync(id);

            if (DeviceComposition != null)
            {
                _context.DeviceCompositions.Remove(DeviceComposition);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
Beispiel #6
0
        public static void connectToMPI(Project project, int sourceDevice, int targetDevice)
        {
            DeviceComposition allDevices = project.Devices;

            //creating subnet to not connected
            SubnetComposition subnets = project.Subnets;

            Subnet newSubnet = subnets.Create("System:Subnet.Mpi", "MPI Subnet" + Guid.NewGuid().ToString());

            //subnet typeIdentifiers can be .Profibus, .Mpi, .Asi

            //source device
            Device device2 = DeviceMethods.GetDevice(project, targetDevice);
            Device device1 = DeviceMethods.GetDevice(project, sourceDevice);

            DeviceItem head1 = DeviceItemMethods.GetPlcHead(device1);


            DeviceItem interface1 =
                (from DeviceItem di in head1.DeviceItems
                 where di.Name.Contains("MPI")
                 select di).First();

            NetworkInterface interfacePN1  = interface1.GetService <NetworkInterface>();
            NodeComposition  networkNodes1 = interfacePN1.Nodes;

            networkNodes1.First().ConnectToSubnet(newSubnet);   //connection to the subnet

            //target device
            DeviceItem head2 = DeviceItemMethods.GetPlcHead(device2);

            DeviceItem interface2 =
                (from DeviceItem di in head2.DeviceItems
                 where di.Name.Contains("MPI")
                 select di).First();

            NetworkInterface interfacePN2  = interface2.GetService <NetworkInterface>();
            NodeComposition  networkNodes2 = interfacePN2.Nodes;

            networkNodes2.First().ConnectToSubnet(newSubnet);   //second device connection


            Console.WriteLine("Connected to " + newSubnet.GetAttribute("Name"));
        }
        public static void DeleteDevice(Project project, string DeviceName) //It doesn't work, in construction
        {
            DeviceComposition devices     = project.Devices;
            Device            foundDevice = devices.Find(DeviceName); //find first

            devices.Contains(foundDevice);                            //then try with if statement


            foreach (Device device in devices)  //ERROR: System.InvalidOperationException: 'Collection was modified; enumeration operation may not execute.'
            {
                if (device.Name == DeviceName)
                {
                    Console.WriteLine("Found");
                    device.Delete();
                    Console.WriteLine("And Deleted...");
                }
                else
                {
                    Console.WriteLine("Not Found...");
                }
            }
        }
 public InnovationRatesBinder(DeviceComposition deviceComposition, IEnumerable <OkrInnovationProperty> okrInnovationProperties)
 {
     this.deviceComposition       = deviceComposition ?? throw new ArgumentNullException("deviceComposition");
     this.okrInnovationProperties = okrInnovationProperties ?? throw new ArgumentNullException("okrInnovationProperties");
 }
        public void Initialize()
        {
            var dcREFU = new DeviceComposition("РЭФУ");
            var dcREU  = new DeviceComposition("РЭУ");
            var dcSREU = new DeviceComposition("СРЭУ");

            dbContext.DeviceCompositions.AddRange(dcREFU, dcREU, dcSREU);

            var dcRange_1_5   = new DeviceCountRange("1 .. 5");
            var dcRange_6_10  = new DeviceCountRange("6 .. 10");
            var dcRange_11_20 = new DeviceCountRange("11 .. 20");

            dbContext.DeviceCountRanges.AddRange(dcRange_1_5, dcRange_6_10, dcRange_11_20);

            dbContext.DeviceComplexityRates.AddRange(
                new DeviceComplexityRate(dcREFU, dcRange_1_5, 1.0),
                new DeviceComplexityRate(dcREFU, dcRange_6_10, 1.5),
                new DeviceComplexityRate(dcREFU, dcRange_11_20, 2.0),
                new DeviceComplexityRate(dcREU, dcRange_1_5, 1.0),
                new DeviceComplexityRate(dcREU, dcRange_6_10, 1.25),
                new DeviceComplexityRate(dcREU, dcRange_11_20, 1.5),
                new DeviceComplexityRate(dcSREU, dcRange_1_5, 1.0),
                new DeviceComplexityRate(dcSREU, dcRange_6_10, 1.4),
                new DeviceComplexityRate(dcSREU, dcRange_11_20, 1.8)
                );

            OkrInnovationProperty[] okrInoProps =
            {
                new OkrInnovationProperty("Заданные значения основных технических характеристик превышают достигнутые в мировой практике для изделий аналогичного назначения**"),
                new OkrInnovationProperty("Заданные значения 1-2 основных технических характеристик превышают достигнутые в мировой практике для изделий аналогичного назначения**"),
                new OkrInnovationProperty("Заданные значения основных технических характеристик соответствуют достигнутым в мировой практике для изделий аналогичного назначения**"),
                new OkrInnovationProperty("Изделие не имеющее аналогов в практике исполнителя"),
                new OkrInnovationProperty("Ужесточение требовний к двум и более основным техническим характеристикам*"),
                new OkrInnovationProperty("Ужесточение требований по подавлению НЭМИ*"),
                new OkrInnovationProperty("Ужесточение требования к основной технической характеристике* и условиям эксплуатации*"),
                new OkrInnovationProperty("Ужесточение требования к основной технической характеристике*"),
                new OkrInnovationProperty("Ужесточение требований по надежности*"),
                new OkrInnovationProperty("Ужесточение 1-2 неосновных тежнических характеристик*"),
                new OkrInnovationProperty("Новая конструкция аналога по техническим характеристикам"),
                new OkrInnovationProperty("Заимствование конструкции, наличие ранее созданного аналога по техническим характеристикам"),
                new OkrInnovationProperty("25% заимствование ранее созданного аналога"),
                new OkrInnovationProperty("50% заимствование ранее созданного аналога"),
                new OkrInnovationProperty("75% заимствование ранее созданного аналога"),
                new OkrInnovationProperty("Повторное изготовление изделия без изменений в ТД и КД")
            };

            dbContext.OkrInnovationProperties.AddRange(okrInoProps);

            double[] refuRatesValues = { 3.0, 2.5, 2.0, 1.8, 1.6, 1.4, 1.2, 1.0, 0.9, 0.8, 0.7, 0.6, 0.5 };
            double[] reuRatesValues  = { 3.0, 2.5, 2.0, 1.5, 1.4, 1.3, 1.2, 1.1, 1.0, 0.9, 0.9, 0.8, 0.7, 0.6 };
            double[] sreuRatesValues = { 4.0, 3.0, 2.5, 2.0, 1.5, 1.4, 1.3, 1.2, 1.1, 1.05, 1.0, 0.95, 0.9, 0.85, 0.8, 0.7 };

            var REFU_ratesBinder = new InnovationRatesBinder(dcREFU, okrInoProps.TakeLast(13));
            IEnumerable <OkrInnovationRate> refuRates = REFU_ratesBinder.Bind(refuRatesValues);

            dbContext.OkrInnovationRates.AddRange(refuRates);

            var REU_ratesBinder = new InnovationRatesBinder(dcREU, okrInoProps.TakeLast(14));
            IEnumerable <OkrInnovationRate> reuRates = REU_ratesBinder.Bind(reuRatesValues);

            dbContext.OkrInnovationRates.AddRange(reuRates);

            var SREU_ratesBinder = new InnovationRatesBinder(dcSREU, okrInoProps);
            IEnumerable <OkrInnovationRate> sreuRates = SREU_ratesBinder.Bind(sreuRatesValues);

            dbContext.OkrInnovationRates.AddRange(sreuRates);

            StageForOkr[] okrStages = SeedOkrStages();

            SeedOkrLabors(okrStages);
            SeedOkrSoftwareDevLaborGroups(okrStages);
        }