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