zhaowc
2025-02-16 1a39a01ff6d99ab4c98e7243aa0d3e0a264008ad
Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -1749,8 +1749,53 @@
                    #endregion
                }
                break;
            #region 小车可放信号
            case "150":
                { // 获取工位任务号信息
                    var strMsg = "";
                    var http = new HttpService();
                    // 获取托盘任务号
                    var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "任务号");
                    var (res1, val) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos);
                    if (res1.IsSucceed)
                    {
                        string tasknoVal = val.ToString();
                        var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false);
                        if (modTask == null)
                        {
                            //读取成功后写入151
                            var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "151");//收到可放信号后写入151
                            if (ret.IsSucceed)
                            {
                                //回传WMS可放信号
                                strMsg = http.RequesContinueAgv(res1.ToString(),modTask.StationNum);
                                if (!strMsg.Contains("-1"))
                                {
                                    // 插入任务明细
                                    var modInsertTaskMonitor = new WcsTaskMonitor()
                                    {
                                        PlcId = modDevice.Id,
                                        PlcName = modDevice.Text,
                                        InteractiveMsg = $"写入指令151:{modDevice.StationNum}工位可接受AGV放货入库",
                                        PalletNo = modTask.PalletNo,
                                        Status = TaskStatusEnum.Complete,
                                        StartLocat = modDevice.StationNum
                                    };
                                    // 插入交互日志
                                    _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
                                }
                            }
                            break;
                        }
                    }
                     //
                }
                break;
            #endregion
            default: break;
        }
@@ -2521,7 +2566,7 @@
                            if (tasklist.Success != -1)
                            {
                                //获取拆垛物料品种(需要增加物料判断,同一个物料号可能会出现不同的码垛规则)
                                var pz = _db.Queryable<WcsMateialPzInfo>().First(m => m.SkuNo == tasklist.data[0].SkuNo);
                                var pz = _db.Queryable<WcsMateialPzInfo>().First(m => m.SkuNo == tasklist.data.SkuNo);
                                //下发拆托规格,拆箱数和托盘上总箱数(不绑定机器人,拆垛任务信息只下发一次)
                                // 给PLC写入任务数据
                                var listResult = new List<Result>();
@@ -2530,10 +2575,10 @@
                                listResult.Add(plcConn.SetPlcDBValue(Standard.PosType, modDevice.DbNumber, Standard.PlcPos, pz.PZNo));
                                //抓箱数
                                var qty = modDevice.listStation.FirstOrDefault(m => m.Text == "拆箱数量");
                                listResult.Add(plcConn.SetPlcDBValue(qty.PosType, modDevice.DbNumber, qty.PlcPos, tasklist.data[0].Qty.ToString()));
                                listResult.Add(plcConn.SetPlcDBValue(qty.PosType, modDevice.DbNumber, qty.PlcPos, tasklist.data.Qty.ToString()));
                                //总箱数
                                var qtycount = modDevice.listStation.FirstOrDefault(m => m.Text == "总箱数");
                                listResult.Add(plcConn.SetPlcDBValue(qtycount.PosType, modDevice.DbNumber, qtycount.PlcPos, tasklist.data[0].QtyCount.ToString()));
                                listResult.Add(plcConn.SetPlcDBValue(qtycount.PosType, modDevice.DbNumber, qtycount.PlcPos, tasklist.data.QtyCount.ToString()));
                                // 是否写入成功