Esempio n. 1
0
        public long InsertReadedData(PlcCommunicationReadedData rd)
        {
            long identity;

            using (var conn = new SqlConnection(conStr))
            {
                conn.Open();
                identity = conn.Insert(rd);
                conn.Close();
            }
            return(identity);
        }
Esempio n. 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);
            }
        }