private static void AssignTask(MachinesDTO communicationMachine)
        {
            if (communicationMachine.Location == Location.WH_IN)
            {
                TaskDTO taskDTO = machineTasksData.GetTaskDataForEntrySide();

                if (taskDTO != null && WriteAsrsPLC(communicationMachine, taskDTO))
                {
                    log.Info("assign id: " + taskDTO.taskId);
                    machineTasksData.UpdateMachineTaskWithPlcSentById(taskDTO.taskId);
                }
            }
            else if (communicationMachine.Location == Location.WH_OUT)
            {
                //TODO: adres ağzı dolu olanın taskı atanmalı
                //shuttle getirdiğinde
                TaskDTO taskDTO = machineTasksData.GetTaskDataForExitSide();

                if (taskDTO != null && WriteAsrsPLC(communicationMachine, taskDTO))
                {
                    machineTasksData.UpdateMachineTaskWithPlcSentById(taskDTO.taskId);
                }
            }
        }
예제 #2
0
        private static void AssignTask(MachinesDTO communicationMachine, PlcCommunicationReadedData rd)
        {
            var shuttle = shuttlesData.GetShuttleByCode(communicationMachine.Code);

            if (shuttle.Assignment == ShuttleAssign.OPTIMIZATION && shuttle.Status == Enum.GetName(typeof(SysStatus), SysStatus.READY))
            {
                //simule ok
                easyModbusCommunication = new EasyModbusCommunication(communicationMachine.IpAddress, 502);
                easyModbusCommunication.WriteToPLC(48, new int[] { 75 }); //plcden ye done göndermesi için
                                                                          //

                //şarjı varsa başka tüpe taşı ve optimizasyon başlat
                if (rd.MW248 > 10)//TODO: make parametric
                {
                    CreateOptimizationTasks(communicationMachine, shuttle);
                }
                else
                {
                    //şarja gönder, başka mekiği optimizasyon için ata, taşı, optimizasyon başlat
                    CreateChargeTasks(communicationMachine, shuttle);
                    shuttlesData.SelectNewOptimizationShuttle(); //yeni shuttle döndürür yeni optimizasyon mekiği için iş atayabilir yada mekikten sinyal gelince normal işleyişe göre çalışır
                }

                //şarjı yoksa şarja taşı, başka mekiği optimizasyon olarak ata, bulunduğu yeri yada başka adresi optimize görevi yaz (önce taşı sonra yaz!)
            }


            //TODO: optimization task seçmede kontrolet
            TaskDTO taskDTO = machineTasksData.GetTaskDataForShuttle(communicationMachine);

            if (taskDTO != null && WriteShuttlePLC(communicationMachine, taskDTO))
            {
                log.Info("shuttle assign id: " + taskDTO.taskId);
                machineTasksData.UpdateMachineTaskWithPlcSentById(taskDTO.taskId);
                machineTasksData.UpdateMachineTaskWithMachineCodeById(taskDTO.taskId, communicationMachine.Code);
            }
            else
            {
                CheckNeedShuttleAddressesAndCreateTaskForIt(communicationMachine);
            }
        }