chengsc
2024-10-30 25184cadd4011856d95e76f1d79b37ce51a3e548
Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
@@ -375,6 +375,81 @@
    }
    /// <summary>
    /// 手动写入PLC启停信息
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "WriteStartStop")]
    [DisplayName("写入PLC启停信息")]
    public async Task WriteStartStop(WcsDeviceStartStop input)
    {
        WcsPlc modPlc;
        string DbNum = "";// DB块
        var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.IsDelete == false).ToListAsync();
        if (input.Layer == "1")
        {
            modPlc = plcList.FirstOrDefault(m => m.Text == "1层托盘输送线");
            if (modPlc == null)
                throw Oops.Bah($"未查询到1楼层PLC信息");
            DbNum = "";
        }
        else if (input.Layer == "2")
        {
            modPlc = plcList.FirstOrDefault(m => m.Text == "2层托盘输送线");
            if (modPlc == null)
                throw Oops.Bah($"未查询到2楼层PLC信息");
            DbNum = "91";
            PLCUtil modUtil = new PLCUtil(modPlc);
            switch (input.Type)
            {
                case "TwoPalletStart":
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.0", "true");
                    break;
                case "OnePalletStop":
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.1", "true");
                    break;
                case "TwoMaStart":
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.0", "true");
                    break;
                case "TwoMaStop":
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.1", "true");
                    break;
                case "TwoMaTwoStart":
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.2", "true");
                    break;
                case "TwoMaTwoStop":
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.3", "true");
                    break;
                case "TwoBoxStart":
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.2", "true");
                    break;
                case "TwoBoxStop":
                    modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.3", "true");
                    break;
                default:
                    break;
            }
            modUtil.Close();
        }
        else if (input.Layer == "3")
        {
            modPlc = plcList.FirstOrDefault(m => m.Text == "3层托盘输送线");
            if (modPlc == null)
                throw Oops.Bah($"未查询到3楼层PLC信息");
            DbNum = "";
        }
        else
        {
            throw Oops.Bah("操作类型信息错误");
        }
    }
    #endregion
    /// <summary>