Pārlūkot izejas kodu

修改 启动海德汉

zhuhao 2 gadi atpakaļ
vecāks
revīzija
03017a8758
1 mainītis faili ar 52 papildinājumiem un 98 dzēšanām
  1. 52 98
      IMCS_CCS/Service/Impl/HttpRequestService.cs

+ 52 - 98
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -868,6 +868,44 @@ namespace IMCS.CCS.Services
                         responseData.result = "false";
                         responseData.result = "false";
                         return responseData;
                         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(),
                 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())
                 else if (actionInfo.ProtocolType == ProtocalTypeEnum.FANUC.ToString())
                 {
                 {
                     string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
                     string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
@@ -1088,23 +1103,8 @@ namespace IMCS.CCS.Services
 
 
                 }
                 }
                 else if (actionInfo.ProtocolType == ProtocalTypeEnum.HEIDEHAIN.ToString()) 
                 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);
                     SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
                     OperateResult ConnectionResult = s7.ConnectServer();
                     OperateResult ConnectionResult = s7.ConnectServer();
                     if (!ConnectionResult.IsSuccess)
                     if (!ConnectionResult.IsSuccess)
@@ -1145,68 +1145,22 @@ namespace IMCS.CCS.Services
                         responseData.result = "false";
                         responseData.result = "false";
                         return responseData;
                         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[1].Address, Convert.ToInt16(CcsActionAddressWrites[1].Value) );
+                    //重置清零
                     s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16("0"));
                     s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16("0"));
                     s7.Write(CcsActionAddressWriteCheck.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(),
                     TaskCallback taskCallbackData = new TaskCallback(actionInfo.PlcIp, ActionTypeEnum.StartNCProgram.ToString(),