From 538f1f0db8d02103d040b96a489b1a5803750a11 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期五, 23 二月 2024 11:02:57 +0800 Subject: [PATCH] 项目优化 --- 代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs | 127 ++++++++++++++++++++++++------------------ 1 files changed, 72 insertions(+), 55 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 5dbcde3..84d6f6f 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" @@ -4,10 +4,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; +using WIDESEA_Comm; using WIDESEA_Core.EFDbContext; using WIDESEA_WCS.IRepositories; using WIDESEA_WCS.Repositories; using WIDESEA_WCS.WCSClient; +using static System.Collections.Specialized.BitVector32; namespace WIDESEA_WCS { @@ -17,9 +19,9 @@ Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context); Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context); Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context); - /// <summary> - /// 鏌ヨ杞﹁疆鏁版嵁 - /// </summary> + Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context); + + #region 鏌ヨ杞﹁疆鏁版嵁 public void QueryWheeldata(PLCClient client) { try @@ -30,21 +32,23 @@ { var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == name).ToList(); var on = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_oi_on").First(), client); - if ((Int16)on == 1) + if ((byte)on == 1) { var wp_type = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_o_wp_type").First(), client); var geometry = dataRepository.FindFirst(x => x.TypeId == (Int32)wp_type); if (geometry == null) { //DBExtension.Write(details.Where(x => x.plcdetail_name == "W_i_status").First(), client, (Int16)2); - client.WriteByOrder("W_i_status", (Int16)2, name);//1-鎵惧埌鏁版嵁锛�2-鏈壘鍒板伐浠剁被鍨嬫暟鎹� - client.WriteByOrder("W_i_skip_op", "1", name);//灞忚斀宸ヨ壓(灞忚斀瑙嗚妫�娴�/灞忚斀娑傛补); - //0-浣跨敤锛�1-璺宠繃 - client.WriteByOrder("R_oi_on", (Int16)0, name); + //1-鎵惧埌鏁版嵁锛�2-鏈壘鍒板伐浠剁被鍨嬫暟鎹� + client.WriteByOrder("W_i_status", (byte)2, name); + //灞忚斀宸ヨ壓(灞忚斀瑙嗚妫�娴�/灞忚斀娑傛补); + //client.WriteByOrder("W_i_skip_op", "1", name); + client.WriteByOrder("R_oi_on", (byte)0, name); } else { - client.WriteByOrder("W_i_status", (Int16)1, name); + //1-鎵惧埌鏁版嵁锛�2-鏈壘鍒板伐浠剁被鍨嬫暟鎹� + client.WriteByOrder("W_i_status", (byte)1, name); client.WriteByOrder("W_i_parameter_a", (float)geometry.a, name); client.WriteByOrder("W_i_parameter_b", (float)geometry.b, name); client.WriteByOrder("W_i_parameter_c", (float)geometry.c, name); @@ -54,8 +58,13 @@ client.WriteByOrder("W_i_parameter_g", (float)geometry.g, name); client.WriteByOrder("W_i_parameter_h", (float)geometry.h, name); //灞忚斀宸ヨ壓(灞忚斀瑙嗚妫�娴�/灞忚斀娑傛补) - client.WriteByOrder("W_i_skip_op", "0", name);//瀛楃涓插啓鍏�-2 - client.WriteByOrder("R_oi_on", (Int16)0, name); + if (name != "杈婇亾涓婃枡鏌ヨ杞﹁疆") + { + client.WriteByOrder("W_i_skip_op_SJ1", (byte)1, name);//灞忚斀瑙嗚妫�娴嬭澶�1 + client.WriteByOrder("W_i_skip_op_SJ2", (byte)1, name);//灞忚斀瑙嗚妫�娴嬭澶�2 + client.WriteByOrder("W_i_skip_op_LT", (byte)1, name);//灞忚斀閾炬潯鏈� + } + client.WriteByOrder("R_oi_on", (byte)0, name); } } } @@ -65,9 +74,9 @@ throw; } } - /// <summary> - /// 鏌ヨ璁㈠崟,鏄惁闇�瑕佸姞宸� - /// </summary> + #endregion + + #region 鏌ヨ璁㈠崟,鏄惁闇�瑕佸姞宸� public void QueryOrder(PLCClient client) { try @@ -78,20 +87,23 @@ { var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == name).ToList(); var on = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_oi_on").First(), client); - if ((Int16)on == 1) + if ((byte)on == 1) { var wp_id = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_o_wp_id").First(), client); - //闇�娣诲姞鏌ヨ杞﹁疆SN鍙疯鍗曢�昏緫 + //闇�娣诲姞鏌ヨ杞﹁疆SN鍙疯鍗曢�昏緫 闇�娣诲姞鍏ュ簱妯″紡鍒ゆ柇锛屾墜鍔ㄥ叆搴撴ā寮忛渶浜哄伐娣诲姞鍏ュ簱搴撳尯锛屽惁鍒欐姤璀� + var wp_type = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_o_wp_type").First(), client); var geometry = dataRepository.FindFirst(x => x.TypeId == (Int32)wp_type); if (geometry == null) { - client.WriteByOrder("W_i_status", (Int16)2, name);//1-濂�,鍏佽鍔犲伐锛�2-涓嶅湪鍒楄〃涓紝3-涓嶅姞宸ヨ溅杞被鍨� + //1-濂�,鍏佽鍔犲伐锛�2-涓嶅湪鍒楄〃涓紝3-涓嶅姞宸ヨ溅杞被鍨嬶紝4-鎵嬪姩鍏ュ簱妯″紡浜哄伐鏈�夋嫨搴撳尯 + client.WriteByOrder("W_i_status", (Int16)2, name); client.WriteByOrder("R_oi_on", (Int16)0, name); } else { + //1-濂�,鍏佽鍔犲伐锛�2-涓嶅湪鍒楄〃涓紝3-涓嶅姞宸ヨ溅杞被鍨嬶紝4-鎵嬪姩鍏ュ簱妯″紡浜哄伐鏈�夋嫨搴撳尯 client.WriteByOrder("W_i_status", (Int16)1, name); //client.WriteByOrder("W_i_job_id", "", name); //client.WriteByOrder("W_i_drawing_id", "", name); @@ -108,35 +120,64 @@ throw; } } - /// <summary> - /// 涓嬫枡浣嶄氦浜� - /// </summary> + #endregion + + #region 涓嬫枡浣嶄氦浜� public void Layofflevel(PLCClient client) { try { var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName); - List<string> names = new List<string>() { "1鍗曞厓涓嬫枡鍖�", "2鍗曞厓涓嬫枡鍖�", "3鍗曞厓涓嬫枡鍖�", "涓婃枡鍖�" }; + var Pipeline_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "閾炬潯鏈�"); + if (Pipeline_client == null) throw new Exception("閾炬潯鏈鸿皟搴︽湇鍔℃湭寮�鍚紒"); + if (!Pipeline_client.IsConnected) throw new Exception("涓庨摼鏉℃満杩炴帴瓒呮椂锛�"); + var Pipelineplc = repository.FindFirst(x => x.plcinfo_name == Pipeline_client.PLCName); + List<string> names = new List<string>() { "1鍗曞厓涓嬫枡鍖�", "2鍗曞厓涓嬫枡鍖�", "3鍗曞厓涓嬫枡鍖�" }; foreach (string name in names) { var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == name).ToList(); var Request = (bool)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Request_Load").First(), client); if (!Request) continue; - var PartStatus = (Int32)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PartStatus").First(), client);//1:ok;2:nok + + List<string> StationCodes = new List<string>() { "X01001001", "X01001002", "X01001003" }; + if (name == "2鍗曞厓涓嬫枡鍖�") + StationCodes = new List<string>() { "X02001001", "X02001002", "X02001003" }; + if (name == "3鍗曞厓涓嬫枡鍖�") + StationCodes = new List<string>() { "X03001001", "X03001002" }; var Wheel_Type = (Int32)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Wheel_Type").First(), client);//杞﹁疆绫诲瀷 var Wheel_id = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Wheel_id").First(), client).ToString();//杞﹁疆SN鍙� - - - client.WriteByOrder("W_AreaNr", (Int16)1, name);//鍖哄煙璐т綅鍙� - client.WriteByOrder("W_IndexNr", (Int16)1, name);//鎵樼洏涓婄殑绗嚑涓溅杞� - client.WriteByOrder("W_Storage_Type", true, name);//鎵樼洏绫诲瀷1-妯斁;2-绔栨斁 - client.WriteByOrder("W_Enabl_Load", true, name);//鏄惁鍏佽 - + for (int i = 0; i < StationCodes.Count - 1; i++) + { + var PartStatus = (Int32)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PartStatus").First(), client);//1:ok;2:nok + string NG = StationCodes[StationCodes.Count - 1];//NG璐т綅 + var station = stationinfoRepository.FindFirst(x => x.stationCode == StationCodes[i] && x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity < 5); + if (station == null) continue; + var Pipelinedetails = plcRepository.Find(x => x.plcdetail_iotype == Pipelineplc.plcinfo_iotyep && x.plcdetail_number == StationCodes[i]).ToList(); + var PalletSignal = (Int16)DBExtension.Read(Pipelinedetails.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃� + if (PalletSignal == 1) + { + if (PartStatus == 1 && NG != station.stationCode) + { + client.WriteByOrder("W_AreaNr", (Int16)i + 1, name);//鍖哄煙璐т綅鍙� + client.WriteByOrder("W_IndexNr", (Int16)station.quantity + 1, name);//鎵樼洏涓婄殑绗嚑涓溅杞� + } + else if (PartStatus == 2 && NG == station.stationCode) + { + client.WriteByOrder("W_AreaNr", (Int16)i + 1, name);//鍖哄煙璐т綅鍙� + client.WriteByOrder("W_IndexNr", (Int16)station.quantity + 1, name);//鎵樼洏涓婄殑绗嚑涓溅杞� + } + client.WriteByOrder("W_Storage_Type", (Int16)1, name);//鎵樼洏绫诲瀷1-妯斁;2-绔栨斁(鏆傛椂鍙湁妯斁鎵樼洏) + client.WriteByOrder("W_Enabl_Load", true, name);//鏄惁鍏佽 + } + } var finished = (bool)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_load_finished").First(), client);//鏀炬枡瀹屾垚 if (finished) { - + var AreaNr = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "W_AreaNr").First(), client); + var station = stationinfoRepository.FindFirst(x => x.stationCode == StationCodes[AreaNr - 1]); + station.quantity = station.quantity++; + stationinfoRepository.Update(station); client.WriteByOrder("W_Storage_update", true, name);//璐т綅鐘舵�佹洿鏂� } } @@ -146,30 +187,6 @@ throw; } } - /// <summary> - /// 闃插憜鎺柦 - /// </summary> - static bool Gantry_Out_of_Area1;//妗佹灦鏄惁鍦ㄥ尯鍩熷唴 - static bool Gantry_Out_of_Area2;//妗佹灦鏄惁鍦ㄥ尯鍩熷唴 - static bool Gantry_Out_of_Area3;//妗佹灦鏄惁鍦ㄥ尯鍩熷唴 - static bool Gantry_Out_of_Area4;//妗佹灦鏄惁鍦ㄥ尯鍩熷唴 - public void Stupidproofmeasure(PLCClient client) - { - try - { - var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName); - List<string> names = new List<string>() { "1鍗曞厓闃插憜", "2鍗曞厓闃插憜", "3鍗曞厓闃插憜", "涓婃枡鍖洪槻鍛�" }; - foreach (string name in names) - { - var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == name).ToList(); - var Release_In = (bool)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Release_In").First(), client);//鍏佽杩涘叆 - if (!Release_In) { } - } - } - catch (Exception ex) - { - throw; - } - } + #endregion } } -- Gitblit v1.9.3