using Newtonsoft.Json; using Quartz; using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.Tools; using WIDESEA_Entity.DomainModels.Equipment; using WIDESEA_WCS.Jobs; using WIDESEA_WCS.JobsPart.Public; using WIDESEA_WCS.WCSClient; namespace WIDESEA_WCS { /// /// 分切机调度【三菱】 /// [DisallowConcurrentExecution] public class SlitterJob : JobBase, IJob { static List centerEqDBList; public SlitterJob() { if (centerEqDBList == null || centerEqDBList.Count == 0) { string tsjJson = File.ReadAllText(AppContext.BaseDirectory + "/分切机.json", Encoding.UTF8); centerEqDBList = JsonConvert.DeserializeObject>(tsjJson); } } public Task Execute(IJobExecutionContext context) { try { //ExecuteJob(context, DoAction); } catch { } return Task.FromResult(string.Empty); } //private void DoAction(IJobExecutionContext context) //{ // var clinet = context.JobDetail.JobDataMap.Get("JobParams") as PLCClient; // var stationList = centerEqDBList.FirstOrDefault(t => t.tiShenJiName == clinet.PLCName); // if (stationList != null) // { // foreach (var station in stationList.stationInfos) // { // if (station.stationType == "in") // { // var hreat = clinet.MelsecPLCClient.Read(station.dbData["R_hreat"]); // var requestIn = clinet.MelsecPLCClient.Read(station.dbData["R_requestIn"]); // var allowIn = clinet.MelsecPLCClient.Read(station.dbData["R_allowIn"]); // var allowLeave = clinet.MelsecPLCClient.Read(station.dbData["R_allowLeave"]); // //转换为调度中心地址 // byte[] clientData = new byte[100]; // clientData[0] = (byte)(hreat ? 1 : 0); // int step = 0; // if (allowIn) // { // step = 1; // } // if (allowLeave) // { // step = 2; // } // clientData[90 + 1] = (byte)step; // TransferData(station, clinet, clientData); // Create(clinet, station, requestIn); // } // else if (station.stationType.StartsWith("out")) // { // var requestOut = clinet.MelsecPLCClient.Read(station.dbData["R_requestOut"]); // var allowIn = clinet.MelsecPLCClient.Read(station.dbData["R_allowIn"]); // var allowLeave = clinet.MelsecPLCClient.Read(station.dbData["R_allowLeave"]); // //转换为调度中心地址 // byte[] clientData = new byte[100]; // int step = 0; // if (allowIn) // { // step = 1; // } // if (allowLeave) // { // step = 2; // } // int data_93 = 0; // if (station.stationType == "outB") // { // data_93 = 2; // } // clientData[93] = (byte)data_93; // clientData[90 + 1] = (byte)step; // TransferData(station, clinet, clientData); // Create(clinet, station, requestOut); // } // } // } //} private void Create(PLCClient clinet, StationInfo station, bool request) { try { //入口无料 if (station.stationType == "in" && request) { WCSCommon.CreateTask(station, true); } //出口有料 else if (station.stationType.StartsWith("out") && request) { WCSCommon.CreateTask(station, false); } } catch (Exception ex) { WriteLog.GetLog().Write($"【提升机任务请求异常】{clinet.PLCName},{station.stationCode}口。{ex.Message}" + "\n", clinet.PLCName); } } /// /// 中转AGV对接数据 /// /// /// /// //private void TransferData(StationInfo station, PLCClient eq_Client, byte[] eq_Data) //{ // var agv_Client = WIDESEA_WCS.WCSService.Clients.FirstOrDefault(t => t.PLCName == station.agvCenterName); // if (agv_Client != null) // { // var agvData = (byte[])agv_Client.ReadDBValue(station.agvDBList[0], 100); // int step = (int)agvData[90 + 1]; // //物料类型 // if (station.stationType == "in") // { // //心跳 // int hreat = (int)agvData[0]; // eq_Client.MelsecPLCClient.Write(station.dbData["W_hreat"], hreat); // if (step == 0) // { // eq_Client.MelsecPLCClient.Write(station.dbData["W_requestIn"], false); // eq_Client.MelsecPLCClient.Write(station.dbData["W_requestClose"], false); // eq_Client.MelsecPLCClient.Write(station.dbData["W_haveLeave"], false); // } // else if (step == 1) // { // eq_Client.MelsecPLCClient.Write(station.dbData["W_requestIn"], true); // } // else if (step == 2) // { // eq_Client.MelsecPLCClient.Write(station.dbData["W_requestClose"], true); // } // else if (step == 3) // { // //离开后,辊分机。自复位 // eq_Client.MelsecPLCClient.Write(station.dbData["W_haveLeave"], true); // } // } // else if (station.stationType.StartsWith("out")) // { // if (step == 0) // { // eq_Client.MelsecPLCClient.Write(station.dbData["W_requestIn"], false); // eq_Client.MelsecPLCClient.Write(station.dbData["W_requestOpen"], false); // eq_Client.MelsecPLCClient.Write(station.dbData["W_haveLeave"], false); // } // else if (step == 1) // { // eq_Client.MelsecPLCClient.Write(station.dbData["W_requestIn"], true); // } // else if (step == 2) // { // eq_Client.MelsecPLCClient.Write(station.dbData["W_requestOpen"], true); // } // else if (step == 3) // { // eq_Client.MelsecPLCClient.Write(station.dbData["W_haveLeave"], true); // } // } // agv_Client.WriteDBValue(station.agvDBList[1], eq_Data); // } // else // { // WriteLog.GetLog(eq_Client.PLCName).Write($"【异常】{station.agvCenterName},读取调度中心PLC失败" + "\n", eq_Client.PLCName); // } //} } }