From 78b99e5348592a29ca1393a5e13db619cc4eba56 Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期四, 26 十二月 2024 23:40:56 +0800 Subject: [PATCH] 入壳设备增加 --- wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/heartbeatRK.cs | 322 ++++++++++++++++ wcs-server-hbf/WIDESEA_WCS/JobsPart/AGV/UpdateAgvTaskText.cs | 106 ++++- wcs-server-hbf/WIDESEA_WCS/Jobs/RGV/AluminumCaseJob.cs | 174 +++++++++ wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs | 56 ++ wcs-server-hbf/WIDESEA_WCS/Jobs/AGV/JobRK_1209.cs | 52 ++ DB/林洋SQL.sql | 0 wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/RKSB_UPTask.cs | 115 ++++++ 林洋程序包.zip | 0 wcs-server-hbf/WIDESEA_WCS/Config/铝壳缓存架.json | 97 +++- 入壳机信号.png | 0 wcs-server-hbf/WIDESEA_WCS/Jobs/AGV/heartbeatRKJob.cs | 35 + wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/RKSB_DownTask.cs | 128 ++++++ 12 files changed, 1,027 insertions(+), 58 deletions(-) diff --git "a/DB/\346\236\227\346\264\213SQL.sql" "b/DB/\346\236\227\346\264\213SQL.sql" index 2f55a44..fe65cbd 100644 --- "a/DB/\346\236\227\346\264\213SQL.sql" +++ "b/DB/\346\236\227\346\264\213SQL.sql" Binary files differ diff --git "a/wcs-server-hbf/WIDESEA_WCS/Config/\351\223\235\345\243\263\347\274\223\345\255\230\346\236\266.json" "b/wcs-server-hbf/WIDESEA_WCS/Config/\351\223\235\345\243\263\347\274\223\345\255\230\346\236\266.json" index f7e08e2..098b883 100644 --- "a/wcs-server-hbf/WIDESEA_WCS/Config/\351\223\235\345\243\263\347\274\223\345\255\230\346\236\266.json" +++ "b/wcs-server-hbf/WIDESEA_WCS/Config/\351\223\235\345\243\263\347\274\223\345\255\230\346\236\266.json" @@ -37,44 +37,44 @@ "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", @@ -140,8 +140,31 @@ "HCJCode": "1F-LKHCJ1", "RPLCDB": [ "x=2;8921", "x=2;8922", "x=2;8923", "x=2;8924", "x=2;8925" ], //榛勮壊鎸夐挳锛岀豢鑹叉寜閽紝绾㈣壊鎸夐挳锛屾墭鐩樺厜鐢碉紝鐗╂枡鍏夌數 "WPLCDB": [ "8019", "8020", "8021" ] //榛勭伅,缁跨伅,绾㈢伅 + }, + { + "HCJName": "鍏ュ3缂撳瓨鏋�1", + "HCJCode": "RKHCJ1", + "RPLCDB": [ "x=2;8600", "x=2;8601", "x=2;8602" ], //鎸夐挳锛屾墭鐩樺厜鐢碉紝鐗╂枡鍏夌數 + "WPLCDB": [ "s=2;2", "s=2;1", "s=2;0" ] //榛勭伅,缁跨伅,绾㈢伅 + }, + { + "HCJName": "鍏ュ3缂撳瓨鏋�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缂撳瓨鏋�3", + "HCJCode": "RKHCJ3", + "RPLCDB": [ "x=2;8606", "x=2;8607", "x=2;8608" ], //鎸夐挳锛屾墭鐩樺厜鐢碉紝鐗╂枡鍏夌數 + "WPLCDB": [ "s=2;8", "s=2;7", "s=2;6" ] //榛勭伅,缁跨伅,绾㈢伅 + }, + { + "HCJName": "鍏ュ3缂撳瓨鏋�4", + "HCJCode": "RKHCJ4", + "RPLCDB": [ "x=2;8609", "x=2;8610", "x=2;8611" ], //鎸夐挳锛屾墭鐩樺厜鐢碉紝鐗╂枡鍏夌數 + "WPLCDB": [ "s=2;11", "s=2;10", "s=2;9" ] //榛勭伅,缁跨伅,绾㈢伅 } - ] } diff --git a/wcs-server-hbf/WIDESEA_WCS/Jobs/AGV/JobRK_1209.cs b/wcs-server-hbf/WIDESEA_WCS/Jobs/AGV/JobRK_1209.cs new file mode 100644 index 0000000..721feaf --- /dev/null +++ b/wcs-server-hbf/WIDESEA_WCS/Jobs/AGV/JobRK_1209.cs @@ -0,0 +1,52 @@ +锘縰sing 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> + /// 鍏ュ3鏈轰笂涓嬫枡璋冨害 + /// </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} --------------", $"鍏ュ3鏈轰笂涓嬫枡璋冨害"); + StackerExecutor.RKSB_UpTask(); //鍏ュ3鏈轰笂鏂欎换鍔� + StackerExecutor.RKSB_DownTask(); //鍏ュ3鏈轰笅鏂欎换鍔� + WriteLog.GetLog().Write($"缁撴潫鏃堕棿锛歿DateTime.Now} --------------", $"鍏ュ3鏈轰笂涓嬫枡璋冨害"); + } + catch { } + + Thread.Sleep(200); + } + }); + } + catch (Exception ex) + { + lockObj1 = 0; + throw new Exception(ex.Message); + } + } + return Task.CompletedTask; + } + } +} diff --git a/wcs-server-hbf/WIDESEA_WCS/Jobs/AGV/heartbeatRKJob.cs b/wcs-server-hbf/WIDESEA_WCS/Jobs/AGV/heartbeatRKJob.cs new file mode 100644 index 0000000..1f15a07 --- /dev/null +++ b/wcs-server-hbf/WIDESEA_WCS/Jobs/AGV/heartbeatRKJob.cs @@ -0,0 +1,35 @@ +锘縰sing 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();//鍏ュ3鏈鸿澶囧拰AGV浜や簰 + } + catch (Exception) { } + return ""; + } + } +} diff --git a/wcs-server-hbf/WIDESEA_WCS/Jobs/RGV/AluminumCaseJob.cs b/wcs-server-hbf/WIDESEA_WCS/Jobs/RGV/AluminumCaseJob.cs index bd8839f..e0a83cf 100644 --- a/wcs-server-hbf/WIDESEA_WCS/Jobs/RGV/AluminumCaseJob.cs +++ b/wcs-server-hbf/WIDESEA_WCS/Jobs/RGV/AluminumCaseJob.cs @@ -445,6 +445,42 @@ doorState_1f_cx += 30; } + //鍏ュ3缂撳瓨鏋� + double comErr_rk = 9450.0;//鏄惁鎺夌嚎 + double doorCode_rk = 9452.0;//缂撳瓨鏋禝D + double doorState_rk = 9474.0;//缂撳瓨鏋剁墿鏂欑姸鎬侊紙1锛氱┖浣嶏紝2:绌烘墭鐩橈紝3锛氭弧鎵樼洏锛� + var dt_stationinfo_rk = freeDB.Select<dt_stationinfo>().Where(d => d.stationType == "鍏ュ3缂撳瓨鏋�").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 == "閾濆3缂撳瓨鏋朵竴妤�") + else if (stationList.HCJCenterName == "閾濆3缂撳瓨鏋朵竴妤�" && !item.HCJName.Contains("鍏ュ3缂撳瓨鏋�")) { string ButtonResetDB = item.RPLCDB[0]; //澶嶄綅鎸夐挳(榛勮壊)淇″彿鐐逛綅 string ButtonEnsureDB = item.RPLCDB[1];//纭鎸夐挳(缁胯壊)淇″彿鐐逛綅 @@ -820,6 +856,142 @@ t.LampYellow }).ExecuteAffrows(); } + else if (stationList.HCJCenterName == "閾濆3缂撳瓨鏋朵竴妤�" && item.HCJName.Contains("鍏ュ3缂撳瓨鏋�")) + { + 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}", "鍏ュ3缂撳瓨鏋�"); + 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; + + //鏍规嵁璇诲埌鐨凱LC淇℃伅锛岃疆璇㈡洿鏂版暟鎹簱淇℃伅 + 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(); + } } } diff --git a/wcs-server-hbf/WIDESEA_WCS/JobsPart/AGV/UpdateAgvTaskText.cs b/wcs-server-hbf/WIDESEA_WCS/JobsPart/AGV/UpdateAgvTaskText.cs index c44cb50..8c37025 100644 --- a/wcs-server-hbf/WIDESEA_WCS/JobsPart/AGV/UpdateAgvTaskText.cs +++ b/wcs-server-hbf/WIDESEA_WCS/JobsPart/AGV/UpdateAgvTaskText.cs @@ -211,6 +211,20 @@ WriteLog.GetLog().Write($"浠诲姟鍙凤細{agvTask.agv_tasknum},鍐呭锛氱粓鐐瑰湴鍧�锛歿dt_Stationinfo.stationCode},璐т綅淇敼澶辫触", $"璐т綅淇敼澶辫触"); } } + else if (agvTask.agv_remark.Contains("鍏ュ3涓婃枡浠诲姟")) + { + 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++) @@ -276,19 +290,22 @@ 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},璐т綅淇敼澶辫触", $"璐т綅淇敼澶辫触"); + } } } } @@ -583,6 +600,20 @@ } } + else if (agvTask.agv_remark.Contains("鍏ュ3涓嬫枡浠诲姟")) + { + 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++) @@ -691,22 +722,57 @@ } } + else if (agvTask.agv_remark.Contains("鍏ュ3涓嬫枡浠诲姟")) + { + 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("鍏ュ3涓婃枡浠诲姟")) + { + 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")) { diff --git a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs index c87d749..d6554dc 100644 --- a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs +++ b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs @@ -2,10 +2,12 @@ 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 { @@ -17,12 +19,18 @@ 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", "娑傚竷姝h礋鏋佸嵎甯橀棬142", double doorCode = 2.0; //鑷姩闂↖D double doorState = 24.0;//鑷姩闂ㄧ姸鎬侊紝1闂ㄥ叧鍒颁綅锛�2 闂ㄥ紑鍒颁綅锛�3闂ㄦ湭鍒颁綅 double doorOpen = 26.0; //鑷姩闂ㄦ帶鍒跺紑 + + int RKErr = 450;//鑷姩闂ㄦ帀绾� + double RKCode = 452.0; //鑷姩闂↖D + double RKState = 474.0;//鑷姩闂ㄧ姸鎬侊紝1闂ㄥ叧鍒颁綅锛�2 闂ㄥ紑鍒颁綅锛�3闂ㄦ湭鍒颁綅 + double RKOpen = 476.0; //鑷姩闂ㄦ帶鍒跺紑 try { if (agvjrplc == null) @@ -113,6 +121,54 @@ doorState += 30; doorOpen += 30; } + //鍏ュ3鍗峰笜闂� 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) { diff --git a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/heartbeatRK.cs b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/heartbeatRK.cs new file mode 100644 index 0000000..1dcb806 --- /dev/null +++ b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/heartbeatRK.cs @@ -0,0 +1,322 @@ +锘縰sing 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 = "鍏ュ3鏈�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 鍏ュ3鏈轰竴鍙峰績璺� + WriteLog.GetLog().Write($"--------------{rksb}蹇冭烦浼犻�掑紑濮�,鏃堕棿锛歿DateTime.Now}--------------{Environment.NewLine}", $"{rksb}蹇冭烦浼犻��"); + // 璇诲彇鍏ュ3鏈�1鍙疯澶囧績璺� + bool R_RK1_XT =Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5300").Content); + + // 鍏ュ3鏈�1鍙疯澶囧績璺斥�斿啓鍏モ�斻�嬬粍瑁匒GV璋冨害蹇冭烦 + 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}涓婃枡鍙d俊鎭紶閫掑紑濮�,鏃堕棿锛歿DateTime.Now} --------------{Environment.NewLine}", $"{rksb}涓婃枡鍙d俊鎭紶閫�"); + //鍏ュ3鏈�1鍙锋姤璀� + bool GYC_RBJ =Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5302").Content); + // AGV鑾峰彇鍏ュ3鏈�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); + //鍏ュ3鏈�1鍙疯幏鍙朅GV鎶ヨ淇″彿 + OperateResult GFC_WBJ = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5304", RBJ); + //璇诲彇agv涓婃枡鍙i�昏緫 + OperateResult<Int16> R_up_bzR = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002.3790"); + //鍐欏叆鍏ュ3鏈�1鍙蜂笂鏂欏彛瀵规帴娴佺▼姝ラ + OperateResult W_ProcessStep_up = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5307", R_up_bzR.Content); + //璇诲彇鍏ュ3鏈�1鍙锋搴� + OperateResult<Int16> R_ProcessSteps_up = rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5306"); + //灏嗘搴忓啓鍏gv + OperateResult W_stationDockSteps_up = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.3690", R_ProcessSteps_up.Content); + WriteLog.GetLog().Write($"{rksb}涓婃枡鍙d俊鎭紶閫掔粨鏉�,鏃堕棿锛歿DateTime.Now}--------------{Environment.NewLine}", $"{rksb}涓婃枡鍙d俊鎭紶閫�"); + #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 涓嬫枡鍙� + //鍏ュ3鏈�1鍙峰彛鎶ヨ + WriteLog.GetLog().Write($"{rksb}涓嬫枡鍙d俊鎭紶閫掑紑濮�,鏃堕棿锛歿DateTime.Now}--------------{Environment.NewLine}", $"{rksb}涓嬫枡鍙d俊鎭紶閫�"); + //鍏ュ3鏈�1鍙锋姤璀� + bool GYC_RBJ = Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5302").Content); + // AGV鑾峰彇鍏ュ3鏈�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); + //鍏ュ3鏈�1鍙疯幏鍙朅GV鎶ヨ淇″彿 + OperateResult GFC_WBJ = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5304", RBJ); + // 璇诲彇agv涓嬫枡鍙h姹傝繘鍏� + OperateResult<Int16> R_Down1_bzR = agvplc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002.3990"); + // 鍐欏叆鍏ュ3鏈�1鍙蜂笅鏂欏彛AGV璇锋眰杩涘叆 + OperateResult W_ProcessSteps1 = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5309", R_Down1_bzR.Content); + // 璇诲彇鍏ュ3鏈�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}涓嬫枡鍙d俊鎭紶閫掔粨鏉�,鏃堕棿锛歿DateTime.Now}--------------{Environment.NewLine}", $"{rksb}涓嬫枡鍙d俊鎭紶閫�"); + #endregion + } + catch (Exception ex) { } + Thread.Sleep(200); + } + }); + } + + { + string rksb = "鍏ュ3鏈�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 鍏ュ3鏈轰簩鍙峰績璺� + WriteLog.GetLog().Write($"--------------{rksb}蹇冭烦浼犻�掑紑濮�,鏃堕棿锛歿DateTime.Now} --------------{Environment.NewLine}", $"{rksb}蹇冭烦浼犻��"); + // 璇诲彇鍏ュ3鏈�2鍙疯澶囧績璺� + bool R_RK2_XT = Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5300").Content); + + // 鍏ュ3鏈�2鍙疯澶囧績璺斥�斿啓鍏モ�斻�嬬粍瑁匒GV璋冨害蹇冭烦 + 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}涓婃枡鍙d俊鎭紶閫掑紑濮�,鏃堕棿锛歿DateTime.Now} --------------{Environment.NewLine}", $"{rksb}涓婃枡鍙d俊鎭紶閫�"); + //鍏ュ3鏈�2鍙锋姤璀� + bool GYC_RBJ = Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5302").Content); + // AGV鑾峰彇鍏ュ3鏈�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); + //鍏ュ3鏈�2鍙疯幏鍙朅GV鎶ヨ淇″彿 + OperateResult GFC_WBJ = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5304", RBJ); + //璇诲彇agv涓婃枡鍙i�昏緫 + OperateResult<Int16> R_up_bzR = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002.4190"); + //鍐欏叆鍏ュ3鏈�2鍙蜂笂鏂欏彛瀵规帴娴佺▼姝ラ + OperateResult W_ProcessStep_up = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5307", R_up_bzR.Content); + //璇诲彇鍏ュ3鏈�2鍙锋搴� + OperateResult<Int16> R_ProcessSteps_up = rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5306"); + //灏嗘搴忓啓鍏gv + OperateResult W_stationDockSteps_up = agvplcZZ.SiemensPLCClient.SiemensS7NetClient.Write("DB1002.4090", R_ProcessSteps_up.Content); + WriteLog.GetLog().Write($"-------------- {rksb}涓婃枡鍙d俊鎭紶閫掔粨鏉�,鏃堕棿锛歿DateTime.Now} -------------- {Environment.NewLine}", $"{rksb}涓婃枡鍙d俊鎭紶閫�"); + #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}涓嬫枡鍙d俊鎭紶閫掑紑濮�,鏃堕棿锛歿DateTime.Now} --------------{Environment.NewLine}", $"{rksb}涓嬫枡鍙d俊鎭紶閫�"); + //鍏ュ3鏈�2鍙锋姤璀� + bool GYC_RBJ = Convert.ToBoolean(rkplc.ModbusPLCClient.ModbusTcpNetClient.ReadInt16("5302").Content); + // AGV鑾峰彇鍏ュ3鏈�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); + //鍏ュ3鏈�2鍙疯幏鍙朅GV鎶ヨ淇″彿 + OperateResult GFC_WBJ = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5304", RBJ); + // 璇诲彇agv涓嬫枡鍙h姹傝繘鍏� + OperateResult<Int16> R_Down1_bzR = agvplc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002.4390"); + // 鍐欏叆鍏ュ3鏈�2鍙蜂笅鏂欏彛AGV璇锋眰杩涘叆 + OperateResult W_ProcessSteps1 = rkplc.ModbusPLCClient.ModbusTcpNetClient.Write("5309", R_Down1_bzR.Content); + // 璇诲彇鍏ュ3鏈�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}涓嬫枡鍙d俊鎭紶閫掔粨鏉�,鏃堕棿锛歿DateTime.Now} --------------{Environment.NewLine}", $"{rksb}涓嬫枡鍙d俊鎭紶閫�"); + #endregion + } + catch (Exception ex) { } + Thread.Sleep(200); + } + }); + } + } + } + } +} diff --git a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/RKSB_DownTask.cs b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/RKSB_DownTask.cs new file mode 100644 index 0000000..59d8e8c --- /dev/null +++ b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/RKSB_DownTask.cs @@ -0,0 +1,128 @@ +锘縰sing 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> { "鍏ュ3鏈�1", "鍏ュ3鏈�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("鍏ュ3鏈�", "");//鎷兼帴鍏ュ3涓嬫枡鍙� + string equipType = "RKSB" + RKSB.Replace("鍏ュ3鏈�", "");//璁惧 + //鑾峰彇褰撳墠鍏ュ3璁惧鏄惁鏈変笅鏂橝GV浠诲姟 + 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}", $"鍏ュ3鏈轰笅鏂欒姹�"); + #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 = "鍏ュ3涓嬫枡浠诲姟", + 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($"鍏ュ3鏈轰笅鏂欙細{DateTime.Now} --------------{ex}", $"鍏ュ3鏈轰笅鏂欒皟搴rror"); + } + finally + { + + Interlocked.Exchange(ref _readRKSB_Down, 0); + } + }); + + } + } + + } +} diff --git a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/RKSB_UPTask.cs b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/RKSB_UPTask.cs new file mode 100644 index 0000000..0fc651d --- /dev/null +++ b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/RKSB_UPTask.cs @@ -0,0 +1,115 @@ +锘縰sing 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> + /// 鍏ュ3鏈轰笂鏂� + /// </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> { "鍏ュ3鏈�1", "鍏ュ3鏈�2"}; + //寰幆澶勭悊鍏ュ3鏈鸿澶囦笂鏂欒姹� + 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("鍏ュ3鏈�", "");//鎷兼帴鍏ュ3涓婃枡鍙� + string equipType = "RKSB" + RKSB.Replace("鍏ュ3鏈�", "");//璁惧 + //鑾峰彇褰撳墠鍏ュ3璁惧鏄惁鏈変笂鏂橝GV浠诲姟 + 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}", $"鍏ュ3鏈轰笂鏂欒姹�"); + #endregion + //鐢熸垚鍏ュ3鏈轰笂鏂欎换鍔� + 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 = "鍏ュ3涓婃枡浠诲姟", + 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($"鍏ュ3鏈轰笂鏂欙細{DateTime.Now} --------------{ex}", $"鍏ュ3鏈轰笂鏂欒皟搴rror"); + } + finally + { + Interlocked.Exchange(ref _readRKSB_Up, 0); + } + }); + + } + } + + } +} diff --git "a/\345\205\245\345\243\263\346\234\272\344\277\241\345\217\267.png" "b/\345\205\245\345\243\263\346\234\272\344\277\241\345\217\267.png" new file mode 100644 index 0000000..cbb3df9 --- /dev/null +++ "b/\345\205\245\345\243\263\346\234\272\344\277\241\345\217\267.png" Binary files differ diff --git "a/\346\236\227\346\264\213\347\250\213\345\272\217\345\214\205.zip" "b/\346\236\227\346\264\213\347\250\213\345\272\217\345\214\205.zip" new file mode 100644 index 0000000..291643f --- /dev/null +++ "b/\346\236\227\346\264\213\347\250\213\345\272\217\345\214\205.zip" Binary files differ -- Gitblit v1.9.3