Exemplo n.º 1
0
        public XYUZPoint GetDstMachinePos(int nNozzleIndex)
        {
            if (nNozzleIndex > NozzleMgr.GetInstance().nozzleArr.Length || nNozzleIndex < 0)
            {
                return(new XYUZPoint());
            }

            return(NozzleMgr.GetInstance().nozzleArr[nNozzleIndex - 1].DstMachinePos);
        }
Exemplo n.º 2
0
 public void SetObjMachinePos(int nNozzleIndex, double dObjx, double dObjy, double dObju)
 {
     if (eventUpdatNozzleData != null)
     {
         eventUpdatNozzleData(nNozzleIndex, "SetObjMachinePos", dObjx, dObjy, dObju);
     }
     NozzleMgr.GetInstance().nozzleArr[nNozzleIndex - 1].ObjMachinePos = new XYUPoint()
     {
         x = dObjx,
         y = dObjy,
         u = dObju,
     };
 }
Exemplo n.º 3
0
 public void SetDstMachinePos(int nNozzleIndex, double dDstx, double dDsty, double dDstu, double Z = 0)
 {
     if (eventUpdatNozzleData != null)
     {
         eventUpdatNozzleData(nNozzleIndex, "SetDstMachinePos", dDstx, dDsty, dDstu);
     }
     NozzleMgr.GetInstance().nozzleArr[nNozzleIndex - 1].DstMachinePos = new XYUZPoint()
     {
         x = dDstx,
         y = dDsty,
         u = dDstu,
         z = Z,
     };
 }
Exemplo n.º 4
0
 public static NozzleMgr GetInstance()
 {
     if (nozzleMgr == null)
     {
         lock (obj)
         {
             if (nozzleMgr == null)
             {
                 nozzleMgr = new NozzleMgr();
             }
         }
     }
     return(nozzleMgr);
 }
Exemplo n.º 5
0
        /// <summary>
        /// 初始化产品数据参数
        /// </summary>
        public static void InitProductNum()
        {
            NozzleMgr.GetInstance().Read();
            try
            {
                StationTable stationTable = (StationTable)StationMgr.GetInstance().GetStation("转盘站");

                TableData.GetInstance().Add(stationTable.GetStationPointDic()["A工位AA位"].pointU, 2);
                TableData.GetInstance().Add(stationTable.GetStationPointDic()["A工位夹取位"].pointU, 2);
                TableData.GetInstance().Add(stationTable.GetStationPointDic()["B工位AA位"].pointU, 1);
                TableData.GetInstance().Add(stationTable.GetStationPointDic()["B工位夹取位"].pointU, 1);

                TableData.GetInstance().AddPosStationName(stationTable.GetStationPointDic()["A工位AA位"].pointU, "A_AA");
                TableData.GetInstance().AddPosStationName(stationTable.GetStationPointDic()["A工位夹取位"].pointU, "A_Pick");
                TableData.GetInstance().AddPosStationName(stationTable.GetStationPointDic()["B工位AA位"].pointU, "B_AA");
                TableData.GetInstance().AddPosStationName(stationTable.GetStationPointDic()["B工位夹取位"].pointU, "B_Pick");

                TableData.GetInstance().AddStationResult("A_AA", false);
                TableData.GetInstance().AddStationResult("A_Pick", false);
                TableData.GetInstance().AddStationResult("B_AA", false);
                TableData.GetInstance().AddStationResult("B_Pick", false);
                TableData.GetInstance().AddStationResult("A_UnLoadLoad", false);
                TableData.GetInstance().AddStationResult("B_UnLoadLoad", false);

                TableData.GetInstance().dicTableCmdStart.Add("A_AA", false);
                TableData.GetInstance().dicTableCmdStart.Add("B_AA", false);
                TableData.GetInstance().dicTableCmdStart.Add("A_Pick", false);
                TableData.GetInstance().dicTableCmdStart.Add("B_Pick", false);
                TableData.GetInstance().dicTableCmdStart.Add("A_UnLoadLoad", false);
                TableData.GetInstance().dicTableCmdStart.Add("B_UnLoadLoad", false);


                TableData.GetInstance().AxisNo = stationTable.AxisU;
                TableData.GetInstance().listPoss.Clear();
                TableData.GetInstance().listPoss.Add(stationTable.GetStationPointDic()["A工位夹取位"].pointU);
                TableData.GetInstance().listPoss.Add(stationTable.GetStationPointDic()["A工位AA位"].pointU);
                TableData.GetInstance().listPoss.Add(stationTable.GetStationPointDic()["B工位夹取位"].pointU);
                TableData.GetInstance().listPoss.Add(stationTable.GetStationPointDic()["B工位AA位"].pointU);
            }
            catch (Exception e)
            {
            }


            //
        }
        protected override void StationWork(int step)
        {
            if (ParamSetMgr.GetInstance().GetIntParam("右剥料屏蔽") == 1)
            {
                ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", true);
                return;
            }

            WaranResult waranResult;
            bool        bfind       = ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功");
            bool        bgooripos   = ParamSetMgr.GetInstance().GetBoolParam("右剥料归位");
            PlaneState  planeState  = PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState;
            NozzleState nozzleState = NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState;

            if (ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功") && ParamSetMgr.GetInstance().GetBoolParam("右剥料归位") &&
                PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState == PlaneState.None &&
                NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState == NozzleState.Have &&
                GlobalVariable.g_StationState == StationState.StationStateRun)
            {
                Info(string.Format("右装料平台有无感应器{0},右搜寻蜂鸣器成功{1},右拨料平台状态{2},右剥料吸嘴状态{3} 右剥料归位{4}",
                                   IOMgr.GetInstace().ReadIoInBit("右装料平台有无感应器"),
                                   ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功"),
                                   PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState,
                                   NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState,
                                   ParamSetMgr.GetInstance().GetBoolParam("右剥料归位")));
                ///loadState = LoadState.exceing;
                Carray();
                // loadState = LoadState.None;
            }
            switch (step)
            {
            case (int)StationStep.step_init:
                Init();
retry_FindBuzzer:
                waranResult = FindBuzzer();
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_FindBuzzer;
                }

                if (ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功"))
                {
retry_go_蜂鸣器顶位:
                    if (sys.g_AppMode == AppMode.AirRun)
                    {
                        ParamSetMgr.GetInstance().SetIntParam("右蜂鸣器顶位", (int)GetStationPointDic()["装料原始位"].pointZ);
                    }

                    WaranResult waranResult1 = MoveSigleAxisPosWaitInpos(AxisZ, ParamSetMgr.GetInstance().GetIntParam("右蜂鸣器顶位"), (int)MotionMgr.GetInstace().GetAxisMovePrm(AxisZ).VelH, 20, false, this, 60000);
                    if (waranResult1 == WaranResult.Retry)
                    {
                        goto retry_go_蜂鸣器顶位;
                    }
                }
                MoveSigleAxisPosWaitInpos(AxisY, GetStationPointDic()["剥料准备位"].pointY, (double)SpeedType.High, 20, false, this, 60000);
                PushMultStep((int)StationStep.step_Separate);
                ParamSetMgr.GetInstance().SetBoolParam("右剥料归位", true);
                ParamSetMgr.GetInstance().SetIntParam("右剥料次数", 0);
                DelCurrentStep();
                break;

            case (int)StationStep.step_Separate:
                ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", false);
                if (PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState == PlaneState.None)
                {
                    break;
                }

                int Count = ParamSetMgr.GetInstance().GetIntParam("右剥料次数");
                if (Count > 6)
                {
                    PushMultStep((int)StationStep.step_Separate);
                    DelCurrentStep();
                    break;
                }

                Separate(Count);

                Count = ParamSetMgr.GetInstance().GetIntParam("右剥料次数");
                if (Count >= 2 && Count <= 6)
                {
                    ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", true);
                    PushMultStep((int)StationStep.step_WaitGetFinish);
                    DelCurrentStep();
                }
                else if (Count > 6)
                {
                    ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", false);
                    PushMultStep((int)StationStep.step_Separate);

                    DelCurrentStep();
                    break;
                }
                else
                {
                    PushMultStep((int)StationStep.step_Separate);
                    DelCurrentStep();
                }
                break;

            case (int)StationStep.step_WaitGetFinish:
                if (ParamSetMgr.GetInstance().GetBoolParam("右剥料取料完成"))
                {
                    ParamSetMgr.GetInstance().SetBoolParam("右剥料取料完成", false);
                    PushMultStep((int)StationStep.step_Separate);
                    DelCurrentStep();
                }
                break;
            }
        }
        private void LoadWortk(bool bManual = false)
        {
            try
            {
                if (!ParamSetMgr.GetInstance().GetBoolParam("右剥料回原点成功"))
                {
                    return;
                }
                if (!IOMgr.GetInstace().ReadIoInBit("右装料平台有无感应器") &&
                    !ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功") &&
                    loadState != LoadState.exceing &&
                    sys.g_AppMode == AppMode.AirRun &&
                    GlobalVariable.g_StationState == StationState.StationStateRun)
                {
                    Info(string.Format("右装料平台有无感应器{0},右搜寻蜂鸣器成功{1},右拨料平台状态{2},右剥料吸嘴状态{3} 右剥料归位{4}",
                                       IOMgr.GetInstace().ReadIoInBit("右装料平台有无感应器"),
                                       ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功"),
                                       PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState,
                                       NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState,
                                       ParamSetMgr.GetInstance().GetBoolParam("右剥料归位")));
retry_find:
                    loadState = LoadState.exceing;
                    WaranResult waranResult = FindBuzzer();
                    if (waranResult == WaranResult.Retry)
                    {
                        goto retry_find;
                    }
                    loadState = LoadState.None;
                }


                if (ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功") &&
                    ParamSetMgr.GetInstance().GetBoolParam("右装料平台上升到位") &&
                    NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState == NozzleState.None &&
                    loadState != LoadState.exceing &&
                    GlobalVariable.g_StationState == StationState.StationStateRun)
                {
                    Info(string.Format("右装料平台有无感应器{0},右搜寻蜂鸣器成功{1},右拨料平台状态{2},右剥料吸嘴状态{3} 右剥料归位{4}",
                                       IOMgr.GetInstace().ReadIoInBit("右装料平台有无感应器"),
                                       ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功"),
                                       PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState,
                                       NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState,
                                       ParamSetMgr.GetInstance().GetBoolParam("右剥料归位")));
                    loadState = LoadState.exceing;
                    Pick();
                    loadState = LoadState.None;
                }

                if (ParamSetMgr.GetInstance().GetBoolParam("右搜寻蜂鸣器成功") &&
                    !ParamSetMgr.GetInstance().GetBoolParam("右装料平台上升到位") &&
                    GlobalVariable.g_StationState == StationState.StationStateRun)
                {
                    Info("装料步进运动");
                    int    pos     = MotionMgr.GetInstace().GetAxisPos(AxisZ);
                    double steplen = ParamSetMgr.GetInstance().GetDoubleParam("装料步长");
                    pos = pos + (int)(steplen * nResolutionZ);
                    MoveSigleAxisPosWaitInpos(AxisZ, pos, MotionMgr.GetInstace().GetAxisMovePrm(AxisZ).VelH, 20, bManual, this);
                    ParamSetMgr.GetInstance().SetBoolParam("右装料平台上升到位", true);
                }
            }
            catch (Exception e)
            {
                loadState = LoadState.None;
                Warn("异常发生" + e.Message);
                return;
            }
        }
        public bool Carray(bool bmanul = false)
        {
            Info("右剥料工站:搬运气缸开始搬运物料");
            WaranResult waranResult;

            // CheckAndUp(bmanul);
retry_carry_up:
            ParamSetMgr.GetInstance().SetBoolParam("右剥料完成", false);
            Info("右装料Z轴气缸电磁阀 上升");
            IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false);
            waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料工站:右装料Z轴气缸电磁阀 上升失败,请检查气缸和感应器 线路 ", bmanul);
            if (waranResult == WaranResult.Retry)
            {
                goto retry_carry_up;
            }
            StationRightPackage stationLeftPackage = (StationRightPackage)StationMgr.GetInstance().GetStation("右贴装站");
            int AxisYNooFPageBack = stationLeftPackage.AxisY;
            int AxiXYNooFPageBack = stationLeftPackage.AxisX;

retry_carryMoving:
            if (MotionMgr.GetInstace().GetHomeFinishFlag(AxisY) == AxisHomeFinishFlag.Homed && MotionMgr.GetInstace().GetAxisPos(AxisY) > GetStationPointDic()["剥料准备位"].pointY - 50 &&
                MotionMgr.GetInstace().GetHomeFinishFlag(AxisYNooFPageBack) == AxisHomeFinishFlag.Homed && MotionMgr.GetInstace().GetAxisPos(AxisYNooFPageBack) < stationLeftPackage.GetStationPointDic()["搬料安全位"].pointY - 50
                )
            {
#if false
                IOMgr.GetInstace().WriteIoBit("右剥料前推压紧气缸电磁阀", true);
                waranResult = CheckIobyName("右剥料前推压紧气缸到位", true, "右剥料工站:右剥料前推压紧气缸到位失败,请检查气缸和感应器 线路 ", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carryMoving;
                }

                IOMgr.GetInstace().WriteIoBit("右剥料压紧气缸电磁阀", true);
                waranResult = CheckIobyName("右剥料压紧气缸到位", true, "右剥料工站:右剥料压紧气缸到位失败,请检查气缸和感应器 线路 ", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carryMoving;
                }
#endif
                Info("右装料搬运气缸电磁阀 移动搬料");
                IOMgr.GetInstace().WriteIoBit("右装料搬运气缸电磁阀", true);
                waranResult = CheckIobyName("右装料搬运气缸到位", true, "右剥料工站:右装料搬运气缸到位失败,物料可能掉落,请检查气缸和感应器 线路 ", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carryMoving;
                }

                //  CheckBuzzerPlaneAndUp();

retry_carry_down:
                Info("右装料Z轴气缸电磁阀 下降");
                IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", true);
                waranResult = CheckIobyName("右装料Z轴气缸到位", true, "右剥料工站:右装料Z轴气缸原下降失败,物料可能掉落,请检查气缸和感应器 线路 ", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carry_down;
                }

                Info("右装料真空吸电磁阀 关闭");
                Info("右装料破真空电磁阀 打开");
                Info("右剥料真空吸电磁阀 打开");
                IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", true);
                IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false);
                IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", true);
                Thread.Sleep(ParamSetMgr.GetInstance().GetIntParam("吸真空延时"));

                IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false);
retry_carry_up2:
                Info("右装料Z轴气缸电磁阀 上升");
                IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false);
                waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料工站:右装料Z轴气缸电磁阀 上升 失败,请检查气缸和感应器 线路 ", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carry_up2;
                }

                waranResult = CheckIobyName("右剥料真空检测", true, "右剥料工站:Carray:蜂鸣器片 在剥料平台未吸紧", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carry_down;
                }

                Info("右装料真空吸电磁阀 复检 检查料是否脱落");
                IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false);
                IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", true);
                waranResult = CheckIobyName("右装料真空检测", false, "右剥料工站 :Carray:蜂鸣器片 在装料抓手上未脱离", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carry_down;
                }
                IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false);


retry_carryMovingback:
                Info("右装料搬运气缸电磁阀 移动搬料");
                IOMgr.GetInstace().WriteIoBit("右装料搬运气缸电磁阀", false);
                waranResult = CheckIobyName("右装料搬运气缸原位", true, "右剥料工站:Carray:搬运气缸回到原位", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carryMovingback;
                }
                IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false);
                IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false);
                IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", false);
                IOMgr.GetInstace().WriteIoBit("右剥料后压紧气缸电磁阀", false);
                ParamSetMgr.GetInstance().SetIntParam("右剥料次数", 0);
                NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState = NozzleState.None;
                PlaneMgr.GetInstance().PlaneArr[(int)PlaneType.rightStripPlane].planeState      = PlaneState.Have;
                return(true);
            }
            else
            {
                Info("Y轴 在剥料准备位前 不能移动 请挪开 或者 右剥料平台Y轴 没有回原点");
                return(false);

                WaranResult waranResult2 = AlarmMgr.GetIntance().WarnWithDlg("Y轴 在剥料准备位前 不能移动 请挪开 或者 右剥料平台Y轴 没有回原点", bmanul ? null : this, CommonDlg.DlgWaranType.WaranInorge_Stop_Pause_Retry);
                if (waranResult2 == WaranResult.Retry)
                {
                    goto retry_carryMoving;
                }
            }
        }
        public bool Pick(bool bmanul = false)
        {
            WaranResult waranResult;

            // CheckAndUp(bmanul);
retry_carry_up:
            Info("右装料Z轴气缸电磁阀 上升");
            IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false);
            waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料工站:右装料Z轴气缸电磁阀 上升失败,请检查气缸和感应器 线路 ", bmanul);
            if (waranResult == WaranResult.Retry)
            {
                goto retry_carry_up;
            }

            if (bmanul || NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState == NozzleState.None)
            {
retry_Self_Checking:
                IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", true);
                waranResult = CheckIobyName("右剥料真空检测", false, "右剥料平台:Carray:蜂鸣器片 在剥料平台有料 请挪开", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", false);
                    goto retry_Self_Checking;
                }
                IOMgr.GetInstace().WriteIoBit("右剥料真空吸电磁阀", false);
                IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false);
                IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", true);
                waranResult = CheckIobyName("右装料真空检测", false, "右剥料平台:Carray:蜂鸣器片 右装料吸嘴可能堵住", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false);
                    IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", false);
                    goto retry_Self_Checking;
                }

retry_carry:
                IOMgr.GetInstace().WriteIoBit("右装料搬运气缸电磁阀", false);
                Info("右装料搬运气缸 移动到装料顶部");
                waranResult = CheckIobyName("右装料搬运气缸原位", true, "右剥料工站:右装料搬运气缸原位未到,请检查气缸和感应器 线路 ", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carry;
                }

                Info("右装料Z轴气缸电磁阀 下降");
                IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", true);
                waranResult = CheckIobyName("右装料Z轴气缸到位", true, "右剥料工站:右装料Z轴气缸电磁阀 下降失败,请检查气缸和感应器 线路 ", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carry;
                }

                Info("右装料破真空电磁阀 关闭"); Info("右装料真空吸电磁阀 打开");
                IOMgr.GetInstace().WriteIoBit("右装料破真空电磁阀", false);
                IOMgr.GetInstace().WriteIoBit("右装料真空吸电磁阀", true);

                Thread.Sleep(ParamSetMgr.GetInstance().GetIntParam("吸真空延时"));

retry_carry_1:
                Info("右装料Z轴气缸电磁阀 上升");
                IOMgr.GetInstace().WriteIoBit("右装料Z轴气缸电磁阀", false);
                waranResult = CheckIobyName("右装料Z轴气缸原位", true, "右剥料工站:右装料Z轴气缸电磁阀 上升失败,请检查气缸和感应器 线路 ", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carry_1;
                }

                Info("右装料真空吸 检查");
                waranResult = CheckIobyName("右装料真空检测", true, "右剥料工站:右装料真空吸 检查失败,物料可能掉落,请检查气缸和感应器 线路 ", bmanul);
                if (waranResult == WaranResult.Retry)
                {
                    goto retry_carry;
                }
                NozzleMgr.GetInstance().nozzleArr[(int)NozzleType.RightStripNozzle].nozzleState = NozzleState.Have;
                ParamSetMgr.GetInstance().SetBoolParam("右装料平台上升到位", false);
            }
            return(true);
        }
Exemplo n.º 10
0
 public XYUPoint GetObjSnapPos(int nNozzleIndex)
 {
     return(NozzleMgr.GetInstance().nozzleArr[nNozzleIndex - 1].ObjSnapMachinePos);
 }