using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Threading; using IMCS.CCS.Entitys; using IMCS.CCS.Models.vo; using IMCS.CCS.Models; using IMCS.CCS.DeviceProtocol; using System; using S7.Net; using IMCS_CCS.Utils; using Newtonsoft.Json; using IMCS_CCS.Utils.DeviceProtocol; namespace IMCS.CCS.Services { public class HttpRequestService : IHttpRequestService { private readonly IDeviceService _deviceService; private readonly ITaskCallbackService _taskCallbackService; private readonly ICcsActionService _ccsActionService; private readonly ICcsTagValueService _ccsTagValueService; private readonly IEquipmentMonitorService _equipmentMonitorService; private int SLEEP_TIME = 500; string LocalPath = "D:\\PROG"; public HttpRequestService(IDeviceService deviceService, ITaskCallbackService taskCallbackService, ICcsActionService ccsActionService, ICcsTagValueService ccsTagValueService, IEquipmentMonitorService equipmentMonitorService) { _deviceService = deviceService; _taskCallbackService = taskCallbackService; _ccsActionService = ccsActionService; _ccsTagValueService = ccsTagValueService; _equipmentMonitorService = equipmentMonitorService; } /// /// 获取状态当前值 /// public string GetTagValue(RequestTagValueData req) { CcsTagValue queryParam = new CcsTagValue(); queryParam.Ip = req.ip; queryParam.Address = req.tagname; List tagValues = _ccsTagValueService.GetList(queryParam); string tagValue = "0"; if(tagValues != null && tagValues.Count > 0) { tagValue = tagValues[0].TagValue; } return tagValue; } /// /// 益模调用接口,显示3D /// public async Task> GetDigitalTwins() { List list = new List(); List equipmentMonitors = await _equipmentMonitorService.GetList(); foreach(EquipmentMonitor equipment in equipmentMonitors){ ResponseDigitalTwinsData digitalTwinsData = new ResponseDigitalTwinsData(); digitalTwinsData.deviceType = equipment.Type; digitalTwinsData.deviceName = equipment.Name; digitalTwinsData.monitoringStatus = equipment.Status; digitalTwinsData.orderName = "100001"; digitalTwinsData.orderNumber = "100002"; digitalTwinsData.productName = "100003"; digitalTwinsData.productNumber = "100004"; digitalTwinsData.processingParameters.feedRate = "50"; digitalTwinsData.processingParameters.spindleLoad = "100"; digitalTwinsData.processingParameters.spindleMagnification = "80"; digitalTwinsData.processingParameters.spindleSpeed = "40"; list.Add(digitalTwinsData); } return list; } /// /// 查询设备状态 /// public async Task> GetEquipMent() { return await _equipmentMonitorService.GetList(); } /// /// 智能单元取物品 /// public async Task GetIntelligenceUnit(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.GetIntelligenceUnit + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.GetIntelligenceUnit.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit)); responseData.result = "false"; return responseData; } if(!string.IsNullOrEmpty(actionInfo.CheckAddress) && !string.IsNullOrEmpty(actionInfo.CheckValue)) { string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress); var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString().Equals(actionInfo.CheckValue) : operateResult.ToString() != actionInfo.CheckValue) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit)); responseData.result = "false"; return responseData; } } if (!string.IsNullOrEmpty(actionInfo.Address)) { string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); s7.Write(Address1, Convert.ToInt16(req.data.Location)); Thread.Sleep(SLEEP_TIME); } if (!string.IsNullOrEmpty(actionInfo.Address2)) { string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex)); } s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetIntelligenceUnit.ToString(), EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue); taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit) + "取物品成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.GetIntelligenceUnit + "取物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetIntelligenceUnit)); responseData.result = "false"; return responseData; } } /// /// 柔性线取物品 /// public async Task GetFlexibleWire(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.GetFlexibleWire + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.GetFlexibleWire.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire)); responseData.result = "false"; return responseData; } if (!string.IsNullOrEmpty(actionInfo.CheckAddress)) { string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress); var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort(); bool CheckFlag = string.IsNullOrEmpty(actionInfo.CheckValue) ? false : (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue)); bool CheckFlag2 = string.IsNullOrEmpty(actionInfo.CheckValue2) ? true : (actionInfo.CheckType2 ? (operateResult.ToString() == actionInfo.CheckValue2) : (operateResult.ToString() != actionInfo.CheckValue2)); bool CheckFlag3 = string.IsNullOrEmpty(actionInfo.CheckValue3) ? true : (actionInfo.CheckType3 ? (operateResult.ToString() == actionInfo.CheckValue3) : (operateResult.ToString() != actionInfo.CheckValue3)); if (CheckFlag && CheckFlag2 && CheckFlag3) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire)); responseData.result = "false"; return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress4)) { string CheckAddress4 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress4); var operateResult = ((ushort)s7.Read(CheckAddress4)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue4 : operateResult.ToString() != actionInfo.CheckValue4) { responseData.result = "false"; Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire)); s7.Close(); return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress5)) { string CheckAddress5 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress5); var operateResult = ((ushort)s7.Read(CheckAddress5)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue5 : operateResult.ToString() != actionInfo.CheckValue5) { responseData.result = "false"; Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire)); s7.Close(); return responseData; } } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); s7.Write(Address1, Convert.ToInt16(req.data.Location)); Thread.Sleep(SLEEP_TIME); string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex)); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetFlexibleWire.ToString(), EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue); taskCallbackData.Address3 = actionInfo.Address5; taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3; await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire) + "取物品成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.GetFlexibleWire + "取物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetFlexibleWire)); responseData.result = "false"; return responseData; } } /// /// 质量中心取物品 /// public async Task GetQualityCenter(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.GetQualityCenter + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.GetQualityCenter.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter)); responseData.result = "false"; return responseData; } if (!string.IsNullOrEmpty(actionInfo.CheckAddress) && !string.IsNullOrEmpty(actionInfo.CheckValue)) { string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress); var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString().Equals(actionInfo.CheckValue) : operateResult.ToString() != actionInfo.CheckValue) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter)); responseData.result = "false"; return responseData; } } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); s7.Write(Address1, Convert.ToInt16(req.data.Location)); Thread.Sleep(SLEEP_TIME); string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex)); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetQualityCenter.ToString(), EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue); taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter) + "取物品成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.GetQualityCenter + "取物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetQualityCenter)); responseData.result = "false"; return responseData; } } /// /// 智能单元送物品 /// public async Task SendIntelligenceUnit(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.SendIntelligenceUnit + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.SendIntelligenceUnit.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "放物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit)); responseData.result = "false"; return responseData; } //条件判断 if (!string.IsNullOrEmpty(actionInfo.CheckAddress) && !string.IsNullOrEmpty(actionInfo.CheckValue)) { string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress); var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString().Equals(actionInfo.CheckValue) : operateResult.ToString() != actionInfo.CheckValue) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "放物品异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit)); responseData.result = "false"; return responseData; } } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); s7.Write(Address1, Convert.ToInt16(req.data.Location)); Thread.Sleep(SLEEP_TIME); string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex)); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendIntelligenceUnit.ToString(), EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue); taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit) + "放物品成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.SendIntelligenceUnit + "放物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendIntelligenceUnit)); responseData.result = "false"; return responseData; } } /// /// 柔性线送物品 /// public async Task SendFlexibleWire(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.SendFlexibleWire + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.SendFlexibleWire.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire)); responseData.result = "false"; return responseData; } if (!string.IsNullOrEmpty(actionInfo.CheckAddress)) { string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress); var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort(); bool CheckFlag = string.IsNullOrEmpty(actionInfo.CheckValue) ? false : (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue)); bool CheckFlag2 = string.IsNullOrEmpty(actionInfo.CheckValue2) ? true : (actionInfo.CheckType2 ? (operateResult.ToString() == actionInfo.CheckValue2) : (operateResult.ToString() != actionInfo.CheckValue2)); bool CheckFlag3 = string.IsNullOrEmpty(actionInfo.CheckValue3) ? true : (actionInfo.CheckType3 ? (operateResult.ToString() == actionInfo.CheckValue3) : (operateResult.ToString() != actionInfo.CheckValue3)); if (CheckFlag && CheckFlag2 && CheckFlag3) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品异常===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire)); responseData.result = "false"; return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress4)) { string CheckAddress4 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress4); var operateResult = ((ushort)s7.Read(CheckAddress4)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue4 : operateResult.ToString() != actionInfo.CheckValue4) { responseData.result = "false"; Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire)); s7.Close(); return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress5)) { string CheckAddress5 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress5); var operateResult = ((ushort)s7.Read(CheckAddress5)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue5 : operateResult.ToString() != actionInfo.CheckValue5) { responseData.result = "false"; Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire)); s7.Close(); return responseData; } } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); s7.Write(Address1, Convert.ToInt16(req.data.Location)); Thread.Sleep(SLEEP_TIME); string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex)); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendFlexibleWire.ToString(), EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire), req.taskId, req.taskNodeId, actionInfo.Address, actionInfo.CallbackValue); taskCallbackData.Address3 = actionInfo.CallbackAddress3; taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3; await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire) + "放物品成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.SendFlexibleWire + "放物品异常===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendFlexibleWire)); responseData.result = "false"; return responseData; } } /// /// 质量中心送物品 /// public async Task SendQualityCenter(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.SendQualityCenter + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.SendQualityCenter.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter)); responseData.result = "false"; return responseData; } //条件判断 if (!string.IsNullOrEmpty(actionInfo.CheckAddress)) { string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress); var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort(); if (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue)) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter)); responseData.result = "false"; return responseData; } } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); s7.Write(Address1, Convert.ToInt16(req.data.Location)); Thread.Sleep(SLEEP_TIME); string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex)); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendQualityCenter.ToString(), EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue); taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter) + "放物品成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter)); responseData.result = "false"; return responseData; } } /// /// 柔性线机器人移动物品 /// public async Task MoveRobotPosition(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.MoveRobotPosition + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.MoveRobotPosition.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition)); responseData.result = "false"; return responseData; } if (!string.IsNullOrEmpty(actionInfo.CheckAddress)) { string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress); var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort(); bool CheckFlag = string.IsNullOrEmpty(actionInfo.CheckValue) ? false : (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue)); bool CheckFlag2 = string.IsNullOrEmpty(actionInfo.CheckValue2) ? true : (actionInfo.CheckType2 ? (operateResult.ToString() == actionInfo.CheckValue2) : (operateResult.ToString() != actionInfo.CheckValue2)); bool CheckFlag3 = string.IsNullOrEmpty(actionInfo.CheckValue3) ? true : (actionInfo.CheckType3 ? (operateResult.ToString() == actionInfo.CheckValue3) : (operateResult.ToString() != actionInfo.CheckValue3)); if (CheckFlag && CheckFlag2 && CheckFlag3) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition)); responseData.result = "false"; return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress4)) { string CheckAddress4 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress4); var operateResult = ((ushort)s7.Read(CheckAddress4)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue4 : operateResult.ToString() != actionInfo.CheckValue4) { responseData.result = "false"; Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition)); s7.Close(); return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress5)) { string CheckAddress5 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress5); var operateResult = ((ushort)s7.Read(CheckAddress5)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue5 : operateResult.ToString() != actionInfo.CheckValue5) { responseData.result = "false"; Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition)); s7.Close(); return responseData; } } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); s7.Write(Address1, Convert.ToInt16(req.data.Location)); Thread.Sleep(SLEEP_TIME); string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex)); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.MoveRobotPosition.ToString(), EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue); taskCallbackData.Address3 = actionInfo.Address3; taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3; await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition) + "移动物品成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.MoveRobotPosition + "移动物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.MoveRobotPosition)); responseData.result = "false"; return responseData; } } /// /// 上传文件 /// public async Task UploadFile(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List devices = _deviceService.GetDeviceAllList(); Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port) && x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).FirstOrDefault(); if (device == null) { Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.UploadFile)); responseData.result = "false"; return responseData; } /*CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.UploadFile.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; */ new DeviceFtp().GetFile(req.data.fileName, LocalPath); /* DeviceWinSCP winScp = new DeviceWinSCP(device.UserName, device.Password, device.Ip); winScp.PutFile(req.data.fileName, LocalPath, req.data.remotePath);*/ DeviceSFTP sftp = new DeviceSFTP(device.UserName,device.Port, device.Password, device.Ip); if (sftp.Connect()) { sftp.Put(LocalPath + req.data.fileName, req.data.remotePath); sftp.Disconnect(); } else { Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,scp连接失败," + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.UploadFile)); responseData.result = "false"; return responseData; } //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.UploadFile.ToString(), EnumHelper.GetDescription(ActionTypeEnum.UploadFile), req.taskId, req.taskNodeId, null, null); Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传成功===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.UploadFile)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.UploadFile)); responseData.result = "false"; return responseData; } } /// /// 启动机床程序 /// public async Task StartNCProgram(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.StartNCProgram + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.StartNCProgram.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; DeviceOPCUat opcUa = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password); if (opcUa.IsConnection) { bool isSuccess = opcUa.OpcUa_Select(req.data.remotePath); Thread.Sleep(500); if (isSuccess) { opcUa.OpcUa_Write(actionInfo.Address, "True"); opcUa.disConnect(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(), EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, null); Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram)); return responseData; } else { Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram)); responseData.result = "false"; return responseData; } } else { Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram)); responseData.result = "false"; return responseData; } } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "程序异常===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram)); responseData.result = "false"; return responseData; } } /// /// 粗偏写入 /// public async Task SendLinShift(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.SendLinShift + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendLinShift)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.SendLinShift.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; DeviceOPCUat opcUa = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password); Thread.Sleep(500); if (opcUa.IsConnection) { List Tags = new List(); string TagName = actionInfo.Address; string OpcTagNameX = TagName + "01]"; Tags.Add(OpcTagNameX); string OpcTagNameY = TagName + "02]"; Tags.Add(OpcTagNameY); string OpcTagNameZ = TagName + "03]"; Tags.Add(OpcTagNameZ); string OpcTagNameA = TagName + "04]"; Tags.Add(OpcTagNameA); string OpcTagNameB = TagName + "05]"; Tags.Add(OpcTagNameB); List values = new List(); values.Add(req.data.X); values.Add(req.data.Y); values.Add(req.data.Z); values.Add(req.data.A); values.Add(req.data.B); opcUa.OpcUa_WriteValue(values, Tags); opcUa.disConnect(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendLinShift.ToString(), EnumHelper.GetDescription(ActionTypeEnum.SendLinShift), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue2); Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "粗偏写入成功===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendLinShift)); return responseData; } else { Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "粗偏写入异常===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendLinShift)); responseData.result = "false"; return responseData; } } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShift + "粗偏写入异常===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendLinShift)); responseData.result = "false"; return responseData; } } /// /// 精偏写入 /// public async Task SendLinShiftFine(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.SendLinShiftFine + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.SendLinShiftFine.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; DeviceOPCUat opcUa = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password); Thread.Sleep(500); if (opcUa.IsConnection) { List Tags = new List(); string TagName = actionInfo.Address; string OpcTagNameX = TagName + "06]"; Tags.Add(OpcTagNameX); string OpcTagNameY = TagName + "07]"; Tags.Add(OpcTagNameY); string OpcTagNameZ = TagName + "08]"; Tags.Add(OpcTagNameZ); string OpcTagNameA = TagName + "09]"; Tags.Add(OpcTagNameA); string OpcTagNameB = TagName + "10]"; Tags.Add(OpcTagNameB); Tags.Add(OpcTagNameB); List values = new List(); values.Add(req.data.X); values.Add(req.data.Y); values.Add(req.data.Z); values.Add(req.data.A); values.Add(req.data.B); opcUa.OpcUa_WriteValue(values, Tags); opcUa.disConnect(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendLinShift.ToString(), EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue2); Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "精偏写入成功===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine)); return responseData; } else { Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "精偏写入异常===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine)); responseData.result = "false"; return responseData; } } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.SendLinShiftFine + "精偏写入异常===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendLinShiftFine)); responseData.result = "false"; return responseData; } } /// /// 启动清洗机 /// public async Task StartCleanMachine(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.StartCleanMachine + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.StartCleanMachine.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "启动故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine)); responseData.result = "false"; return responseData; } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); s7.Write(Address1, true); Thread.Sleep(SLEEP_TIME); string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.Write(Address2, true); Thread.Sleep(SLEEP_TIME); s7.Write(Address2, false); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCleanMachine.ToString(), EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue); await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine) + "启动成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "启动故障===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine)); responseData.result = "false"; return responseData; } } /// /// 启动打标机 /// public async Task StartLabelMachine(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.StartLabelMachine + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.StartLabelMachine.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; string TypeNo = ""; string SmallTypeNo = ""; string OrderNo = ""; string TaskNo = ""; string ProductNo = ""; string BatchNo = ""; string SerialNo = ""; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.StartLabelMachine + "启动打标机异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine)); responseData.result = "false"; return responseData; } string[] sArray; if(!string.IsNullOrEmpty(actionInfo.Address5) && !string.IsNullOrEmpty(TypeNo)) { sArray = actionInfo.Address5.Split('.'); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(TypeNo, 1)); } if (!string.IsNullOrEmpty(actionInfo.Address6) && !string.IsNullOrEmpty(SmallTypeNo)) { sArray = actionInfo.Address6.Split('.'); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(SmallTypeNo, 1)); } if (!string.IsNullOrEmpty(actionInfo.Address7) && !string.IsNullOrEmpty(SmallTypeNo)) { sArray = actionInfo.Address7.Split('.'); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(OrderNo, 128)); } if (!string.IsNullOrEmpty(actionInfo.Address8) && !string.IsNullOrEmpty(TaskNo)) { sArray = actionInfo.Address8.Split('.'); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(TaskNo, 128)); } if (!string.IsNullOrEmpty(actionInfo.Address9) && !string.IsNullOrEmpty(ProductNo)) { sArray = actionInfo.Address9.Split('.'); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(ProductNo, 128)); } if (!string.IsNullOrEmpty(actionInfo.Address10) && !string.IsNullOrEmpty(BatchNo)) { sArray = actionInfo.Address10.Split('.'); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(BatchNo, 32)); } if (!string.IsNullOrEmpty(actionInfo.Address11) && !string.IsNullOrEmpty(SerialNo)) { sArray = actionInfo.Address11.Split('.'); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(SerialNo, 6)); } short mc = 0; s7.Write(ToolUtils.AddressConvertDBW(actionInfo.Address), mc); Thread.Sleep(SLEEP_TIME); mc = 1; s7.Write(ToolUtils.AddressConvertDBW(actionInfo.Address2), mc); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartLabelMachine.ToString(), EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue); taskCallbackData.Address3 = actionInfo.CallbackAddress3; taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3; await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine) + "启动打标机成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.StartLabelMachine + "启动打标机故障===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartLabelMachine)); responseData.result = "false"; return responseData; } } /// /// 启动三坐标 /// public async Task StartCoordinateMeasuringMachine(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.StartCoordinateMeasuringMachine + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.StartCoordinateMeasuringMachine.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动三坐标异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine)); responseData.result = "false"; return responseData; } //条件判断 if (!string.IsNullOrEmpty(actionInfo.CheckAddress)) { string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress); var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort(); if (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue)) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动三坐标未就绪===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine)); responseData.result = "false"; return responseData; } } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); string[] sArray = Address1.Split('.'); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]), ToolUtils.ReturnBtyesWtitString(req.data.workId, 40)); Thread.Sleep(SLEEP_TIME); sArray = actionInfo.Address2.Split('.'); string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]), ToolUtils.ReturnBtyesWtitString(req.data.workType, 20)); short n = 1; sArray = actionInfo.Address3.Split('.'); string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3); s7.Write(Address3, n); Thread.Sleep(SLEEP_TIME); n = 0; s7.Write(Address3, n); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCoordinateMeasuringMachine.ToString(), EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue); await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine) + "启动三坐标成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动三坐标故障===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine)); responseData.result = "false"; return responseData; } } /// /// 伺服舵机取物品 /// public async Task GetServoStacker(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.GetServoStacker + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.GetServoStacker.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker)); responseData.result = "false"; return responseData; } if (!string.IsNullOrEmpty(actionInfo.CheckAddress)) { string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress); var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort(); bool CheckFlag = string.IsNullOrEmpty(actionInfo.CheckValue) ? false : (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue)); bool CheckFlag2 = string.IsNullOrEmpty(actionInfo.CheckValue2) ? true : (actionInfo.CheckType2 ? (operateResult.ToString() == actionInfo.CheckValue2) : (operateResult.ToString() != actionInfo.CheckValue2)); bool CheckFlag3 = string.IsNullOrEmpty(actionInfo.CheckValue3) ? true : (actionInfo.CheckType3 ? (operateResult.ToString() == actionInfo.CheckValue3) : (operateResult.ToString() != actionInfo.CheckValue3)); if (CheckFlag && CheckFlag2 && CheckFlag3) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker)); responseData.result = "false"; return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress4)) { string CheckAddress4 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress4); var operateResult = ((ushort)s7.Read(CheckAddress4)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue4 : operateResult.ToString() != actionInfo.CheckValue4) { responseData.result = "false"; Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker)); s7.Close(); return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress5)) { string CheckAddress5 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress5); var operateResult = ((ushort)s7.Read(CheckAddress5)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue5 : operateResult.ToString() != actionInfo.CheckValue5) { responseData.result = "false"; Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker)); s7.Close(); return responseData; } } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); s7.Write(Address1, Convert.ToInt16(req.data.Location)); Thread.Sleep(SLEEP_TIME); string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex)); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.GetServoStacker.ToString(), EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker), req.taskId, req.taskNodeId, actionInfo.CallbackAddress, actionInfo.CallbackValue); taskCallbackData.Address3 = actionInfo.Address3; taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3; await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker) + "取物品成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.GetServoStacker + "取物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker)); responseData.result = "false"; return responseData; } } /// /// 伺服舵机放物品 /// public async Task SendServoStacker(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.SendServoStacker + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.SendServoStacker.ToString(); actionQuery.Ip = req.url; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker)); responseData.result = "false"; return responseData; } if (!string.IsNullOrEmpty(actionInfo.CheckAddress)) { string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress); var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort(); if (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue)) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker)); responseData.result = "false"; return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress2)) { string CheckAddress2 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress2); var operateResult = ((ushort)s7.Read(CheckAddress2)).ConvertToShort(); if (actionInfo.CheckType2 ? operateResult.ToString() == actionInfo.CheckValue2 : operateResult.ToString() != actionInfo.CheckValue2) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker)); responseData.result = "false"; return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress3)) { string CheckAddress3 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress3); var operateResult = ((ushort)s7.Read(CheckAddress3)).ConvertToShort(); if (actionInfo.CheckType3 ? operateResult.ToString() == actionInfo.CheckValue3 : operateResult.ToString() != actionInfo.CheckValue3) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker)); responseData.result = "false"; return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress4)) { string CheckAddress4 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress4); var operateResult = ((ushort)s7.Read(CheckAddress4)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue4 : operateResult.ToString() != actionInfo.CheckValue4) { responseData.result = "false"; Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker)); s7.Close(); return responseData; } } if (!string.IsNullOrEmpty(actionInfo.CheckAddress5)) { string CheckAddress5 = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress5); var operateResult = ((ushort)s7.Read(CheckAddress5)).ConvertToShort(); if (actionInfo.CheckType ? operateResult.ToString() == actionInfo.CheckValue5 : operateResult.ToString() != actionInfo.CheckValue5) { responseData.result = "false"; Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker)); s7.Close(); return responseData; } } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); s7.Write(Address1, Convert.ToInt16(req.data.Location)); Thread.Sleep(SLEEP_TIME); string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2); s7.Write(Address2, Convert.ToInt16(actionInfo.MoveIndex)); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendServoStacker.ToString(), EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue); taskCallbackData.Address3 = actionInfo.Address5; taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3; await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker) + "放物品成功===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.SendServoStacker + "放物品故障===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.SendServoStacker)); responseData.result = "false"; return responseData; } } /// /// 刀具接口列表 /// public async Task> GetTools(RequestToolData req) { List list = new List(); CcsTagValue tagValueQuery = new CcsTagValue(); tagValueQuery.Ip = req.url; tagValueQuery.Component = "刀具"; tagValueQuery.ComponentNumber = "57"; List tagValues = _ccsTagValueService.GetList(tagValueQuery); ResponseToolData toolData = new ResponseToolData(); foreach (CcsTagValue tagValue in tagValues) { if (tagValue.Description == "刀具寿命预警") { toolData.warnLife = tagValue.TagValue; } else if (tagValue.Description == "刀具寿命目标值") { toolData.targetLife = tagValue.TagValue; } else if (tagValue.Description == "工件数") { toolData.workPiece = tagValue.TagValue; } else if (tagValue.Description == "工件数预警值") { toolData.workPieceWarn = tagValue.TagValue; } else if (tagValue.Description == "工件数目标值") { toolData.workPieceTarget = tagValue.TagValue; } else if (tagValue.Description == "磨损量") { toolData.wear = tagValue.TagValue; } else if (tagValue.Description == "磨损量预警值") { toolData.wearWarn = tagValue.TagValue; } else if (tagValue.Description == "磨损量目标值") { toolData.wearTarget = tagValue.TagValue; } else if (tagValue.Description == "刀具名称") { toolData.name = tagValue.TagValue; } } list.Add(toolData); return list; } /// /// 读RFID /// public async Task ReadRFID(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); try { List 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.ReadRFID + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.ReadRFID)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.ReadRFID.ToString(); actionQuery.Ip = req.url; actionQuery.OrderIndex = req.data.orderIndex; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; string Content = req.data.content; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "读取RFID故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.ReadRFID)); responseData.result = "false"; return responseData; } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); string[] sArray = actionInfo.Address.Split('.'); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(Content, 128)); Thread.Sleep(SLEEP_TIME); short n = 1; s7.Write(actionInfo.Address2, n); Thread.Sleep(SLEEP_TIME); n = 0; s7.Write(actionInfo.Address2, n); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.ReadRFID.ToString(), EnumHelper.GetDescription(ActionTypeEnum.ReadRFID), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue); taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3; // await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.ReadRFID) + "读取RFID故障===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.ReadRFID + "读取RFID故障===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.ReadRFID)); responseData.result = "false"; return responseData; } } /// /// 写RFID /// public async Task WriteRFID(RequestData req) { ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId); List devices = _deviceService.GetDeviceList(); try { Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault(); if (device == null) { Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "设备已离线===>>" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.WriteRFID)); responseData.result = "false"; return responseData; } CcsAction actionQuery = new CcsAction(); actionQuery.OperateType = ActionTypeEnum.WriteRFID.ToString(); actionQuery.Ip = req.url; actionQuery.OrderIndex = req.data.orderIndex; List actions = _ccsActionService.GetList(actionQuery); CcsAction actionInfo = actions[0]; string Content = req.data.content; Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString()); if (s7.IsConnected != true) { s7.Close(); Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "写RFID故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.WriteRFID)); responseData.result = "false"; return responseData; } string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address); string[] sArray = actionInfo.Address.Split('.'); s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]) + 2, ToolUtils.ReturnBtyesWtitString(Content, 128)); Thread.Sleep(SLEEP_TIME); short n = 1; s7.Write(actionInfo.Address2, n); Thread.Sleep(SLEEP_TIME); n = 0; s7.Write(actionInfo.Address2, n); s7.Close(); //插入回调 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.WriteRFID.ToString(), EnumHelper.GetDescription(ActionTypeEnum.WriteRFID), req.taskId, req.taskNodeId, actionInfo.Address2, actionInfo.CallbackValue); taskCallbackData.CallbackValue2 = actionInfo.CallbackValue2; taskCallbackData.CallbackValue3 = actionInfo.CallbackValue3; // await _taskCallbackService.Create(taskCallbackData); Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.WriteRFID) + "写RFID故障===>>" + JsonConvert.SerializeObject(req) , EnumHelper.GetDescription(ActionTypeEnum.GetServoStacker)); return responseData; } catch (Exception ex) { Log.Instance.WriteLogAdd(ActionTypeEnum.WriteRFID + "写RFID故障===>>" + ex.Message + JsonConvert.SerializeObject(req), EnumHelper.GetDescription(ActionTypeEnum.WriteRFID)); responseData.result = "false"; return responseData; } } } }