Selaa lähdekoodia

恒轮启动程序

zhuhao 1 vuosi sitten
vanhempi
commit
95fdf95460

+ 9 - 4
IMCS_CCS/Entitys/RequestData.cs

@@ -13,10 +13,15 @@ namespace IMCS.CCS.Models
         /// </summary>
         public string DestLocation { get; set; }
 
-    /// <summary>
-    /// 条件限制标志 空或1 限制规则,0不限制
-    /// </summary>
-    public string IsAllowFlag { get; set; }
+        /// <summary>
+        /// 程序名
+        /// </summary>
+        public string fileName { get; set; }
+
+        /// <summary>
+        /// 条件限制标志 空或1 限制规则,0不限制
+        /// </summary>
+        public string IsAllowFlag { get; set; }
     }
  
     public class UploadFileData

+ 192 - 78
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -693,15 +693,48 @@ namespace IMCS.CCS.Services
                         }
                     }
                 }
-
-                List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
-                foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
+                //放入恒轮工位,作为启动
+                string currentWorkStation = "";
+                if (req.url == "192.168.11.150" && req.data.Location == "127")
                 {
-                    if (!string.IsNullOrEmpty(actionAddress.Address))
+                    string workStationAddress = ToolUtils.AddressConvertDBW("DB200.332");
+                    currentWorkStation = ((ushort)s7.Read(workStationAddress)).ConvertToShort().ToString();
+                    //string currentWorkStation = s7.ReadInt16("DB200.332").Content.ToString();
+                    string writeValue = "128";
+                    if (currentWorkStation == "1")//工作台1
                     {
-                        string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
-                        s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
-                        Thread.Sleep(SLEEP_TIME);
+                        writeValue = "128";
+                    }
+                    else if (currentWorkStation == "2")//工作台2
+                    {
+                        writeValue = "127";
+                    }
+                    if (string.IsNullOrEmpty(req.data.fileName))
+                    {
+                        s7.Close();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.SendQualityCenter + "放物品异常===>>" + "恒轮程序名为空" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
+                        responseData.result = "false";
+                        return responseData;
+                    }
+                    string proNo = Path.GetFileNameWithoutExtension(req.data.fileName); 
+                    s7.Write("DB200.334", Convert.ToInt16(proNo));
+                    Thread.Sleep(SLEEP_TIME);
+                    s7.Write("DB200.46", Convert.ToInt16(writeValue)); 
+                    Thread.Sleep(SLEEP_TIME);
+                    s7.Write("DB200.50", Convert.ToInt16("4"));
+                }
+                else
+                {
+                    List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
+                    foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
+                    {
+                        if (!string.IsNullOrEmpty(actionAddress.Address))
+                        {
+                            string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
+                            s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value)); ;
+                            Thread.Sleep(SLEEP_TIME);
+                        }
                     }
                 }
                
@@ -711,12 +744,17 @@ namespace IMCS.CCS.Services
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.SendQualityCenter.ToString(),
                     EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter), req.taskId, req.taskNodeId);
                 taskCallbackData = setCallBackValue(CcsActionAddresses, taskCallbackData);
-                /*//清洗机启动时更新回调值
-                if(!string.IsNullOrEmpty(req.data.Location) && req.data.Location == "123")
-                { 
-                    taskCallbackData.Address = "DB200.48";
-                    taskCallbackData.CallbackValue = "1";
-                }*/
+                //放入恒轮工位,作为启动 ,传递给后续启动
+                if (req.url == "192.168.11.150" && req.data.Location == "127")
+                {
+                    taskCallbackData.Description = currentWorkStation;
+                }
+                    /*//清洗机启动时更新回调值
+                    if(!string.IsNullOrEmpty(req.data.Location) && req.data.Location == "123")
+                    { 
+                        taskCallbackData.Address = "DB200.48";
+                        taskCallbackData.CallbackValue = "1";
+                    }*/
                 await _taskCallbackService.CreateOrUpdateAndCache(taskCallbackData);
                 Log.Instance.WriteLogAdd(EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter) + "放物品成功===>>" + JsonConvert.SerializeObject(req)
                    , EnumHelper.GetDescription(ActionTypeEnum.SendQualityCenter));
@@ -1108,76 +1146,91 @@ namespace IMCS.CCS.Services
                 //opcua启动程序
                 if (actionInfo.ProtocolType == ProtocalTypeEnum.OPCUA.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;
-                    }
-
-                    //查询条件
-                    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 CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
-                            var operateResult = s7.ReadInt16(CheckAddress).Content.ToString();
-                            if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
-                            {
-                                s7.ConnectClose();
-                                Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
-                                EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
-                                responseData.result = "false";
-                                return responseData;
-                            }
-                        }
-                    } 
-
-                    string currentWorkStation = s7.ReadInt16("DB200.332").Content.ToString();
-                    string writeValue = "128";
-                    if (currentWorkStation == "1")//工作台1
-                    {
-                        writeValue = "128";
-                    }
-                    else if (currentWorkStation == "2")//工作台2
-                    {
-                        writeValue = "127";
-                    }
-
-                    //查询写入地址列表
-                    List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
-                    foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
-                    {
-                        if (!string.IsNullOrEmpty(actionAddress.Address))
-                        { 
-                            if (actionAddress.Sort == 1)
-                            {
-                                string proNo = Path.GetFileNameWithoutExtension(req.data.remotePath);
-                                s7.Write(actionAddress.Address, Convert.ToInt16(proNo));
-                            } else if (actionAddress.Sort == 2)
-                            {
-                                string proNo = Path.GetFileNameWithoutExtension(req.data.remotePath);
-                                s7.Write(actionAddress.Address, Convert.ToInt16(writeValue));
-                            }
-                            else
-                            {
-                                s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
-                            } 
-                            Thread.Sleep(SLEEP_TIME);
-                        }
-                    }
-                    s7.ConnectClose();
+                    //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 CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
+                    //        var operateResult = s7.ReadInt16(CheckAddress).Content.ToString();
+                    //        if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
+                    //        {
+                    //            s7.ConnectClose();
+                    //            Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
+                    //            EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
+                    //            responseData.result = "false";
+                    //            return responseData;
+                    //        }
+                    //    }
+                    //} 
+
+                    //string currentWorkStation = s7.ReadInt16("DB200.332").Content.ToString();
+                    //string writeValue = "128";
+                    //if (currentWorkStation == "1")//工作台1
+                    //{
+                    //    writeValue = "128";
+                    //}
+                    //else if (currentWorkStation == "2")//工作台2
+                    //{
+                    //    writeValue = "127";
+                    //}
+
+                    ////查询写入地址列表
+                    //List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
+                    //foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
+                    //{
+                    //    if (!string.IsNullOrEmpty(actionAddress.Address))
+                    //    { 
+                    //        if (actionAddress.Sort == 1)
+                    //        {
+                    //            string proNo = Path.GetFileNameWithoutExtension(req.data.remotePath);
+                    //            s7.Write(actionAddress.Address, Convert.ToInt16(proNo));
+                    //        } else if (actionAddress.Sort == 2)
+                    //        {
+                    //            string proNo = Path.GetFileNameWithoutExtension(req.data.remotePath);
+                    //            s7.Write(actionAddress.Address, Convert.ToInt16(writeValue));
+                    //        }
+                    //        else
+                    //        {
+                    //            s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
+                    //        } 
+                    //        Thread.Sleep(SLEEP_TIME);
+                    //    }
+                    //}
+                    //s7.ConnectClose();
                     //插入回调
+                    //获取启动前放的 工位
+                    TaskCallback queryTaskCallBack = new TaskCallback();
+                    queryTaskCallBack.IP = actionInfo.PlcIp;
+                    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();
-                    taskCallbackData.Data = currentWorkStation;
+                    if(TaskBean != null)
+                    {
+                        taskCallbackData.Data = TaskBean.Description;
+                    }
+                    else
+                    {
+                       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));
@@ -1361,7 +1414,68 @@ namespace IMCS.CCS.Services
                 return responseData;
             }
         }
+        /// <summary>
+        /// 恒轮机床空闲标志
+        /// </summary> 
+        public async Task<ResponseECSData> hellerFreeStatus(RequestData<RequestToolData> req)
+        {
+            ResponseECSData responseData = new ResponseECSData(req.taskId, req.taskNodeId);
+            try
+            {
+                List<Device> devices = _deviceService.GetDeviceList();
+
+                Device device = devices.Where(x => x.Ip.Equals(req.url) && x.Port.Equals(req.port)).FirstOrDefault();
+
+                if (device == null)
+                {
+                    Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "设备已离线===>>" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
+                    responseData.result = "false";
+                    return responseData;
+                }
 
+                CcsAction actionQuery = new CcsAction();
+                actionQuery.OperateType = ActionTypeEnum.StartNCProgram.ToString();
+                actionQuery.Ip = req.url;
+                CcsAction actionInfo = _ccsActionService.GetList(actionQuery).FirstOrDefault();
+
+                //恒轮设备 对应plc ip 
+                SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
+                OperateResult ConnectionResult = s7.ConnectServer();
+                if (!ConnectionResult.IsSuccess)
+                {
+                    s7.ConnectClose();
+                    Log.Instance.WriteLogAdd("查询恒轮是否空闲异常===>PLC连接不上" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
+                    responseData.result = "false";
+                    return responseData;
+                }
+                string status = s7.ReadInt16("DB200.336").Content.ToString();
+                if (status == "1")//状态1  有料
+                {
+                    responseData.result = "true";
+                    Log.Instance.WriteLogAdd("查询恒轮当前外面工作台有料===>>" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
+                    responseData.result = "false";
+                    return responseData;
+                }
+                else if(status == "2")//状态2  无料
+                {
+                    Log.Instance.WriteLogAdd("查询恒轮当前外面工作台无料===>>" + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
+                    responseData.result = "false";
+                }
+                s7.ConnectClose();
+                return responseData;
+            }
+            catch (Exception ex)
+            {
+                Log.Instance.WriteLogAdd("查询恒轮是否程序异常===>>" + ex.Message + JsonConvert.SerializeObject(req),
+                    EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
+                responseData.result = "false";
+                return responseData;
+            }
+        }
         /// <summary>
         /// 粗偏写入
         /// </summary> 

+ 2 - 1
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -820,8 +820,9 @@ namespace IMCS.CCS.Service.Impl
                     List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery);
                     CcsTagValue tagValue = tagValues.Where(o => o.Address == task.Address.Trim()).FirstOrDefault();
                     CcsTagValue tagValue2 = tagValues.Where(o => o.Address == "DB200.332").FirstOrDefault(); //当前工作台
+                    CcsTagValue tagValue3 = tagValues.Where(o => o.Address == "DB200.336").FirstOrDefault(); //当前工作台是否有料标志,1:有料 2:无料
                     if ((tagValue != null && tagValue.TagValue == task.CallbackValue && String.IsNullOrEmpty(task.Description)) 
-                        || (task.Description == ProtocalTypeEnum.OPCUA.ToString() && tagValue != null && tagValue.TagValue == task.CallbackValue && tagValue2 != null && tagValue2.TagValue == task.Data)) 
+                        || (task.Description == ProtocalTypeEnum.OPCUA.ToString() && tagValue != null  && tagValue2 != null && tagValue2.TagValue == task.Description && tagValue3.TagValue == "1")) 
                     {
                         CallBackRequestData requestData = new CallBackRequestData();
                         requestData.taskId = long.Parse(task.TaskId);