Quellcode durchsuchen

恒轮启动修改

zhuhao vor 2 Jahren
Ursprung
Commit
7310171f96
1 geänderte Dateien mit 73 neuen und 95 gelöschten Zeilen
  1. 73 95
      IMCS_CCS/Service/Impl/HttpRequestService.cs

+ 73 - 95
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -834,6 +834,8 @@ namespace IMCS.CCS.Services
                 List<Device> devices = _deviceService.GetDeviceList();
                 Device deviceFtp = devices.Where(x => x.Ip.Equals(req.url)
                                             && x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).FirstOrDefault();
+                Device deviceOpcUA = devices.Where(x => x.Ip.Equals(req.url)
+                                           && x.ProtocolType.Equals(ProtocalTypeEnum.OPCUA.ToString())).FirstOrDefault();
                 Device deviceFanuc = devices.Where(x => x.Ip.Equals(req.url)
                                             && x.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString())).FirstOrDefault();
                 Device deviceHeidenhain = devices.Where(x => x.Ip.Equals(req.url)
@@ -847,26 +849,38 @@ namespace IMCS.CCS.Services
                     return responseData;
                 }
                 //西门子系统上传
-                if (deviceFtp != null)
+                if (deviceOpcUA != null)
                 {
-                    FtpClient ftpClient = new DeviceFtp().Connect(ftpUrlContext, ftpUserContext, ftpPwdContext);
-                    ftpClient.Get(req.data.fileName, LocalPath, req.data.fileName);
-                    ftpClient.DisConnect();
-                    try
-                    {
-                        DeviceSFTP sftp = new DeviceSFTP(deviceFtp.Ip, deviceFtp.Port, deviceFtp.UserName, deviceFtp.Password);
-                        bool ifcon = sftp.Connect();
-                        if (ifcon)
-                        {
-                            sftp.Put(LocalPath + "\\" + req.data.fileName, req.data.remotePath + req.data.fileName);
-                            sftp.Disconnect();
-                        }
+                    //FtpClient ftpClient = new DeviceFtp().Connect(ftpUrlContext, ftpUserContext, ftpPwdContext);
+                    //ftpClient.Get(req.data.fileName, LocalPath, req.data.fileName);
+                    //ftpClient.DisConnect();
+                    //try
+                    //{
+                    //    DeviceSFTP sftp = new DeviceSFTP(deviceFtp.Ip, deviceFtp.Port, deviceFtp.UserName, deviceFtp.Password);
+                    //    bool ifcon = sftp.Connect();
+                    //    if (ifcon)
+                    //    {
+                    //        sftp.Put(LocalPath + "\\" + req.data.fileName, req.data.remotePath + req.data.fileName);
+                    //        sftp.Disconnect();
+                    //    }
 
-                    }
-                    catch (Exception exscp)
+                    //}
+                    //catch (Exception exscp)
+                    //{
+                    //    Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,scp连接失败," + exscp.Message + "," + JsonConvert.SerializeObject(req),
+                    //  EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                    //    responseData.result = "false";
+                    //    return responseData;
+                    //}
+
+                    RequestOpcUaData opcUaReq = new RequestOpcUaData();
+                    opcUaReq.Type = OpcUaActionTypeEnum.Upload.ToString();
+                    opcUaReq.Path = req.data.fileName;
+                    var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
+                    if (!Result.IsSuccess)
                     {
-                        Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,scp连接失败," + exscp.Message + "," + JsonConvert.SerializeObject(req),
-                      EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,opcUA上传," + Result.Message + "," + JsonConvert.SerializeObject(req),
+                         EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
                         responseData.result = "false";
                         return responseData;
                     }
@@ -889,22 +903,7 @@ namespace IMCS.CCS.Services
                     }
 
                 }else 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();
-                    //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";
-                    //    return responseData;
-                    //}
-
+                { 
                     //海德汉程序上传后,同时写入编号 
                     if (string.IsNullOrEmpty(req.data.fileName))
                     {
@@ -1099,78 +1098,57 @@ namespace IMCS.CCS.Services
                 //opcua启动程序
                 if (actionInfo.ProtocolType == ProtocalTypeEnum.OPCUA.ToString())
                 {
-                    RequestOpcUaData opcUaReq = new RequestOpcUaData();
-                    opcUaReq.ServerUrl = device.ServerUrl;
-                    opcUaReq.UserName = device.UserName;
-                    opcUaReq.Password = device.Password;
-                    opcUaReq.Path = actionInfo.FilePath + req.data.remotePath;
-                    opcUaReq.Type = OpcUaActionTypeEnum.Connect.ToString();
-                    var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
-                    ResponseOpcUaData responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
-                    if (Result.IsSuccess && responseOpcUaData.result)
+                    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;
+                    }
 
-                        Thread.Sleep(1000);
-                        List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
-                        if (CcsActionAddressChecks != null)
+                    //查询条件
+                    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))
                         {
-                            List<string> checkAddresses = CcsActionAddressChecks.Select(t => t.Address).ToList();
-                            opcUaReq.Type = OpcUaActionTypeEnum.Read.ToString();
-                            opcUaReq.Addresses = checkAddresses;
-                            Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
-                            responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
-                            if (Result.IsSuccess && responseOpcUaData.result)
+                            string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
+                            var operateResult = s7.ReadInt16(CheckAddress).Content.ToString();
+                            if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
                             {
-                                //条件校验
-                                for (int i = 0; i < CcsActionAddressChecks.Count; i++)
-                                {
-                                    CcsActionAddress checkActionAddress = CcsActionAddressChecks[i];
-                                    string checkValue = responseOpcUaData.values[i];
-                                    if (checkValue != checkActionAddress.Value)
-                                    {
-                                        Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
-                                      EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
-                                        responseData.result = "false";
-                                        return responseData;
-                                    }
-                                }
-                            }
-                        }
-                        List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
-                        List<string> writeAddresses = CcsActionAddressWrites.Select(t => t.Address).ToList();
-                        List<string> writeValues = CcsActionAddressWrites.Select(t => t.Value).ToList();
-                        opcUaReq.Type = OpcUaActionTypeEnum.Write.ToString();
-                        opcUaReq.Addresses = writeAddresses;
-                        opcUaReq.Values = writeValues;
-                        /*opcUaReq.Addresses = new List<string>() { actionInfo.Address };
-                        opcUaReq.Values = new List<string>() { "True" };*/
-                        Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
-                        responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
-                        if (Result.IsSuccess && responseOpcUaData.result)
-                        {
-                            //插入回调
-                            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),
+                                s7.ConnectClose();
+                                Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
                                 EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
-                            return responseData;
+                                responseData.result = "false";
+                                return responseData;
+                            }
                         }
-                        else
+                    }
+
+                    //查询写入地址列表
+                    List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
+                    foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
+                    {
+                        if (!string.IsNullOrEmpty(actionAddress.Address))
                         {
-                            Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
-                            EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
-                            responseData.result = "false";
-                            return responseData;
+                            string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
+                            s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
+                            Thread.Sleep(SLEEP_TIME);
                         }
                     }
-                    else
-                    {
-                        Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
+                    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.result = "false";
-                        return responseData;
-                    }
+                    return responseData;
+
+                     
 
 
                 }