| | |
| | | using HH.WCS.JiaTong.core; |
| | | using HH.WCS.JiaTong.device; |
| | | using HH.WCS.JiaTong.dispatch; |
| | | using HH.WCS.JiaTong.LISTA.models; |
| | | using HH.WCS.JiaTong.LISTA.process; |
| | | using HH.WCS.JiaTong.util; |
| | | using HH.WCS.JiaTong.wms; |
| | | using Microsoft.Owin.BuilderProperties; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Linq; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | } |
| | | else |
| | | { |
| | | |
| | | //起点终点解锁 |
| | | LocationHelper.UnLockLoc(mst.S_START_LOC); |
| | | LocationHelper.UnLockLoc(mst.S_END_LOC); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | } |
| | | else |
| | | { |
| | | ModbusHelper.WriteSingleRegister(40089, EndLoc.N_LAYER, device.address, 1024); |
| | | int layerValue = 0; |
| | | if (EndLoc.N_LAYER == 1) layerValue = 1; |
| | | else if (EndLoc.N_LAYER == 2) layerValue = 3; |
| | | else if (EndLoc.N_LAYER == 3) layerValue = 5; |
| | | ModbusHelper.WriteSingleRegister(40089, layerValue, device.address, 1024); |
| | | ModbusHelper.WriteSingleRegister(40101, 2, device.address, 1024); |
| | | ModbusHelper.WriteSingleRegister(40003, 2, device.address, 1024); |
| | | ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024); |
| | |
| | | if (Device != null) |
| | | { |
| | | //写入失败重新写入 |
| | | while (!S7Helper.WriteDpj(Device.address, 1001, 1)) |
| | | if (!S7Helper.WriteDpj(Device.address, 1001, 1)) |
| | | { |
| | | Thread.Sleep(1000); |
| | | Task.Run(() => |
| | | { |
| | | while (!S7Helper.WriteDpj(Device.address, 1001, 1)) |
| | | { |
| | | Thread.Sleep(1000); |
| | | } |
| | | }); |
| | | } |
| | | while (!S7Helper.WriteDpj(Device.address, 1002, 0)) |
| | | if (!S7Helper.WriteDpj(Device.address, 1002, 0)) |
| | | { |
| | | Thread.Sleep(1000); |
| | | Task.Run(() => |
| | | { |
| | | while (!S7Helper.WriteDpj(Device.address, 1002, 0)) |
| | | { |
| | | Thread.Sleep(1000); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | else |
| | |
| | | } |
| | | else |
| | | { |
| | | int layerValue = 0; |
| | | if (startloc.N_LAYER == 1) layerValue = 1; |
| | | else if (startloc.N_LAYER == 2) layerValue = 3; |
| | | else if (startloc.N_LAYER == 3) layerValue = 5; |
| | | ModbusHelper.WriteSingleRegister(40101, 2, device.address, 1024); |
| | | ModbusHelper.WriteSingleRegister(40003, 2, device.address, 1024); |
| | | ModbusHelper.WriteSingleRegister(40089, startloc.N_LAYER, device.address, 1024); |
| | | ModbusHelper.WriteSingleRegister(40089, layerValue, device.address, 1024); |
| | | ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024); |
| | | } |
| | | |
| | |
| | | { |
| | | LogHelper.Info($"根据任务终点:{mstbyEqno.S_END_LOC},未找到对应货位"); |
| | | } |
| | | ModbusHelper.WriteSingleRegister(40089, Endloc.N_LAYER, device.address, 1024); |
| | | int value = 0; |
| | | if (Endloc.N_LAYER == 1) value = 1; |
| | | else if (Endloc.N_LAYER == 2) value = 3; |
| | | else if (Endloc.N_LAYER == 3) value = 5; |
| | | ModbusHelper.WriteSingleRegister(40089, value, device.address, 1024); |
| | | ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024); |
| | | |
| | | } |
| | |
| | | { |
| | | var result = true; |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | //根据起点仓库编码判断是否可以推送 |
| | | var taskLimit = db.Queryable<TASK_LIMIT>().Where(a => a.S_WH_CODE == mst.S_START_WH && a.OPEN == "1").First(); |
| | | if (taskLimit != null) |
| | | { |
| | | Console.WriteLine($"任务:{mst.S_CODE},起点仓库:{mst.S_START_WH}已经禁用推送"); |
| | | return false; |
| | | } |
| | | |
| | | var mstbyEqno = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO == mst.S_EQ_NO).ToList(); |
| | | if (mstbyEqno.Count() == 1) |
| | | { |
| | |
| | | else if (mst.S_TYPE == "电梯2") |
| | | { |
| | | var mst2 = mstbyEqno.Where(a => a.S_TYPE == "电梯1").First(); |
| | | if (mst2.S_B_STATE == "卸货完成" || mst2.S_B_STATE == "完成") |
| | | { |
| | | if (mst2 == null) |
| | | { |
| | | return result; |
| | | } |
| | | else |
| | | { |
| | | if (mst2.S_B_STATE == "卸货完成" || mst2.S_B_STATE == "完成") |
| | | { |
| | | return result; |
| | | } |
| | | result = false; |
| | | } |
| | | } |
| | |
| | | internal static bool SendTask(WCSTask mst) |
| | | { |
| | | |
| | | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var result = false; |
| | | var start = "0"; var end = "0"; |
| | | var taskType = mst.S_TYPE.Trim(); |
| | | var list = db.Queryable<Location>().ToList().Count; |
| | | //LogHelper.Info($"查询全部货位数据{list}"); |
| | | // if (mst.N_B_STATE == 0) { |
| | | if (mst.N_SCHEDULE_TYPE == 1) |
| | | { |
| | | LogHelper.Info($"任务推送数据:{JsonConvert.SerializeObject(mst)}"); |
| | | if (string.IsNullOrEmpty(mst.S_START_LOC)|| string.IsNullOrEmpty(mst.S_END_LOC)) |
| | | { |
| | | LogHelper.Info($"任务{mst.S_CODE},起点终点有空参数,不推送任务"); |
| | | } |
| | | |
| | | |
| | | start = LocationHelper.GetAgvSite(mst.S_START_LOC); |
| | | end = LocationHelper.GetAgvSite(mst.S_END_LOC); |
| | | //if (mst.N_START_LAYER > 1) |
| | |
| | | { |
| | | LogHelper.Info($"根据任务起点:{mst.S_START_LOC},未找到对应货位"); |
| | | } |
| | | ModbusHelper.WriteSingleRegister(40089, loc.N_LAYER, device.address, 1024); |
| | | int value = 0; |
| | | if (loc.N_LAYER == 1) value = 1; |
| | | else if (loc.N_LAYER == 2) value = 3; |
| | | else if (loc.N_LAYER == 3) value = 5; |
| | | |
| | | ModbusHelper.WriteSingleRegister(40089, value, device.address, 1024); |
| | | ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024); |
| | | |
| | | |