From 6f65b696b8c3019862b12cde466d20844c675c63 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期二, 07 五月 2024 16:23:01 +0800
Subject: [PATCH] 修改错误信息日志记录方式
---
代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs | 18
代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs | 578 ---------------------------
代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs | 606 ++++++++++++++++++++++------
3 files changed, 483 insertions(+), 719 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
index 48cf3b6..e5df10a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
@@ -207,7 +207,7 @@
catch (Exception ex)
{
//WriteDBLog.Error("鏌ヨ杞﹁疆鏁版嵁", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
- WriteLog.Write_Log(namea, namea + "鎶ラ敊", "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
+ WriteLog.Write_Log("鎶ラ敊鏃ュ織", namea, "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
}
}
#endregion
@@ -388,7 +388,7 @@
catch (Exception ex)
{
//WriteDBLog.Error("鏌ヨ杞﹁疆璁㈠崟", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
- WriteLog.Write_Log(namea, namea + "鎶ラ敊", "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
+ WriteLog.Write_Log("鎶ラ敊鏃ュ織", namea, "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
}
}
#endregion
@@ -444,7 +444,7 @@
}
#endregion
- var Stations = stationinfoRepository.Find(x => x.area == PipelineJob.area_code(name)).OrderBy(x => x.lastUpdateTime).ToList();
+ var Stations = stationinfoRepository.Find(x => x.area == Pipeline.area_code(name)).OrderBy(x => x.lastUpdateTime).ToList();
#region 涓嬫枡浣嶆槸鍚︿负绌虹姸鎬佸悓姝ョ粰妗佹灦
foreach (var station in Stations)
@@ -499,7 +499,7 @@
}
#endregion
- var areaCode = PipelineJob.area_code(name); //鏍规嵁涓嬫枡鍙e崟鍏冨悕鑾峰彇鍖哄煙浠g爜
+ var areaCode = Pipeline.area_code(name); //鏍规嵁涓嬫枡鍙e崟鍏冨悕鑾峰彇鍖哄煙浠g爜
var station = stationinfoRepository.Find(x => x.area == areaCode && x.stationCode.Substring(x.stationCode.Length - 1, 1) == AreaNr.ToString()).FirstOrDefault();
if (station != null)
{
@@ -610,8 +610,8 @@
#endregion
- var wheel = PipelineJob.QueryMateriel(Work.drawingNo);
- var wheel1 = PipelineJob.QueryMateriel1(Work.drawingNo);
+ var wheel = Pipeline.QueryMateriel(Work.drawingNo);
+ var wheel1 = Pipeline.QueryMateriel1(Work.drawingNo);
if (wheel == null && wheel1 == null)
{
#region 鏃ュ織璁板綍
@@ -892,13 +892,15 @@
}
catch (Exception ex)
{
- WriteDBLog.Error(name, $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+ //WriteDBLog.Error(name, $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+ WriteLog.Write_Log("鎶ラ敊鏃ュ織", name, "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
}
}
}
catch (Exception ex)
{
- WriteDBLog.Error("涓嬫枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+ //WriteDBLog.Error("涓嬫枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+ WriteLog.Write_Log("鎶ラ敊鏃ュ織", "涓嬫枡鍖�", "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
}
}
#endregion
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs"
index 0fd93d7..6cbb4af 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Pipeline.cs"
@@ -13,16 +13,19 @@
using WIDESEA_WMS.Repositories;
using HslCommunication;
using WIDESEA_Entity.DomainModels;
+using WIDESEA_Comm.TaskNo;
+using WIDESEA_WCS.JobsPart.Common;
+using System.Xml.Linq;
namespace WIDESEA_WCS
{
public class Pipeline
{
+
/// <summary>
/// 涓婃枡鍖�
/// </summary>
/// <param name="client"></param>
- /// <param name="number"></param>
public void Loadinglevel(PLCClient client, string number = "涓婃枡鍖�")
{
try
@@ -30,7 +33,6 @@
VOLContext Context = new VOLContext();
Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
- Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
var Gantry_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "妗佹灦");
@@ -39,126 +41,141 @@
var Gantryplc = repository.FindFirst(x => x.plcinfo_name == Gantry_client.PLCName);
- ///鏌ユ壘涓婃枡鍖虹殑璐т綅
- var Stations = stationinfoRepository.Find(x => x.area == area_code(number)).OrderBy(x => x.lastUpdateTime);//鏍规嵁鏃堕棿鍏堝悗鎺掑簭
+ #region 涓婃枡瀹屾垚
- var Station = Stations?.Where(x => x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.quantity).FirstOrDefault();
- if (Station != null)
+ var AreaNr = Gantry_client.ReadByOrder<Int16>("W_AreaNr", number);//璇诲彇璐т綅鍙蜂俊鎭�
+ if (AreaNr != 0)
{
-
- var SNS = Station.bindSN.Split(",");
-
- var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).ToList();
- var PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
- var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
- #region 涓婃枡瀹屾垚
- var Gantrydetails = plcRepository.Find(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == number).ToList();
- var Gantry_Out_of_Area = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Gantry_Out_of_Area").First(), Gantry_client);//妗佹灦鏄惁鍦ㄥ尯鍩熷唴
-
- var QueryDate = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_QueryDate").First(), Gantry_client);//淇℃伅鏌ヨ
- if (QueryDate)
+ var station = stationinfoRepository.Find(x => x.area == area_code(number) && x.stationCode.Substring(x.stationCode.Length - 1, 1) == AreaNr.ToString()).FirstOrDefault();
+ if (station != null)
{
- var Date_Vaild = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Date_Vaild").First(), Gantry_client);//淇℃伅纭
- if (!Date_Vaild)//淇℃伅鏈夎锛岃褰曟棩蹇�
+ var bindSNS = station.bindSN.Split(",");
+ var Gantrydetails = plcRepository.Find(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == number).ToList();
+
+ #region 淇℃伅鏌ヨ纭
+ var QueryDate = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_QueryDate").First(), Gantry_client);//淇℃伅鏌ヨ
+ if (QueryDate)
{
+ var Date_Vaild = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Date_Vaild").First(), Gantry_client);//淇℃伅纭
+ if (!Date_Vaild)//淇℃伅鏈夎锛岃褰曟棩蹇�
+ {
+ Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+ station.location_state = LocationStateEnum.Abnormal.ToString();
+ station.remark = $"鏈煡璇㈠埌SN鍙凤細{bindSNS[bindSNS.Length - 1]}鐨勮鍗�";
+ stationinfoRepository.Update(station, true);
+ WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{station.stationCode}鏈煡璇㈠埌SN鍙凤細{bindSNS[bindSNS.Length - 1]}鐨勮鍗�", "PCS");
+ return;
+ }
+ }
+ #endregion
+
+ #region 璐т綅鐘舵�佹洿鏂板浣�
+ var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
+ var updatefinished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "W_Storage_update").First(), Gantry_client);//璐т綅鐘舵�佹洿鏂�
+ if (!finished && updatefinished)
+ {
+ Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
+ WriteLog.Write_Log(number + "涓婃枡瀹屾垚", number + "璐т綅鐘舵�佹洿鏂颁俊鍙峰浣�", "鎴愬姛锛�",
+ $"璇诲彇妗佹灦淇℃伅锛歕n涓婃枡瀹屾垚淇″彿锛歿finished}\n\n鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂颁俊鍙凤細{false}");
+ }
+ #endregion
+
+ if (finished && !updatefinished)
+ {
+
+ #region 鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�
+ var area = Gantry_client.ReadByOrder<Int16>("place_prog", number);//鏀炬枡瀹屾垚鐨勫尯鍩熷彿
+
+ WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�", $"PCS鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦鍖哄煙鍙凤細{area}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
+ //if (AreaNr != area)
+ //{
+ // client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
+ // //WriteDBLog.Error(name + "鎶ヨ", $"PCS鍖哄煙鍙凤細{AreaNr}锛涙鏋跺尯鍩熷彿锛歿area}閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒", "PCS");
+ // WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�", $"PCS鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦鍖哄煙鍙凤細{area}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
+ // return;
+ //}
+ #endregion
+
+ #region 鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�
+ var quantity = Gantry_client.ReadByOrder<Int16>("pos_prog", number);//妗佹灦璁板綍鐨勮溅杞暟閲�
+
+ WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�", $"鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦杞﹁疆鏁帮細{quantity}\nPCS杞﹁疆鏁帮細{station.quantity}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
+ //if (quantity != station.quantity)
+ //{
+ // client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
+ // WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�", $"鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦杞﹁疆鏁帮細{quantity}\nPCS杞﹁疆鏁帮細{station.quantity}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
+ // return;
+ //}
+ #endregion
+
+ Updatemes(bindSNS[bindSNS.Length - 1]);
+ station.quantity = station.quantity - 1;
+ station.bindSN = OperStr(bindSNS);
+ if (station.quantity <= 0)
+ {
+ station.stationType = string.Empty;
+ station.Number = string.Empty;
+ station.heatNumber = string.Empty;
+ station.tray_status = "EmptyTray";
+ }
+ var count = stationinfoRepository.Update(station, true);
+ if (count < 1)
+ {
+ WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{station.stationCode}", "PCS");
+ return;
+ }
+
+ Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
- Station.location_state = LocationStateEnum.Abnormal.ToString();
- Station.remark = $"鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�";
- stationinfoRepository.Update(Station, true);
- WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�", "PCS");
- return;
+
+ #region 娓呯┖淇℃伅
+ Gantry_client.WriteByOrder("W_AreaNr", (Int16)0, number);//鍖哄煙璐т綅鍙�
+ Gantry_client.WriteByOrder("W_IndexNr", (Int16)0, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
+ Gantry_client.WriteByOrder("W_Storage_Type", (Int16)0, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
+ Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)0, number);//杞﹁疆绫诲瀷
+ #endregion
+
+ #region 鏃ュ織璁板綍
+ WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
+ #endregion
}
}
- var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
- var updatefinished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "W_Storage_update").First(), Gantry_client);//璐т綅鐘舵�佹洿鏂�
- if (!finished && updatefinished)
- Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
- if (finished && !updatefinished)
+ }
+
+ #endregion
+
+ #region 鐢宠涓婃枡
+
+ if (!Gantry_client.ReadByOrder<bool>("W_RequestUnload", number))
+ {
+ var Station = stationinfoRepository.Find(x => x.area == area_code(number) && x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.lastUpdateTime).FirstOrDefault();
+ if (Station != null)
{
- Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
- Updatemes(SNS[SNS.Length - 1]);
- Station.quantity = Station.quantity - 1;
- Station.bindSN = OperStr(SNS);
- if (Station.quantity <= 0)
+ var SNS = Station.bindSN.Split(",");
+ List<string> list = new List<string>();
+ foreach (var SN in SNS)
{
- Station.stationType = string.Empty;
- Station.Number = string.Empty;
- Station.heatNumber = string.Empty;
- Station.tray_status = "EmptyTray";
+ if (!string.IsNullOrEmpty(SN))
+ list.Add(SN);
}
- var count = stationinfoRepository.Update(Station, true);
- if (count < 1)
+ //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
+ if (list.Count != Station.quantity)
{
- WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{Station.stationCode}", "PCS");
+ Station.location_state = LocationStateEnum.Abnormal.ToString();
+ Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�";
+ stationinfoRepository.Update(Station, true);
+ Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+ #region 鏃ュ織璁板綍
+ WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
+ #endregion
return;
}
- #region 娓呯┖淇℃伅
- Gantry_client.WriteByOrder("W_AreaNr", (Int16)0, number);//鍖哄煙璐т綅鍙�
- Gantry_client.WriteByOrder("W_IndexNr", (Int16)0, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
- Gantry_client.WriteByOrder("W_Storage_Type", (Int16)0, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
- Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)0, number);//杞﹁疆绫诲瀷
- #endregion
+ var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).ToList();
+ var PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+ var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
- Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
- #region 鏃ュ織璁板綍
- WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
- #endregion
-
- PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
- MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
- if (Station.quantity > 0 && (PalletSignal != 1 || MaterialSignal != 1))
- {
- Station.location_state = LocationStateEnum.Abnormal.ToString();
- Station.remark = "杞﹁疆鏁伴噺澶т簬0锛屽厜鐢垫娴嬫棤鎵樼洏鎴栨棤杞﹁疆";
- stationinfoRepository.Update(Station, true);
- client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
- WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
- }
- else if (Station.quantity < 1 && MaterialSignal == 1)
- {
- Station.location_state = LocationStateEnum.Abnormal.ToString();
- Station.remark = "杞﹁疆鏁伴噺灏忎簬0锛屽厜鐢垫娴嬫湁杞﹁疆";
- stationinfoRepository.Update(Station, true);
- client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
- WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
- }
- }
- #endregion
-
- #region 鐢宠涓婃枡
- //var SNS = Station.bindSN.Split(",");
- if (Gantry_client.ReadByOrder<bool>("W_RequestUnload", number)) return;
-
- Station = stationinfoRepository.Find(x => x.stationCode == Station.stationCode).FirstOrDefault();
- if (Station.quantity < 1) return;
- List<string> list = new List<string>();
- SNS = Station.bindSN.Split(",");
- foreach (var SN in SNS)
- {
- if (!string.IsNullOrEmpty(SN))
- list.Add(SN);
- }
- //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
- if (list.Count != Station.quantity)
- {
- Station.location_state = LocationStateEnum.Abnormal.ToString();
- Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�";
- stationinfoRepository.Update(Station, true);
- Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
- #region 鏃ュ織璁板綍
- WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
- #endregion
- return;
- }
- //var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).ToList();
- PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
- MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
-
- var AreaNr = Gantry_client.ReadByOrder<Int16>("W_AreaNr", number);//璇诲彇璐т綅鍙蜂俊鎭�
- if (PalletSignal == 1 && MaterialSignal == 1)
- {
- if (AreaNr == 0)
+ if (PalletSignal == 1 && MaterialSignal == 1)
{
Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷
var area = Convert.ToInt16(Station.stationCode.Substring(Station.stationCode.Length - 1, 1));
@@ -169,43 +186,360 @@
Gantry_client.WriteByOrder("W_RequestUnload", true, number);
#region 鏃ュ織璁板綍
WriteDBLog.Success("涓婃枡鍖虹敵璇�", $"璇诲彇鎵樼洏鍏夌數淇″彿锛歿PalletSignal}\n璇诲彇绗竴涓溅杞厜鐢典俊鍙凤細{MaterialSignal}\n\n" +
- $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType).TypeId == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" +
+ $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" +
$"\n杞﹁疆SN鍙凤細{SNS[SNS.Length - 1]}\nW_RequestUnload锛歵rue", "PCS");
#endregion
}
- }
- else
- {
- Gantry_client.WriteByOrder("W_RequestUnload", false, number);
- }
- #endregion
-
- #region 鏇存柊涓�涓娴嬩笂鏂欎换鍔�
- Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
- if (!agvtaskService.Find(x => x.agv_toaddress == Station.stationCode).Any())
- {
- var task = agvtaskService.Find(x => x.agv_taskstate == "Queue" && (x.agv_tasktype == "TaskType_OutsourceOutbound" || x.agv_tasktype == "TaskType_Outbound") && x.agv_toaddress == "").OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
- if (task != null)
+ else
{
- task.agv_taskstate = "Create";
- task.agv_toaddress = Station.stationCode;
- agvtaskService.Update(task, true);
- WriteDBLog.Success("鏇存柊涓�涓娴嬩笂鏂欎换鍔�", $"浠诲姟缂栧彿锛歿task.agv_tasknum}", "PCS");
+ Gantry_client.WriteByOrder("W_RequestUnload", false, number);
}
- }
- #endregion
+ #region 鏇存柊涓�涓娴嬩笂鏂欎换鍔�
+ Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
+ if (!agvtaskService.Find(x => x.agv_toaddress == Station.stationCode).Any())
+ {
+ var task = agvtaskService.Find(x => x.agv_taskstate == "Queue" && (x.agv_tasktype == "TaskType_OutsourceOutbound" || x.agv_tasktype == "TaskType_Outbound") && x.agv_toaddress == "").OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
+ if (task != null)
+ {
+ task.agv_taskstate = "Create";
+ task.agv_toaddress = Station.stationCode;
+ agvtaskService.Update(task, true);
+ WriteDBLog.Success("鏇存柊涓�涓娴嬩笂鏂欎换鍔�", $"浠诲姟缂栧彿锛歿task.agv_tasknum}", "PCS");
+ }
+ }
+ #endregion
+ }
}
- else
- Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+
+ #endregion
+
+
+ #region MyRegion
+
+ /////鏌ユ壘涓婃枡鍖虹殑璐т綅
+ //var Stations = stationinfoRepository.Find(x => x.area == area_code(number)).OrderBy(x => x.lastUpdateTime);//鏍规嵁鏃堕棿鍏堝悗鎺掑簭
+ // //闇�娴嬭瘯涓�涓�
+ //var Station = Stations?.Where(x => x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.quantity).FirstOrDefault();
+
+ //if (Station != null)
+ //{
+ // var SNS = Station.bindSN.Split(",");
+ // List<string> list = new List<string>();
+ // foreach (var SN in SNS)
+ // {
+ // if (!string.IsNullOrEmpty(SN))
+ // list.Add(SN);
+ // }
+ // //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
+ // if (list.Count != Station.quantity)
+ // {
+ // Station.location_state = LocationStateEnum.Abnormal.ToString();
+ // Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�";
+ // stationinfoRepository.Update(Station, true);
+ // Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+ // #region 鏃ュ織璁板綍
+ // WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
+ // #endregion
+ // return;
+ // }
+ // var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).ToList();
+ // var PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+ // var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
+
+ // var AreaNr = Gantry_client.ReadByOrder<Int16>("W_AreaNr", number);//璇诲彇璐т綅鍙蜂俊鎭�
+ // if (PalletSignal == 1 && MaterialSignal == 1)
+ // {
+ // if (AreaNr == 0)
+ // {
+ // Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷
+ // var area = Convert.ToInt16(Station.stationCode.Substring(Station.stationCode.Length - 1, 1));
+ // Gantry_client.WriteByOrder("W_AreaNr", (Int16)area, number);//鍖哄煙璐т綅鍙�
+ // Gantry_client.WriteByOrder("W_IndexNr", (Int16)SNS.Length, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
+ // Gantry_client.WriteByOrder("W_Storage_Type", (Int16)1, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
+ // Gantry_client.WriteByOrder("W_Wheel_id", SNS[SNS.Length - 1], number);//杞﹁疆SN鍙�
+ // Gantry_client.WriteByOrder("W_RequestUnload", true, number);
+ // #region 鏃ュ織璁板綍
+ // WriteDBLog.Success("涓婃枡鍖虹敵璇�", $"璇诲彇鎵樼洏鍏夌數淇″彿锛歿PalletSignal}\n璇诲彇绗竴涓溅杞厜鐢典俊鍙凤細{MaterialSignal}\n\n" +
+ // $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType).TypeId == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" +
+ // $"\n杞﹁疆SN鍙凤細{SNS[SNS.Length - 1]}\nW_RequestUnload锛歵rue", "PCS");
+ // #endregion
+ // }
+ // }
+ // else
+ // {
+ // Gantry_client.WriteByOrder("W_RequestUnload", false, number);
+ // }
+
+ // var Gantrydetails = plcRepository.Find(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == number).ToList();
+ // var Gantry_Out_of_Area = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Gantry_Out_of_Area").First(), Gantry_client);//妗佹灦鏄惁鍦ㄥ尯鍩熷唴
+
+ // var QueryDate = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_QueryDate").First(), Gantry_client);//淇℃伅鏌ヨ
+ // if (QueryDate)
+ // {
+ // var Date_Vaild = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Date_Vaild").First(), Gantry_client);//淇℃伅纭
+ // if (!Date_Vaild)//淇℃伅鏈夎锛岃褰曟棩蹇�
+ // {
+ // Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+ // Station.location_state = LocationStateEnum.Abnormal.ToString();
+ // Station.remark = $"鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�";
+ // stationinfoRepository.Update(Station, true);
+ // WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�", "PCS");
+ // return;
+ // }
+ // }
+ // var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
+ // var updatefinished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "W_Storage_update").First(), Gantry_client);//璐т綅鐘舵�佹洿鏂�
+ // if (!finished && updatefinished)
+ // Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
+ // if (finished && !updatefinished)
+ // {
+ // Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+ // Updatemes(SNS[SNS.Length - 1]);
+ // Station.quantity = Station.quantity - 1;
+ // Station.bindSN = OperStr(SNS);
+ // if (Station.quantity <= 0)
+ // {
+ // Station.stationType = string.Empty;
+ // Station.Number = string.Empty;
+ // Station.heatNumber = string.Empty;
+ // Station.tray_status = "EmptyTray";
+ // }
+ // var count = stationinfoRepository.Update(Station, true);
+ // if (count < 1)
+ // {
+ // WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{Station.stationCode}", "PCS");
+ // return;
+ // }
+
+ // #region 娓呯┖淇℃伅
+ // Gantry_client.WriteByOrder("W_AreaNr", (Int16)0, number);//鍖哄煙璐т綅鍙�
+ // Gantry_client.WriteByOrder("W_IndexNr", (Int16)0, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
+ // Gantry_client.WriteByOrder("W_Storage_Type", (Int16)0, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
+ // Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)0, number);//杞﹁疆绫诲瀷
+ // #endregion
+
+ // Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
+ // #region 鏃ュ織璁板綍
+ // WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
+ // #endregion
+
+ // #region 鎶ヨ
+ // PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+ // MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
+ // if (Station.quantity > 0 && (PalletSignal != 1 || MaterialSignal != 1))
+ // {
+ // Station.location_state = LocationStateEnum.Abnormal.ToString();
+ // Station.remark = "杞﹁疆鏁伴噺澶т簬0锛屽厜鐢垫娴嬫棤鎵樼洏鎴栨棤杞﹁疆";
+ // stationinfoRepository.Update(Station, true);
+ // client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
+ // WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
+ // }
+ // else if (Station.quantity < 1 && MaterialSignal == 1)
+ // {
+ // Station.location_state = LocationStateEnum.Abnormal.ToString();
+ // Station.remark = "杞﹁疆鏁伴噺灏忎簬0锛屽厜鐢垫娴嬫湁杞﹁疆";
+ // stationinfoRepository.Update(Station, true);
+ // client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
+ // WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
+ // }
+ // #endregion
+
+
+ // }
+ //}
+ //else
+ // Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+ #endregion
}
catch (Exception ex)
{
- WriteDBLog.Error("涓婃枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+ //WriteDBLog.Error("涓婃枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+ WriteLog.Write_Log("鎶ラ敊鏃ュ織", number, "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
+ }
+ }
+ /// <summary>
+ /// 鑷姩鍙栫┖鎵�
+ /// </summary>
+ /// <param name="client"></param>
+ public void AutoEmptyTray(PLCClient client)
+ {
+ try
+ {
+ VOLContext Context = new VOLContext();
+ Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
+ Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
+ Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
+ Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
+ var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
+ List<string> stationCodes = new List<string>() { "S01001001", "S01001002", "W01001001", "W01001002", "W01001003" };
+ string remark = "";
+ foreach (var stationCode in stationCodes)
+ {
+ try
+ {
+ remark = "鏌ヨ绔欏彴";
+ var station = stationinfoRepository.Find(x => x.stationCode == stationCode && x.enable).FirstOrDefault();
+ if (station == null) continue;
+ remark = "鏌ヨ璧风偣鏄惁瀛樺湪浠诲姟";
+ if (stationCode.Contains("W") && agvtaskService.Find(x => x.agv_fromaddress == stationCode || x.agv_toaddress == stationCode).Any()) continue;
+ else
+ {
+ if (agvtaskService.Find(x => x.agv_fromaddress == stationCode).Any()) continue;
+ }
+ remark = "璇诲彇鍏夌數淇″彿";
+ var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == stationCode).ToList();
+ var PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+ var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
+ if (PalletSignal == 1 && MaterialSignal == 2 && (station.stationCode.Contains("S0100100") ? station.tray_status == "EmptyTray" : true))
+ {
+ var area = station.tray_type == "SmallTray" ? "11" : "10";
+ remark = "鏌ヨ鏄惁瀛樺湪琛ョ┖鎵橀槦鍒椾换鍔�";
+ var task = agvtaskService.Find(x => (x.agv_toaddress.Contains("W") || x.agv_toaddress.Contains("X")) && x.agv_taskstate == "Queue" && x.agv_tasktype == "TaskType_EmptyPallet" && x.agv_Traytype == station.tray_type).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
+ if (task != null)
+ {
+ task.agv_fromaddress = station.stationCode;
+ task.StarQuantity = 0;
+ task.agv_taskstate = "Create";
+ if (station.stationCode.Contains("S0100100"))
+ task.agv_grade = 3;
+ agvtaskService.Update(task, true);
+ station.location_state = LocationStateEnum.Busy.ToString();
+ stationinfoRepository.Update(station, true);
+ WriteDBLog.Success("鏇存柊绌烘墭闃熷垪浠诲姟", $"浠诲姟缂栧彿锛歿task.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS");
+ continue;
+ }
+ remark = "鏌ヨ绌烘墭鍙犵洏浣�";
+ #region 绌烘墭鍙犵洏
+ var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity < 5 && x.enable).ToList();
+ var EmptyStation = EmptyStations.Where(x => x.tray_type == station.tray_type && x.location_state == LocationStateEnum.Stroge.ToString()).FirstOrDefault();
+ if (EmptyStation == null)
+ EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Empty.ToString() && x.quantity == 0).FirstOrDefault();
+ #endregion
+ remark = "鏌ユ壘搴撳唴绌烘墭浣�";
+ if (EmptyStation == null)//鏌ユ壘搴撳唴绌烘墭鐩�
+ EmptyStation = GetStation.EmptyPalletStation(area);
+
+
+ if (EmptyStation != null)
+ {
+ #region 鍚屼竴涓┖鎵樹綅鍙兘鍚屾椂鐢熸垚涓�涓┖鎵樹换鍔�
+ remark = "鏌ヨ绌烘墭浣嶆槸鍚﹀瓨鍦ㄤ换鍔�";
+ if (agvtaskService.Find(x => x.agv_fromaddress == EmptyStation.stationCode || x.agv_toaddress == EmptyStation.stationCode).Any())
+ return;
+ #endregion
+ dt_agvtask agvtask = new dt_agvtask()
+ {
+ agv_fromaddress = station.stationCode,
+ agv_id = Guid.NewGuid(),
+ agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
+ agv_grade = station.stationCode.Contains("S0100100") ? 3 : 1,
+ agv_createtime = DateTime.Now,
+ agv_taskstate = "Create",
+ //agv_materielid = station.stationType,
+ agv_qty = 1,
+ StarQuantity = 0,
+ EndQuantity = EmptyStation.quantity,
+ agv_tasktype = "TaskType_EmptyPallet",
+ agv_toaddress = EmptyStation.stationCode,
+ agv_userid = "绯荤粺",
+ agv_TrayStatus = "EmptyTray",//station.tray_status,
+ agv_Traytype = station.tray_type,
+ };
+ agvtaskService.Add(agvtask, true);
+ station.location_state = LocationStateEnum.Busy.ToString();
+ stationinfoRepository.Update(station, true);
+ EmptyStation.location_state = LocationStateEnum.Busy.ToString();
+ stationinfoRepository.Update(EmptyStation, true);
+ WriteDBLog.Success("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS");
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ //WriteDBLog.Error("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"{stationCode}锛歿remark}閿欒淇℃伅锛歿ex.Message}", "PCS");
+ WriteLog.Write_Log("鎶ラ敊鏃ュ織", "鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", "閿欒淇℃伅锛�", $"{stationCode}锛歿remark}閿欒淇℃伅锛歿ex.Message}");
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ //WriteDBLog.Error("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
+ WriteLog.Write_Log("鎶ラ敊鏃ュ織", "鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", "閿欒淇℃伅锛�", $"閿欒淇℃伅锛歿ex.Message}");
}
}
- private string OperStr(string[] strArrty)
+ /// <summary>
+ /// 妫�娴嬪厜鐢电姸鎬佷笌绯荤粺璐т綅鐘舵�佹槸鍚︿竴鑷�
+ /// </summary>
+ /// <param name="client"></param>
+ public void StationState(PLCClient client)
+ {
+
+ List<string> names = new List<string>() { "1鍗曞厓涓嬫枡鍖�", "2鍗曞厓涓嬫枡鍖�", "3鍗曞厓涓嬫枡鍖�" };/*, "涓婃枡鍖�"*/
+ foreach (var name in names)
+ {
+ VOLContext Context = new VOLContext();
+ Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
+ var Stations = stationinfoRepository.Find(x => x.area == area_code(name) && x.enable && !x.location_state.Contains("Busy") && x.location_state != LocationStateEnum.Abnormal.ToString());
+ foreach (var Station in Stations)
+ {
+ try
+ {
+ var PalletSignal = client.ReadByOrder<Int16>("R_PalletSignal", Station.stationCode);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+ var MaterialSignal = client.ReadByOrder<Int16>("R_MaterialSignal", Station.stationCode);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
+ if (Station.quantity > 0 && (PalletSignal != 1 || MaterialSignal != 1))//绯荤粺璐т綅鏈夎溅杞紝鍏夌數妫�娴嬫棤杞﹁疆
+ {
+ Station.location_state = LocationStateEnum.Abnormal.ToString();
+ Station.remark = $"杞﹁疆鏁伴噺澶т簬0锛屾墭鐩樺厜鐢典俊鍙蜂负锛歿PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
+ stationinfoRepository.Update(Station, true);
+ client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
+ WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
+ continue;
+ }
+ if (Station.location_state == LocationStateEnum.Stroge.ToString() && PalletSignal != 1)
+ {
+ Station.location_state = LocationStateEnum.Abnormal.ToString();
+ Station.remark = $"璐т綅鐘舵�佷负鏈夎揣锛屾墭鐩樺厜鐢典俊鍙蜂负锛歿PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
+ stationinfoRepository.Update(Station, true);
+ client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
+ WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
+ continue;
+ }
+ if (Station.location_state == LocationStateEnum.Empty.ToString() && (PalletSignal == 1 || MaterialSignal == 1))//绯荤粺璐т綅涓虹┖锛屽厜鐢垫娴嬫湁鏂�
+ {
+ Station.location_state = LocationStateEnum.Abnormal.ToString();
+ Station.remark = $"璐т綅鐘舵�佷负绌鸿揣浣嶏紝鎵樼洏鍏夌數淇″彿涓猴細{PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
+ stationinfoRepository.Update(Station, true);
+ client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
+ WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
+ continue;
+ }
+ //if (Station.quantity < 1 && MaterialSignal == 1)//绯荤粺璐т綅鏃犺溅杞紝鍏夌數妫�娴嬫湁杞﹁疆
+ //{
+ // Station.location_state = LocationStateEnum.Abnormal.ToString();
+ // Station.remark = "璐т綅鏃犺溅杞紝鍏夌數妫�娴嬫湁杞﹁疆";
+ // stationinfoRepository.Update(Station, true);
+ // client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
+ // continue;
+ //}
+ }
+ catch (Exception ex)
+ {
+ WriteLog.Write_Log("鎶ラ敊鏃ュ織", name + "妫�娴嬪厜鐢垫姤閿�", "閿欒淇℃伅锛�", $"{Station.stationCode}锛氶敊璇俊鎭細{ex.Message}");
+ }
+ }
+ }
+ }
+ public static string area_code(string area_name)
+ {
+ VOLContext Context = new VOLContext();
+ Idt_areainfoRepository areainfoRepository = new dt_areainfoRepository(Context);
+ var areainfo = areainfoRepository.Find(x => x.area_name == area_name).FirstOrDefault();
+ return areainfo.area_code.ToString();
+ }
+
+ public string OperStr(string[] strArrty)
{
string[] newstr = strArrty.RemoveLast(1);
string Newsn = string.Join(",", newstr);
@@ -226,15 +560,13 @@
var materielinfo1 = detectionlineRepository.Find(x => x.Description == type).OrderBy(x => x.TypeId).FirstOrDefault();
return materielinfo1;
}
-
- public static string area_code(string area_name)
+ public static string QueryMateriel(int typeId)
{
VOLContext Context = new VOLContext();
- Idt_areainfoRepository areainfoRepository = new dt_areainfoRepository(Context);
- var areainfo = areainfoRepository.Find(x => x.area_name == area_name).FirstOrDefault();
- return areainfo.area_code.ToString();
+ Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
+ var materielinfo = dataRepository.FindFirst(x => x.TypeId == typeId);
+ return materielinfo.Description;
}
-
/// <summary>
/// 鏇存敼宸ュ崟鐘舵��
/// </summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs"
index a01ca75..084430e 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs"
@@ -54,580 +54,10 @@
return;
}
client.WriteByOrder("W_Palpitate", client.ReadByOrder<bool>("R_Palpitate", "蹇冭烦"));
- Loadinglevel(client);
- AutoEmptyTray(client);
- StationState(client);
- }
- /// <summary>
- /// 涓婃枡鍖�
- /// </summary>
- /// <param name="client"></param>
- private void Loadinglevel(PLCClient client, string number = "涓婃枡鍖�")
- {
- try
- {
- VOLContext Context = new VOLContext();
- Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
- Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
- Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
- var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
- var Gantry_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "妗佹灦");
- if (Gantry_client == null) throw new Exception("妗佹灦璋冨害鏈嶅姟鏈紑鍚紒");
- if (!Gantry_client.IsConnected) throw new Exception("涓庢鏋惰繛鎺ヨ秴鏃讹紒");
- var Gantryplc = repository.FindFirst(x => x.plcinfo_name == Gantry_client.PLCName);
-
-
- #region 涓婃枡瀹屾垚
-
- var AreaNr = Gantry_client.ReadByOrder<Int16>("W_AreaNr", number);//璇诲彇璐т綅鍙蜂俊鎭�
- if (AreaNr != 0)
- {
- var station = stationinfoRepository.Find(x => x.area == area_code(number) && x.stationCode.Substring(x.stationCode.Length - 1, 1) == AreaNr.ToString()).FirstOrDefault();
- if (station != null)
- {
- var bindSNS = station.bindSN.Split(",");
- var Gantrydetails = plcRepository.Find(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == number).ToList();
-
- #region 淇℃伅鏌ヨ纭
- var QueryDate = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_QueryDate").First(), Gantry_client);//淇℃伅鏌ヨ
- if (QueryDate)
- {
- var Date_Vaild = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Date_Vaild").First(), Gantry_client);//淇℃伅纭
- if (!Date_Vaild)//淇℃伅鏈夎锛岃褰曟棩蹇�
- {
- Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
- station.location_state = LocationStateEnum.Abnormal.ToString();
- station.remark = $"鏈煡璇㈠埌SN鍙凤細{bindSNS[bindSNS.Length - 1]}鐨勮鍗�";
- stationinfoRepository.Update(station, true);
- WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{station.stationCode}鏈煡璇㈠埌SN鍙凤細{bindSNS[bindSNS.Length - 1]}鐨勮鍗�", "PCS");
- return;
- }
- }
- #endregion
-
- #region 璐т綅鐘舵�佹洿鏂板浣�
- var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
- var updatefinished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "W_Storage_update").First(), Gantry_client);//璐т綅鐘舵�佹洿鏂�
- if (!finished && updatefinished)
- {
- Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
- WriteLog.Write_Log(number + "涓婃枡瀹屾垚", number + "璐т綅鐘舵�佹洿鏂颁俊鍙峰浣�", "鎴愬姛锛�",
- $"璇诲彇妗佹灦淇℃伅锛歕n涓婃枡瀹屾垚淇″彿锛歿finished}\n\n鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂颁俊鍙凤細{false}");
- }
- #endregion
-
- if (finished && !updatefinished)
- {
-
- #region 鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�
- var area = Gantry_client.ReadByOrder<Int16>("place_prog", number);//鏀炬枡瀹屾垚鐨勫尯鍩熷彿
-
- WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�", $"PCS鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦鍖哄煙鍙凤細{area}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
- //if (AreaNr != area)
- //{
- // client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
- // //WriteDBLog.Error(name + "鎶ヨ", $"PCS鍖哄煙鍙凤細{AreaNr}锛涙鏋跺尯鍩熷彿锛歿area}閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒", "PCS");
- // WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇鍖哄煙鍙锋槸鍚︿竴鑷�", $"PCS鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦鍖哄煙鍙凤細{area}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
- // return;
- //}
- #endregion
-
- #region 鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�
- var quantity = Gantry_client.ReadByOrder<Int16>("pos_prog", number);//妗佹灦璁板綍鐨勮溅杞暟閲�
-
- WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�", $"鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦杞﹁疆鏁帮細{quantity}\nPCS杞﹁疆鏁帮細{station.quantity}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
- //if (quantity != station.quantity)
- //{
- // client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
- // WriteLog.Write_Log(number + "鍙栨枡瀹屾垚鍑洪敊", bindSNS[bindSNS.Length - 1], "鍒ゆ柇杞﹁疆鏁伴噺鏄惁涓�鑷�", $"鍖哄煙鍙凤細{AreaNr}锛沑n妗佹灦杞﹁疆鏁帮細{quantity}\nPCS杞﹁疆鏁帮細{station.quantity}\n閿欒淇℃伅锛歅CS鍖哄煙鍙蜂笌妗佹灦鍖哄煙鍙蜂笉涓�鑷达紒");
- // return;
- //}
- #endregion
-
- Updatemes(bindSNS[bindSNS.Length - 1]);
- station.quantity = station.quantity - 1;
- station.bindSN = OperStr(bindSNS);
- if (station.quantity <= 0)
- {
- station.stationType = string.Empty;
- station.Number = string.Empty;
- station.heatNumber = string.Empty;
- station.tray_status = "EmptyTray";
- }
- var count = stationinfoRepository.Update(station, true);
- if (count < 1)
- {
- WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{station.stationCode}", "PCS");
- return;
- }
-
- Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
- Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-
- #region 娓呯┖淇℃伅
- Gantry_client.WriteByOrder("W_AreaNr", (Int16)0, number);//鍖哄煙璐т綅鍙�
- Gantry_client.WriteByOrder("W_IndexNr", (Int16)0, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
- Gantry_client.WriteByOrder("W_Storage_Type", (Int16)0, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
- Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)0, number);//杞﹁疆绫诲瀷
- #endregion
-
- #region 鏃ュ織璁板綍
- WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
- #endregion
- }
- }
- }
-
- #endregion
-
- #region 鐢宠涓婃枡
-
- if (!Gantry_client.ReadByOrder<bool>("W_RequestUnload", number))
- {
- var Station = stationinfoRepository.Find(x => x.area == area_code(number) && x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.lastUpdateTime).FirstOrDefault();
- if (Station != null)
- {
- var SNS = Station.bindSN.Split(",");
- List<string> list = new List<string>();
- foreach (var SN in SNS)
- {
- if (!string.IsNullOrEmpty(SN))
- list.Add(SN);
- }
- //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
- if (list.Count != Station.quantity)
- {
- Station.location_state = LocationStateEnum.Abnormal.ToString();
- Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�";
- stationinfoRepository.Update(Station, true);
- Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
- #region 鏃ュ織璁板綍
- WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
- #endregion
- return;
- }
-
- var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).ToList();
- var PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
- var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
-
- if (PalletSignal == 1 && MaterialSignal == 1)
- {
- Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷
- var area = Convert.ToInt16(Station.stationCode.Substring(Station.stationCode.Length - 1, 1));
- Gantry_client.WriteByOrder("W_AreaNr", (Int16)area, number);//鍖哄煙璐т綅鍙�
- Gantry_client.WriteByOrder("W_IndexNr", (Int16)SNS.Length, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
- Gantry_client.WriteByOrder("W_Storage_Type", (Int16)1, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
- Gantry_client.WriteByOrder("W_Wheel_id", SNS[SNS.Length - 1], number);//杞﹁疆SN鍙�
- Gantry_client.WriteByOrder("W_RequestUnload", true, number);
- #region 鏃ュ織璁板綍
- WriteDBLog.Success("涓婃枡鍖虹敵璇�", $"璇诲彇鎵樼洏鍏夌數淇″彿锛歿PalletSignal}\n璇诲彇绗竴涓溅杞厜鐢典俊鍙凤細{MaterialSignal}\n\n" +
- $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" +
- $"\n杞﹁疆SN鍙凤細{SNS[SNS.Length - 1]}\nW_RequestUnload锛歵rue", "PCS");
- #endregion
- }
- else
- {
- Gantry_client.WriteByOrder("W_RequestUnload", false, number);
- }
-
- #region 鏇存柊涓�涓娴嬩笂鏂欎换鍔�
- Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
- if (!agvtaskService.Find(x => x.agv_toaddress == Station.stationCode).Any())
- {
- var task = agvtaskService.Find(x => x.agv_taskstate == "Queue" && (x.agv_tasktype == "TaskType_OutsourceOutbound" || x.agv_tasktype == "TaskType_Outbound") && x.agv_toaddress == "").OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
- if (task != null)
- {
- task.agv_taskstate = "Create";
- task.agv_toaddress = Station.stationCode;
- agvtaskService.Update(task, true);
- WriteDBLog.Success("鏇存柊涓�涓娴嬩笂鏂欎换鍔�", $"浠诲姟缂栧彿锛歿task.agv_tasknum}", "PCS");
- }
- }
- #endregion
- }
- }
-
- #endregion
-
-
- #region MyRegion
-
- /////鏌ユ壘涓婃枡鍖虹殑璐т綅
- //var Stations = stationinfoRepository.Find(x => x.area == area_code(number)).OrderBy(x => x.lastUpdateTime);//鏍规嵁鏃堕棿鍏堝悗鎺掑簭
- // //闇�娴嬭瘯涓�涓�
- //var Station = Stations?.Where(x => x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.quantity).FirstOrDefault();
-
- //if (Station != null)
- //{
- // var SNS = Station.bindSN.Split(",");
- // List<string> list = new List<string>();
- // foreach (var SN in SNS)
- // {
- // if (!string.IsNullOrEmpty(SN))
- // list.Add(SN);
- // }
- // //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
- // if (list.Count != Station.quantity)
- // {
- // Station.location_state = LocationStateEnum.Abnormal.ToString();
- // Station.remark = "杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�";
- // stationinfoRepository.Update(Station, true);
- // Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
- // #region 鏃ュ織璁板綍
- // WriteDBLog.Error("涓婃枡鍖�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�", "PCS");
- // #endregion
- // return;
- // }
- // var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).ToList();
- // var PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
- // var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
-
- // var AreaNr = Gantry_client.ReadByOrder<Int16>("W_AreaNr", number);//璇诲彇璐т綅鍙蜂俊鎭�
- // if (PalletSignal == 1 && MaterialSignal == 1)
- // {
- // if (AreaNr == 0)
- // {
- // Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(QueryMateriel(Station.stationType) == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId), number);//杞﹁疆绫诲瀷
- // var area = Convert.ToInt16(Station.stationCode.Substring(Station.stationCode.Length - 1, 1));
- // Gantry_client.WriteByOrder("W_AreaNr", (Int16)area, number);//鍖哄煙璐т綅鍙�
- // Gantry_client.WriteByOrder("W_IndexNr", (Int16)SNS.Length, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
- // Gantry_client.WriteByOrder("W_Storage_Type", (Int16)1, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
- // Gantry_client.WriteByOrder("W_Wheel_id", SNS[SNS.Length - 1], number);//杞﹁疆SN鍙�
- // Gantry_client.WriteByOrder("W_RequestUnload", true, number);
- // #region 鏃ュ織璁板綍
- // WriteDBLog.Success("涓婃枡鍖虹敵璇�", $"璇诲彇鎵樼洏鍏夌數淇″彿锛歿PalletSignal}\n璇诲彇绗竴涓溅杞厜鐢典俊鍙凤細{MaterialSignal}\n\n" +
- // $"鍐欏叆妗佹灦淇℃伅锛歕n鍖哄煙璐т綅鍙凤細{area}\n鎵樼洏涓婄殑绗嚑涓溅杞細{SNS.Length}\n鎵樼洏绫诲瀷锛歿1}\n杞﹁疆绫诲瀷锛歿(QueryMateriel(Station.stationType).TypeId == null ? QueryMateriel1(Station.stationType).TypeId : QueryMateriel(Station.stationType).TypeId)}" +
- // $"\n杞﹁疆SN鍙凤細{SNS[SNS.Length - 1]}\nW_RequestUnload锛歵rue", "PCS");
- // #endregion
- // }
- // }
- // else
- // {
- // Gantry_client.WriteByOrder("W_RequestUnload", false, number);
- // }
-
- // var Gantrydetails = plcRepository.Find(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == number).ToList();
- // var Gantry_Out_of_Area = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Gantry_Out_of_Area").First(), Gantry_client);//妗佹灦鏄惁鍦ㄥ尯鍩熷唴
-
- // var QueryDate = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_QueryDate").First(), Gantry_client);//淇℃伅鏌ヨ
- // if (QueryDate)
- // {
- // var Date_Vaild = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Date_Vaild").First(), Gantry_client);//淇℃伅纭
- // if (!Date_Vaild)//淇℃伅鏈夎锛岃褰曟棩蹇�
- // {
- // Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
- // Station.location_state = LocationStateEnum.Abnormal.ToString();
- // Station.remark = $"鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�";
- // stationinfoRepository.Update(Station, true);
- // WriteDBLog.Error("涓婃枡鍖轰俊鎭煡璇�", $"鍐欏叆妗佹灦淇℃伅锛歕nW_RequestUnload锛歠alse\n\n{Station.stationCode}鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗�", "PCS");
- // return;
- // }
- // }
- // var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
- // var updatefinished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "W_Storage_update").First(), Gantry_client);//璐т綅鐘舵�佹洿鏂�
- // if (!finished && updatefinished)
- // Gantry_client.WriteByOrder("W_Storage_update", false, number);//璐т綅鐘舵�佹洿鏂�
- // if (finished && !updatefinished)
- // {
- // Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
- // Updatemes(SNS[SNS.Length - 1]);
- // Station.quantity = Station.quantity - 1;
- // Station.bindSN = OperStr(SNS);
- // if (Station.quantity <= 0)
- // {
- // Station.stationType = string.Empty;
- // Station.Number = string.Empty;
- // Station.heatNumber = string.Empty;
- // Station.tray_status = "EmptyTray";
- // }
- // var count = stationinfoRepository.Update(Station, true);
- // if (count < 1)
- // {
- // WriteDBLog.Error("鍙栨枡瀹屾垚", $"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{Station.stationCode}", "PCS");
- // return;
- // }
-
- // #region 娓呯┖淇℃伅
- // Gantry_client.WriteByOrder("W_AreaNr", (Int16)0, number);//鍖哄煙璐т綅鍙�
- // Gantry_client.WriteByOrder("W_IndexNr", (Int16)0, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
- // Gantry_client.WriteByOrder("W_Storage_Type", (Int16)0, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
- // Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)0, number);//杞﹁疆绫诲瀷
- // #endregion
-
- // Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
- // #region 鏃ュ織璁板綍
- // WriteDBLog.Success("鍙栨枡瀹屾垚", $"鍐欏叆妗佹灦淇℃伅锛歕n璐т綅鐘舵�佹洿鏂帮細{true}\nW_RequestUnload锛歿false}", "PCS");
- // #endregion
-
- // #region 鎶ヨ
- // PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
- // MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
- // if (Station.quantity > 0 && (PalletSignal != 1 || MaterialSignal != 1))
- // {
- // Station.location_state = LocationStateEnum.Abnormal.ToString();
- // Station.remark = "杞﹁疆鏁伴噺澶т簬0锛屽厜鐢垫娴嬫棤鎵樼洏鎴栨棤杞﹁疆";
- // stationinfoRepository.Update(Station, true);
- // client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
- // WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
- // }
- // else if (Station.quantity < 1 && MaterialSignal == 1)
- // {
- // Station.location_state = LocationStateEnum.Abnormal.ToString();
- // Station.remark = "杞﹁疆鏁伴噺灏忎簬0锛屽厜鐢垫娴嬫湁杞﹁疆";
- // stationinfoRepository.Update(Station, true);
- // client.WriteByOrder("W_AlarmSignal", (Int16)2, number);//鎶ヨ
- // WriteDBLog.Error(number + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
- // }
- // #endregion
-
-
- // }
- //}
- //else
- // Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
- #endregion
- }
- catch (Exception ex)
- {
- WriteDBLog.Error("涓婃枡鍖�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
- }
- }
- /// <summary>
- /// 鑷姩鍙栫┖鎵�
- /// </summary>
- /// <param name="client"></param>
- private void AutoEmptyTray(PLCClient client)
- {
- try
- {
- VOLContext Context = new VOLContext();
- Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
- Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
- Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
- Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
- var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
- List<string> stationCodes = new List<string>() { "S01001001", "S01001002", "W01001001", "W01001002", "W01001003" };
- string remark = "";
- foreach (var stationCode in stationCodes)
- {
- try
- {
- remark = "鏌ヨ绔欏彴";
- var station = stationinfoRepository.Find(x => x.stationCode == stationCode && x.enable).FirstOrDefault();
- if (station == null) continue;
- remark = "鏌ヨ璧风偣鏄惁瀛樺湪浠诲姟";
- if (stationCode.Contains("W") && agvtaskService.Find(x => x.agv_fromaddress == stationCode || x.agv_toaddress == stationCode).Any()) continue;
- else
- {
- if (agvtaskService.Find(x => x.agv_fromaddress == stationCode).Any()) continue;
- }
- remark = "璇诲彇鍏夌數淇″彿";
- var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == stationCode).ToList();
- var PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
- var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
- if (PalletSignal == 1 && MaterialSignal == 2 && (station.stationCode.Contains("S0100100") ? station.tray_status == "EmptyTray" : true))
- {
- var area = station.tray_type == "SmallTray" ? "11" : "10";
- remark = "鏌ヨ鏄惁瀛樺湪琛ョ┖鎵橀槦鍒椾换鍔�";
- var task = agvtaskService.Find(x => (x.agv_toaddress.Contains("W") || x.agv_toaddress.Contains("X")) && x.agv_taskstate == "Queue" && x.agv_tasktype == "TaskType_EmptyPallet" && x.agv_Traytype == station.tray_type).OrderByDescending(x => x.agv_grade).ThenBy(x => x.agv_createtime).FirstOrDefault();
- if (task != null)
- {
- task.agv_fromaddress = station.stationCode;
- task.StarQuantity = 0;
- task.agv_taskstate = "Create";
- if (station.stationCode.Contains("S0100100"))
- task.agv_grade = 3;
- agvtaskService.Update(task, true);
- station.location_state = LocationStateEnum.Busy.ToString();
- stationinfoRepository.Update(station, true);
- WriteDBLog.Success("鏇存柊绌烘墭闃熷垪浠诲姟", $"浠诲姟缂栧彿锛歿task.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS");
- continue;
- }
- remark = "鏌ヨ绌烘墭鍙犵洏浣�";
- #region 绌烘墭鍙犵洏
- var EmptyStations = stationinfoRepository.Find(x => x.stationCode.Contains("DD") && x.quantity < 5 && x.enable).ToList();
- var EmptyStation = EmptyStations.Where(x => x.tray_type == station.tray_type && x.location_state == LocationStateEnum.Stroge.ToString()).FirstOrDefault();
- if (EmptyStation == null)
- EmptyStation = EmptyStations.Where(x => x.location_state == LocationStateEnum.Empty.ToString() && x.quantity == 0).FirstOrDefault();
- #endregion
- remark = "鏌ユ壘搴撳唴绌烘墭浣�";
- if (EmptyStation == null)//鏌ユ壘搴撳唴绌烘墭鐩�
- EmptyStation = GetStation.EmptyPalletStation(area);
-
-
- if (EmptyStation != null)
- {
- #region 鍚屼竴涓┖鎵樹綅鍙兘鍚屾椂鐢熸垚涓�涓┖鎵樹换鍔�
- remark = "鏌ヨ绌烘墭浣嶆槸鍚﹀瓨鍦ㄤ换鍔�";
- if (agvtaskService.Find(x => x.agv_fromaddress == EmptyStation.stationCode || x.agv_toaddress == EmptyStation.stationCode).Any())
- return;
- #endregion
- dt_agvtask agvtask = new dt_agvtask()
- {
- agv_fromaddress = station.stationCode,
- agv_id = Guid.NewGuid(),
- agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
- agv_grade = station.stationCode.Contains("S0100100") ? 3 : 1,
- agv_createtime = DateTime.Now,
- agv_taskstate = "Create",
- //agv_materielid = station.stationType,
- agv_qty = 1,
- StarQuantity = 0,
- EndQuantity = EmptyStation.quantity,
- agv_tasktype = "TaskType_EmptyPallet",
- agv_toaddress = EmptyStation.stationCode,
- agv_userid = "绯荤粺",
- agv_TrayStatus = "EmptyTray",//station.tray_status,
- agv_Traytype = station.tray_type,
- };
- agvtaskService.Add(agvtask, true);
- station.location_state = LocationStateEnum.Busy.ToString();
- stationinfoRepository.Update(station, true);
- EmptyStation.location_state = LocationStateEnum.Busy.ToString();
- stationinfoRepository.Update(EmptyStation, true);
- WriteDBLog.Success("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"浠诲姟缂栧彿锛歿agvtask.agv_tasknum}锛屾墭鐩樹俊鍙�:{PalletSignal},璐х墿淇″彿:{MaterialSignal}", "PCS");
- }
- }
- }
- catch (Exception ex)
- {
- WriteDBLog.Error("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"{stationCode}锛歿remark}閿欒淇℃伅锛歿ex.Message}", "PCS");
- }
- }
- }
- catch (Exception ex)
- {
- WriteDBLog.Error("鍒涘缓鑷姩鍙栫┖鎵樹换鍔�", $"閿欒淇℃伅锛歿ex.Message}", "PCS");
- }
- }
-
- /// <summary>
- /// 妫�娴嬪厜鐢电姸鎬佷笌绯荤粺璐т綅鐘舵�佹槸鍚︿竴鑷�
- /// </summary>
- /// <param name="client"></param>
- private void StationState(PLCClient client)
- {
- try
- {
- List<string> names = new List<string>() { "1鍗曞厓涓嬫枡鍖�", "2鍗曞厓涓嬫枡鍖�", "3鍗曞厓涓嬫枡鍖�" };/*, "涓婃枡鍖�"*/
- foreach (var name in names)
- {
- VOLContext Context = new VOLContext();
- Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
- var Stations = stationinfoRepository.Find(x => x.area == area_code(name) && x.enable && !x.location_state.Contains("Busy") && x.location_state != LocationStateEnum.Abnormal.ToString());
- foreach (var Station in Stations)
- {
- var PalletSignal = client.ReadByOrder<Int16>("R_PalletSignal", Station.stationCode);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
- var MaterialSignal = client.ReadByOrder<Int16>("R_MaterialSignal", Station.stationCode);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
- if (Station.quantity > 0 && (PalletSignal != 1 || MaterialSignal != 1))//绯荤粺璐т綅鏈夎溅杞紝鍏夌數妫�娴嬫棤杞﹁疆
- {
- Station.location_state = LocationStateEnum.Abnormal.ToString();
- Station.remark = $"杞﹁疆鏁伴噺澶т簬0锛屾墭鐩樺厜鐢典俊鍙蜂负锛歿PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
- stationinfoRepository.Update(Station, true);
- client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
- WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
- continue;
- }
- if (Station.location_state == LocationStateEnum.Stroge.ToString() && PalletSignal != 1)
- {
- Station.location_state = LocationStateEnum.Abnormal.ToString();
- Station.remark = $"璐т綅鐘舵�佷负鏈夎揣锛屾墭鐩樺厜鐢典俊鍙蜂负锛歿PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
- stationinfoRepository.Update(Station, true);
- client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
- WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
- continue;
- }
- if (Station.location_state == LocationStateEnum.Empty.ToString() && (PalletSignal == 1 || MaterialSignal == 1))//绯荤粺璐т綅涓虹┖锛屽厜鐢垫娴嬫湁鏂�
- {
- Station.location_state = LocationStateEnum.Abnormal.ToString();
- Station.remark = $"璐т綅鐘舵�佷负绌鸿揣浣嶏紝鎵樼洏鍏夌數淇″彿涓猴細{PalletSignal}锛岃揣鐗╁厜鐢典俊鍙蜂负锛歿MaterialSignal}";
- stationinfoRepository.Update(Station, true);
- client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
- WriteDBLog.Error(name + "鎶ヨ", $"璐т綅缂栧彿锛歿Station.stationCode}锛涢敊璇俊鎭細{Station.remark}", "PCS");
- continue;
- }
- //if (Station.quantity < 1 && MaterialSignal == 1)//绯荤粺璐т綅鏃犺溅杞紝鍏夌數妫�娴嬫湁杞﹁疆
- //{
- // Station.location_state = LocationStateEnum.Abnormal.ToString();
- // Station.remark = "璐т綅鏃犺溅杞紝鍏夌數妫�娴嬫湁杞﹁疆";
- // stationinfoRepository.Update(Station, true);
- // client.WriteByOrder("W_AlarmSignal", (Int16)2, name);//鎶ヨ
- // continue;
- //}
- }
- }
- }
- catch (Exception ex)
- {
-
- //throw;
- }
- }
- public static string area_code(string area_name)
- {
- VOLContext Context = new VOLContext();
- Idt_areainfoRepository areainfoRepository = new dt_areainfoRepository(Context);
- var areainfo = areainfoRepository.Find(x => x.area_name == area_name).FirstOrDefault();
- return areainfo.area_code.ToString();
- }
-
- private string OperStr(string[] strArrty)
- {
- string[] newstr = strArrty.RemoveLast(1);
- string Newsn = string.Join(",", newstr);
-
- return Newsn;
- }
- public static dt_geometry_data QueryMateriel(string type)
- {
- VOLContext Context = new VOLContext();
- Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
- var materielinfo = dataRepository.Find(x => x.Description == type).OrderBy(x => x.TypeId).FirstOrDefault();
- return materielinfo;
- }
- public static dt_geometry_data_detectionline QueryMateriel1(string type)
- {
- VOLContext Context = new VOLContext();
- Idt_geometry_data_detectionlineRepository detectionlineRepository = new dt_geometry_data_detectionlineRepository(Context);
- var materielinfo1 = detectionlineRepository.Find(x => x.Description == type).OrderBy(x => x.TypeId).FirstOrDefault();
- return materielinfo1;
- }
- public static string QueryMateriel(int typeId)
- {
- VOLContext Context = new VOLContext();
- Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
- var materielinfo = dataRepository.FindFirst(x => x.TypeId == typeId);
- return materielinfo.Description;
- }
- /// <summary>
- /// 鏇存敼宸ュ崟鐘舵��
- /// </summary>
- /// <param name="SN"></param>
- public static void Updatemes(string SN)
- {
- VOLContext Context = new VOLContext();
- Idt_mes_detailRepository mes_DetailRepository = new dt_mes_detailRepository(Context);
- Idt_mes_headRepository mes_HeadRepository = new dt_mes_headRepository(Context);
- IVV_Mes_WorkinfoRepository workinfoRepository = new VV_Mes_WorkinfoRepository(Context);
- //var mes_Detail = freeDB.Select<dt_mes_detail>().Where(x => x.SN == SN).First();
- var Mes_Work = workinfoRepository.Find(x => x.SN == SN && x.processCode == "28").FirstOrDefault();
- var mes_Detail = mes_DetailRepository.Find(x => x.SN == SN && x.jobID == Mes_Work.jobID).FirstOrDefault();
- if (mes_Detail != null)
- {
- mes_Detail.Status = "涓婄嚎";
- mes_Detail.FinishTime = DateTime.Now;
- //freeDB.DataBase.Update<dt_mes_detail>().SetSource(mes_Detail).UpdateColumns(x => new { x.Status, x.FinishTime }).ExecuteAffrows();
- mes_DetailRepository.Update(mes_Detail, true);
- //var mes_Head = freeDB.Select<dt_mes_head>().Where(x => x.jobID == mes_Detail.jobID).First();
- var mes_Head = mes_HeadRepository.Find(x => x.jobID == mes_Detail.jobID).FirstOrDefault();
- if (mes_Head != null)
- {
- mes_Head.finishNum = mes_Head.finishNum + 1;
- //freeDB.DataBase.Update<dt_mes_head>().SetSource(mes_Head).UpdateColumns(x => new { x.finishNum }).ExecuteAffrows();
- mes_HeadRepository.Update(mes_Head, true);
- }
- }
+ Pipeline pipeline = new Pipeline();
+ pipeline.Loadinglevel(client);
+ pipeline.AutoEmptyTray(client);
+ pipeline.StationState(client);
}
}
}
--
Gitblit v1.9.3