|
@@ -868,6 +868,44 @@ namespace IMCS.CCS.Services
|
|
|
responseData.result = "false";
|
|
|
return responseData;
|
|
|
}
|
|
|
+
|
|
|
+ //海德汉程序上传后,同时写入编号
|
|
|
+ CcsAction actionQuery = new CcsAction();
|
|
|
+ actionQuery.OperateType = ActionTypeEnum.StartNCProgram.ToString();
|
|
|
+ actionQuery.Ip = req.url;
|
|
|
+ CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
|
|
|
+ //查询启动动作地址
|
|
|
+ CcsActionAddress actionAddressQuery = new CcsActionAddress();
|
|
|
+ actionAddressQuery.ActionId = actionInfo.Id;
|
|
|
+ List<CcsActionAddress> CcsActionAddresses = _ccsActionAddressService.GetList(actionAddressQuery);
|
|
|
+
|
|
|
+ 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.UploadFile));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询写入地址列表
|
|
|
+ List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
|
|
|
+ if (CcsActionAddressWrites.Count < 2)
|
|
|
+ {
|
|
|
+ s7.ConnectClose();
|
|
|
+ Log.Instance.WriteLogAdd("写入程序编号异常===>>" + "地址错误" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ //写入程序编号
|
|
|
+ string prgNo = !string.IsNullOrEmpty(req.data.remotePath) ? req.data.remotePath.Substring(0, req.data.remotePath.Length - 2) : CcsActionAddressWrites[0].Value;
|
|
|
+ s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16(prgNo));
|
|
|
+
|
|
|
+ Log.Instance.WriteLogAdd("写入编号成功===>>编号位:" + prgNo + ",写入地址=="+ CcsActionAddressWrites[0].Address,
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
}
|
|
|
//插入回调
|
|
|
TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.UploadFile.ToString(),
|
|
@@ -991,30 +1029,7 @@ namespace IMCS.CCS.Services
|
|
|
}
|
|
|
|
|
|
|
|
|
- }
|
|
|
- /* else if (actionInfo.ProtocolType == ProtocalTypeEnum.FANUC.ToString())
|
|
|
- {
|
|
|
- string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
|
|
|
- //调用发那科是否连接接口
|
|
|
- var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=" + ActionTypeEnum.StartNCProgram.ToString()+ "&prgname="+req.data.remotePath, null, null);
|
|
|
- if (Result.IsSuccess && Result.Message == "0")
|
|
|
- {
|
|
|
- //插入回调
|
|
|
- TaskCallback taskCallbackData = new TaskCallback(req.url, 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));
|
|
|
- return responseData;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- responseData.result = "false";
|
|
|
- return responseData;
|
|
|
- }
|
|
|
- }*/
|
|
|
+ }
|
|
|
else if (actionInfo.ProtocolType == ProtocalTypeEnum.FANUC.ToString())
|
|
|
{
|
|
|
string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
|
|
@@ -1088,23 +1103,8 @@ namespace IMCS.CCS.Services
|
|
|
|
|
|
}
|
|
|
else if (actionInfo.ProtocolType == ProtocalTypeEnum.HEIDEHAIN.ToString())
|
|
|
- {
|
|
|
- RequestHeidhData hdhReq = new RequestHeidhData();
|
|
|
- hdhReq.ServerUrl = device.ServerUrl;
|
|
|
- hdhReq.MachineName = device.UserName;
|
|
|
- hdhReq.Path = req.data.remotePath;
|
|
|
- hdhReq.Type = OpcUaActionTypeEnum.SelectNcProgram.ToString();
|
|
|
- /*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.StartNCProgram + "启动程序异常===>>" + JsonConvert.SerializeObject(req),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- responseData.result = "false";
|
|
|
- return responseData;
|
|
|
- }*/
|
|
|
- //调用机器人plc启动海德汉程序
|
|
|
- // Plc s7 = DevicePlcS7.S7(actionInfo.PlcIp, ProtocalTypeEnum.S7_1500.ToString());
|
|
|
+ {
|
|
|
+ //调用机器人plc启动海德汉程序
|
|
|
SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
|
|
|
OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
if (!ConnectionResult.IsSuccess)
|
|
@@ -1145,68 +1145,22 @@ namespace IMCS.CCS.Services
|
|
|
responseData.result = "false";
|
|
|
return responseData;
|
|
|
}
|
|
|
- //写入程序编号
|
|
|
- //s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16("0"));
|
|
|
- string prgNo = !string.IsNullOrEmpty(req.data.remotePath)? req.data.remotePath.Substring(0, req.data.remotePath.Length-2) : CcsActionAddressWrites[0].Value;
|
|
|
- s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16(prgNo));
|
|
|
-
|
|
|
- CcsActionAddress CcsActionAddressWriteCheck = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_CHECK.ToString()).FirstOrDefault();
|
|
|
- DateTime start_time = DateTime.Now;
|
|
|
- Boolean isTimeOut = false;
|
|
|
|
|
|
- while (s7.ReadInt16(CcsActionAddressWriteCheck.Address).Content.ToString().Equals("0"))
|
|
|
- {
|
|
|
- //等待条件满足继续下发
|
|
|
- if (DateTime.Now.Subtract(start_time).TotalSeconds > 60)
|
|
|
- {
|
|
|
- isTimeOut = true;
|
|
|
- break;
|
|
|
-
|
|
|
- }
|
|
|
- s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16(prgNo));
|
|
|
- }
|
|
|
- //Thread.Sleep(30000);
|
|
|
- if (isTimeOut)
|
|
|
+ CcsActionAddress CcsActionAddressWriteCheck = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_CHECK.ToString()).FirstOrDefault();
|
|
|
+ string writeCheckResult = s7.ReadInt16(CcsActionAddressWriteCheck.Address).Content.ToString();
|
|
|
+ if(writeCheckResult == "0")
|
|
|
{
|
|
|
- s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16("0"));
|
|
|
- s7.Write(CcsActionAddressWriteCheck.Address, Convert.ToInt16("0"));
|
|
|
- throw new Exception("等待手动操作超时异常");
|
|
|
- }
|
|
|
-
|
|
|
- //写入程序启动信号
|
|
|
- //string StartAddress = ToolUtils.AddressConvertDBW("DB200.314");
|
|
|
- //s7.Write(CcsActionAddressWrites[1].Address, Convert.ToInt16("3"));
|
|
|
- //重置清零
|
|
|
- //
|
|
|
- Thread.Sleep(2000);
|
|
|
-
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "程序编号没有应用" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ //写入海德汉启动信号
|
|
|
s7.Write(CcsActionAddressWrites[1].Address, Convert.ToInt16(CcsActionAddressWrites[1].Value) );
|
|
|
+ //重置清零
|
|
|
s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16("0"));
|
|
|
s7.Write(CcsActionAddressWriteCheck.Address, Convert.ToInt16("0"));
|
|
|
- s7.ConnectClose();
|
|
|
-
|
|
|
- /*DateTime beginTime = DateTime.Now;
|
|
|
- while (true)
|
|
|
- {
|
|
|
- CcsActionAddress CcsActionAddressWriteCheck = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_CHECK.ToString()).FirstOrDefault();
|
|
|
- if (CcsActionAddressWriteCheck != null)
|
|
|
- {
|
|
|
- string WriteCheckAddress = ToolUtils.AddressConvertDBW(CcsActionAddressWriteCheck.Address);
|
|
|
- var operateResult = ((ushort)s7.Read(WriteCheckAddress)).ConvertToShort();
|
|
|
- if (operateResult.ToString() == CcsActionAddressWriteCheck.Value)
|
|
|
- {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (DateTime.Now.Subtract(beginTime).TotalMinutes > 1)
|
|
|
- {
|
|
|
- s7.Close();
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "程序编号没有应用" + JsonConvert.SerializeObject(req),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- responseData.result = "false";
|
|
|
- return responseData;
|
|
|
- }
|
|
|
- }*/
|
|
|
+ s7.ConnectClose();
|
|
|
|
|
|
//插入回调
|
|
|
TaskCallback taskCallbackData = new TaskCallback(actionInfo.PlcIp, ActionTypeEnum.StartNCProgram.ToString(),
|