Browse Source

更新处理数据调试功能

oyq28 2 years ago
parent
commit
1e242d17d7
2 changed files with 102 additions and 23 deletions
  1. 3 0
      IMCS_CCS/Entitys/CcsActionAddress.cs
  2. 99 23
      IMCS_CCS/Service/Impl/HttpRequestService.cs

+ 3 - 0
IMCS_CCS/Entitys/CcsActionAddress.cs

@@ -39,6 +39,8 @@ namespace IMCS.CCS.Entitys
     {
         [EnumDescription("写入")] 
         WRITE,
+        [EnumDescription("写入校验下一个是否条件写入")]
+        WRITE_CHECK,
         [EnumDescription("校验")]
         CHECK,
         [EnumDescription("回调")]
@@ -47,6 +49,7 @@ namespace IMCS.CCS.Entitys
         CALLBACK_FAIL,
         [EnumDescription("回调复位")]
         RESET,
+        
     }
 
     

+ 99 - 23
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -16,6 +16,7 @@ using Microsoft.Extensions.Configuration;
 using IMCS.CCS.Service;
 using IMCS_CCS.Model.vo;
 using FTP;
+using HslCommunication;
 
 namespace IMCS.CCS.Services
 {
@@ -984,7 +985,18 @@ namespace IMCS.CCS.Services
                         responseData.result = "false";
                         return responseData;
                     }
-                    Plc s7 = DevicePlcS7.S7(actionInfo.PlcIp, ProtocalTypeEnum.S7_1500.ToString());
+                    //Plc s7 = DevicePlcS7.S7(actionInfo.PlcIp, ProtocalTypeEnum.S7_1500.ToString());
+                    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;
+                    }
+                    /*
                     if (s7.IsConnected != true)
                     {
                         s7.Close();
@@ -992,7 +1004,7 @@ namespace IMCS.CCS.Services
                         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)
@@ -1000,10 +1012,10 @@ namespace IMCS.CCS.Services
                         if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
                         {
                             string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
-                            var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
+                            var operateResult = s7.ReadInt16(CheckAddress).Content.ToString();
                             if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
                             {
-                                s7.Close();
+                                s7.ConnectClose();
                                 Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
                                 EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
                                 responseData.result = "false";
@@ -1019,11 +1031,11 @@ namespace IMCS.CCS.Services
                         if (!string.IsNullOrEmpty(actionAddress.Address))
                         {
                             string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
-                            s7.Write(Address, Convert.ToInt16(actionAddress.Value));
+                            s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
                             Thread.Sleep(SLEEP_TIME);
                         }
                     }
-                    s7.Close();
+                    s7.ConnectClose();
                     //插入回调
                     TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
                     EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
@@ -1040,25 +1052,31 @@ namespace IMCS.CCS.Services
                     hdhReq.MachineName = device.UserName;
                     hdhReq.Path = req.data.remotePath;
                     hdhReq.Type = OpcUaActionTypeEnum.SelectNcProgram.ToString();
-                    var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
+                    /*var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
                     ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
-                    if(!Result.IsSuccess || !responseHeidhData.result)
+                    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());
-                    if (s7.IsConnected != true)
+                   // Plc s7 = DevicePlcS7.S7(actionInfo.PlcIp, ProtocalTypeEnum.S7_1500.ToString());
+                    SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
+                    OperateResult ConnectionResult = s7.ConnectServer();
+                    if (!ConnectionResult.IsSuccess)
                     {
-                        s7.Close();
+                        s7.ConnectClose();
                         Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
                         EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
                         responseData.result = "false";
                         return responseData;
                     }
+
+                    string CheckAddress1 = ToolUtils.AddressConvertDBW("DB200.314");
+                    string operateResult1 = s7.ReadInt16(CheckAddress1).Content.ToString(); 
+
                     //查询条件
                     List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
                     foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
@@ -1066,10 +1084,10 @@ namespace IMCS.CCS.Services
                         if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
                         {
                             string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
-                            var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
-                            if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
+                            string operateResult = s7.ReadInt16(CheckAddress).Content.ToString();
+                            if (actionAddress.CheckType ? operateResult.Equals(actionAddress.Value) : operateResult != actionAddress.Value)
                             {
-                                s7.Close();
+                                s7.ConnectClose();
                                 Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
                                 EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
                                 responseData.result = "false";
@@ -1080,23 +1098,82 @@ namespace IMCS.CCS.Services
 
                     //查询写入地址列表
                     List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
-                    foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
+                    if(CcsActionAddressWrites.Count < 2)
                     {
-                        if (!string.IsNullOrEmpty(actionAddress.Address))
+                        s7.ConnectClose();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "地址错误" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
+                        responseData.result = "false";
+                        return responseData;
+                    }
+                    //写入程序编号 
+                    //s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16("0"));
+                    s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16(CcsActionAddressWrites[0].Value));
+                   
+                    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)
                         {
-                            string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
-                            s7.Write(Address, Convert.ToInt16(actionAddress.Value)); 
-                            Thread.Sleep(SLEEP_TIME);
+                            isTimeOut = true;
+                            break;
+                            
                         }
+                        s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16(CcsActionAddressWrites[0].Value));
                     }
-                    s7.Close();
+                    //Thread.Sleep(30000);
+                    if (isTimeOut)
+                    {
+                        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(10000);
+                    
+                    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;
+                        }
+                    }*/   
 
                     //插入回调
                     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));
+                        EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));                    
                     return responseData;
                 }
                 else
@@ -1107,7 +1184,6 @@ namespace IMCS.CCS.Services
                     return responseData;
                 }
 
-
             }
             catch (Exception ex)
             {