wangxinhui
2024-12-26 78b99e5348592a29ca1393a5e13db619cc4eba56
wcs-server-hbf/WIDESEA_WCS/Jobs/RGV/AluminumCaseJob.cs
@@ -445,6 +445,42 @@
                doorState_1f_cx += 30;
           
            }
            //入壳缓存架
            double comErr_rk = 9450.0;//是否掉线
            double doorCode_rk = 9452.0;//缓存架ID
            double doorState_rk = 9474.0;//缓存架物料状态(1:空位,2:空托盘,3:满托盘)
            var dt_stationinfo_rk = freeDB.Select<dt_stationinfo>().Where(d => d.stationType == "入壳缓存架").OrderBy(t => t.sort).ToList();
            foreach (var item in dt_stationinfo_rk)
            {
                if (item.connect == true)
                {
                    //掉线
                }
                else
                {
                    if (item.tpgd == true && item.wlgd == true)
                    {
                        OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_rk, Convert.ToInt16(3));
                    }
                    else if (item.tpgd == true && item.wlgd == false)
                    {
                        OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_rk, Convert.ToInt16(2));
                    }
                    else
                    {
                        OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_rk, Convert.ToInt16(1));
                    }
                }
                OperateResult W_HCJ_StationCode = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorCode_rk, item.stationCode.ToString());
                OperateResult W_HCJ_ComErr = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + comErr_rk, item.connect);
                comErr_1f_cx += 30;
                doorCode_1f_cx += 30;
                doorState_1f_cx += 30;
            }
        }
        private void agvtaskAdd(string agv_remark, string begin, string end,bool communi)
@@ -641,7 +677,7 @@
                        t.LampYellow
                    }).ExecuteAffrows();
                }
                else if (stationList.HCJCenterName == "铝壳缓存架一楼")
                else if (stationList.HCJCenterName == "铝壳缓存架一楼" && !item.HCJName.Contains("入壳缓存架"))
                {
                    string ButtonResetDB = item.RPLCDB[0];  //复位按钮(黄色)信号点位
                    string ButtonEnsureDB = item.RPLCDB[1];//确认按钮(绿色)信号点位
@@ -820,6 +856,142 @@
                        t.LampYellow
                    }).ExecuteAffrows();
                }
                else if (stationList.HCJCenterName == "铝壳缓存架一楼" && item.HCJName.Contains("入壳缓存架"))
                {
                    string ButtonEnsureDB = item.RPLCDB[0];//确认按钮(绿色)信号点位
                    string tpgdstateDB = item.RPLCDB[1];//托盘光电状态信号点位
                    string wlgdstateDB = item.RPLCDB[2];//物料光电状态信号点位
                    ////确认按钮(绿色)
                    OperateResult<bool> R_TBR_XT = ModbusPLCClient.ReadBool(ButtonEnsureDB);
                    WriteLog.GetLog().Write($"{item.HCJName}缓存架,连接{R_TBR_XT.IsSuccess}", "入壳缓存架");
                    if (!R_TBR_XT.IsSuccess)
                    {
                        //Console.WriteLine($"-{ModbusPLCClient.IpAddress}---{station.stationCode}----{ButtonEnsureDB}--------false--{R_TBR_XT.Message}----------------");
                        station.connect = true;
                        var stationoff = freeDB.Update(station).UpdateColumns(t => new
                        {
                            t.connect
                        }).ExecuteAffrows();
                        continue;
                    }
                    bool ButtonEnsure = ModbusPLCClient.ReadBool(ButtonEnsureDB).Content;
                    //托盘光电状态
                    bool pgdstate = ModbusPLCClient.ReadBool(tpgdstateDB).Content;
                    //物料光电状态
                    bool wlgdstate = ModbusPLCClient.ReadBool(wlgdstateDB).Content;
                    //根据读到的PLC信息,轮询更新数据库信息
                    station.getLastTime = DateTime.Now;
                    station.greenbutton = ButtonEnsure;
                    station.tpgd = pgdstate;
                    station.wlgd = wlgdstate;
                    string LampYellowDB = item.WPLCDB[0];//黄灯信号点位
                    string LampGreenDB = item.WPLCDB[1];//绿灯信号点位
                    string LampRedDB = item.WPLCDB[2];//红灯信号点位
                    //货架存在任务任务时
                    if (station.task)
                    {
                        if (station.LampYellow)
                        {
                            ModbusPLCClient.Write(LampYellowDB, false); //黄灯
                            ModbusPLCClient.Write(LampRedDB, false); //红灯
                            ModbusPLCClient.Write(LampGreenDB, false); //绿灯
                                                                       // Console.WriteLine($"{station.stationCode}---亮---{DateTime.Now}");
                            station.LampRed = false;
                            station.LampYellow = false;
                            station.LampGreen = false;
                        }
                        else
                        {
                            ModbusPLCClient.Write(LampYellowDB, true); //黄灯
                            ModbusPLCClient.Write(LampRedDB, false); //红灯
                            ModbusPLCClient.Write(LampGreenDB, false); //绿灯
                                                                       // Console.WriteLine($"{station.stationCode}---灭---{DateTime.Now}");
                            station.LampRed = false;
                            station.LampYellow = true;
                            station.LampGreen = false;
                        }
                    }
                    else
                    {
                        //当有人按下绿色按钮时:
                        //将缓存架的灯光亮绿灯
                        if (ButtonEnsure && pgdstate && wlgdstate)
                        {
                            DateTime date = DateTime.Now;
                            DateTime time2 = station.greenbuttontime;
                            Double STAMP = (date - time2).TotalSeconds;
                            if (STAMP > 4)
                            {
                                if (station.LampGreen)
                                {
                                    ModbusPLCClient.Write(LampGreenDB, false); //绿灯
                                    station.LampGreen = false;
                                }
                                else
                                {
                                    ModbusPLCClient.Write(LampGreenDB, true); //绿灯
                                    station.LampGreen = true;
                                }
                                //ModbusPLCClient.Write(LampRedDB, false); //红灯
                                ModbusPLCClient.Write(LampYellowDB, false); //黄灯
                                //station.LampRed = false;
                                station.LampYellow = false;
                                station.greenbuttontime = DateTime.Now;
                            }
                        }
                        else if (station.LampGreen && (!pgdstate || !wlgdstate))
                        {
                            ModbusPLCClient.Write(LampRedDB, false); //红灯
                            ModbusPLCClient.Write(LampYellowDB, false); //黄灯
                            ModbusPLCClient.Write(LampGreenDB, false); //绿灯
                            station.LampRed = false;
                            station.LampYellow = false;
                            station.LampGreen = false;
                        }
                        //检测托盘光电有料,但未按确认按钮,亮黄灯
                        else if (!station.LampGreen && pgdstate)
                        {
                            // ModbusPLCClient.Write(LampRedDB, false); //红灯
                            ModbusPLCClient.Write(LampYellowDB, true); //黄灯
                            ModbusPLCClient.Write(LampGreenDB, false); //绿灯
                                                                       // station.LampRed = false;
                            station.LampYellow = true;
                            station.LampGreen = false;
                        }
                        else if (!station.LampGreen && !pgdstate && !wlgdstate)
                        {
                            ModbusPLCClient.Write(LampRedDB, false); //红灯
                            ModbusPLCClient.Write(LampYellowDB, false); //黄灯
                            ModbusPLCClient.Write(LampGreenDB, false); //绿灯
                            station.LampRed = false;
                            station.LampYellow = false;
                            station.LampGreen = false;
                        }
                    }
                    station.connect = false;
                    var executeAffrows = freeDB.Update(station).UpdateColumns(t => new
                    {
                        t.connect,
                        t.getLastTime,
                        t.greenbutton,
                        t.tpgd,
                        t.wlgd,
                        t.LampRed,
                        t.LampGreen,
                        t.LampYellow
                    }).ExecuteAffrows();
                }
            }
        }