|
@@ -172,7 +172,9 @@ namespace IMCS.CCS.Services
|
|
|
{
|
|
|
Console.WriteLine("获取imcs数据:" + JsonConvert.SerializeObject(req));
|
|
|
ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
|
|
|
-
|
|
|
+ SiemensS7Net s7 = null;
|
|
|
+
|
|
|
+
|
|
|
try
|
|
|
{
|
|
|
List<Device> devices = _deviceService.GetDeviceList();
|
|
@@ -192,11 +194,10 @@ namespace IMCS.CCS.Services
|
|
|
actionQuery.Ip = req.url;
|
|
|
CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
|
|
|
|
|
|
- SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.Ip);
|
|
|
+ s7 = DevicePlcS7.SiemensS7(actionInfo.Ip);
|
|
|
OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
if (!ConnectionResult.IsSuccess)
|
|
|
{
|
|
|
- s7.ConnectClose();
|
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
|
EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
|
|
|
responseData.result = "false";
|
|
@@ -205,7 +206,7 @@ namespace IMCS.CCS.Services
|
|
|
}
|
|
|
CcsActionAddress actionAddressQuery = new CcsActionAddress();
|
|
|
actionAddressQuery.ActionId = actionInfo.Id;
|
|
|
- List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
|
|
|
+ List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
|
|
|
|
|
|
//查询条件
|
|
|
List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
|
|
@@ -216,7 +217,6 @@ namespace IMCS.CCS.Services
|
|
|
string operateResult = s7.ReadBool(actionAddress.Address).Content.ToString();
|
|
|
if (actionAddress.CheckType ? operateResult != actionAddress.Value : operateResult == actionAddress.Value)
|
|
|
{
|
|
|
- s7.ConnectClose();
|
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.RobotAction + "异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
|
|
|
EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
|
|
|
responseData.msg = ActionTypeEnum.RobotAction + "异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req);
|
|
@@ -263,7 +263,7 @@ namespace IMCS.CCS.Services
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
//CcsActionAddress checkAddressSucess = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK_SUCESS.ToString()).FirstOrDefault();
|
|
|
//if (checkAddressSucess != null)
|
|
|
//{
|
|
@@ -277,7 +277,6 @@ namespace IMCS.CCS.Services
|
|
|
// return responseData;
|
|
|
// }
|
|
|
//}
|
|
|
- s7.ConnectClose();
|
|
|
|
|
|
//插入回调
|
|
|
TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.RobotAction.ToString(),
|
|
@@ -289,6 +288,36 @@ namespace IMCS.CCS.Services
|
|
|
, EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
|
|
|
responseData.msg = EnumHelper.GetDescription(ActionTypeEnum.RobotAction) + "取成功===>>" + JsonConvert.SerializeObject(req);
|
|
|
return responseData;
|
|
|
+
|
|
|
+ //查询回调表是否存在此数据(避免在数据重复下发时,产生多条回调数据) ************************
|
|
|
+ //TaskCallback vo = new TaskCallback(req.url, ActionTypeEnum.UploadFile.ToString(),
|
|
|
+ // null, req.taskId, req.taskNodeId);
|
|
|
+
|
|
|
+ /*TaskCallback vo = new TaskCallback(req.url, ActionTypeEnum.RobotAction.ToString(),
|
|
|
+ null, req.taskId, req.taskNodeId);
|
|
|
+
|
|
|
+
|
|
|
+ List<TaskCallback> taskCallbackList = await _taskCallbackService.GetListByCondition(vo);
|
|
|
+ //插入回调
|
|
|
+ TaskCallback taskCallbackData = new TaskCallback();
|
|
|
+ if (taskCallbackList != null && taskCallbackList.Count > 0)
|
|
|
+ {
|
|
|
+ taskCallbackData = taskCallbackList[0];
|
|
|
+
|
|
|
+ taskCallbackData.State = true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.RobotAction.ToString(),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.RobotAction), req.taskId, req.taskNodeId);
|
|
|
+ }
|
|
|
+ taskCallbackData = setCallBackValue(CcsActionAddresses, taskCallbackData);
|
|
|
+ await _taskCallbackService.CreateOrUpdateAndCache(taskCallbackData);
|
|
|
+ Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.RobotAction) + "取成功===>>" + JsonConvert.SerializeObject(req)
|
|
|
+ , EnumHelper.GetDescription(ActionTypeEnum.RobotAction));
|
|
|
+ responseData.msg = EnumHelper.GetDescription(ActionTypeEnum.RobotAction) + "取成功===>>" + JsonConvert.SerializeObject(req);
|
|
|
+ return responseData;*/
|
|
|
+
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -298,6 +327,10 @@ namespace IMCS.CCS.Services
|
|
|
responseData.msg = ActionTypeEnum.RobotAction + "取异常===>>" + ex.Message + JsonConvert.SerializeObject(req);
|
|
|
return responseData;
|
|
|
}
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ s7.ConnectClose();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 预上传文件,下发请求上料nc指令
|
|
@@ -326,52 +359,54 @@ namespace IMCS.CCS.Services
|
|
|
}
|
|
|
|
|
|
//海德汉系统需要进行预上传,发送上料请求
|
|
|
-/* if (deviceHeidenhain != null)
|
|
|
+ /* if (deviceHeidenhain != null)
|
|
|
+ {
|
|
|
+ RequestHeidhData hdhReq = new RequestHeidhData();
|
|
|
+ hdhReq.ServerUrl = deviceHeidenhain.ServerUrl;
|
|
|
+ hdhReq.MachineName = deviceHeidenhain.UserName;
|
|
|
+ hdhReq.Path = req.data.fileName;
|
|
|
+ hdhReq.Type = OpcUaActionTypeEnum.Upload.ToString();
|
|
|
+ //远程机床相对路径
|
|
|
+ hdhReq.Address = req.data.remotePath;
|
|
|
+
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "预上传传参,发送请求上料申请===>>" + JsonConvert.SerializeObject(hdhReq),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
+
|
|
|
+ var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
|
|
|
+ ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
|
|
|
+ if (!Result.IsSuccess || !responseHeidhData.result)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "预上传异常,发送请求上料申请===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
+ responseData.result = "false";
|
|
|
+ responseData.msg = ActionTypeEnum.UploadFile + "预上传异常,发送请求上料申请===>>" + JsonConvert.SerializeObject(req);
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "预上传成功,发送请求上料申请===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.UploadFile));*/
|
|
|
+
|
|
|
+ if (deviceHeidenhain != null)
|
|
|
{
|
|
|
- RequestHeidhData hdhReq = new RequestHeidhData();
|
|
|
- hdhReq.ServerUrl = deviceHeidenhain.ServerUrl;
|
|
|
- hdhReq.MachineName = deviceHeidenhain.UserName;
|
|
|
- hdhReq.Path = req.data.fileName;
|
|
|
- hdhReq.Type = OpcUaActionTypeEnum.Upload.ToString();
|
|
|
- //远程机床相对路径
|
|
|
- hdhReq.Address = req.data.remotePath;
|
|
|
-
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "预上传传参,发送请求上料申请===>>" + JsonConvert.SerializeObject(hdhReq),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
-
|
|
|
- var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
|
|
|
- ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
|
|
|
- if (!Result.IsSuccess || !responseHeidhData.result)
|
|
|
+ // 启动程序,使机床变为可上料状态
|
|
|
+ RequestHeidhData hdhReq2 = new RequestHeidhData();
|
|
|
+ hdhReq2.ServerUrl = deviceHeidenhain.ServerUrl;
|
|
|
+ hdhReq2.MachineName = deviceHeidenhain.UserName;
|
|
|
+ hdhReq2.Path = Path.GetFileName(req.data.fileName);
|
|
|
+ hdhReq2.Type = HeidnActionTypeEnum.ApplyFeeding.ToString();
|
|
|
+ hdhReq2.Address = req.data.remotePath;
|
|
|
+ var ResultStatus = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq2, null);
|
|
|
+ ResponseHeidhData responseHeidhData2 = JsonConvert.DeserializeObject<ResponseHeidhData>(ResultStatus.Message);
|
|
|
+ if (!ResultStatus.IsSuccess || !responseHeidhData2.result)
|
|
|
{
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "预上传异常,发送请求上料申请===>>" + JsonConvert.SerializeObject(req),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(hdhReq2),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
responseData.result = "false";
|
|
|
- responseData.msg = ActionTypeEnum.UploadFile + "预上传异常,发送请求上料申请===>>" + JsonConvert.SerializeObject(req);
|
|
|
+ responseData.msg = ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(hdhReq2);
|
|
|
return responseData;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "预上传成功,发送请求上料申请===>>" + JsonConvert.SerializeObject(req),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.UploadFile));*/
|
|
|
-
|
|
|
- // 启动程序,使机床变为可上料状态
|
|
|
- RequestHeidhData hdhReq2 = new RequestHeidhData();
|
|
|
- hdhReq2.ServerUrl = deviceHeidenhain.ServerUrl;
|
|
|
- hdhReq2.MachineName = deviceHeidenhain.UserName;
|
|
|
- hdhReq2.Path = Path.GetFileName(req.data.fileName);
|
|
|
- hdhReq2.Type = HeidnActionTypeEnum.ApplyFeeding.ToString();
|
|
|
- hdhReq2.Address = req.data.remotePath;
|
|
|
- var ResultStatus = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq2, null);
|
|
|
- ResponseHeidhData responseHeidhData2 = JsonConvert.DeserializeObject<ResponseHeidhData>(ResultStatus.Message);
|
|
|
- if (!ResultStatus.IsSuccess || !responseHeidhData2.result)
|
|
|
- {
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(hdhReq2),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- responseData.result = "false";
|
|
|
- responseData.msg = ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(hdhReq2);
|
|
|
- return responseData;
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -414,6 +449,7 @@ namespace IMCS.CCS.Services
|
|
|
public async Task<ResponseECSData> UploadFile(RequestData<UploadFileData> req)
|
|
|
{
|
|
|
ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
|
|
|
+ SiemensS7Net s7 = null;
|
|
|
|
|
|
try
|
|
|
{
|
|
@@ -437,13 +473,59 @@ namespace IMCS.CCS.Services
|
|
|
//西门子系统上传
|
|
|
if (deviceOpcUa != null)
|
|
|
{
|
|
|
+ //前置条件 机床是否空闲
|
|
|
+ CcsAction actionQuery = new CcsAction();
|
|
|
+ actionQuery.Ip = req.url;
|
|
|
+ CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
|
|
|
+
|
|
|
+ s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
|
|
|
+ OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
+ if (!ConnectionResult.IsSuccess)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "上传程序异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ responseData.msg = req.url + "PLC连接不上";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ CcsActionAddress actionAddressQuery = new CcsActionAddress();
|
|
|
+ actionAddressQuery.ActionId = actionInfo.Id;
|
|
|
+ List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
|
|
|
+
|
|
|
+ //查询启动条件
|
|
|
+ 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))
|
|
|
+ {
|
|
|
+ string operateResult = s7.ReadBool(actionAddress.Address).Content.ToString();
|
|
|
+
|
|
|
+ if (actionAddress.CheckType ? !(operateResult.Equals(actionAddress.Value)) : operateResult != actionAddress.Value)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传程序异常===>>" + "机床状态不满足" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
+ responseData.result = "false";
|
|
|
+ responseData.msg = ActionTypeEnum.UploadFile + "上传程序异常,机床状态不满足===>>" + JsonConvert.SerializeObject(req);
|
|
|
+
|
|
|
+ Thread.Sleep(5000); // 等待机床上料完成,处于空闲状态(目前的上料完成信号是机器人的)
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
RequestOpcUaData opcUaReq = new RequestOpcUaData();
|
|
|
opcUaReq.ServerUrl = deviceOpcUa.ServerUrl;
|
|
|
opcUaReq.UserName = deviceOpcUa.UserName;
|
|
|
opcUaReq.Password = deviceOpcUa.Password;
|
|
|
- opcUaReq.Path = req.data.fileName;
|
|
|
opcUaReq.Type = OpcUaActionTypeEnum.Upload.ToString();
|
|
|
+ opcUaReq.Path = req.data.fileName;
|
|
|
+ opcUaReq.Ip = req.url;
|
|
|
+
|
|
|
var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
|
|
|
+
|
|
|
ResponseOpcUaData responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
|
|
|
if (!Result.IsSuccess || !responseOpcUaData.result)
|
|
|
{
|
|
@@ -453,6 +535,7 @@ namespace IMCS.CCS.Services
|
|
|
responseData.msg = ActionTypeEnum.UploadFile + "上传异常===>>" + JsonConvert.SerializeObject(req);
|
|
|
return responseData;
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
else if(deviceHeidenhain != null)
|
|
|
{
|
|
@@ -469,6 +552,7 @@ namespace IMCS.CCS.Services
|
|
|
EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
|
|
|
var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
|
|
|
+ //因为报错信息是:
|
|
|
ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
|
|
|
if (!Result.IsSuccess || !responseHeidhData.result)
|
|
|
{
|
|
@@ -478,7 +562,9 @@ namespace IMCS.CCS.Services
|
|
|
responseData.msg = ActionTypeEnum.UploadFile + "上传异常===>>" + JsonConvert.SerializeObject(req);
|
|
|
return responseData;
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//插入回调
|
|
|
TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.UploadFile.ToString(),
|
|
|
EnumHelper.GetDescription(ActionTypeEnum.UploadFile), req.taskId, req.taskNodeId);
|
|
@@ -487,6 +573,9 @@ namespace IMCS.CCS.Services
|
|
|
EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
responseData.msg = ActionTypeEnum.UploadFile + "上传成功===>>" + JsonConvert.SerializeObject(req);
|
|
|
return responseData;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -505,6 +594,8 @@ namespace IMCS.CCS.Services
|
|
|
public async Task<ResponseECSData> StartNCProgram(RequestData<StartNCProgramData> req)
|
|
|
{
|
|
|
ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
|
|
|
+ SiemensS7Net s7 = null;
|
|
|
+ Boolean DEVICE_BUSY = false;
|
|
|
try
|
|
|
{
|
|
|
List<Device> devices = _deviceService.GetDeviceList();
|
|
@@ -528,70 +619,112 @@ namespace IMCS.CCS.Services
|
|
|
CcsActionAddress actionAddressQuery = new CcsActionAddress();
|
|
|
actionAddressQuery.ActionId = actionInfo.Id;
|
|
|
List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
|
|
|
- //opcua启动程序
|
|
|
+
|
|
|
+
|
|
|
+ //opcua启动程序
|
|
|
if (actionInfo.ProtocolType == ProtocalTypeEnum.OPCUA.ToString())
|
|
|
- {
|
|
|
- //插入回调
|
|
|
- //获取启动前放的 工位
|
|
|
- TaskCallback queryTaskCallBack = new TaskCallback();
|
|
|
- queryTaskCallBack.IP = actionInfo.PlcIp;
|
|
|
- queryTaskCallBack.Description = ProtocalTypeEnum.OPCUA.ToString();
|
|
|
- TaskCallback TaskBean = await _taskCallbackService.GetRobotActionList(queryTaskCallBack);
|
|
|
-
|
|
|
- TaskCallback taskCallbackData = new TaskCallback(actionInfo.PlcIp, ActionTypeEnum.StartNCProgram.ToString(),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
|
- taskCallbackData = setCallBackValue(CcsActionAddresses, taskCallbackData);
|
|
|
- taskCallbackData.Description = ProtocalTypeEnum.OPCUA.ToString();
|
|
|
- if(TaskBean != null)
|
|
|
+ {
|
|
|
+
|
|
|
+ s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
|
|
|
+ OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
+
|
|
|
+
|
|
|
+ if (!ConnectionResult.IsSuccess)
|
|
|
{
|
|
|
- taskCallbackData.Data = TaskBean.Data;
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ responseData.msg = req.url + "PLC连接不上";
|
|
|
+ return responseData;
|
|
|
}
|
|
|
- else
|
|
|
+
|
|
|
+ //查询启动条件
|
|
|
+ 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))
|
|
|
+ {
|
|
|
+ string operateResult = s7.ReadBool(actionAddress.Address).Content.ToString();
|
|
|
+
|
|
|
+ if (actionAddress.CheckType ? !(operateResult.Equals(actionAddress.Value)) : operateResult != actionAddress.Value)
|
|
|
+ {
|
|
|
+
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "机床状态不满足" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ responseData.msg = req.url + "机床状态不满足,地址:" + actionAddress.Address + "值:" + operateResult;
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //写入地址
|
|
|
+ List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
|
|
|
+ foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
|
|
|
{
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "失败,上一放动作 没有工位信息===>>" + JsonConvert.SerializeObject(req),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- responseData.msg = ActionTypeEnum.StartNCProgram + "失败,上一放动作 没有工位信息===>>" + JsonConvert.SerializeObject(req);
|
|
|
- return responseData;
|
|
|
+ if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
|
+ {
|
|
|
+ s7.Write(actionAddress.Address, Convert.ToBoolean(actionAddress.Value));
|
|
|
+
|
|
|
+ Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram) +
|
|
|
+ "写入===>>" + "地址:" + actionAddress.Address + "【" + actionAddress.Value + "】"
|
|
|
+ , EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Thread.Sleep(2000);
|
|
|
+
|
|
|
+ /*
|
|
|
+ //先查再写
|
|
|
+ foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
|
|
|
+ { //机床是否空闲
|
|
|
+ if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
|
|
|
+ {
|
|
|
+ string operateResult = s7.ReadBool(actionAddress.Address).Content.ToString();
|
|
|
+ if (actionAddress.CheckType ? operateResult.Equals(actionAddress.Value) : operateResult != actionAddress.Value)
|
|
|
+ {
|
|
|
+
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "机床启动后状态异常===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ responseData.msg = req.url + "机床启动后状态异常==,地址:" + actionAddress.Address + "值:" + operateResult;
|
|
|
+
|
|
|
+
|
|
|
+ List<CcsActionAddress> CcsActionAddressStart = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
|
|
|
+ foreach (CcsActionAddress actionAddressSt in CcsActionAddressStart)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(actionAddressSt.Address))
|
|
|
+ {
|
|
|
+ s7.Write(actionAddressSt.Address, DEVICE_BUSY);
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "机床启动后状态异常===>>西门子启动信号清零" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ */
|
|
|
|
|
|
- await _taskCallbackService.CreateOrUpdateAndCache(taskCallbackData);
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- responseData.msg = ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req);
|
|
|
- return responseData;
|
|
|
+
|
|
|
+
|
|
|
+ //查询写入地址
|
|
|
+ List<CcsActionAddress> CcsActionAddressDeclear = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
|
|
|
+ foreach (CcsActionAddress actionAddressDe in CcsActionAddressDeclear)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(actionAddressDe.Address))
|
|
|
+ {
|
|
|
+ s7.Write(actionAddressDe.Address, DEVICE_BUSY);
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "机床启动成功===>>西门子启动信号清零" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- } else if (actionInfo.ProtocolType == ProtocalTypeEnum.HEIDEHAIN.ToString())
|
|
|
+ }
|
|
|
+ else if (actionInfo.ProtocolType == ProtocalTypeEnum.HEIDEHAIN.ToString())
|
|
|
{
|
|
|
- //调用机器人plc启动海德汉程序
|
|
|
- //SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
|
|
|
- //OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
- //if (!ConnectionResult.IsSuccess)
|
|
|
- //{
|
|
|
- // s7.ConnectClose();
|
|
|
- // Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
|
- // EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- // responseData.result = "false";
|
|
|
- // return responseData;
|
|
|
- //}
|
|
|
-
|
|
|
- ////查询条件
|
|
|
- //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))
|
|
|
- // {
|
|
|
-
|
|
|
- // string operateResult = s7.ReadBool(actionAddress.Address).Content.ToString();
|
|
|
- // if (actionAddress.CheckType ? operateResult.Equals(actionAddress.Value) : operateResult != actionAddress.Value)
|
|
|
- // {
|
|
|
- // s7.ConnectClose();
|
|
|
- // Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
|
|
|
- // EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- // responseData.result = "false";
|
|
|
- // return responseData;
|
|
|
- // }
|
|
|
- // }
|
|
|
- //}
|
|
|
+
|
|
|
|
|
|
RequestHeidhData hdhReq = new RequestHeidhData();
|
|
|
hdhReq.ServerUrl = device.ServerUrl;
|
|
@@ -609,17 +742,6 @@ namespace IMCS.CCS.Services
|
|
|
return responseData;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- //s7.ConnectClose();
|
|
|
-
|
|
|
- //插入回调
|
|
|
- TaskCallback taskCallbackData = new TaskCallback(actionInfo.PlcIp, ActionTypeEnum.StartNCProgram.ToString(),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
|
- await _taskCallbackService.CreateOrUpdateAndCache(setCallBackValue(CcsActionAddresses, taskCallbackData));
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- responseData.msg = ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req);
|
|
|
- return responseData;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -630,15 +752,30 @@ namespace IMCS.CCS.Services
|
|
|
return responseData;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ //插入回调
|
|
|
+ TaskCallback taskCallbackData = new TaskCallback(actionInfo.PlcIp, ActionTypeEnum.StartNCProgram.ToString(),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
|
+ await _taskCallbackService.CreateOrUpdateAndCache(setCallBackValue(CcsActionAddresses, taskCallbackData));
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.msg = ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req);
|
|
|
+ return responseData;
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "程序异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动失败,程序异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
|
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
responseData.result = "false";
|
|
|
- responseData.msg = ActionTypeEnum.StartNCProgram + "程序异常===>>" + ex.Message + JsonConvert.SerializeObject(req);
|
|
|
+ responseData.msg = ActionTypeEnum.StartNCProgram + "启动失败,程序异常===>>" + ex.Message + JsonConvert.SerializeObject(req);
|
|
|
return responseData;
|
|
|
}
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ s7.ConnectClose();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -900,6 +1037,8 @@ namespace IMCS.CCS.Services
|
|
|
return responseData;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 获取回调列表
|
|
|
/// </summary>
|