|
@@ -929,7 +929,247 @@ namespace IMCS.CCS.Services
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 放三坐标滑台
|
|
|
+ /// </summary>
|
|
|
+ public async Task<ResponseECSData> SendThreeCoordinates(RequestData<WorkData> req)
|
|
|
+ {
|
|
|
+ ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ List<Device> devices = _deviceService.GetDeviceList();
|
|
|
+
|
|
|
+ Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
|
|
|
+
|
|
|
+ if (device == null)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "设备已离线===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+
|
|
|
+ CcsAction actionQuery = new CcsAction();
|
|
|
+ actionQuery.OperateType = ActionTypeEnum.SendThreeCoordinates.ToString();
|
|
|
+ actionQuery.Ip = req.url;
|
|
|
+ CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
|
|
|
+
|
|
|
+ SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
|
|
|
+ HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
+ if (!ConnectionResult.IsSuccess)
|
|
|
+ {
|
|
|
+ s7.ConnectClose();
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "启动三坐标异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+
|
|
|
+ CcsActionAddress actionAddressQuery = new CcsActionAddress();
|
|
|
+ actionAddressQuery.ActionId = actionInfo.Id;
|
|
|
+ List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
|
|
|
+
|
|
|
+ string stationId = string.IsNullOrEmpty(req.data.stationId) ? "M" : req.data.stationId;
|
|
|
+ //int key = 0;
|
|
|
+ //if(stationId == "L")
|
|
|
+ //{
|
|
|
+ // key = (int)ThreeCoordinatesPosEnum.L;
|
|
|
+ //}
|
|
|
+ //else if (stationId == "M")
|
|
|
+ //{
|
|
|
+ // key = (int)ThreeCoordinatesPosEnum.M;
|
|
|
+ //}
|
|
|
+ //else if (stationId == "R")
|
|
|
+ //{
|
|
|
+ // key = (int)ThreeCoordinatesPosEnum.R;
|
|
|
+ //}
|
|
|
+
|
|
|
+
|
|
|
+ //根据sort顺序,查询左中右空闲位置,写入地址列表
|
|
|
+ //List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString() && o.Sort == key).ToList();
|
|
|
+ //foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
|
|
|
+ //{
|
|
|
+ // if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
|
+ // {
|
|
|
+ // if(actionAddress.Value == "workProgramName")
|
|
|
+ // {
|
|
|
+ // s7.Write(actionAddress.Address, ToolUtils.ReturnBtyesWtitString(req.data.workProgramName, 40));
|
|
|
+ // }
|
|
|
+ // else if (actionAddress.Value == "workId")
|
|
|
+ // {
|
|
|
+ // s7.Write(actionAddress.Address, ToolUtils.ReturnBtyesWtitString(req.data.workId, 60));
|
|
|
+ // }
|
|
|
+ // else if (actionAddress.Value == "procedureNo")
|
|
|
+ // {
|
|
|
+ // s7.Write(actionAddress.Address, ToolUtils.ReturnBtyesWtitString(req.data.procedureNo, 40));
|
|
|
+ // }
|
|
|
+
|
|
|
+ // Thread.Sleep(100);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
+ ////查询写入地址列表
|
|
|
+ //List<CcsActionAddress> CcsActionAddressWriteSends = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_SEND.ToString()).OrderBy(o=>o.Sort).ToList();
|
|
|
+
|
|
|
+ //foreach (CcsActionAddress actionAddress in CcsActionAddressWriteSends)
|
|
|
+ //{
|
|
|
+ // if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
|
+ // {
|
|
|
+ // s7.Write(actionAddress.Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value));
|
|
|
+
|
|
|
+ // Thread.Sleep(SLEEP_TIME);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ Thread.Sleep(SLEEP_TIME);
|
|
|
+ s7.ConnectClose();
|
|
|
+
|
|
|
+ //插入回调
|
|
|
+ TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendThreeCoordinates.ToString(),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates), req.taskId, req.taskNodeId);
|
|
|
+ taskCallbackData = setCallBackValue(CcsActionAddresses, taskCallbackData);
|
|
|
+ taskCallbackData.Description = stationId;
|
|
|
+ taskCallbackData.CallbackFailValue3 = req.data.workId;
|
|
|
+ await _taskCallbackService.CreateOrUpdateAndCache(taskCallbackData);
|
|
|
+ Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates) + "放测量三坐标成功===>>" + JsonConvert.SerializeObject(req)
|
|
|
+ , EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "放测量三坐标故障===>>" + ex.Message + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 三坐标中间位是否可取
|
|
|
+ /// </summary>
|
|
|
+ public async Task<ResponseECSData> GetMiddleThreeCoordinates(RequestToolData req)
|
|
|
+ {
|
|
|
+ ResponseECSData responseData = new ResponseECSData("", "");
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ List<Device> devices = _deviceService.GetDeviceList();
|
|
|
+
|
|
|
+ Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
|
|
|
+
|
|
|
+ if (device == null)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "设备已离线===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+
|
|
|
+ SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
|
|
|
+ HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
+ if (!ConnectionResult.IsSuccess)
|
|
|
+ {
|
|
|
+ s7.ConnectClose();
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "三坐标中间位是否可取===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ var operateResult = s7.ReadBool("DB300.156.3");
|
|
|
+ var operateResult2 = s7.ReadBool("DB300.156.6");
|
|
|
+ if (operateResult.Content.ToString() != "True" || operateResult2.Content.ToString() != "True")
|
|
|
+ {
|
|
|
+ s7.ConnectClose();
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "三坐标中间位不可取===>>" + operateResult.Content.ToString() + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ s7.ConnectClose();
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.SendThreeCoordinates + "三坐标中间位===>>" + ex.Message + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.SendThreeCoordinates));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 查询三坐标检测空闲位置
|
|
|
+ /// </summary>
|
|
|
+ public async Task<ResponseECSData> QueryThreeCoordinatesFreePos(RequestToolData req)
|
|
|
+ {
|
|
|
+ ResponseECSData responseData = new ResponseECSData("", "");
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ List<Device> devices = _deviceService.GetDeviceList();
|
|
|
+
|
|
|
+ Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
|
|
|
+
|
|
|
+ if (device == null)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.QueryThreeCoordinatesFreePos + "设备已离线===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.QueryThreeCoordinatesFreePos));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+
|
|
|
+ CcsAction actionQuery = new CcsAction();
|
|
|
+ actionQuery.OperateType = ActionTypeEnum.QueryThreeCoordinatesFreePos.ToString();
|
|
|
+ actionQuery.Ip = req.url;
|
|
|
+ CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
|
|
|
+
|
|
|
+ SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
|
|
|
+ HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
+ if (!ConnectionResult.IsSuccess)
|
|
|
+ {
|
|
|
+ s7.ConnectClose();
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.QueryThreeCoordinatesFreePos + "查询三坐标检测空闲位置===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.QueryThreeCoordinatesFreePos));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+
|
|
|
+ CcsActionAddress actionAddressQuery = new CcsActionAddress();
|
|
|
+ actionAddressQuery.ActionId = actionInfo.Id;
|
|
|
+ List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
|
|
|
+ //初始化为false,否则返回点位
|
|
|
+ responseData.result = "true";
|
|
|
+ //查询条件
|
|
|
+ List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
|
|
|
+ foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
|
|
|
+ {
|
|
|
+ var operateResult = s7.ReadBool(actionAddress.Address);
|
|
|
+ if (!operateResult.Content.ToString().Equals(actionAddress.Value))
|
|
|
+ {
|
|
|
+ s7.ConnectClose();
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.QueryThreeCoordinatesFreePos + "三坐标检测空闲位置===>>" + actionAddress.Address + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.QueryThreeCoordinatesFreePos));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ s7.ConnectClose();
|
|
|
+
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.QueryThreeCoordinatesFreePos + "查询三坐标检测空闲位置===>>" + ex.Message + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.QueryThreeCoordinatesFreePos));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
//设置回调值
|
|
|
private TaskCallback setCallBackValue(List<CcsActionAddress> CcsActionAddresses, TaskCallback taskCallbackData)
|