wangxinhui
2026-03-17 febcd0c73b51b17f484ff9a9a189b1f85130c2f7
更新自动门,新增切卷卷绕缓存架
已添加2个文件
已修改6个文件
568 ■■■■■ 文件已修改
DB/20250811DB最新BF.sql 补丁 | 查看 | 原始文档 | blame | 历史
wcs-server-hbf/WIDESEA_Common/PLCConst.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs-server-hbf/WIDESEA_WCS/Config/卷绕缓存架.json 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs-server-hbf/WIDESEA_WCS/Jobs/RGV/AluminumCaseJob.cs 324 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs 167 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/HCJ_XHCD.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs-server-hbf/WIDESEA_WCSServer/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs-server-hbf/WIDESEA_WCSServer/modified_data.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DB/20250811DB×îÐÂBF.sql
Binary files differ
wcs-server-hbf/WIDESEA_Common/PLCConst.cs
@@ -12,6 +12,6 @@
        public const string PLCName2FLKHCJ = "铝壳缓存架二楼";
        public const string PLCNameJR = "卷绕缓存架及自动门";
    }
}
wcs-server-hbf/WIDESEA_WCS/Config/¾íÈÆ»º´æ¼Ü.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
[
  {
    "HCJCenterName": "卷绕缓存架",
    "stationInfos": [
      {
        "HCJName": "正极卷绕缓存架2",
        "HCJCode": "ZJ-QJHCJ11",
        "RPLCDB": [ "x=2;0", "x=2;1", "x=2;2", "x=2;3", "x=2;4", "x=2;5" ], //物料光电1、2、3、4,托盘光电,按钮
        "WPLCDB": [ "s=2;0", "s=2;1", "s=2;2" ] //黄灯,绿灯,红灯
      },
      {
        "HCJName": "负极卷绕缓存架2",
        "HCJCode": "FJ-QJHCJ11",
        "RPLCDB": [ "x=2;8", "x=2;9", "x=2;10", "x=2;11", "x=2;12", "x=2;13" ], //物料光电1、2、3、4,托盘光电,按钮
        "WPLCDB": [ "s=2;8", "s=2;9", "s=2;10" ] //黄灯,绿灯,红灯
      },
      {
        "HCJName": "负极卷绕缓存架1",
        "HCJCode": "FJ-QJHCJ10",
        "RPLCDB": [ "x=2;16", "x=2;17", "x=2;18", "x=2;19", "x=2;20", "x=2;21" ], //物料光电1、2、3、4,托盘光电,按钮
        "WPLCDB": [ "s=2;16", "s=2;17", "s=2;18" ] //黄灯,绿灯,红灯
      },
      {
        "HCJName": "正极卷绕缓存架1",
        "HCJCode": "ZJ-QJHCJ10",
        "RPLCDB": [ "x=2;24", "x=2;25", "x=2;26", "x=2;27", "x=2;28", "x=2;29" ], //物料光电1、2、3、4,托盘光电,按钮
        "WPLCDB": [ "s=2;24", "s=2;25", "s=2;26" ] //黄灯,绿灯,红灯
      }
    ]
  }
]
wcs-server-hbf/WIDESEA_WCS/Jobs/RGV/AluminumCaseJob.cs
@@ -21,6 +21,12 @@
using HslCommunication;
using SqlSugar;
using WIDESEA_Core.Extensions;
using static System.Collections.Specialized.BitVector32;
using WIDESEA_WCS.WCSClient.Modbus;
using static FreeSql.Internal.GlobalFilter;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using System.Reflection.Metadata;
using Dm;
namespace WIDESEA_WCS
{
@@ -32,6 +38,7 @@
    {
        FreeDB freeDB = new FreeDB();
        static List<HCJCenterEqDB> centerEqDBList;
        static List<HCJCenterEqDB> centerJRDBList;
        private static object createTaskObj = new object();
        public Task Execute(IJobExecutionContext context)
        {
@@ -54,8 +61,321 @@
                client.Connect();
                return;
            }
            //铝壳缓存架业务作业
            LKHCJdispatch();
            if (client.PLCName.Contains("铝壳"))
            {
                //铝壳缓存架业务作业
                LKHCJdispatch();
            }
            else
            {
                //卷绕缓存架业务作业
                JRHCJdispatch();
            }
        }
        /// <summary>
        /// å·ç»•缓存架业务作业
        /// </summary>
        private void JRHCJdispatch()
        {
            //铝壳缓存架搬运
            PLCClient pLCClientJR = WCSService.Clients.Find(V => V.PLCName==PLCConst.PLCNameJR);
            if (pLCClientJR != null)
            {
                string tsjJson = File.ReadAllText(AppContext.BaseDirectory + "/Config/卷绕缓存架.json", Encoding.UTF8);
                centerJRDBList = JsonConvert.DeserializeObject<List<HCJCenterEqDB>>(tsjJson);
                if (centerJRDBList == null)
                {
                    return;
                }
                PLCClient agvzzplc = WCSService.Clients.Find(v => v.PLCName == "组装AGV调度");
                UpdateJRHCJ(pLCClientJR);
                #region å·ç»•叫料
                List<base_ware_location> locations = freeDB.Select<base_ware_location>()
                .Where(x => (x.tpgd == 0 && x.gd1 == 0 && x.gd2 == 0 && x.gd3 == 0 && x.gd4 == 0 && x.status == 1 && x.task == 2 && x.logic_layer == "1" && x.location_state == "LocationState_Empty") && (x.upper_code.Contains("QJHCJ10") || x.upper_code.Contains("QJHCJ11")))
                .ToList();
                foreach (var item in locations)
                {
                    if (item.geartype == "暂无")
                    {
                        WriteLog.GetLog().Write($"{item.upper_code}{item.geartype}---{DateTime.Now}", $"卷绕上料请求失败");
                        continue;
                    }
                    List<base_routing_table> routing_table = freeDB.Select<base_routing_table>()
                .Where(v => v.route_end == item.upper_code).ToList();
                    if (routing_table.Count > 0)//无料才能生成任务&& location_QJ.tpgd==0
                    {
                        List<string> route_begans = routing_table.Select(x => x.route_began).ToList();
                        base_ware_location ware_Location = freeDB.Select<base_ware_location>()
                .Where(d => route_begans.Contains(d.upper_code) && d.location_state == "LocationState_Stored" && d.logic_col == 1 && d.tpgd == 1 && d.status == 1 && d.task == 2 && d.geartype == item.geartype).OrderBy(d => d.update_time).First();
                        if (ware_Location != null)
                        {
                            base_ware_location jkloction = ware_Location;
                            #region è®°å½•上料请求信号
                            WriteLog.GetLog().Write($"{item.upper_code}上料请求---{DateTime.Now}", $"卷绕上料请求");
                            #endregion
                            //再次判断是否有任务存在
                            dt_agvtask agvtaskOld = freeDB.Select<dt_agvtask>().Where(x => x.agv_toaddress == item.upper_code).First();
                            if (agvtaskOld != null && item.task == 2)
                            {
                                item.logic_col = 1;//设置良品物料
                                item.task = 1;//设置任务生成1
                                var locationOffOld1 = freeDB.Update(item).UpdateColumns(t => new
                                {
                                    t.logic_col,
                                    t.task
                                }).ExecuteAffrows();
                                continue;
                            }
                            dt_agvtask agvtask = new dt_agvtask()
                            {
                                agv_id = Guid.NewGuid(),
                                agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
                                agv_fromaddress = jkloction.upper_code,
                                agv_toaddress = item.upper_code,
                                agv_code = "组装AGV调度",
                                agv_remark = "切卷上料呼叫",
                                agv_taskstate = AGVTaskStateEnum.Create.ToString(),
                                agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(),
                                agv_worktype = 1,//工作类型
                                agv_materielid = "",
                                agv_qty = 1,
                                agv_createtime = DateTime.Now,
                                agv_grade = 0,//任务优先级
                                agv_userid = "WCS",
                                agv_barcode = ""
                            };
                            item.logic_col = 1;//设置良品物料
                            item.task = 1;//设置任务生成1
                            var locationOff1 = freeDB.Update(item).UpdateColumns(t => new
                            {
                                t.logic_col,
                                t.task
                            }).ExecuteAffrows();
                            jkloction.logic_col = 1;//设置良品物料
                            jkloction.task = 1;//设置任务生成1
                            var locationOff2 = freeDB.Update(jkloction).UpdateColumns(t => new
                            {
                                t.logic_col,
                                t.task
                            }).ExecuteAffrows();
                            freeDB.Add(agvtask);
                        }
                        else
                        {
                            WriteLog.GetLog().Write($"{item.upper_code}未找到满足送往切卷的极库料---{DateTime.Now}", $"卷绕上料请求失败");
                        }
                    }
                }
                #endregion
            }
        }
        private void UpdateJRHCJ(PLCClient client)
        {
            ModbusTcpNet ModbusPLCClient = client.ModbusPLCClient.ModbusTcpNetClient;
            var stationList = centerJRDBList.FirstOrDefault(t => client.PLCName.Contains(t.HCJCenterName));
            foreach (var item in stationList.stationInfos)
            {
                base_ware_location location = freeDB.Select<base_ware_location>()
                .Where(x => x.upper_code == item.HCJCode)
                .First();
                ////Console.WriteLine($"{station.stationCode}------{DateTime.Now}");
                if (location == null)
                {
                    continue;
                }
                string wlgd1DB = item.RPLCDB[0];//物料光电1状态信号点位
                string wlgd2DB = item.RPLCDB[1];//物料光电2状态信号点位
                string wlgd3DB = item.RPLCDB[2];//物料光电3状态信号点位
                string wlgd4DB = item.RPLCDB[3];//物料光电4状态信号点位
                string tpgdDB = item.RPLCDB[4];//托盘光电状态信号点位
                string buttonDB = item.RPLCDB[5];//按钮状态信号点位
                ////确认按钮(绿色)
                OperateResult<bool> R_TBR_XT1 = ModbusPLCClient.ReadBool(buttonDB);
                OperateResult<bool> R_TBR_XT2 = ModbusPLCClient.ReadBool(buttonDB);
                WriteLog.GetLog().Write($"{item.HCJName}缓存架,连接{R_TBR_XT1.IsSuccess}{R_TBR_XT2.IsSuccess}", "卷绕缓存架");
                if (!R_TBR_XT1.IsSuccess && !R_TBR_XT2.IsSuccess)
                {
                    //Console.WriteLine($"-{ModbusPLCClient.IpAddress}---{station.stationCode}----{ButtonEnsureDB}--------false--{R_TBR_XT.Message}----------------");
                    location.location_state = LocationStateEnum.LocationState_Close.ToString();
                    location.tpgd = -1;
                    location.update_time = DateTime.Now;
                    location.wireless_time = DateTime.Now;
                    var locationOff = freeDB.Update(location).UpdateColumns(t => new
                    {
                        t.location_state,
                        t.tpgd,
                        t.update_time,
                        t.wireless_time
                    }).ExecuteAffrows();
                    continue;
                }
                OperateResult<bool> ButtonEnsure1 = ModbusPLCClient.ReadBool(buttonDB);
                OperateResult<bool> ButtonEnsure2 = ModbusPLCClient.ReadBool(buttonDB);
                //托盘光电状态
                OperateResult<bool> tpgdstate1 = ModbusPLCClient.ReadBool(tpgdDB);
                OperateResult<bool> tpgdstate2 = ModbusPLCClient.ReadBool(tpgdDB);
                //物料光电1状态
                OperateResult<bool> wlgd1state1 = ModbusPLCClient.ReadBool(wlgd1DB);
                OperateResult<bool> wlgd1state2 = ModbusPLCClient.ReadBool(wlgd1DB);
                //物料光电2状态
                OperateResult<bool> wlgd2state1 = ModbusPLCClient.ReadBool(wlgd2DB);
                OperateResult<bool> wlgd2state2 = ModbusPLCClient.ReadBool(wlgd2DB);
                //物料光电3状态
                OperateResult<bool> wlgd3state1 = ModbusPLCClient.ReadBool(wlgd3DB);
                OperateResult<bool> wlgd3state2 = ModbusPLCClient.ReadBool(wlgd3DB);
                //物料光电4状态
                OperateResult<bool> wlgd4state1 = ModbusPLCClient.ReadBool(wlgd4DB);
                OperateResult<bool> wlgd4state2 = ModbusPLCClient.ReadBool(wlgd4DB);
                //根据读到的PLC信息,轮询更新数据库信息
                location.update_time = DateTime.Now;
                location.wireless_time = DateTime.Now;
                if (ButtonEnsure1.IsSuccess)
                {
                    location.logic_layer = ButtonEnsure1.Content ? "1" : "0";
                }
                if (ButtonEnsure2.IsSuccess)
                {
                    location.logic_layer = ButtonEnsure2.Content ? "1" : "0";
                }
                if (tpgdstate1.IsSuccess)
                {
                    location.tpgd = !tpgdstate1.Content ? 1 : 0;
                }
                if (tpgdstate2.IsSuccess)
                {
                    location.tpgd = !tpgdstate2.Content ? 1 : 0;
                }
                #region ç‰©æ–™å…‰ç”µ1
                if (wlgd1state1.IsSuccess)
                {
                    location.gd1 = !wlgd1state1.Content ? 1 : 0; ;
                }
                if (wlgd1state2.IsSuccess)
                {
                    location.gd1 = !wlgd1state2.Content ? 1 : 0; ;
                }
                #endregion
                #region ç‰©æ–™å…‰ç”µ2
                if (wlgd2state1.IsSuccess)
                {
                    location.gd2 = !wlgd2state1.Content ? 1 : 0; ;
                }
                if (wlgd2state2.IsSuccess)
                {
                    location.gd2 = !wlgd2state2.Content ? 1 : 0; ;
                }
                #endregion
                #region ç‰©æ–™å…‰ç”µ3
                if (wlgd3state1.IsSuccess)
                {
                    location.gd3 = !wlgd3state1.Content ? 1 : 0; ;
                }
                if (wlgd3state2.IsSuccess)
                {
                    location.gd3 = !wlgd3state2.Content ? 1 : 0; ;
                }
                #endregion
                #region ç‰©æ–™å…‰ç”µ4
                if (wlgd4state1.IsSuccess)
                {
                    location.gd4 = !wlgd4state1.Content ? 1 : 0; ;
                }
                if (wlgd4state2.IsSuccess)
                {
                    location.gd4 = !wlgd4state2.Content ? 1 : 0; ;
                }
                #endregion
                string LampYellowDB = item.WPLCDB[0];//黄灯信号点位
                string LampGreenDB = item.WPLCDB[1];//绿灯信号点位
                string LampRedDB = item.WPLCDB[2];//红灯信号点位
                //货架存在任务任务时
                if (location.tpgd == 1)
                {
                    location.location_state = LocationStateEnum.LocationState_Stored.ToString();
                    OperateResult<bool> Yellow1 = ModbusPLCClient.ReadBool(LampYellowDB);
                    OperateResult<bool> Yellow2 = ModbusPLCClient.ReadBool(LampYellowDB);
                    if (location.logic_col == 2)
                    {
                        ModbusPLCClient.Write(LampRedDB, true); //红灯
                        ModbusPLCClient.Write(LampRedDB, true); //红灯
                    }
                    if (location.task == 1 && (Yellow1.Content || Yellow2.Content))
                    {
                        //ModbusPLCClient.Write(LampGreenDB, true); //绿灯
                        //ModbusPLCClient.Write(LampGreenDB, true); //绿灯
                        ModbusPLCClient.Write(LampYellowDB, false); //黄灯
                        ModbusPLCClient.Write(LampYellowDB, false); //黄灯
                    }
                    else if(location.task == 1 && (!Yellow1.Content || !Yellow2.Content))
                    {
                        //ModbusPLCClient.Write(LampGreenDB, true); //绿灯
                        //ModbusPLCClient.Write(LampGreenDB, true); //绿灯
                        ModbusPLCClient.Write(LampYellowDB, true); //黄灯
                        ModbusPLCClient.Write(LampYellowDB, true); //黄灯
                    }
                    else
                    {
                        ModbusPLCClient.Write(LampYellowDB, true); //黄灯
                        ModbusPLCClient.Write(LampYellowDB, true); //黄灯
                        ModbusPLCClient.Write(LampGreenDB, false); //绿灯
                        ModbusPLCClient.Write(LampGreenDB, false); //绿灯
                        ModbusPLCClient.Write(LampRedDB, false); //红灯
                        ModbusPLCClient.Write(LampRedDB, false); //红灯
                    }
                }
                else
                {
                    location.location_state = LocationStateEnum.LocationState_Empty.ToString();
                    OperateResult<bool> Yellow1 = ModbusPLCClient.ReadBool(LampYellowDB);
                    OperateResult<bool> Yellow2 = ModbusPLCClient.ReadBool(LampYellowDB);
                    if (location.logic_col == 2)
                    {
                        ModbusPLCClient.Write(LampRedDB, true); //红灯
                        ModbusPLCClient.Write(LampRedDB, true); //红灯
                    }
                    if (location.task == 1 && (Yellow1.Content || Yellow2.Content))
                    {
                        ModbusPLCClient.Write(LampGreenDB, true); //绿灯
                        ModbusPLCClient.Write(LampGreenDB, true); //绿灯
                        ModbusPLCClient.Write(LampYellowDB, false); //黄灯
                        ModbusPLCClient.Write(LampYellowDB, false); //黄灯
                    }
                    else if (location.task == 1 && (!Yellow1.Content || !Yellow2.Content))
                    {
                        ModbusPLCClient.Write(LampGreenDB, true); //绿灯
                        ModbusPLCClient.Write(LampGreenDB, true); //绿灯
                        ModbusPLCClient.Write(LampYellowDB, true); //黄灯
                        ModbusPLCClient.Write(LampYellowDB, true); //黄灯
                    }
                    else
                    {
                        ModbusPLCClient.Write(LampYellowDB, false); //黄灯
                        ModbusPLCClient.Write(LampYellowDB, false); //黄灯
                        ModbusPLCClient.Write(LampGreenDB, false); //绿灯
                        ModbusPLCClient.Write(LampGreenDB, false); //绿灯
                        ModbusPLCClient.Write(LampRedDB, false); //红灯
                        ModbusPLCClient.Write(LampRedDB, false); //红灯
                    }
                }
                var executeAffrows = freeDB.Update(location).UpdateColumns(t => new
                {
                    t.location_state,
                    t.logic_layer,
                    t.update_time,
                    t.wireless_time,
                    t.tpgd,
                    t.gd1,
                    t.gd2,
                    t.gd3,
                    t.gd4
                }).ExecuteAffrows();
            }
        }
        private void LKHCJdispatch()
        {
wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs
@@ -20,6 +20,7 @@
        {
            PLCClient agvjrplc = WCSService.Clients.Find(v => v.PLCName == "组装AGV调度");
            PLCClient oiplc1F = WCSService.Clients.Find(v => v.PLCName == PLCConst.PLCName1FLKHCJ);
            PLCClient oiplcJR = WCSService.Clients.Find(v => v.PLCName == PLCConst.PLCNameJR);
            #region æ— çº¿io模块 104卷绕中控 å¼€é—¨ä¿¡å·ä¼ é€’
            int comErr = 0;//自动门掉线  "拆包间卷帘门139", "涂布正负极卷帘门142",
@@ -44,37 +45,95 @@
                    OperateResult<bool> R_comErr = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1004." + doorOpen);
                    if (!R_comErr.IsSuccess)
                    {
                        comErr += 30;
                        doorCode += 30;
                        doorState += 30;
                        doorOpen += 30;
                        continue;
                    }
                    string doorStart = "";//开门
                    string doorOff = "";//关门
                    string doorStarted = "";//开门到位
                    string doorOffed = "";//关门到位
                    switch (item)
                    {
                        case "负极库前门":
                            doorStart = "s=2;11";
                            doorOff = "s=2;12";
                            doorStarted = "x=2;14";
                            doorOffed = "x=2;15";
                            break;
                        case "负极库后门":
                            doorStart = "s=2;27";
                            doorOff = "s=2;28";
                            doorStarted = "x=2;30";
                            doorOffed = "x=2;31";
                            break;
                        case "正极库后门":
                            doorStart = "s=2;19";
                            doorOff = "s=2;20";
                            doorStarted = "x=2;22";
                            doorOffed = "x=2;23";
                            break;
                    }
                    //AGV请求开门
                    if (R_comErr.Content)
                    {
                        Dictionary<string, string> Doorsignal = new Dictionary<string, string>();
                        Doorsignal.Add("R_comErr", R_comErr.Content.ToString());//true
                        Doorsignal.Add("DoorName", item.ToString());//item.ToString()
                        string wificont = WIFIAPIInvoke.Doorsignal(Doorsignal);
                        WebResponseContent wificontent = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
                        //if (item == "组装风铃门前门")
                        //{
                        //    Console.WriteLine(wificontent.Status);
                        //}
                        if (wificontent.Status)
                        if ((item == "负极库前门" || item == "负极库后门" || item == "正极库后门") && oiplcJR != null)//
                        {
                            //if (item == "组装风铃门前门")
                            //{
                            //    Console.WriteLine(Convert.ToUInt16(wificontent.Data) );
                            //}
                            if (Convert.ToBoolean(wificontent.Data) == false)//自动门掉线
                            OperateResult JROpenJLM1 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorStart, true);
                            OperateResult JROpenJLM2 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorStart, true);
                            OperateResult JROpenJLM3 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorOff, false);
                            OperateResult JROpenJLM4 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorOff, false);
                            if (JROpenJLM1.IsSuccess || JROpenJLM2.IsSuccess || JROpenJLM3.IsSuccess || JROpenJLM4.IsSuccess)
                            {
                                OperateResult<bool> JRJLMOpen1 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.ReadBool(doorStarted);
                                OperateResult<bool> JRJLMOpen2 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.ReadBool(doorStarted);
                                if (JRJLMOpen1.Content || JRJLMOpen2.Content)//开门到位
                                {
                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(2));
                                }
                                else//门未到位
                                {
                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(3));
                                }
                            }
                            else
                            {
                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
                            }
                            else if (Convert.ToUInt16(wificontent.Data) == 2)//开门到位
                        }
                        else
                        {
                            Dictionary<string, string> Doorsignal = new Dictionary<string, string>();
                            Doorsignal.Add("R_comErr", R_comErr.Content.ToString());//true
                            Doorsignal.Add("DoorName", item.ToString());//item.ToString()
                            string wificont = WIFIAPIInvoke.Doorsignal(Doorsignal);
                            WebResponseContent wificontent = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
                            //if (item == "组装风铃门前门")
                            //{
                            //    Console.WriteLine(wificontent.Status);
                            //}
                            if (wificontent.Status)
                            {
                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
                            }
                            else if (Convert.ToUInt16(wificontent.Data) == 3)//门未到位
                            {
                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
                                //if (item == "组装风铃门前门")
                                //{
                                //    Console.WriteLine(Convert.ToUInt16(wificontent.Data) );
                                //}
                                if (Convert.ToBoolean(wificontent.Data) == false)//自动门掉线
                                {
                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
                                }
                                else if (Convert.ToUInt16(wificontent.Data) == 2)//开门到位
                                {
                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
                                }
                                else if (Convert.ToUInt16(wificontent.Data) == 3)//门未到位
                                {
                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
                                }
                            }
                        }
                    }
@@ -92,26 +151,54 @@
                        //else
                        //{
                        // WIDESEA_Common.Tools.WriteLog.GetLog("断开开门信号").Write($"Info:{item}+{DateTime.Now}", "断开开门信号");
                        //AGV不给开门信号的时候 æ–­å¼€å¼€é—¨ä¿¡å·
                        Dictionary<string, string> Doorsigna1 = new Dictionary<string, string>();
                        Doorsigna1.Add("R_comErr", R_comErr.Content.ToString());
                        Doorsigna1.Add("DoorName", item.ToString());
                        string wificont = WIFIAPIInvoke.Doorsignal(Doorsigna1);
                        WebResponseContent wificontent2 = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
                        if (wificontent2.Status)
                        if ((item == "负极库前门" || item == "负极库后门" || item == "正极库后门") && oiplcJR != null)
                        {
                            if (Convert.ToBoolean(wificontent2.Data) == false)//自动门掉线
                            //AGV不给开门信号的时候 æ–­å¼€å¼€é—¨ä¿¡å·
                            OperateResult JROpenJLM1 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorStart, false);
                            OperateResult JROpenJLM2 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorStart, false);
                            //OperateResult JROpenJLM3 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorOff, true);
                            //OperateResult JROpenJLM4 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorOff, true);
                            if (JROpenJLM1.IsSuccess || JROpenJLM2.IsSuccess)
                            {
                                OperateResult<bool> JRJLMOpen1 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.ReadBool(doorOffed);
                                OperateResult<bool> JRJLMOpen2 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.ReadBool(doorOffed);
                                if (JRJLMOpen1.Content || JRJLMOpen2.Content)//关门到位
                                {
                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1));
                                }
                                else//门未到位
                                {
                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(3));
                                }
                            }
                            else
                            {
                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
                            }
                            ////else if (Convert.ToUInt16(wificontent2.Data) == 1)//关门到位
                            ////{
                            ////    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
                            ////}
                            else
                        }
                        else
                        {
                            //AGV不给开门信号的时候 æ–­å¼€å¼€é—¨ä¿¡å·
                            Dictionary<string, string> Doorsigna1 = new Dictionary<string, string>();
                            Doorsigna1.Add("R_comErr", R_comErr.Content.ToString());
                            Doorsigna1.Add("DoorName", item.ToString());
                            string wificont = WIFIAPIInvoke.Doorsignal(Doorsigna1);
                            WebResponseContent wificontent2 = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
                            if (wificontent2.Status)
                            {
                                //关门未到位
                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
                                if (Convert.ToBoolean(wificontent2.Data) == false)//自动门掉线
                                {
                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
                                }
                                ////else if (Convert.ToUInt16(wificontent2.Data) == 1)//关门到位
                                ////{
                                ////    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
                                ////}
                                else
                                {
                                    //关门未到位
                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
                                }
                            }
                        }
                        //}
@@ -136,11 +223,11 @@
                        OperateResult<bool> JLMOpen = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.ReadBool("x=2;8612");
                        if (JLMOpen.Content)//开门到位
                        {
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 2);
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), Convert.ToUInt16(2));
                        }
                        else//门未到位
                        {
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 3);
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), Convert.ToUInt16(3));
                        }
                    }
                    else
@@ -157,11 +244,11 @@
                        OperateResult<bool> JLMOpen = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.ReadBool("x=2;8613");
                        if (JLMOpen.Content)//关门到位
                        {
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 1);
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), Convert.ToUInt16(1));
                        }
                        else//门未到位
                        {
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 3);
                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), Convert.ToUInt16(3));
                        }
                    }
                    else
wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/HCJ_XHCD.cs
@@ -31,6 +31,10 @@
            double doorState_zz = 24.0;//缓存架物料状态(1:空位,2:空托盘,3:满托盘)
            double gdState_zz = 26.0;//预留
            double comErr_JR = 9570.0;//是否掉线
            double doorCode_JR = 9572.0;//缓存架ID
            double doorState_JR = 9594.0;//缓存架物料状态(1:空位,2:空托盘,3:满托盘)
            double comErr_zj = 0.0;
            double doorCode_zj = 2.0;
            double doorState_zj = 24.0;
@@ -40,7 +44,9 @@
            try
            {
                List<base_ware_location> base_Ware_Locations_zz = locRepository.Find(t => t.upper_code.Contains("JK") || t.upper_code.Contains("QJ") || t.upper_code.Contains("GFHCJ")).OrderBy(t => t.order_num).ToList();
                List<base_ware_location> base_Ware_Locations_zz = locRepository.Find(t =>( t.upper_code.Contains("JK") || t.upper_code.Contains("QJ") || t.upper_code.Contains("GFHCJ")) && !t.upper_code.Contains("QJHCJ10") && !t.upper_code.Contains("QJHCJ11")).OrderBy(t => t.order_num).ToList();
                List<base_ware_location> base_Ware_Locations_JR = locRepository.Find(t =>t.upper_code.Contains("QJHCJ10") || t.upper_code.Contains("QJHCJ11")).OrderBy(t => t.order_num).ToList();
                List<base_ware_location> base_Ware_Locations_zj = locRepository.Find(t => t.upper_code.Contains("ZJ-BC") || t.upper_code.Contains("ZJ-TB")).OrderBy(t => t.order_num).ToList();
@@ -260,8 +266,38 @@
                    doorState_fj += 30;
                }
                foreach (var item in base_Ware_Locations_JR)//卷绕车间
                {
                    if (agvzzplc == null)
                    {
                        break;
                    }
              //  WIDESEA_Common.Tools.WriteLog.GetLog("信号传递").Write($"Info:{DateTime.Now}", "信号传递");
                    bool R_HCJ_ComErr_zz = false;
                    if (item.location_state == "LocationState_Close" || item.tpgd == -1)
                    {
                        R_HCJ_ComErr_zz = true;
                    }
                    if (item.tpgd == 0)
                    {
                        OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_JR, Convert.ToInt16(1));
                    }
                    else if (item.tpgd == 1)
                    {
                        OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_JR, Convert.ToInt16(3));
                    }
                    else if (item.tpgd == -1)
                    {
                        OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_JR, Convert.ToInt16(-1));
                    }
                    OperateResult W_HCJ_StationCode = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorCode_JR, item.upper_code.ToString());
                    OperateResult W_HCJ_ComErr = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + comErr_JR, R_HCJ_ComErr_zz);
                    comErr_JR += 30;
                    doorCode_JR += 30;
                    doorState_JR += 30;
                }
                //  WIDESEA_Common.Tools.WriteLog.GetLog("信号传递").Write($"Info:{DateTime.Now}", "信号传递");
            }
            catch (Exception)
            {
wcs-server-hbf/WIDESEA_WCSServer/appsettings.json
@@ -15,7 +15,7 @@
  //P@ssw0rd
  "Connection": {
    "DBType": "MsSql",
    "DbConnectionString": "Data Source=192.168.20.248;Initial Catalog=JMYW_WCSDB;Persist Security Info=True;User ID=sa1;Password=123456;Connect Timeout=500;",
    "DbConnectionString": "Data Source=127.0.0.1;Initial Catalog=JMYW_WCSDB;Persist Security Info=True;User ID=sa;Password=123456;Connect Timeout=500;",
    "RedisConnectionString": "127.0.0.1,Password=123456,SyncTimeout=15000",
    "UseRedis": "false"
  },
wcs-server-hbf/WIDESEA_WCSServer/modified_data.json
@@ -1 +1 @@
{"MM":"456","logtime":"2024-09-27"}
{"MM":"456","logtime":"2026-03-12"}