Beispiel #1
0
        /// <summary>
        /// 订阅事件
        /// 这里针对拧紧机的事件注册比较特殊
        /// </summary>
        private void Subscribe()
        {
            try
            {
                if (TightenToolClient == null)
                {
                    return;
                }

                if (TightenToolClient.SubcribeLastTightenData())
                {
                    Log.Information($"{tdConfig.NickName} ({tdConfig.Host})拧紧数据订阅成功。");
                }
                else
                {
                    Log.Information($"{tdConfig.NickName} ({tdConfig.Host})拧紧数据订阅失败。");
                }
                if (TightenToolClient.SubscribeVehicleNumber())
                {
                    Log.Information($"{tdConfig.NickName} ({tdConfig.Host})拧紧条码订阅成功。");
                }
                else
                {
                    Log.Information($"{tdConfig.NickName} ({tdConfig.Host})拧紧条码订阅失败。");
                }
            }
            catch (Exception ex)
            {
                Log.Error($"{tdConfig.NickName} [{tdConfig.Host}]拧紧机订阅消息异常", ex);
            }
        }
Beispiel #2
0
        /// <summary>
        /// 建立通讯
        /// 调用同步方法连接时,会报MianForm已经Disposed的异常
        /// </summary>
        /// <returns></returns>
        public bool Connect()
        {
            try
            {
                if (TightenToolClient == null)
                {
                    AE2DeviceFactory fac = new AE2DeviceFactory();
                    TightenToolClient = fac.CreateTightenDevice(tdConfig);
                    TightenToolClient.NetChangedAction      = TdNetChanged;
                    TightenToolClient.OnLastTightenData     = ReadLastTightenData;
                    TightenToolClient.OnVehicleNumberAction = ReadVinNumber;
                }
                var start = DateTime.Now;

                if (TightenToolClient.Connect())
                {
                    NetStatus = true;
                    //Subscribe();
                }
                var cost            = DateTime.Now - start;
                int connectCostTime = cost.Seconds + 2;
                Debug.WriteLine($"拧紧连接耗时{connectCostTime - 2}s");
                Log.Information($"拧紧机{tdConfig.Host}通讯连接{(NetStatus ? "成功" : "失败")}。");
                return(NetStatus);
            }
            catch (Exception ex)
            {
                Log.Error("拧紧通讯初始化失败", ex);
                NetChangedAction?.Invoke(tdConfig.ToolId, false);
                return(false);
            }
        }
Beispiel #3
0
 public bool EnableTool(bool status)
 {
     if (status)
     {
         return(TightenToolClient.EnableTightenTool());
     }
     else
     {
         return(TightenToolClient.DisableTightenTool());
     }
 }
Beispiel #4
0
 /// <summary>
 /// 发送发动机条码到拧紧机
 /// </summary>
 /// <param name="code"></param>
 /// <returns></returns>
 public bool SetTighenCode(string code)
 {
     if (tdConfig.CodeRequest && !string.IsNullOrEmpty(code) && code.Length < 25)
     {
         try
         {
             if (TightenToolClient?.SetVehicleNumber(code) == true)
             {
                 Log.Information($"发送发动机条码{code}到拧紧机{tdConfig.NickName} [{tdConfig.Host}]成功");
                 return(true);
             }
             else
             {
                 Log.Information($"发送发动机条码{code}到拧紧机{tdConfig.NickName} [{tdConfig.Host}]失败");
             }
         }
         catch (Exception ex)
         {
             Log.Error("拧紧程序处理发动机码出错", ex);
         }
     }
     return(false);
 }
Beispiel #5
0
 /// <summary>
 /// 拧紧机TCP客户端向外发送的条码信息
 /// </summary>
 /// <param name="code"></param>
 private void ReadVinNumber(string code)
 {
     try
     {
         Log.Information("接收到拧紧机条码:{code}", code);
         if (code.Length > 17)
         {
             code = code.Substring(0, 17);
         }
         if (code == CurrentEngineCode)
         {
             VinNumberChangedEvent?.Invoke(tdConfig.ToolId, code);
             //newTightenConfig中的信息
             if (newTightenConfig != null && newTightenConfig.TightenPointNum > 0)
             {
                 if (newTightenConfig.JobId.HasValue)
                 {
                     TightenToolClient.SelectJob(newTightenConfig.JobId.Value);
                 }
                 else if (newTightenConfig.BoltPset1.HasValue)
                 {
                     //设置Pset值,等待拧紧
                     GotoNextBolt(CurrentBoltIndex);
                 }
                 TightenToolClient.EnableTightenTool();
             }
             else
             {
                 OnWorkUnitFinishedAction?.Invoke(tdConfig.ToolId, true, null);
             }
         }
     }
     catch (Exception ex)
     {
         Log.Error(ex, "拧紧机条码接收处理报错");
     }
 }
Beispiel #6
0
        /// <summary>
        /// 切换下一颗螺丝的Pset
        /// </summary>
        /// <param name="boltIndex"></param>
        /// <returns></returns>
        private bool GotoNextBolt(int boltIndex)
        {
            Debug.WriteLine($"InitTightenInfo-> GotoNextBolt({boltIndex})");
            if (newTightenConfig == null)
            {
                return(false);
            }
            var rst = false;

            switch (boltIndex)
            {
            case 1:
                if (newTightenConfig.BoltPset1 != null && CurrentPset != newTightenConfig.BoltPset1.Value)
                {
                    TightenToolClient.SetPSet(newTightenConfig.BoltPset1.Value);
                    CurrentPset = newTightenConfig.BoltPset1.Value;
                }
                break;

            case 2:
                if (newTightenConfig.BoltPset2 != null && CurrentPset != newTightenConfig.BoltPset2.Value)
                {
                    TightenToolClient.SetPSet(newTightenConfig.BoltPset2.Value);
                    CurrentPset = newTightenConfig.BoltPset2.Value;
                }
                break;

            case 3:
                if (newTightenConfig.BoltPset3 != null && CurrentPset != newTightenConfig.BoltPset3.Value)
                {
                    TightenToolClient.SetPSet(newTightenConfig.BoltPset3.Value);
                    CurrentPset = newTightenConfig.BoltPset3.Value;
                }
                break;

            case 4:
                if (newTightenConfig.BoltPset4 != null && CurrentPset != newTightenConfig.BoltPset4.Value)
                {
                    TightenToolClient.SetPSet(newTightenConfig.BoltPset4.Value);
                    CurrentPset = newTightenConfig.BoltPset4.Value;
                }
                break;

            case 5:
                if (newTightenConfig.BoltPset5 != null && CurrentPset != newTightenConfig.BoltPset5.Value)
                {
                    TightenToolClient.SetPSet(newTightenConfig.BoltPset5.Value);
                    CurrentPset = newTightenConfig.BoltPset5.Value;
                }
                break;

            case 6:
                if (newTightenConfig.BoltPset6 != null && CurrentPset != newTightenConfig.BoltPset6.Value)
                {
                    TightenToolClient.SetPSet(newTightenConfig.BoltPset6.Value);
                    CurrentPset = newTightenConfig.BoltPset6.Value;
                }
                break;

            case 7:
                if (newTightenConfig.BoltPset7 != null && CurrentPset != newTightenConfig.BoltPset7.Value)
                {
                    TightenToolClient.SetPSet(newTightenConfig.BoltPset7.Value);
                    CurrentPset = newTightenConfig.BoltPset7.Value;
                }
                break;

            case 8:
                if (newTightenConfig.BoltPset8 != null && CurrentPset != newTightenConfig.BoltPset8.Value)
                {
                    TightenToolClient.SetPSet(newTightenConfig.BoltPset8.Value);
                    CurrentPset = newTightenConfig.BoltPset8.Value;
                }
                break;

            case 9:
                if (newTightenConfig.BoltPset9 != null && CurrentPset != newTightenConfig.BoltPset9.Value)
                {
                    TightenToolClient.SetPSet(newTightenConfig.BoltPset9.Value);
                    CurrentPset = newTightenConfig.BoltPset9.Value;
                }
                break;

            case 10:
                if (newTightenConfig.BoltPset10 != null && CurrentPset != newTightenConfig.BoltPset10.Value)
                {
                    TightenToolClient.SetPSet(newTightenConfig.BoltPset10.Value);
                    CurrentPset = newTightenConfig.BoltPset10.Value;
                }
                break;

            default:
                break;
            }
            return(rst);
        }
Beispiel #7
0
        /// <summary>
        /// 读取拧紧数据
        /// 这应该是TightenClient的回调方法
        /// </summary>
        /// <param name="msg"></param>
        private void ReadLastTightenData(TightenData result)
        {
            Debug.WriteLine($"MyController -> ReadLastTightenData ->  {result.Torque}");
            Debug.WriteLine($"MyController -> ReadLastTightenData ->  {result.Pset}");

            try
            {
                if (result == null || result.Torque == 0)
                {
                    return;
                }
                if (string.IsNullOrEmpty(CurrentEngineCode) == false)
                {
                    result.EngineCode = CurrentEngineCode;
                }

                TightenDatas.AddTightenData(result);
                result.JobResult = GetResult() ? 1 : 0;

                //手动给螺栓号赋值
                result.BoltNo = CurrentBoltIndex;
                if (CurrentBoltIndex == 0)
                {
                    OnLastTightenAction?.Invoke(tdConfig.ToolId, result);
                    return;
                }
                if (result.Result == 0) //NG
                {
                    TightenCount++;
                    Debug.WriteLine($"MyController -> ReadLastTightenData -> CurrentBoltIndex = {CurrentBoltIndex}");
                    Debug.WriteLine($"MyController -> ReadLastTightenData -> TightenCount = {TightenCount}");

                    if (TightenCount >= TightenCountLimit && TightenCountLimit != 0) //NG
                    {
                        //锁枪
                        //TODO:测试时注释
                        TightenToolClient.DisableTightenTool();
                        //调用结束事件
                        OnWorkUnitFinishedAction?.Invoke(tdConfig.ToolId, false, result);
                    }
                    else
                    {
                        //调用拧紧结果事件
                        OnLastTightenAction?.Invoke(tdConfig.ToolId, result);
                    }
                }
                else
                {
                    Debug.WriteLine($"MyController -> ReadLastTightenData -> CurrentBoltIndex = {CurrentBoltIndex}");
                    Debug.WriteLine($"MyController -> ReadLastTightenData -> TightenCount = {TightenCount}");
                    Debug.WriteLine($"MyController -> ReadLastTightenData -> newTightenConfig ==null? {newTightenConfig == null}");

                    //当前螺丝处理完再加1
                    if (CurrentBoltIndex == newTightenConfig.TightenPointNum)
                    {
                        //调用结束事件
                        OnWorkUnitFinishedAction?.Invoke(tdConfig.ToolId, true, result);
                        //锁枪
                        //TODO:测试时注释
                        TightenToolClient.DisableTightenTool();
                    }
                    else
                    {
                        CurrentBoltIndex++;
                        //调用拧紧结果事件
                        OnLastTightenAction?.Invoke(tdConfig.ToolId, result);
                        GotoNextBolt(CurrentBoltIndex);
                    }
                    //到下一颗螺丝时,拧紧次数清0
                    TightenCount = 0;
                }
            }
            catch (Exception ex)
            {
                Log.Error("ReadLastTightenData", ex);
            }
        }
Beispiel #8
0
 public void Close()
 {
     TightenToolClient.Close();
     TightenToolClient = null;
 }