| | |
| | | "RPLCDB": [ "x=2;8700", "x=2;8701", "x=2;8702", "x=2;8703", "x=2;8704" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "0", "1", "2" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | { |
| | | "HCJName": "éçç¼åæ¶9", |
| | | "HCJCode": "1F-LKHCJ9", |
| | | "RPLCDB": [ "x=2;8705", "x=2;8706", "x=2;8707", "x=2;8708", "x=2;8709" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "3", "4", "5" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | { |
| | | "HCJName": "éçç¼åæ¶8", |
| | | "HCJCode": "1F-LKHCJ8", |
| | | "RPLCDB": [ "x=2;8710", "x=2;8711", "x=2;8712", "x=2;8713", "x=2;8714" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "6", "7", "8" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | //{ |
| | | // "HCJName": "éçç¼åæ¶9", |
| | | // "HCJCode": "1F-LKHCJ9", |
| | | // "RPLCDB": [ "x=2;8705", "x=2;8706", "x=2;8707", "x=2;8708", "x=2;8709" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | // "WPLCDB": [ "3", "4", "5" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | //}, |
| | | //{ |
| | | // "HCJName": "éçç¼åæ¶8", |
| | | // "HCJCode": "1F-LKHCJ8", |
| | | // "RPLCDB": [ "x=2;8710", "x=2;8711", "x=2;8712", "x=2;8713", "x=2;8714" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | // "WPLCDB": [ "6", "7", "8" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | //}, |
| | | |
| | | |
| | | { |
| | | "HCJName": "䏿¥¼éèåº3ç¼åæ6", |
| | | "HCJCode": "1F-LKHCJ3-6", |
| | | "RPLCDB": [ "x=2;8715", "x=2;8716", "x=2;8717", "x=2;8718", "x=2;8719" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "9", "10", "11" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | { |
| | | "HCJName": "䏿¥¼éèåº3ç¼åæ4", |
| | | "HCJCode": "1F-LKHCJ3-4", |
| | | "RPLCDB": [ "x=2;8720", "x=2;8721", "x=2;8722", "x=2;8723", "x=2;8724" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "12", "13", "14" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | { |
| | | "HCJName": "䏿¥¼éèåº3ç¼åæ2", |
| | | "HCJCode": "1F-LKHCJ3-2", |
| | | "RPLCDB": [ "x=2;8725", "x=2;8726", "x=2;8727", "x=2;8728", "x=2;8729" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "15", "16", "17" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | { |
| | | "HCJName": "䏿¥¼éèåº3ç¼åæ8", |
| | | "HCJCode": "1F-LKHCJ3-8", |
| | | "RPLCDB": [ "x=2;8730", "x=2;8731", "x=2;8800", "x=2;8801", "x=2;8802" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "18", "19", "20" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | //{ |
| | | // "HCJName": "䏿¥¼éèåº3ç¼åæ6", |
| | | // "HCJCode": "1F-LKHCJ3-6", |
| | | // "RPLCDB": [ "x=2;8715", "x=2;8716", "x=2;8717", "x=2;8718", "x=2;8719" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | // "WPLCDB": [ "9", "10", "11" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | //}, |
| | | //{ |
| | | // "HCJName": "䏿¥¼éèåº3ç¼åæ4", |
| | | // "HCJCode": "1F-LKHCJ3-4", |
| | | // "RPLCDB": [ "x=2;8720", "x=2;8721", "x=2;8722", "x=2;8723", "x=2;8724" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | // "WPLCDB": [ "12", "13", "14" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | //}, |
| | | //{ |
| | | // "HCJName": "䏿¥¼éèåº3ç¼åæ2", |
| | | // "HCJCode": "1F-LKHCJ3-2", |
| | | // "RPLCDB": [ "x=2;8725", "x=2;8726", "x=2;8727", "x=2;8728", "x=2;8729" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | // "WPLCDB": [ "15", "16", "17" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | //}, |
| | | //{ |
| | | // "HCJName": "䏿¥¼éèåº3ç¼åæ8", |
| | | // "HCJCode": "1F-LKHCJ3-8", |
| | | // "RPLCDB": [ "x=2;8730", "x=2;8731", "x=2;8800", "x=2;8801", "x=2;8802" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | // "WPLCDB": [ "18", "19", "20" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | //}, |
| | | { |
| | | "HCJName": "䏿¥¼éèåº3ç¼åæ7", |
| | | "HCJCode": "1F-LKHCJ3-7", |
| | |
| | | "HCJCode": "1F-LKHCJ1", |
| | | "RPLCDB": [ "x=2;8921", "x=2;8922", "x=2;8923", "x=2;8924", "x=2;8925" ], //é»è²æé®ï¼ç»¿è²æé®ï¼çº¢è²æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "8019", "8020", "8021" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | { |
| | | "HCJName": "å
¥å£³ç¼åæ¶1", |
| | | "HCJCode": "RKHCJ1", |
| | | "RPLCDB": [ "x=2;8600", "x=2;8601", "x=2;8602" ], //æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "s=2;2", "s=2;1", "s=2;0" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | { |
| | | "HCJName": "å
¥å£³ç¼åæ¶2", |
| | | "HCJCode": "RKHCJ2", |
| | | "RPLCDB": [ "x=2;8603", "x=2;8604", "x=2;8605" ], //æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "s=2;5", "s=2;4", "s=2;3" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | { |
| | | "HCJName": "å
¥å£³ç¼åæ¶3", |
| | | "HCJCode": "RKHCJ3", |
| | | "RPLCDB": [ "x=2;8606", "x=2;8607", "x=2;8608" ], //æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "s=2;8", "s=2;7", "s=2;6" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | }, |
| | | { |
| | | "HCJName": "å
¥å£³ç¼åæ¶4", |
| | | "HCJCode": "RKHCJ4", |
| | | "RPLCDB": [ "x=2;8609", "x=2;8610", "x=2;8611" ], //æé®ï¼æçå
çµï¼ç©æå
çµ |
| | | "WPLCDB": [ "s=2;11", "s=2;10", "s=2;9" ] //é»ç¯,绿ç¯,çº¢ç¯ |
| | | } |
| | | |
| | | ] |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Quartz; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.Tools; |
| | | |
| | | namespace WIDESEA_WCS |
| | | { |
| | | /// <summary> |
| | | /// å
¥å£³æºä¸ä¸æè°åº¦ |
| | | /// </summary> |
| | | [DisallowConcurrentExecution] |
| | | public class JobRK_1209 : IJob |
| | | { |
| | | private static int lockObj1 = 0; |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | if (lockObj1 == 0) |
| | | { |
| | | try |
| | | { |
| | | lockObj1 = 1; |
| | | Task task = Task.Run(() => |
| | | { |
| | | while (true) |
| | | { |
| | | try |
| | | { |
| | | WriteLog.GetLog().Write($"å¼å§æ¶é´ï¼{DateTime.Now} --------------", $"å
¥å£³æºä¸ä¸æè°åº¦"); |
| | | StackerExecutor.RKSB_UpTask(); //å
¥å£³æºä¸æä»»å¡ |
| | | StackerExecutor.RKSB_DownTask(); //å
¥å£³æºä¸æä»»å¡ |
| | | WriteLog.GetLog().Write($"ç»ææ¶é´ï¼{DateTime.Now} --------------", $"å
¥å£³æºä¸ä¸æè°åº¦"); |
| | | } |
| | | catch { } |
| | | |
| | | Thread.Sleep(200); |
| | | } |
| | | }); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | lockObj1 = 0; |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Quartz; |
| | | using System; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.Tools; |
| | | using WIDESEA_WCS.Jobs; |
| | | using WIDESEA_WCS.SchedulerExecute.AGV; |
| | | |
| | | namespace WIDESEA_WCS |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class heartbeatRKJob : JobBase, IJob |
| | | { |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | try |
| | | { |
| | | var executeLog = ExecuteJob(context, () => Run(context)); |
| | | } |
| | | catch (Exception) |
| | | { |
| | | |
| | | } |
| | | return Task.FromResult(string.Empty); |
| | | } |
| | | public string Run(IJobExecutionContext context) |
| | | { |
| | | try |
| | | { |
| | | heartbeatRK.heartbeatWork();//å
¥å£³æºè®¾å¤åAGVäº¤äº |
| | | } |
| | | catch (Exception) { } |
| | | return ""; |
| | | } |
| | | } |
| | | } |
| | |
| | | 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) |
| | |
| | | t.LampYellow |
| | | }).ExecuteAffrows(); |
| | | } |
| | | else if (stationList.HCJCenterName == "é壳ç¼åæ¶ä¸æ¥¼") |
| | | else if (stationList.HCJCenterName == "é壳ç¼åæ¶ä¸æ¥¼" && !item.HCJName.Contains("å
¥å£³ç¼åæ¶")) |
| | | { |
| | | string ButtonResetDB = item.RPLCDB[0]; //å¤ä½æé®(é»è²)ä¿¡å·ç¹ä½ |
| | | string ButtonEnsureDB = item.RPLCDB[1];//确认æé®(绿è²)ä¿¡å·ç¹ä½ |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | WriteLog.GetLog().Write($"ä»»å¡å·ï¼{agvTask.agv_tasknum},å
容ï¼ç»ç¹å°åï¼{dt_Stationinfo.stationCode},è´§ä½ä¿®æ¹å¤±è´¥", $"è´§ä½ä¿®æ¹å¤±è´¥"); |
| | | } |
| | | } |
| | | else if (agvTask.agv_remark.Contains("å
¥å£³ä¸æä»»å¡")) |
| | | { |
| | | dt_stationinfo dt_Stationinfo = stationinfoRepository.FindFirst(d => d.stationCode == agvTask.agv_fromaddress); |
| | | if (dt_Stationinfo == null) |
| | | { |
| | | return; |
| | | } |
| | | dt_Stationinfo.task = false; |
| | | int a = stationinfoRepository.Update(dt_Stationinfo, x => new { x.task }, true); |
| | | if (a == 0) |
| | | { |
| | | WriteLog.GetLog().Write($"ä»»å¡å·ï¼{agvTask.agv_tasknum},å
容ï¼ç»ç¹å°åï¼{dt_Stationinfo.stationCode},è´§ä½ä¿®æ¹å¤±è´¥", $"è´§ä½ä¿®æ¹å¤±è´¥"); |
| | | } |
| | | } |
| | | #endregion |
| | | plcClient.WriteValue(TaskDBName.taskFbInteractiveW.ToString(), 1); |
| | | for (int i = 0; i < 5; i++) |
| | |
| | | if (agvTask.agv_fromaddress.Contains("HCJ")) |
| | | { |
| | | base_ware_location location = locationRepository.FindFirst(x => x.upper_code == agvTask.agv_fromaddress); |
| | | if (!agvTask.agv_remark.Contains("åå·ä¸æå空")) |
| | | if (location != null) |
| | | { |
| | | location.geartype = "ææ "; |
| | | } |
| | | location.update_time = DateTime.Now; |
| | | location.logic_col = 0; |
| | | location.task = 2; |
| | | location.logic_row = "0"; |
| | | if (!agvTask.agv_remark.Contains("åå·ä¸æå空")) |
| | | { |
| | | location.geartype = "ææ "; |
| | | } |
| | | location.update_time = DateTime.Now; |
| | | location.logic_col = 0; |
| | | location.task = 2; |
| | | location.logic_row = "0"; |
| | | |
| | | int a = locationRepository.Update(location, x => new { x.logic_col, x.task, x.logic_row, x.update_time, x.geartype }, true); |
| | | if (a == 0) |
| | | { |
| | | WriteLog.GetLog().Write($"ä»»å¡å·ï¼{agvTask.agv_tasknum},å
容ï¼ç»ç¹å°åï¼{location.upper_code},è´§ä½ä¿®æ¹å¤±è´¥", $"è´§ä½ä¿®æ¹å¤±è´¥"); |
| | | int a = locationRepository.Update(location, x => new { x.logic_col, x.task, x.logic_row, x.update_time, x.geartype }, true); |
| | | if (a == 0) |
| | | { |
| | | WriteLog.GetLog().Write($"ä»»å¡å·ï¼{agvTask.agv_tasknum},å
容ï¼ç»ç¹å°åï¼{location.upper_code},è´§ä½ä¿®æ¹å¤±è´¥", $"è´§ä½ä¿®æ¹å¤±è´¥"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | } |
| | | else if (agvTask.agv_remark.Contains("å
¥å£³ä¸æä»»å¡")) |
| | | { |
| | | dt_stationinfo dt_Stationinfo = stationinfoRepository.FindFirst(d => d.stationCode == agvTask.agv_toaddress); |
| | | if (dt_Stationinfo == null) |
| | | { |
| | | return; |
| | | } |
| | | dt_Stationinfo.task = false; |
| | | int a = stationinfoRepository.Update(dt_Stationinfo, x => new { x.task }, true); |
| | | if (a == 0) |
| | | { |
| | | WriteLog.GetLog().Write($"ä»»å¡å·ï¼{agvTask.agv_tasknum},å
容ï¼ç»ç¹å°åï¼{dt_Stationinfo.stationCode},è´§ä½ä¿®æ¹å¤±è´¥", $"è´§ä½ä¿®æ¹å¤±è´¥"); |
| | | } |
| | | } |
| | | #endregion |
| | | plcClient.WriteValue(TaskDBName.taskFbInteractiveW.ToString(), 1); |
| | | for (int i = 0; i < 5; i++) |
| | |
| | | } |
| | | |
| | | } |
| | | else if (agvTask.agv_remark.Contains("å
¥å£³ä¸æä»»å¡")) |
| | | { |
| | | dt_stationinfo dt_Stationinfo = stationinfoRepository.FindFirst(d => d.stationCode == agvTask.agv_toaddress); |
| | | if (dt_Stationinfo != null) |
| | | { |
| | | dt_Stationinfo.task = false; |
| | | int a = stationinfoRepository.Update(dt_Stationinfo, x => new { x.task }, true); |
| | | if (a == 0) |
| | | { |
| | | WriteLog.GetLog().Write($"ä»»å¡å·ï¼{agvTask.agv_tasknum},å
容ï¼ç»ç¹å°åï¼{dt_Stationinfo.stationCode},è´§ä½ä¿®æ¹å¤±è´¥", $"è´§ä½ä¿®æ¹å¤±è´¥"); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | base_ware_location location = locationRepository.FindFirst(x => x.upper_code == agvTask.agv_toaddress); |
| | | location.logic_col = 0; |
| | | location.logic_row = "0"; |
| | | location.task = 2; |
| | | locationRepository.Update(location, x => new { x.logic_col, x.logic_row, x.task }, true); |
| | | if (location!=null) |
| | | { |
| | | location.logic_col = 0; |
| | | location.logic_row = "0"; |
| | | location.task = 2; |
| | | locationRepository.Update(location, x => new { x.logic_col, x.logic_row, x.task }, true); |
| | | } |
| | | } |
| | | } |
| | | else if (agvTask.agv_toaddress.Contains("SB") && agvTask.agv_fromaddress.Contains("HCJ")) |
| | | { |
| | | base_ware_location location = locationRepository.FindFirst(x => x.upper_code == agvTask.agv_fromaddress); |
| | | location.logic_col = 0; |
| | | location.logic_row = "0"; |
| | | location.task = 2; |
| | | locationRepository.Update(location, x => new { x.logic_col, x.logic_row, x.task }, true); |
| | | if (agvTask.agv_remark.Contains("å
¥å£³ä¸æä»»å¡")) |
| | | { |
| | | dt_stationinfo dt_Stationinfo = stationinfoRepository.FindFirst(d => d.stationCode == agvTask.agv_fromaddress); |
| | | if (dt_Stationinfo != null) |
| | | { |
| | | dt_Stationinfo.task = false; |
| | | int a = stationinfoRepository.Update(dt_Stationinfo, x => new { x.task }, true); |
| | | if (a == 0) |
| | | { |
| | | WriteLog.GetLog().Write($"ä»»å¡å·ï¼{agvTask.agv_tasknum},å
容ï¼ç»ç¹å°åï¼{dt_Stationinfo.stationCode},è´§ä½ä¿®æ¹å¤±è´¥", $"è´§ä½ä¿®æ¹å¤±è´¥"); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | base_ware_location location = locationRepository.FindFirst(x => x.upper_code == agvTask.agv_fromaddress); |
| | | if (location != null) |
| | | { |
| | | location.logic_col = 0; |
| | | location.logic_row = "0"; |
| | | location.task = 2; |
| | | locationRepository.Update(location, x => new { x.logic_col, x.logic_row, x.task }, true); |
| | | } |
| | | } |
| | | } |
| | | else if (agvTask.agv_toaddress.Contains("HCJ") && agvTask.agv_fromaddress.Contains("HCJ")) |
| | | { |
| | |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Common.Tools; |
| | | using WIDESEA_Core.Utilities; |
| | | using WIDESEA_Services.Services; |
| | | using WIDESEA_WCS.WCSClient; |
| | | using static FreeSql.Internal.GlobalFilter; |
| | | |
| | | namespace WIDESEA_WCS.SchedulerExecute.AGV |
| | | { |
| | |
| | | public static void AgvAndEquiWork_JLM() |
| | | { |
| | | PLCClient agvjrplc = WCSService.Clients.Find(v => v.PLCName == "ç»è£
AGVè°åº¦"); |
| | | PLCClient oiplc1F = WCSService.Clients.Find(v => v.PLCName == PLCConst.PLCName1FLKHCJ); |
| | | |
| | | #region æ 线io模å 104å·ç»ä¸æ§ å¼é¨ä¿¡å·ä¼ é |
| | | int comErr = 0;//èªå¨é¨æçº¿ "æå
é´å·å¸é¨139", "æ¶å¸æ£è´æå·å¸é¨142", |
| | | double doorCode = 2.0; //èªå¨é¨ID |
| | | double doorState = 24.0;//èªå¨é¨ç¶æï¼1é¨å
³å°ä½ï¼2 é¨å¼å°ä½ï¼3鍿ªå°ä½ |
| | | double doorOpen = 26.0; //èªå¨é¨æ§å¶å¼ |
| | | |
| | | int RKErr = 450;//èªå¨é¨æçº¿ |
| | | double RKCode = 452.0; //èªå¨é¨ID |
| | | double RKState = 474.0;//èªå¨é¨ç¶æï¼1é¨å
³å°ä½ï¼2 é¨å¼å°ä½ï¼3鍿ªå°ä½ |
| | | double RKOpen = 476.0; //èªå¨é¨æ§å¶å¼ |
| | | try |
| | | { |
| | | if (agvjrplc == null) |
| | |
| | | doorState += 30; |
| | | doorOpen += 30; |
| | | } |
| | | //å
¥å£³å·å¸é¨ 24/12/12æ°å¢ |
| | | OperateResult<bool> R_RKOpen = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1004." + RKOpen); |
| | | if (!R_RKOpen.IsSuccess) |
| | | { |
| | | return; |
| | | } |
| | | //AGV请æ±å¼é¨ |
| | | if (R_RKOpen.Content) |
| | | { |
| | | OperateResult RKOpenJLM = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.Write("s=2;12",true); |
| | | if (RKOpenJLM.IsSuccess) |
| | | { |
| | | OperateResult<bool> JLMOpen = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.ReadBool("x=2;8612"); |
| | | if (JLMOpen.Content)//å¼é¨å°ä½ |
| | | { |
| | | OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 2); |
| | | } |
| | | else//鍿ªå°ä½ |
| | | { |
| | | OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 3); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKErr), true); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //AGVä¸ç»å¼é¨ä¿¡å·çæ¶å æå¼å¼é¨ä¿¡å· |
| | | OperateResult RKOpenJLM = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.Write("s=2;12", false); |
| | | if (RKOpenJLM.IsSuccess) |
| | | { |
| | | OperateResult<bool> JLMOpen = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.ReadBool("x=2;8613"); |
| | | if (JLMOpen.Content)//å
³é¨å°ä½ |
| | | { |
| | | OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 1); |
| | | } |
| | | else//鍿ªå°ä½ |
| | | { |
| | | OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 3); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKErr), true); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using HslCommunication; |
| | | using NetTaste; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.Tools; |
| | | using WIDESEA_Core.EFDbContext; |
| | | using WIDESEA_Services.IRepositories; |
| | | using WIDESEA_Services.Repositories; |
| | | using WIDESEA_WCS.WCSClient; |
| | | |
| | | namespace WIDESEA_WCS.SchedulerExecute.AGV |
| | | { |
| | | public partial class heartbeatRK |
| | | { |
| | | private static int lockObj1 = 0; |
| | | public static void heartbeatWork() |
| | | { |
| | | if (lockObj1 == 0) |
| | | { |
| | | lockObj1 = 1; |
| | | { |
| | | string rksb = "å
¥å£³æº1"; |
| | | //å¿è·³ |
| | | Task.Run(() => |
| | | { |
| | | |
| | | while (true) |
| | | { |
| | | try |
| | | { |
| | | Thread.Sleep(200); |
| | | if (WCSService.Clients == null) |
| | | { |
| | | continue; |
| | | } |
| | | PLCClient rkplc = WCSService.Clients.Find(v => v.PLCName == rksb); |
| | | if (rkplc == null) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | PLCClient agvplc = WCSService.Clients.Find(v => v.PLCName == "ç»è£
AGVè°åº¦"); |
| | | if (agvplc == null) |
| | | { |
| | | continue; |
| | | } |
| | | #region å
¥å£³æºä¸å·å¿è·³ |
| | | WriteLog.GetLog().Write($"--------------{rksb}å¿è·³ä¼ éå¼å§,æ¶é´ï¼{DateTime.Now}--------------{Environment.NewLine}", $"{rksb}å¿è·³ä¼ é"); |
| | | // 读åå
¥å£³æº1å·è®¾å¤å¿è·³ |
| | | bool R_RK1_XT =Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5300").Content); |
| | | |
| | | // å
¥å£³æº1å·è®¾å¤å¿è·³âåå
¥âãç»è£
AGVè°åº¦å¿è·³ |
| | | OperateResult W_AGV_XT = agvplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.3600.0", R_RK1_XT); |
| | | |
| | | // 读åç»è£
AGVè°åº¦å¿è·³ |
| | | OperateResult<bool> R_AGV_XT = agvplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1002.3700.0"); |
| | | |
| | | Int16 readValue = Convert.ToInt16(R_AGV_XT.Content); |
| | | // ç»è£
AGVè°åº¦âåå
¥âãå
¥å£³æº1å·è®¾å¤å¿è·³ |
| | | OperateResult W_RK1_XT = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5300", readValue); |
| | | |
| | | WriteLog.GetLog().Write($"--------------{rksb}å¿è·³ä¼ éç»æ,æ¶é´ï¼{DateTime.Now}--------------{Environment.NewLine}", $"{rksb}å¿è·³ä¼ é"); |
| | | #endregion |
| | | } |
| | | catch (Exception ex) { } |
| | | } |
| | | |
| | | }); |
| | | //ä¸æå£ |
| | | Task.Run(() => |
| | | { |
| | | while (true) |
| | | { |
| | | try |
| | | { |
| | | if (WCSService.Clients == null) |
| | | { |
| | | continue; |
| | | } |
| | | PLCClient rkplc = WCSService.Clients.Find(v => v.PLCName == rksb); |
| | | if (rkplc == null) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | PLCClient agvplcZZ = WCSService.Clients.Find(v => v.PLCName == "ç»è£
AGVè°åº¦"); |
| | | if (agvplcZZ == null) |
| | | { |
| | | continue; |
| | | } |
| | | #region ä¸æå£ |
| | | WriteLog.GetLog().Write($"{rksb}䏿å£ä¿¡æ¯ä¼ éå¼å§,æ¶é´ï¼{DateTime.Now} --------------{Environment.NewLine}", $"{rksb}䏿å£ä¿¡æ¯ä¼ é"); |
| | | //å
¥å£³æº1å·æ¥è¦ |
| | | bool GYC_RBJ =Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5302").Content); |
| | | // AGVè·åå
¥å£³æº1å·æ¥è¦ä¿¡å· |
| | | OperateResult AGVC_WBJ = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.3692", GYC_RBJ); |
| | | // AGVæ¥è¦ä¿¡å· |
| | | OperateResult<bool> AGVC_RBJ = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1002.3792"); |
| | | Int16 RBJ = Convert.ToInt16(AGVC_RBJ.Content); |
| | | //å
¥å£³æº1å·è·åAGVæ¥è¦ä¿¡å· |
| | | OperateResult GFC_WBJ = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5304", RBJ); |
| | | //读åagv䏿å£é»è¾ |
| | | OperateResult<Int16> R_up_bzR = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002.3790"); |
| | | //åå
¥å
¥å£³æº1å·ä¸æå£å¯¹æ¥æµç¨æ¥éª¤ |
| | | OperateResult W_ProcessStep_up = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5307", R_up_bzR.Content); |
| | | //读åå
¥å£³æº1å·æ¥åº |
| | | OperateResult<Int16> R_ProcessSteps_up = rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5306"); |
| | | //å°æ¥åºåå
¥agv |
| | | OperateResult W_stationDockSteps_up = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.3690", R_ProcessSteps_up.Content); |
| | | WriteLog.GetLog().Write($"{rksb}䏿å£ä¿¡æ¯ä¼ éç»æ,æ¶é´ï¼{DateTime.Now}--------------{Environment.NewLine}", $"{rksb}䏿å£ä¿¡æ¯ä¼ é"); |
| | | #endregion |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | } |
| | | Thread.Sleep(200); |
| | | } |
| | | }); |
| | | //ä¸æå£ |
| | | Task.Run(() => |
| | | { |
| | | while (true) |
| | | { |
| | | try |
| | | { |
| | | if (WCSService.Clients == null) |
| | | { |
| | | continue; |
| | | } |
| | | PLCClient rkplc = WCSService.Clients.Find(v => v.PLCName == rksb); |
| | | if (rkplc == null) |
| | | { |
| | | continue; |
| | | } |
| | | PLCClient agvplc = WCSService.Clients.Find(v => v.PLCName == "ç»è£
AGVè°åº¦"); |
| | | if (agvplc == null) |
| | | { |
| | | continue; |
| | | } |
| | | #region ä¸æå£ |
| | | //å
¥å£³æº1å·å£æ¥è¦ |
| | | WriteLog.GetLog().Write($"{rksb}䏿å£ä¿¡æ¯ä¼ éå¼å§,æ¶é´ï¼{DateTime.Now}--------------{Environment.NewLine}", $"{rksb}䏿å£ä¿¡æ¯ä¼ é"); |
| | | //å
¥å£³æº1å·æ¥è¦ |
| | | bool GYC_RBJ = Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5302").Content); |
| | | // AGVè·åå
¥å£³æº1å·æ¥è¦ä¿¡å· |
| | | OperateResult AGV_WBJ = agvplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.3892", GYC_RBJ); |
| | | // AGVæ¥è¦ä¿¡å· |
| | | OperateResult<bool> AGV_RBJ = agvplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1002.3992"); |
| | | int RBJ = Convert.ToInt32(AGV_RBJ.Content); |
| | | //å
¥å£³æº1å·è·åAGVæ¥è¦ä¿¡å· |
| | | OperateResult GFC_WBJ = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5304", RBJ); |
| | | // 读åagv䏿å£è¯·æ±è¿å
¥ |
| | | OperateResult<Int16> R_Down1_bzR = agvplc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002.3990"); |
| | | // åå
¥å
¥å£³æº1å·ä¸æå£AGV请æ±è¿å
¥ |
| | | OperateResult W_ProcessSteps1 = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5309", R_Down1_bzR.Content); |
| | | // 读åå
¥å£³æº1å·ä¸æå£æ¯å¦å
许AGV请æ±è¿å
¥ |
| | | OperateResult<Int16> R_ProcessSteps1 = rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5308"); |
| | | OperateResult W_stationDockSteps1 = agvplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.3890", R_ProcessSteps1.Content); |
| | | WriteLog.GetLog().Write($"{rksb}䏿å£ä¿¡æ¯ä¼ éç»æ,æ¶é´ï¼{DateTime.Now}--------------{Environment.NewLine}", $"{rksb}䏿å£ä¿¡æ¯ä¼ é"); |
| | | #endregion |
| | | } |
| | | catch (Exception ex) { } |
| | | Thread.Sleep(200); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | { |
| | | string rksb = "å
¥å£³æº2"; |
| | | //å¿è·³ |
| | | Task.Run(() => |
| | | { |
| | | |
| | | while (true) |
| | | { |
| | | try |
| | | { |
| | | Thread.Sleep(200); |
| | | if (WCSService.Clients == null) |
| | | { |
| | | continue; |
| | | } |
| | | PLCClient rkplc = WCSService.Clients.Find(v => v.PLCName == rksb); |
| | | if (rkplc == null) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | PLCClient agvplc = WCSService.Clients.Find(v => v.PLCName == "ç»è£
AGVè°åº¦"); |
| | | if (agvplc == null) |
| | | { |
| | | continue; |
| | | } |
| | | #region å
¥å£³æºäºå·å¿è·³ |
| | | WriteLog.GetLog().Write($"--------------{rksb}å¿è·³ä¼ éå¼å§,æ¶é´ï¼{DateTime.Now} --------------{Environment.NewLine}", $"{rksb}å¿è·³ä¼ é"); |
| | | // 读åå
¥å£³æº2å·è®¾å¤å¿è·³ |
| | | bool R_RK2_XT = Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5300").Content); |
| | | |
| | | // å
¥å£³æº2å·è®¾å¤å¿è·³âåå
¥âãç»è£
AGVè°åº¦å¿è·³ |
| | | OperateResult W_AGV_XT = agvplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.4000.0", R_RK2_XT); |
| | | |
| | | // 读åç»è£
AGVè°åº¦å¿è·³ |
| | | OperateResult<bool> R_AGV_XT = agvplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1002.4100.0"); |
| | | |
| | | Int16 readValue = Convert.ToInt16(R_AGV_XT.Content); |
| | | // ç»è£
AGVè°åº¦âåå
¥âãå
¥å£³æº2å·è®¾å¤å¿è·³ |
| | | OperateResult W_RK2_XT = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5300", readValue); |
| | | |
| | | WriteLog.GetLog().Write($"--------------{rksb}å¿è·³ä¼ éç»æ,æ¶é´ï¼{DateTime.Now} --------------{Environment.NewLine}", $"{rksb}å¿è·³ä¼ é"); |
| | | #endregion |
| | | } |
| | | catch (Exception ex) { } |
| | | } |
| | | |
| | | }); |
| | | //ä¸æå£ |
| | | Task.Run(() => |
| | | { |
| | | while (true) |
| | | { |
| | | try |
| | | { |
| | | if (WCSService.Clients == null) |
| | | { |
| | | continue; |
| | | } |
| | | PLCClient rkplc = WCSService.Clients.Find(v => v.PLCName == rksb); |
| | | if (rkplc == null) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | PLCClient agvplcZZ = WCSService.Clients.Find(v => v.PLCName == "ç»è£
AGVè°åº¦"); |
| | | if (agvplcZZ == null) |
| | | { |
| | | continue; |
| | | } |
| | | #region ä¸æå£ |
| | | WriteLog.GetLog().Write($"-------------- {rksb}䏿å£ä¿¡æ¯ä¼ éå¼å§,æ¶é´ï¼{DateTime.Now} --------------{Environment.NewLine}", $"{rksb}䏿å£ä¿¡æ¯ä¼ é"); |
| | | //å
¥å£³æº2å·æ¥è¦ |
| | | bool GYC_RBJ = Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5302").Content); |
| | | // AGVè·åå
¥å£³æº2å·æ¥è¦ä¿¡å· |
| | | OperateResult AGVC_WBJ = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.4092", GYC_RBJ); |
| | | // AGVæ¥è¦ä¿¡å· |
| | | OperateResult<bool> AGVC_RBJ = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1002.4192"); |
| | | Int16 RBJ = Convert.ToInt16(AGVC_RBJ.Content); |
| | | //å
¥å£³æº2å·è·åAGVæ¥è¦ä¿¡å· |
| | | OperateResult GFC_WBJ = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5304", RBJ); |
| | | //读åagv䏿å£é»è¾ |
| | | OperateResult<Int16> R_up_bzR = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002.4190"); |
| | | //åå
¥å
¥å£³æº2å·ä¸æå£å¯¹æ¥æµç¨æ¥éª¤ |
| | | OperateResult W_ProcessStep_up = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5307", R_up_bzR.Content); |
| | | //读åå
¥å£³æº2å·æ¥åº |
| | | OperateResult<Int16> R_ProcessSteps_up = rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5306"); |
| | | //å°æ¥åºåå
¥agv |
| | | OperateResult W_stationDockSteps_up = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.4090", R_ProcessSteps_up.Content); |
| | | WriteLog.GetLog().Write($"-------------- {rksb}䏿å£ä¿¡æ¯ä¼ éç»æ,æ¶é´ï¼{DateTime.Now} -------------- {Environment.NewLine}", $"{rksb}䏿å£ä¿¡æ¯ä¼ é"); |
| | | #endregion |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | } |
| | | Thread.Sleep(200); |
| | | } |
| | | }); |
| | | //ä¸æå£ |
| | | Task.Run(() => |
| | | { |
| | | while (true) |
| | | { |
| | | try |
| | | { |
| | | if (WCSService.Clients == null) |
| | | { |
| | | continue; |
| | | } |
| | | PLCClient rkplc = WCSService.Clients.Find(v => v.PLCName == rksb); |
| | | if (rkplc == null) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | PLCClient agvplc = WCSService.Clients.Find(v => v.PLCName == "ç»è£
AGVè°åº¦"); |
| | | if (agvplc == null) |
| | | { |
| | | continue; |
| | | } |
| | | #region ä¸æå£ |
| | | WriteLog.GetLog().Write($"{rksb}䏿å£ä¿¡æ¯ä¼ éå¼å§,æ¶é´ï¼{DateTime.Now} --------------{Environment.NewLine}", $"{rksb}䏿å£ä¿¡æ¯ä¼ é"); |
| | | //å
¥å£³æº2å·æ¥è¦ |
| | | bool GYC_RBJ = Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5302").Content); |
| | | // AGVè·åå
¥å£³æº2å·æ¥è¦ä¿¡å· |
| | | OperateResult AGV_WBJ = agvplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.4292", GYC_RBJ); |
| | | // AGVæ¥è¦ä¿¡å· |
| | | OperateResult<bool> AGV_RBJ = agvplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1002.4392"); |
| | | int RBJ = Convert.ToInt32(AGV_RBJ.Content); |
| | | //å
¥å£³æº2å·è·åAGVæ¥è¦ä¿¡å· |
| | | OperateResult GFC_WBJ = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5304", RBJ); |
| | | // 读åagv䏿å£è¯·æ±è¿å
¥ |
| | | OperateResult<Int16> R_Down1_bzR = agvplc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002.4390"); |
| | | // åå
¥å
¥å£³æº2å·ä¸æå£AGV请æ±è¿å
¥ |
| | | OperateResult W_ProcessSteps1 = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5309", R_Down1_bzR.Content); |
| | | // 读åå
¥å£³æº2å·ä¸æå£æ¯å¦å
许AGV请æ±è¿å
¥ |
| | | OperateResult<Int16> R_ProcessSteps1 = rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5308"); |
| | | OperateResult W_stationDockSteps1 = agvplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.4290", R_ProcessSteps1.Content); |
| | | WriteLog.GetLog().Write($"{rksb}䏿å£ä¿¡æ¯ä¼ éç»æ,æ¶é´ï¼{DateTime.Now} --------------{Environment.NewLine}", $"{rksb}䏿å£ä¿¡æ¯ä¼ é"); |
| | | #endregion |
| | | } |
| | | catch (Exception ex) { } |
| | | Thread.Sleep(200); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Common.LoctionEnum; |
| | | using WIDESEA_Common.Tools; |
| | | using WIDESEA_Core.EFDbContext; |
| | | using WIDESEA_Core.Utilities; |
| | | using WIDESEA_Entity.DomainModels; |
| | | using WIDESEA_Services.IRepositories; |
| | | using WIDESEA_Services.Repositories; |
| | | using WIDESEA_WCS.WCSClient; |
| | | |
| | | namespace WIDESEA_WCS |
| | | { |
| | | public partial class StackerExecutor |
| | | { |
| | | private static int _readRKSB_Down = 0; |
| | | /// <summary> |
| | | /// è´ææ¶å¸ä¸æå·¥ä½é»è¾ |
| | | /// </summary> |
| | | /// <param name="client"></param> |
| | | public static void RKSB_DownTask() |
| | | { |
| | | if (Interlocked.Exchange(ref _readRKSB_Down, 1) == 0) |
| | | { |
| | | Task.Run(() => |
| | | { |
| | | try |
| | | { |
| | | VOLContext Context = new VOLContext(); |
| | | Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context); |
| | | Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context); |
| | | Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); |
| | | List<string> RKSBS = new List<string> { "å
¥å£³æº1", "å
¥å£³æº2" }; |
| | | //循ç¯å¤çæ¶å¸è®¾å¤ä¸æè¯·æ± |
| | | foreach (var RKSB in RKSBS) |
| | | { |
| | | if (WCSService.Clients == null) |
| | | { |
| | | return; |
| | | } |
| | | PLCClient plc = WCSService.Clients.Find(v => v.PLCName == RKSB); |
| | | if (plc == null) |
| | | { |
| | | continue; |
| | | } |
| | | string SB_Up_Location = "XL-RKSB" + RKSB.Replace("å
¥å£³æº", "");//æ¼æ¥å
¥å£³ä¸æå£ |
| | | string equipType = "RKSB" + RKSB.Replace("å
¥å£³æº", "");//è®¾å¤ |
| | | //è·åå½åå
¥å£³è®¾å¤æ¯å¦æä¸æAGVä»»å¡ |
| | | var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == SB_Up_Location); |
| | | //æç»ææ¬æ¬¡å¾ªç¯ |
| | | if (SBtask != null) { continue; } |
| | | //è·åå½å设å¤çä¸æè¯·æ± |
| | | int requestRKDown = plc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5308").Content; |
| | | if (requestRKDown==4) |
| | | { |
| | | #region è®°å½ä¸æè¯·æ±ä¿¡å· |
| | | WriteLog.GetLog().Write($"{plc.PLCName}ä¸æè¯·æ±ï¼{requestRKDown}---{DateTime.Now}", $"å
¥å£³æºä¸æè¯·æ±"); |
| | | #endregion |
| | | //æ¾å°å¯¹åºç¼åæ¶è´§ä½ï¼å¹¶ç¡®è®¤ç©ºæ¡ |
| | | dt_stationinfo location = stationinfoRepository.Find(x => x.area == equipType && x.tpgd == false |
| | | && x.wlgd == false && x.task == false).OrderBy(x => x.greenbuttontime).FirstOrDefault(); |
| | | if (location != null) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | locRepository.DbContextBeginTransaction(() => |
| | | { |
| | | //çææ¶å¸æºä¸æä»»å¡ |
| | | dt_agvtask agvtask = new dt_agvtask() |
| | | { |
| | | agv_id = Guid.NewGuid(), |
| | | agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), |
| | | agv_fromaddress = SB_Up_Location,//以设å¤èµ·ç¹ |
| | | agv_toaddress = location.stationCode, |
| | | 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 = "", |
| | | }; |
| | | location.task = true; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int x = locRepository.Update(location, d => new { d.task}, true); |
| | | if (x == 1) |
| | | { |
| | | agvRepository.Add(agvtask, true); |
| | | return content.OK(); |
| | | } |
| | | else |
| | | { |
| | | return content.Error(); |
| | | } |
| | | |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.GetLog().Write($"å
¥å£³æºä¸æï¼{DateTime.Now} --------------{ex}", $"å
¥å£³æºä¸æè°åº¦Error"); |
| | | } |
| | | finally |
| | | { |
| | | |
| | | Interlocked.Exchange(ref _readRKSB_Down, 0); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.CodeAnalysis; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Common.LoctionEnum; |
| | | using WIDESEA_Common.Tools; |
| | | using WIDESEA_Core.EFDbContext; |
| | | using WIDESEA_Entity.DomainModels; |
| | | using WIDESEA_Services.IRepositories; |
| | | using WIDESEA_Services.Repositories; |
| | | using WIDESEA_WCS.WCSClient; |
| | | |
| | | namespace WIDESEA_WCS |
| | | { |
| | | public partial class StackerExecutor |
| | | { |
| | | private static int _readRKSB_Up = 0; |
| | | /// <summary> |
| | | /// å
¥å£³æºä¸æ |
| | | /// </summary> |
| | | /// <param name="client"></param> |
| | | public static void RKSB_UpTask() |
| | | { |
| | | if (Interlocked.Exchange(ref _readRKSB_Up, 1) == 0) |
| | | { |
| | | Task.Run(() => |
| | | { |
| | | try |
| | | { |
| | | VOLContext Context = new VOLContext(); |
| | | Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context); |
| | | Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context); |
| | | Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); |
| | | List<string> RKSBS = new List<string> { "å
¥å£³æº1", "å
¥å£³æº2"}; |
| | | //循ç¯å¤çå
¥å£³æºè®¾å¤ä¸æè¯·æ± |
| | | foreach (var RKSB in RKSBS) |
| | | { |
| | | if (WCSService.Clients == null) |
| | | { |
| | | return; |
| | | } |
| | | PLCClient plc = WCSService.Clients.Find(v => v.PLCName == RKSB); |
| | | if (plc == null) |
| | | { |
| | | continue; |
| | | } |
| | | string SB_Up_Location = "SL-RKSB" + RKSB.Replace("å
¥å£³æº", "");//æ¼æ¥å
¥å£³ä¸æå£ |
| | | string equipType = "RKSB" + RKSB.Replace("å
¥å£³æº", "");//è®¾å¤ |
| | | //è·åå½åå
¥å£³è®¾å¤æ¯å¦æä¸æAGVä»»å¡ |
| | | var SBtask = agvRepository.FindFirst(f => f.agv_toaddress == SB_Up_Location); |
| | | //æç»ææ¬æ¬¡å¾ªç¯ |
| | | if (SBtask != null) { continue; } |
| | | //è·åå½å设å¤çä¸æè¯·æ± |
| | | int requestRKUP = plc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5306").Content; |
| | | if (requestRKUP==4) |
| | | { |
| | | //æ¾å°å¯¹åºç¼åæ¶è´§ä½ï¼å¹¶ç¡®è®¤ææ |
| | | dt_stationinfo location = stationinfoRepository.Find(x=>x.area== equipType && x.greenbutton == true |
| | | && x.tpgd == true && x.wlgd == true && x.task == false).OrderBy(x=>x.greenbuttontime).FirstOrDefault(); |
| | | if (location != null) |
| | | { |
| | | #region è®°å½ä¸æè¯·æ±ä¿¡å· |
| | | WriteLog.GetLog().Write($"{plc.PLCName}ä¸æè¯·æ±ï¼{requestRKUP}---{DateTime.Now}", $"å
¥å£³æºä¸æè¯·æ±"); |
| | | #endregion |
| | | //çæå
¥å£³æºä¸æä»»å¡ |
| | | dt_agvtask agvtask = new dt_agvtask() |
| | | { |
| | | agv_id = Guid.NewGuid(), |
| | | agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), |
| | | agv_fromaddress = location.stationCode, |
| | | agv_toaddress = SB_Up_Location, |
| | | 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 = "", |
| | | }; |
| | | location.task = true; |
| | | int changeCount = locRepository.Update(location, d => new { d.task }, true); |
| | | if (changeCount == 1) |
| | | { |
| | | agvRepository.Add(agvtask, true); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.GetLog().Write($"å
¥å£³æºä¸æï¼{DateTime.Now} --------------{ex}", $"å
¥å£³æºä¸æè°åº¦Error"); |
| | | } |
| | | finally |
| | | { |
| | | Interlocked.Exchange(ref _readRKSB_Up, 0); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |