|
@@ -46,7 +46,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
|
|
|
private string ecsRootUrlContext;
|
|
|
|
|
|
- private string fanucUrlContext;
|
|
|
+ private string fanucUrlContext;
|
|
|
|
|
|
private string opcuacUrlContext;
|
|
|
|
|
@@ -75,7 +75,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
IApiRequestService apiRequestService,
|
|
|
ICcsTagValueService ccsTagValueService,
|
|
|
IEquipmentMonitorService equipmentMonitorService,
|
|
|
- IDictionaryService dictionaryService,
|
|
|
+ IDictionaryService dictionaryService,
|
|
|
ICcsActionAddressService ccsActionAddressService,
|
|
|
IConfiguration configuration)
|
|
|
{
|
|
@@ -95,7 +95,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
ecsRootUrlContext = Configuration.GetConnectionString("ecsRootUrlContext");
|
|
|
syncStatusMap.Add("离线", 0);
|
|
|
syncStatusMap.Add("空闲", 1);
|
|
|
- syncStatusMap.Add("生产中", 2);
|
|
|
+ syncStatusMap.Add("生产中", 2);
|
|
|
syncStatusMap.Add("报警", 3);
|
|
|
//在线状态默认传参后台空闲状态
|
|
|
syncStatusMap.Add("在线", 1);
|
|
@@ -109,17 +109,17 @@ namespace IMCS.CCS.Service.Impl
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- List<Device> deviceList = new List<Device>();
|
|
|
+ List<Device> deviceList = new List<Device>();
|
|
|
var deviceListData = await _redisService.Database.StringGetAsync(device_redis_key);
|
|
|
if (deviceListData.IsNullOrEmpty)
|
|
|
{
|
|
|
- deviceList = _deviceService.GetDeviceList();
|
|
|
+ deviceList = _deviceService.GetDeviceList();
|
|
|
await _redisService.Database.StringSetAsync(device_redis_key, JsonConvert.SerializeObject(deviceList));
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
deviceList = JsonConvert.DeserializeObject<List<Device>>(deviceListData);
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.OPCUA.ToString())).ToList();
|
|
|
|
|
@@ -250,7 +250,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
else
|
|
|
{
|
|
|
deviceList = JsonConvert.DeserializeObject<List<Device>>(deviceListData);
|
|
|
- }
|
|
|
+ }
|
|
|
deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.S7_1500.ToString())).ToList();
|
|
|
foreach (Device device in deviceList)
|
|
|
{
|
|
@@ -295,8 +295,6 @@ namespace IMCS.CCS.Service.Impl
|
|
|
{
|
|
|
foreach (CcsTagValue tagValueData in tagValues)
|
|
|
{
|
|
|
- //string Address = ToolUtils.AddressConvertDBW(tagValueData.Address);
|
|
|
- //var operateResult = ((ushort)s7.Read(Address)).ConvertToShort();
|
|
|
string operateResult = "";
|
|
|
if (tagValueData.Type.Equals(TagValueReadTypeEnum.BOOL.ToString()))
|
|
|
{
|
|
@@ -310,6 +308,10 @@ namespace IMCS.CCS.Service.Impl
|
|
|
{
|
|
|
operateResult = s7.ReadString(tagValueData.Address).Content.ToString();
|
|
|
}
|
|
|
+ else if (tagValueData.Type.Equals(TagValueReadTypeEnum.Array.ToString()))
|
|
|
+ {
|
|
|
+ operateResult = ToolUtils.ReturnStringByBytes(s7.Read(tagValueData.Address,40).Content);
|
|
|
+ }
|
|
|
|
|
|
if (!string.IsNullOrEmpty(operateResult) && tagValueData.TagValue != operateResult)
|
|
|
{
|
|
@@ -453,36 +455,39 @@ namespace IMCS.CCS.Service.Impl
|
|
|
list = JsonConvert.DeserializeObject<List<TaskCallback>>(taskCallbackListData);
|
|
|
}
|
|
|
|
|
|
- list = list.Where(x => x.OperateType.Equals(ActionTypeEnum.UploadFile.ToString())).ToList();
|
|
|
+ TaskCallback task = list.Where(x => x.OperateType.Equals(ActionTypeEnum.UploadFile.ToString())).FirstOrDefault();
|
|
|
+ if (task == null)
|
|
|
+ {
|
|
|
+ return "无回调任务";
|
|
|
+ }
|
|
|
string message = "";
|
|
|
try
|
|
|
{
|
|
|
- foreach (TaskCallback task in list)
|
|
|
+
|
|
|
+ DateTime currentTime = DateTime.Now;
|
|
|
+ if (currentTime.Subtract(task.CreateTime).TotalSeconds > 5)
|
|
|
{
|
|
|
- DateTime currentTime = DateTime.Now;
|
|
|
- if (currentTime.Subtract(task.CreateTime).TotalSeconds > 5)
|
|
|
+ CallBackRequestData requestData = new CallBackRequestData();
|
|
|
+ requestData.taskId = long.Parse(task.TaskId);
|
|
|
+ requestData.taskNodeId = long.Parse(task.TaskNodeId);
|
|
|
+ var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
|
|
|
+ ResponseECSCallbackData responseECSCallback = JsonConvert.DeserializeObject<ResponseECSCallbackData>(result.Message);
|
|
|
+ if (result.IsSuccess && responseECSCallback.code == 0)
|
|
|
{
|
|
|
- CallBackRequestData requestData = new CallBackRequestData();
|
|
|
- requestData.taskId = long.Parse(task.TaskId);
|
|
|
- requestData.taskNodeId = long.Parse(task.TaskNodeId);
|
|
|
- var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
|
|
|
- ResponseECSCallbackData responseECSCallback = JsonConvert.DeserializeObject<ResponseECSCallbackData>(result.Message);
|
|
|
- if (result.IsSuccess && responseECSCallback.code == 0)
|
|
|
- {
|
|
|
- task.State = false;
|
|
|
- task.UpdateTime = DateTime.Now;
|
|
|
- await _taskCallbackService.CreateOrUpdateAndCache(task);
|
|
|
- message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
|
|
|
- Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
|
|
|
- Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(result), LOG_TITLE_CALLBACK);
|
|
|
- }
|
|
|
-
|
|
|
+ task.State = false;
|
|
|
+ task.UpdateTime = DateTime.Now;
|
|
|
+ await _taskCallbackService.CreateOrUpdateAndCache(task);
|
|
|
+ message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
|
|
|
+ Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
|
|
|
+ Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(result), LOG_TITLE_CALLBACK);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
return string.IsNullOrEmpty(message) ? "无回调任务" : message;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -517,34 +522,27 @@ namespace IMCS.CCS.Service.Impl
|
|
|
|| x.OperateType.Equals(ActionTypeEnum.GetIntelligenceUnit.ToString())
|
|
|
|| x.OperateType.Equals(ActionTypeEnum.SendIntelligenceUnit.ToString())
|
|
|
|| x.OperateType.Equals(ActionTypeEnum.GetQualityCenter.ToString())
|
|
|
- || x.OperateType.Equals(ActionTypeEnum.SendQualityCenter.ToString())
|
|
|
+ || x.OperateType.Equals(ActionTypeEnum.SendQualityCenter.ToString())
|
|
|
|| x.OperateType.Equals(ActionTypeEnum.GetServoStacker.ToString())
|
|
|
- || x.OperateType.Equals(ActionTypeEnum.SendServoStacker.ToString())
|
|
|
+ || x.OperateType.Equals(ActionTypeEnum.SendServoStacker.ToString())
|
|
|
|| x.OperateType.Equals(ActionTypeEnum.SendLinShift.ToString())
|
|
|
|| x.OperateType.Equals(ActionTypeEnum.SendLinShiftFine.ToString())).ToList();
|
|
|
- List<TaskCallback> list = new List<TaskCallback>();
|
|
|
- foreach (Device device in deviceList)
|
|
|
+
|
|
|
+ TaskCallback task = taskList.Where(key => deviceList.Any(device => device.Ip == key.IP)).FirstOrDefault() ;
|
|
|
+ if (task == null)
|
|
|
{
|
|
|
- foreach (TaskCallback task in taskList)
|
|
|
- {
|
|
|
- if (task.IP.Equals(device.Ip))
|
|
|
- {
|
|
|
- list.Add(task);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ return "无回调任务" ;
|
|
|
+ }
|
|
|
string message = "";
|
|
|
try
|
|
|
- {
|
|
|
- foreach (TaskCallback task in list)
|
|
|
- {
|
|
|
+ {
|
|
|
DateTime currentTime = DateTime.Now;
|
|
|
CcsTagValue tagValueQuery = new CcsTagValue();
|
|
|
tagValueQuery.Ip = task.IP;
|
|
|
//tagValueQuery.Address = task.Address;
|
|
|
List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery).ToList();
|
|
|
- CcsTagValue callBacktagValue = tagValues.Where(o=>o.Address == task.Address).FirstOrDefault();
|
|
|
-
|
|
|
+ CcsTagValue callBacktagValue = tagValues.Where(o => o.Address == task.Address).FirstOrDefault();
|
|
|
+
|
|
|
if (callBacktagValue != null && callBacktagValue.TagValue == task.CallbackValue)
|
|
|
{
|
|
|
CallBackRequestData requestData = new CallBackRequestData();
|
|
@@ -569,7 +567,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
//回调检测到失败,回调通知ecs
|
|
|
if (!string.IsNullOrEmpty(task.FailAddress) || !string.IsNullOrEmpty(task.FailAddress2) || !string.IsNullOrEmpty(task.FailAddress3))
|
|
|
- {
|
|
|
+ {
|
|
|
bool failFalg = false;
|
|
|
if (!string.IsNullOrEmpty(task.FailAddress))
|
|
|
{
|
|
@@ -598,7 +596,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
failFalg = true;
|
|
|
}
|
|
|
}
|
|
|
- if (failFalg)
|
|
|
+ if (failFalg)
|
|
|
{
|
|
|
CallBackRequestData requestData = new CallBackRequestData();
|
|
|
requestData.taskId = long.Parse(task.TaskId);
|
|
@@ -621,8 +619,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
+
|
|
|
return string.IsNullOrEmpty(message) ? "无回调任务" : message;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -652,29 +649,22 @@ namespace IMCS.CCS.Service.Impl
|
|
|
List<Device> deviceList = _deviceService.GetDeviceList();
|
|
|
|
|
|
taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.StartLabelMachine.ToString())).ToList();
|
|
|
- List<TaskCallback> list = new List<TaskCallback>();
|
|
|
- foreach (Device device in deviceList)
|
|
|
+ TaskCallback task = taskList.Where(key => deviceList.Any(device => device.Ip == key.IP)).FirstOrDefault();
|
|
|
+ if (task == null)
|
|
|
{
|
|
|
- foreach (TaskCallback task in taskList)
|
|
|
- {
|
|
|
- if (task.IP.Equals(device.Ip))
|
|
|
- {
|
|
|
- list.Add(task);
|
|
|
- }
|
|
|
- }
|
|
|
+ return "无回调任务";
|
|
|
}
|
|
|
string message = "";
|
|
|
try
|
|
|
{
|
|
|
- foreach (TaskCallback task in list)
|
|
|
- {
|
|
|
+
|
|
|
DateTime currentTime = DateTime.Now;
|
|
|
CcsTagValue tagValueQuery = new CcsTagValue();
|
|
|
tagValueQuery.Ip = task.IP;
|
|
|
- //tagValueQuery.Address = task.Address;
|
|
|
List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery).ToList();
|
|
|
- CcsTagValue callBacktagValue = tagValues.Where(o=>o.Address == task.Address).FirstOrDefault();
|
|
|
- if (callBacktagValue != null && callBacktagValue.TagValue == task.CallbackValue)
|
|
|
+ CcsTagValue callBacktagValue = tagValues.Where(o => o.Address == task.Address).FirstOrDefault();
|
|
|
+ CcsTagValue callBacktagValue2 = tagValues.Where(o => o.Address == task.Address2).FirstOrDefault();
|
|
|
+ if (callBacktagValue != null && callBacktagValue2 != null && callBacktagValue.TagValue == task.CallbackValue && callBacktagValue2.TagValue == task.CallbackValue2)
|
|
|
{
|
|
|
CallBackRequestData requestData = new CallBackRequestData();
|
|
|
requestData.taskId = long.Parse(task.TaskId);
|
|
@@ -765,8 +755,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
+
|
|
|
return string.IsNullOrEmpty(message) ? "无回调任务" : message;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -795,30 +784,23 @@ namespace IMCS.CCS.Service.Impl
|
|
|
//在线设备
|
|
|
List<Device> deviceList = _deviceService.GetDeviceList();
|
|
|
|
|
|
- taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.StartNCProgram.ToString())).ToList();
|
|
|
- List<TaskCallback> list = new List<TaskCallback>();
|
|
|
- foreach (Device device in deviceList)
|
|
|
+ taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.StartNCProgram.ToString())).ToList();
|
|
|
+ TaskCallback task = taskList.Where(key => deviceList.Any(device => device.Ip == key.IP)).FirstOrDefault();
|
|
|
+ if (task == null)
|
|
|
{
|
|
|
- foreach (TaskCallback task in taskList)
|
|
|
- {
|
|
|
- if (task.IP.Equals(device.Ip))
|
|
|
- {
|
|
|
- list.Add(task);
|
|
|
- }
|
|
|
- }
|
|
|
+ return "无回调任务";
|
|
|
}
|
|
|
string message = "";
|
|
|
try
|
|
|
{
|
|
|
- foreach (TaskCallback task in list)
|
|
|
- {
|
|
|
+
|
|
|
DateTime currentTime = DateTime.Now;
|
|
|
CcsTagValue tagValueQuery = new CcsTagValue();
|
|
|
tagValueQuery.Ip = task.IP;
|
|
|
//tagValueQuery.Address = task.Address;
|
|
|
List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
|
|
|
- CcsTagValue tagValue = tagValues.Where(o => o.Address == task.Address).FirstOrDefault() ;
|
|
|
-
|
|
|
+ CcsTagValue tagValue = tagValues.Where(o => o.Address == task.Address).FirstOrDefault();
|
|
|
+
|
|
|
if (tagValue != null && tagValue.TagValue == task.CallbackValue)
|
|
|
{
|
|
|
CallBackRequestData requestData = new CallBackRequestData();
|
|
@@ -896,7 +878,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+
|
|
|
return string.IsNullOrEmpty(message) ? "无回调任务" : message;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -925,22 +907,14 @@ namespace IMCS.CCS.Service.Impl
|
|
|
List<Device> deviceList = _deviceService.GetDeviceList();
|
|
|
|
|
|
taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.StartCleanMachine.ToString())).ToList();
|
|
|
- List<TaskCallback> list = new List<TaskCallback>();
|
|
|
- foreach (Device device in deviceList)
|
|
|
+ TaskCallback task = taskList.Where(key => deviceList.Any(device => device.Ip == key.IP)).FirstOrDefault();
|
|
|
+ if (task == null)
|
|
|
{
|
|
|
- foreach (TaskCallback task in taskList)
|
|
|
- {
|
|
|
- if (task.IP.Equals(device.Ip))
|
|
|
- {
|
|
|
- list.Add(task);
|
|
|
- }
|
|
|
- }
|
|
|
+ return "无回调任务";
|
|
|
}
|
|
|
string message = "";
|
|
|
try
|
|
|
- {
|
|
|
- foreach (TaskCallback task in list)
|
|
|
- {
|
|
|
+ {
|
|
|
DateTime currentTime = DateTime.Now;
|
|
|
CcsTagValue tagValueQuery = new CcsTagValue();
|
|
|
tagValueQuery.Ip = task.IP;
|
|
@@ -1023,8 +997,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(result), LOG_TITLE_CALLBACK);
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
return string.IsNullOrEmpty(message) ? "无回调任务" : message;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -1054,27 +1027,19 @@ namespace IMCS.CCS.Service.Impl
|
|
|
List<Device> deviceList = _deviceService.GetDeviceList();
|
|
|
|
|
|
taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.SendThreeCoordinates.ToString())).ToList();
|
|
|
- List<TaskCallback> list = new List<TaskCallback>();
|
|
|
- foreach (Device device in deviceList)
|
|
|
+ TaskCallback task = taskList.Where(key => deviceList.Any(device => device.Ip == key.IP)).FirstOrDefault();
|
|
|
+ if (task == null)
|
|
|
{
|
|
|
- foreach (TaskCallback task in taskList)
|
|
|
- {
|
|
|
- if (task.IP.Equals(device.Ip))
|
|
|
- {
|
|
|
- list.Add(task);
|
|
|
- }
|
|
|
- }
|
|
|
+ return "无回调任务";
|
|
|
}
|
|
|
string message = "";
|
|
|
try
|
|
|
- {
|
|
|
- foreach (TaskCallback task in list)
|
|
|
- {
|
|
|
+ {
|
|
|
DateTime currentTime = DateTime.Now;
|
|
|
CcsTagValue tagValueQuery = new CcsTagValue();
|
|
|
- tagValueQuery.Ip = task.IP;
|
|
|
+ tagValueQuery.Ip = task.IP;
|
|
|
List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery).ToList();
|
|
|
- CcsTagValue tagValue = tagValues.Where(o=>o.Address == task.Address).FirstOrDefault();
|
|
|
+ CcsTagValue tagValue = tagValues.Where(o => o.Address == task.Address).FirstOrDefault();
|
|
|
//点位放在描述里判断左中右
|
|
|
string pos = task.Description;
|
|
|
string posValue = "";
|
|
@@ -1094,9 +1059,9 @@ namespace IMCS.CCS.Service.Impl
|
|
|
posValue = EnumHelper.GetDescription(ThreeCoordinatesFinishedEnum.R);
|
|
|
key = (int)ThreeCoordinatesPosEnum.R;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
CcsTagValue tagValue2 = tagValues.Where(o => o.Address == posValue && o.TagValue != "0").FirstOrDefault();
|
|
|
- if (tagValue != null && tagValue2 != null && (tagValue.TagValue == task.CallbackValue ))
|
|
|
+ if (tagValue != null && tagValue2 != null && (tagValue.TagValue == task.CallbackValue))
|
|
|
{
|
|
|
CallBackThreeCoordinatesRequestData requestData = new CallBackThreeCoordinatesRequestData();
|
|
|
requestData.taskId = long.Parse(task.TaskId);
|
|
@@ -1135,7 +1100,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
//判断是否可取滑台
|
|
|
if (freeActionAdress != null)
|
|
|
{*/
|
|
|
- //根据sort顺序,查询左中右可取位置,写入地址列表
|
|
|
+ //根据sort顺序,查询左中右可取位置,写入地址列表
|
|
|
CcsActionAddress actionAddressGet = new CcsActionAddress();
|
|
|
actionAddressGet.Type = "CALLBACK_GET_COOR";
|
|
|
actionAddressGet.Sort = key;
|
|
@@ -1145,53 +1110,51 @@ namespace IMCS.CCS.Service.Impl
|
|
|
requestData.result = tagValue2.TagValue;
|
|
|
//根据工件id确认哪个位置已测量,赋值工位id
|
|
|
string srcWorkId = task.CallbackFailValue3; //原工件id
|
|
|
- var workIdResult = s7.ReadString(EnumHelper.GetDescription(ThreeCoordinatesFinishedWrokIdEnum.L));
|
|
|
- if(workIdResult.ToString() == srcWorkId)
|
|
|
+ var workIdResult = s7.Read(EnumHelper.GetDescription(ThreeCoordinatesFinishedWrokIdEnum.L), 40);
|
|
|
+ if (ToolUtils.ReturnStringByBytes(workIdResult.Content) == srcWorkId)
|
|
|
{
|
|
|
requestData.stationId = "L";
|
|
|
}
|
|
|
if (string.IsNullOrEmpty(requestData.stationId))
|
|
|
{
|
|
|
- workIdResult = s7.ReadString(EnumHelper.GetDescription(ThreeCoordinatesFinishedWrokIdEnum.M));
|
|
|
- if (workIdResult.ToString() == srcWorkId)
|
|
|
+ workIdResult = s7.Read(EnumHelper.GetDescription(ThreeCoordinatesFinishedWrokIdEnum.M), 40);
|
|
|
+ if (ToolUtils.ReturnStringByBytes(workIdResult.Content) == srcWorkId)
|
|
|
{
|
|
|
requestData.stationId = "M";
|
|
|
}
|
|
|
}
|
|
|
if (string.IsNullOrEmpty(requestData.stationId))
|
|
|
{
|
|
|
- workIdResult = s7.ReadString(EnumHelper.GetDescription(ThreeCoordinatesFinishedWrokIdEnum.R));
|
|
|
- if (workIdResult.ToString() == srcWorkId)
|
|
|
+ workIdResult = s7.Read(EnumHelper.GetDescription(ThreeCoordinatesFinishedWrokIdEnum.R),40);
|
|
|
+ if (ToolUtils.ReturnStringByBytes(workIdResult.Content) == srcWorkId)
|
|
|
{
|
|
|
requestData.stationId = "R";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
foreach (CcsActionAddress actionAddress in GetCcsActionAddresses)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
|
{
|
|
|
- if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
|
+ if (actionAddress.Value == "workId")
|
|
|
{
|
|
|
- if (actionAddress.Value == "workId")
|
|
|
- {
|
|
|
- var operateResult = s7.ReadString(actionAddress.Address);
|
|
|
- requestData.workId = operateResult.ToString();
|
|
|
- }
|
|
|
- else if (actionAddress.Value == "procedureNo")
|
|
|
- {
|
|
|
- var operateResult = s7.ReadString(actionAddress.Address);
|
|
|
- requestData.procedureNo = operateResult.ToString();
|
|
|
- }
|
|
|
- else if (actionAddress.Value == "workProgramName")
|
|
|
- {
|
|
|
- var operateResult = s7.ReadString(actionAddress.Address);
|
|
|
- requestData.workProgramName = operateResult.ToString();
|
|
|
+ var operateResult = s7.Read(actionAddress.Address, 40) ;
|
|
|
+ requestData.workId = ToolUtils.ReturnStringByBytes(operateResult.Content);
|
|
|
+ }
|
|
|
+ else if (actionAddress.Value == "procedureNo")
|
|
|
+ {
|
|
|
+ var operateResult = s7.Read(actionAddress.Address,40);
|
|
|
+ requestData.procedureNo = ToolUtils.ReturnStringByBytes(operateResult.Content);
|
|
|
+ }
|
|
|
+ else if (actionAddress.Value == "workProgramName")
|
|
|
+ {
|
|
|
+ var operateResult = s7.Read(actionAddress.Address,40);
|
|
|
+ requestData.workProgramName = ToolUtils.ReturnStringByBytes(operateResult.Content);
|
|
|
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- // }
|
|
|
+ }
|
|
|
+
|
|
|
s7.ConnectClose();
|
|
|
|
|
|
var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
|
|
@@ -1265,8 +1228,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(result), LOG_TITLE_CALLBACK);
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
return string.IsNullOrEmpty(message) ? "无回调任务" : message;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -1285,7 +1247,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
try
|
|
|
{
|
|
|
string message = "MonitorEquipmentStatusJob调度成功";
|
|
|
- List<Device> devices = new List<Device>() ;
|
|
|
+ List<Device> devices = new List<Device>();
|
|
|
string device_redis_key = "IMCS_CCS:DeviceList";
|
|
|
var deviceData = await _redisService.Database.StringGetAsync(device_redis_key);
|
|
|
if (deviceData.IsNullOrEmpty)
|
|
@@ -1323,71 +1285,71 @@ namespace IMCS.CCS.Service.Impl
|
|
|
Device device = devices.Where(x => x.Ip.Equals(equipment.IP)).FirstOrDefault();
|
|
|
if (device == null)
|
|
|
{
|
|
|
- if(equipment.Status != "离线")
|
|
|
+ if (equipment.Status != "离线")
|
|
|
{
|
|
|
equipment.Status = "离线";
|
|
|
changeEquipmentMonitors.Add(equipment);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
continue;
|
|
|
}
|
|
|
else if (equipment.Name == "机械手")
|
|
|
- {
|
|
|
- CcsTagValue ccsTagValue = tagValues.Where(x => x.Ip.Equals(equipment.IP) && x.Address.Equals(equipment.Address)).FirstOrDefault();
|
|
|
+ {
|
|
|
+ CcsTagValue ccsTagValue = tagValues.Where(x => x.Ip.Equals(equipment.IP) && x.Address.Equals(equipment.Address)).FirstOrDefault();
|
|
|
if (ccsTagValue != null)
|
|
|
+ {
|
|
|
+ if (ccsTagValue.TagValue == "3")
|
|
|
{
|
|
|
- if (ccsTagValue.TagValue == "3")
|
|
|
+ if (equipment.Status != "报警")
|
|
|
{
|
|
|
- if (equipment.Status != "报警")
|
|
|
- {
|
|
|
- equipment.Status = "报警";
|
|
|
- changeEquipmentMonitors.Add(equipment);
|
|
|
- }
|
|
|
-
|
|
|
- continue;
|
|
|
+ equipment.Status = "报警";
|
|
|
+ changeEquipmentMonitors.Add(equipment);
|
|
|
}
|
|
|
+
|
|
|
+ continue;
|
|
|
}
|
|
|
- CcsTagValue ccsTagValue2 = tagValues.Where(x => x.Ip.Equals(equipment.IP) && x.Address.Equals(equipment.Address2)).FirstOrDefault();
|
|
|
- if (ccsTagValue2 != null)
|
|
|
+ }
|
|
|
+ CcsTagValue ccsTagValue2 = tagValues.Where(x => x.Ip.Equals(equipment.IP) && x.Address.Equals(equipment.Address2)).FirstOrDefault();
|
|
|
+ if (ccsTagValue2 != null)
|
|
|
+ {
|
|
|
+ if (ccsTagValue2.TagValue == "9")
|
|
|
{
|
|
|
- if (ccsTagValue2.TagValue == "9")
|
|
|
- {
|
|
|
- if (equipment.Status != "报警")
|
|
|
- {
|
|
|
- equipment.Status = "报警";
|
|
|
- changeEquipmentMonitors.Add(equipment);
|
|
|
- }
|
|
|
- continue;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (ccsTagValue2.TagValue == "0" || ccsTagValue2.TagValue == "3" || ccsTagValue2.TagValue == "6" || ccsTagValue2.TagValue == "8")
|
|
|
- {
|
|
|
- if (equipment.Status != "空闲")
|
|
|
+ if (equipment.Status != "报警")
|
|
|
{
|
|
|
- equipment.Status = "空闲";
|
|
|
+ equipment.Status = "报警";
|
|
|
changeEquipmentMonitors.Add(equipment);
|
|
|
}
|
|
|
continue;
|
|
|
- }
|
|
|
- if (equipment.Status != "生产中")
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ccsTagValue2.TagValue == "0" || ccsTagValue2.TagValue == "3" || ccsTagValue2.TagValue == "6" || ccsTagValue2.TagValue == "8")
|
|
|
+ {
|
|
|
+ if (equipment.Status != "空闲")
|
|
|
{
|
|
|
- equipment.Status = "生产中";
|
|
|
+ equipment.Status = "空闲";
|
|
|
changeEquipmentMonitors.Add(equipment);
|
|
|
}
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (equipment.Status != "生产中")
|
|
|
+ {
|
|
|
+ equipment.Status = "生产中";
|
|
|
+ changeEquipmentMonitors.Add(equipment);
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
- {
|
|
|
+ {
|
|
|
if (equipment.Status != "在线")
|
|
|
{
|
|
|
equipment.Status = "在线";
|
|
|
changeEquipmentMonitors.Add(equipment);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
//变化的修改 并且更新缓存
|
|
|
- if(changeEquipmentMonitors.Count > 0)
|
|
|
+ /* if (changeEquipmentMonitors.Count > 0)
|
|
|
{
|
|
|
List<ProductionStatus> productionStatusList = new List<ProductionStatus>();
|
|
|
foreach (EquipmentMonitor changeEquipment in changeEquipmentMonitors)
|
|
@@ -1397,11 +1359,11 @@ namespace IMCS.CCS.Service.Impl
|
|
|
productionStatus.onlineStatus = syncStatusMap[changeEquipment.Status].ToString();
|
|
|
//equipment.Status == "离线" ? "0" : "1";
|
|
|
//productionStatus.alertMsg = equipment.AlertMsg;
|
|
|
- if (productionStatus.onlineStatus !="3" && !string.IsNullOrEmpty(changeEquipment.Type))
|
|
|
+ if (productionStatus.onlineStatus != "3" && !string.IsNullOrEmpty(changeEquipment.Type))
|
|
|
{
|
|
|
- if(changeEquipment.Type == "HEIDEHAIN")
|
|
|
+ if (changeEquipment.Type == "HEIDEHAIN")
|
|
|
{
|
|
|
- RequestHeidhData hdhReq = new RequestHeidhData();
|
|
|
+ RequestHeidhData hdhReq = new RequestHeidhData();
|
|
|
Device device = devices.Where(x => x.Ip.Equals(changeEquipment.IP)).FirstOrDefault();
|
|
|
hdhReq.ServerUrl = device.ServerUrl;
|
|
|
hdhReq.MachineName = device.UserName;
|
|
@@ -1416,8 +1378,8 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- else if(changeEquipment.Type == "FANUC")
|
|
|
- {
|
|
|
+ else if (changeEquipment.Type == "FANUC")
|
|
|
+ {
|
|
|
Device device = devices.Where(x => x.Ip.Equals(changeEquipment.IP)).FirstOrDefault();
|
|
|
string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
|
|
|
//调用发那科接口
|
|
@@ -1427,10 +1389,10 @@ namespace IMCS.CCS.Service.Impl
|
|
|
ResponseFanucData fncReq = new ResponseFanucData();
|
|
|
fncReq = JsonConvert.DeserializeObject<ResponseFanucData>(Result.Message);
|
|
|
List<AlmInfo> AlmMsg = fncReq.AlmMsg;
|
|
|
- if (AlmMsg!=null && AlmMsg.Count>0)
|
|
|
+ if (AlmMsg != null && AlmMsg.Count > 0)
|
|
|
{
|
|
|
var msgs = from o in AlmMsg select o.msg;
|
|
|
- productionStatus.alertMsg = string.Join(",", msgs.ToArray());
|
|
|
+ productionStatus.alertMsg = string.Join(",", msgs.ToArray());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1460,23 +1422,23 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(equipmentMonitors));
|
|
|
|
|
|
-
|
|
|
+
|
|
|
//主动推送同步状态数据接口
|
|
|
- RequestSynStatusData requestData = new RequestSynStatusData();
|
|
|
+ RequestSynStatusData requestData = new RequestSynStatusData();
|
|
|
requestData.productionStatus = JsonConvert.SerializeObject(productionStatusList);
|
|
|
- String synStatusUrl = ecsRootUrlContext + "/api/authority/synStatus/synProductionStatus";
|
|
|
+ String synStatusUrl = ecsRootUrlContext + "api/authority/synStatus/synProductionStatus";
|
|
|
var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, synStatusUrl, requestData, null);
|
|
|
//解析回调数据结果
|
|
|
ResponseECSCallbackData responseECSCallback = JsonConvert.DeserializeObject<ResponseECSCallbackData>(result.Message);
|
|
|
- if(responseECSCallback!=null && responseECSCallback.code == 0)
|
|
|
+ if (responseECSCallback != null && responseECSCallback.code == 0)
|
|
|
{
|
|
|
Log.Instance.WriteLogAdd("同步设备状态成功", LOG_TITLE_CALLBACK);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
Log.Instance.WriteLogAdd("同步设备状态操作失败:" + responseECSCallback.msg, LOG_TITLE_CALLBACK);
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ }*/
|
|
|
return message;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
@@ -1619,7 +1581,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=Connect", null, null);
|
|
|
|
|
|
if (Result.IsSuccess && Result.Message == "0")
|
|
|
- {
|
|
|
+ {
|
|
|
Device oldDevice = await _deviceService.GetDeviceById(device.Id);
|
|
|
if (!oldDevice.State)
|
|
|
{
|
|
@@ -1708,7 +1670,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(changeDevices != null)
|
|
|
+ if (changeDevices != null)
|
|
|
{
|
|
|
await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(devices));
|
|
|
}
|
|
@@ -1721,6 +1683,21 @@ namespace IMCS.CCS.Service.Impl
|
|
|
return "设备连接异常,或以离线" + ex.Message;
|
|
|
}
|
|
|
}
|
|
|
+ /// <summary>
|
|
|
+ /// 删除redis
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public void removeRedis()
|
|
|
+ {
|
|
|
+ List<Device> devices = _deviceService.GetDeviceAllList();
|
|
|
+ string redis_key = "IMCS_CCS:";
|
|
|
+ _redisService.Database.KeyDelete(device_redis_key);
|
|
|
+ _redisService.Database.KeyDelete(callback_redis_key);
|
|
|
+ foreach (Device device in devices)
|
|
|
+ {
|
|
|
+ _redisService.Database.KeyDelete(redis_key + device.Ip + ":" + device.ProtocolType);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// fanuc根据类型获取值
|
|
@@ -1740,7 +1717,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
else if (address == FanucAddressEnum.PowerOnTime.ToString())
|
|
|
{
|
|
|
value = fanucData.PowerOnTime;
|
|
|
- }
|
|
|
+ }
|
|
|
else if (address == FanucAddressEnum.ActSpindle.ToString())
|
|
|
{
|
|
|
value = fanucData.ActSpindle;
|
|
@@ -1766,7 +1743,6 @@ namespace IMCS.CCS.Service.Impl
|
|
|
dData = Convert.ToDecimal(strData);
|
|
|
}
|
|
|
return dData;
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
}
|
|
|
}
|