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); } } }
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); } }