コード例 #1
0
        public void AutoMove()
        {
            AutoStep = 1;



            while (AutoStep != 0)
            {
                switch (AutoStep)
                {
                case 1:
                {
Auto1:
                    AxisMove(3, VarClass.AutoSpeed[3], VarClass.XAxis_Location[0]);           //X轴到换料位
                    AxisMove(4, VarClass.AutoSpeed[4], VarClass.YAxis_Location[0]);           //Y轴到换料位
                    //读取下标为3.4轴的运动状态
                    while ((LTDMC.dmc_check_done(0, 3) == 0) || (VarClass.XAxis_Location[0] != VarClass.Pulse_Current[3]) ||
                           (LTDMC.dmc_check_done(0, 4) == 0) || (VarClass.YAxis_Location[0] != VarClass.Pulse_Current[4]))
                    {
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            PublicClass.AxisStop(0, 3, 0);           //XAxis停止
                            PublicClass.AxisStop(0, 4, 0);           //YAxis轴停止

                            Thread.Sleep(5);
                            if (!VarClass.Pause_Flag)
                            {
                                goto Auto1;
                            }
                        }
                    }
                    if (VarClass.StopState == "outing")
                    {
                        VarClass.StopState = "outed";
                        myFrMain.Invoke((MethodInvoker) delegate
                            {
                                myFrMain.addLog("XY轴到换料位,下步点击进入按钮", Color.Black);
                            });
                    }
                    else
                    {
                        myFrMain.Invoke((MethodInvoker) delegate
                            {
                                myFrMain.addLog("XY轴到换料位,选择测试", Color.Black);
                            });
                    }
                    ///saoma
                    AutoStep = 2;
                    break;
                }

                case 2:
                {
                    while ((VarClass.TestNumber == 0) || (VarClass.StopState != ""))         //开始测试
                    {
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            Thread.Sleep(5);
                        }
                    }

                    myFrMain.Invoke((MethodInvoker) delegate
                        {
                            myFrMain.addLog("选择测试完成,下步双手启动", Color.Black);
                        });
                    while (!VarClass.ReadIN[0] || !VarClass.ReadIN[1])           //双手启动
                    {
                        VarClass.HandsStart = true;
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            Thread.Sleep(5);
                        }
                    }
                    VarClass.HandsStart = false;
                    while (!VarClass.ReadIN[5])           //接近感应器
                    {
                        MessageBox.Show("接近没有感应到");
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            Thread.Sleep(5);
                        }
                    }
                    myFrMain.Invoke((MethodInvoker) delegate
                        {
                            myFrMain.addLog("接近感应到,下步XY轴去扫码位", Color.Black);
                        });
Auto2:
                    AxisMove(3, VarClass.AutoSpeed[3], VarClass.XAxis_Location[1]);           //X轴到扫码位
                    AxisMove(4, VarClass.AutoSpeed[4], VarClass.YAxis_Location[1]);           //Y轴到扫码位
                    while ((LTDMC.dmc_check_done(0, 3) == 0) || (VarClass.XAxis_Location[1] != VarClass.Pulse_Current[3]) || (LTDMC.dmc_check_done(0, 4) == 0) || (VarClass.YAxis_Location[1] != VarClass.Pulse_Current[4]))
                    {
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            PublicClass.AxisStop(0, 3, 0);           //XAxis停止
                            PublicClass.AxisStop(0, 4, 0);           //YAxis轴停止

                            Thread.Sleep(5);
                            if (!VarClass.Pause_Flag)
                            {
                                goto Auto2;
                            }
                        }
                    }
                    myFrMain.Invoke((MethodInvoker) delegate
                        {
                            myFrMain.addLog("下步XY轴到扫码位,下步扫码Z轴去扫码位", Color.Black);
                        });
                    Auto50 : PublicClass.AxisMove(2, VarClass.AutoSpeed[2], VarClass.ScanZ_Location[1]);      //扫码Z轴到扫描位
                    while ((LTDMC.dmc_check_done(0, 2) == 0) || (VarClass.ScanZ_Location[1] != VarClass.Pulse_Current[2]))
                    {
                        Thread.Sleep(5);

                        while (VarClass.Pause_Flag)
                        {
                            PublicClass.AxisStop(0, 2, 0);           //扫码Z轴停止

                            Thread.Sleep(5);
                            if (!VarClass.Pause_Flag)
                            {
                                goto Auto50;
                            }
                        }
                    }



                    myFrMain.Invoke((MethodInvoker) delegate
                        {
                            myFrMain.addLog("扫码Z轴到扫码位,下步扫码", Color.Black);
                        });



                    while (!VarClass.IsScanOK)
                    {
                        VarClass.ClientString[1] = "";
                        // Scan.ClientSend1("T");
                        Scan.ClientSend3("T");

                        // Scan.ClientSend3("T");
                        Thread.Sleep(2000);
                        if ((VarClass.ClientString[2] != "NG") && (VarClass.ClientString[2] != ""))
                        {
                            string ScanString = HttpVar.barcode = VarClass.ClientString[2];


                            VarClass.IsScanOK = true;
                            myFrMain.Invoke((MethodInvoker) delegate
                                {
                                    myFrMain.addLog("扫码成功:" + HttpVar.barcode + ",下步XY去测料位", Color.Black);
                                });
                        }
                        else
                        {
                            MessageBox.Show("扫码失败");
                            myFrMain.Invoke((MethodInvoker) delegate
                                {
                                    myFrMain.addLog("扫码失败", Color.Black);
                                });
                        }
                    }
                    VarClass.IsScanOK = false;
                    AutoStep          = 3;
                    break;
                }

                case 3:
                {
Auto3:
                    AxisMove(3, VarClass.AutoSpeed[3], VarClass.XAxis_Location[2]);           //X轴到测料位
                    AxisMove(4, VarClass.AutoSpeed[4], VarClass.YAxis_Location[2]);           //Y轴到测料位
                    while ((LTDMC.dmc_check_done(0, 3) == 0) || (VarClass.XAxis_Location[2] != VarClass.Pulse_Current[3]) || (LTDMC.dmc_check_done(0, 3) == 0) || (VarClass.YAxis_Location[2] != VarClass.Pulse_Current[4]))
                    {
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            PublicClass.AxisStop(0, 3, 0);           //XAxis停止
                            PublicClass.AxisStop(0, 4, 0);           //YAxis轴停止

                            Thread.Sleep(5);
                            if (!VarClass.Pause_Flag)
                            {
                                goto Auto3;
                            }
                        }
                    }
                    myFrMain.Invoke((MethodInvoker) delegate
                        {
                            myFrMain.addLog("XY轴到测料位,下步大轴下", Color.Black);
                        });
                    AutoStep = 4;
                    break;
                }

                case 4:
                {
Auto4:
                    PublicClass.AxisJogMove(0, VarClass.AutoSpeed[0], 0); //大轴下,速度,方向

                    while (!VarClass.ReadIN[10])                          //对射光纤
                    {
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            PublicClass.AxisStop(0, 0, 0);           //XAxis停止


                            Thread.Sleep(5);
                            if (!VarClass.Pause_Flag)
                            {
                                goto Auto4;
                            }
                        }
                    }
                    PublicClass.AxisStop(0, 0, 0);           //XAxis停止

                    myFrMain.Invoke((MethodInvoker) delegate
                        {
                            myFrMain.addLog("大轴到位,下步左右气缸回", Color.Black);
                        });

                    //PublicClass.WriteOUT(0, 12, 1);//左气缸回
                    //PublicClass.WriteOUT(0, 13, 0);

                    AutoStep = 5;
                    break;
                }

                case 5:
                {
                    PublicClass.WriteOUT(0, 6, 1);                       //左右气缸回
                    PublicClass.WriteOUT(0, 7, 0);
                    while (!VarClass.ReadIN[14] || !VarClass.ReadIN[17]) //左,右气缸回限
                    {
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            Thread.Sleep(5);
                        }
                    }
                    Thread.Sleep(500);
                    myFrMain.Invoke((MethodInvoker) delegate
                        {
                            myFrMain.addLog("左,右气缸到回限,下步小Z轴下", Color.Black);
                        });
Auto5:
                    AxisMove(1, VarClass.AutoSpeed[1], VarClass.SmallZ_Location[1]);           //小Z轴下

                    while ((LTDMC.dmc_check_done(0, 1) == 0) || (VarClass.SmallZ_Location[1] != VarClass.Pulse_Current[1]))
                    {
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            PublicClass.AxisStop(0, 1, 0);           //XAxis停止


                            Thread.Sleep(5);
                            if (!VarClass.Pause_Flag)
                            {
                                goto Auto5;
                            }
                        }
                    }
                    VarClass.ImpactCurrentNum[VarClass.TestNumber - 1] = VarClass.ImpactCurrentNum[VarClass.TestNumber - 1] + 1;
                    myFrMain.Invoke((MethodInvoker) delegate
                        {
                            myFrMain.addLog("小轴到位,下步左右气缸出", Color.Black);
                        });
                    AutoStep = 10;
                    break;
                }

                case 10:
                {
                    //PublicClass.WriteOUT(0, 12, 0);//左气缸出
                    //PublicClass.WriteOUT(0, 13, 1);
                    PublicClass.WriteOUT(0, 6, 0);                       //左右气缸出
                    PublicClass.WriteOUT(0, 7, 1);
                    while (!VarClass.ReadIN[13] || !VarClass.ReadIN[16]) //左,右气缸出限
                    {
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            Thread.Sleep(5);
                        }
                    }

                    if ((VarClass.ImpactCurrentNum[VarClass.TestNumber - 1] < Convert.ToInt32(VarClass.Excel_specificationsNum[VarClass.TestNumber - 1])) && VarClass.StopState != "outing")
                    {
                        myFrMain.Invoke((MethodInvoker) delegate
                            {
                                myFrMain.addLog("左,右气缸到出限,下步小Z轴上", Color.Black);
                            });
Auto10:
                        AxisMove(1, VarClass.AutoSpeed[1], VarClass.SmallZ_Location[0]);           //小Z轴到上位
                        while ((LTDMC.dmc_check_done(0, 1) == 0) || (VarClass.SmallZ_Location[0] != VarClass.Pulse_Current[1]))
                        {
                            while (VarClass.Pause_Flag)
                            {
                                PublicClass.AxisStop(0, 1, 0);           //XIAOZ轴轴停止

                                Thread.Sleep(5);
                                if (!VarClass.Pause_Flag)
                                {
                                    goto Auto10;
                                }
                            }
                        }

                        AutoStep = 5;
                        break;
                    }
                    else
                    {
                        myFrMain.Invoke((MethodInvoker) delegate
                            {
                                myFrMain.addLog("左,右气缸到出限,下步大小Z轴上", Color.Black);
                            });
                        //  VarClass.ImpactCurrentNum[VarClass.TestNum-1] = 0;
                        AutoStep = 6;
                        break;
                    }
                }

                case 6:
                {
Auto6:
                    AxisMove(0, VarClass.AutoSpeed[0], VarClass.BigZ_Location[0]);           //大Z轴到上位
                    AxisMove(1, VarClass.AutoSpeed[1], VarClass.SmallZ_Location[0]);         //小Z轴到上位
                    while ((LTDMC.dmc_check_done(0, 0) == 0) || (VarClass.BigZ_Location[0] != VarClass.Pulse_Current[0]) || (LTDMC.dmc_check_done(0, 1) == 0) || (VarClass.SmallZ_Location[0] != VarClass.Pulse_Current[1]))
                    {
                        Thread.Sleep(5);
                        while (VarClass.Pause_Flag)
                        {
                            PublicClass.AxisStop(0, 0, 0);           //大Z轴停止
                            PublicClass.AxisStop(0, 1, 0);           //大Z轴轴停止

                            Thread.Sleep(5);
                            if (!VarClass.Pause_Flag)
                            {
                                goto Auto6;
                            }
                        }
                    }

                    if (VarClass.StopState == "outing")
                    {
                    }
                    else

                    {
                        HttpVar.end_time[VarClass.TestNumber - 1] = (DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).ToString();
                        VarClass.TestEnd[VarClass.TestNumber - 1] = true;        //测试完成
                        VarClass.Testing = false;
                    }


                    myFrMain.Invoke((MethodInvoker) delegate
                        {
                            myFrMain.addLog("大小轴到位,下步XY轴到换料位", Color.Black);
                        });
                    AutoStep = 1;
                    break;
                }
                }
            }
        }