Example #1
0
        public bool currLoadPointIndex; // 当前落脚点

        public hyCarrier(hyWorkFlow wf)
        {
            this.workFlow = wf;
            pos           = hyWorkFlow.POS_LOAD;
            currPosDraw   = new ServoPoint(LayoutDrawing.loadPoints[hyWorkFlow.POS_LOAD].X, LayoutDrawing.loadPoints[hyWorkFlow.POS_LOAD].Z);
            currPosReal   = new ServoPoint(ABTask.loadPoints[hyWorkFlow.POS_LOAD].X, ABTask.loadPoints[hyWorkFlow.POS_LOAD].Z);
        }
Example #2
0
    public LayoutDrawing()
    {
        // -----------------------------------------------------------------------------
        //
        //  动画的装载点位
        //
        logicPoints[0] = loadPoints[hyWorkFlow.POS_LOAD] = new ServoPoint(0, 100);// 装载点
        logicPoints[1] = loadPoints[0] = new ServoPoint(145, 171);
        logicPoints[2] = loadPoints[1] = new ServoPoint(213, 171);
        logicPoints[3] = loadPoints[2] = new ServoPoint(283, 171);

        logicPoints[4] = loadPoints[3] = new ServoPoint(370, 156);
        logicPoints[5] = loadPoints[4] = new ServoPoint(466, 156);
        logicPoints[6] = loadPoints[5] = new ServoPoint(562, 156);
        logicPoints[7] = loadPoints[6] = new ServoPoint(650, 156);

        //logicPoints[8] = loadPoints[7] = new ServoPoint(880, 171);
        logicPoints[8] = loadPoints[7] = new ServoPoint(733, 171);
        logicPoints[9] = loadPoints[8] = new ServoPoint(806, 171);

        //logicPoints[10] = loadPoints[9] = new ServoPoint(733, 171);
        logicPoints[10] = loadPoints[9] = new ServoPoint(880, 171);


        logicPoints[12] = loadPoints[hyWorkFlow.POS_IDLE] = new ServoPoint(954, 156);// 空地
        logicPoints[11] = loadPoints[10] = new ServoPoint(964, 156);
        logicPoints[13] = loadPoints[11] = new ServoPoint(1093, 156);
        logicPoints[14] = loadPoints[12] = new ServoPoint(1188, 156);
        logicPoints[15] = loadPoints[hyWorkFlow.POS_UNLOAD] = new ServoPoint(1380, 100);// 卸载点
        //loadPoints[hyWorkFlow.POS_ZERO] = zeroPos;// 零点
        //
        destPosDraw = new ServoPoint(0, 0);
        currPosDraw = new ServoPoint(zeroPos.X, zeroPos.Z);
        // -----------------------------------------------------------------------------
        //
        //  任务线程
        //
        threadAB = new Thread(new ThreadStart(ThreadAB)); //也可简写为 new Thread(ThreadMethod);
        threadAB.Start(); //启动线程

        //
        threadOpenStoveLid = new Thread(new ThreadStart(ThreadOpenStoveLid));
        threadOpenStoveLid.Start();// 打开、关闭炉盖任务

        if (drawOnly)
        {// 模拟操作
            for (int i = 0; i < 7; i++)
            {
                SerialManual.stoveLidState[i] = SerialManual.STOVE_LID_STATE.CLOSED;
            }
        }
    }
Example #3
0
    public ABTask LoadXmlNodeTaskInfo()
    {
        if (xmlDoc == null)
        {
            xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlName); //加载xml文件
            xroot = xmlDoc.SelectSingleNode("task");
        }

        XmlNodeList xnl  = xroot.ChildNodes;
        ABTask      task = null;

        foreach (hyWorkFlow wf in workGroup.workFlowList)
        {
            if (wf.carrier.status == hyCarrier.STATUS.DOING_CHANGE_OVER)
            {                                                                           // 寻找当前正在换型的夹具
                if (wf.carrier.id == Convert.ToInt32(xnl[3].InnerText))
                {                                                                       // 确定夹具ID是一致的(复查)
                    task            = new ABTask(wf);
                    task.taskStatus = (ABTask.STATUS)Convert.ToInt32(xnl[0].InnerText); // task_status
                    task.AB_TASK_A  = Convert.ToInt32(xnl[1].InnerText);                // A
                    task.AB_TASK_B  = Convert.ToInt32(xnl[2].InnerText);                // B

                    task.carrier = wf.carrier;
                    currCarrier  = wf.carrier;
                    carrierList.Add(currCarrier);
                    int p = task.AB_TASK_A;
                    switch (task.taskStatus)
                    {
                    case ABTask.STATUS.IDLE:
                    case ABTask.STATUS.PREA:
                    case ABTask.STATUS.CLAMPA:
                        p = task.AB_TASK_A;
                        break;

                    default:
                        p = task.AB_TASK_B;
                        break;
                    }
                    currCarrier.currPosDraw = new ServoPoint(loadPoints[p].X, loadPoints[p].Z);
                    currPosDraw             = new ServoPoint(currCarrier.currPosDraw.X, currCarrier.currPosDraw.Z);
                    taskList.Add(task);
                }
            }
        }
        return(task);
    }
Example #4
0
        public static void Init()
        {
            if (loadPoints == null)
            {
                // -----------------------------------------------------------------------------
                //
                //  实际装载点位
                //
                loadPoints     = new ServoPoint[hyProcess.loadPointsNum];
                logicPoints    = new ServoPoint[hyProcess.loadPointsNum];
                logicPoints[0] = loadPoints[hyWorkFlow.POS_LOAD] = new ServoPoint(0, 1360);// 装载点

                logicPoints[1] = loadPoints[0] = new ServoPoint(2795, 2810);
                logicPoints[2] = loadPoints[1] = new ServoPoint(4215, 2810);
                logicPoints[3] = loadPoints[2] = new ServoPoint(5560, 2810);

                logicPoints[4] = loadPoints[3] = new ServoPoint(7250, 2670);
                logicPoints[5] = loadPoints[4] = new ServoPoint(9130, 2685);
                logicPoints[6] = loadPoints[5] = new ServoPoint(10920, 2720);
                logicPoints[7] = loadPoints[6] = new ServoPoint(12765, 2700);

                logicPoints[8] = loadPoints[7] = new ServoPoint(14460, 2805);
                //logicPoints[8] = loadPoints[7] = new ServoPoint(17120, 2820);//第6号水槽作为第4个位置

                logicPoints[9] = loadPoints[8] = new ServoPoint(15790, 2810);

                //logicPoints[10] = loadPoints[9] = new ServoPoint(14460, 2805);//第4号水槽作为第6个位置
                logicPoints[10] = loadPoints[9] = new ServoPoint(17120, 2820);

                logicPoints[11] = loadPoints[hyWorkFlow.POS_IDLE] = new ServoPoint(1100, 100);// 空地
                //暂未标定12 13 14,且12号变为空冷,不要除渣炉
                logicPoints[12] = loadPoints[10] = new ServoPoint(18260, 1365);


                logicPoints[13] = loadPoints[11] = new ServoPoint(24728, 500);
                logicPoints[14] = loadPoints[12] = new ServoPoint(26878, 500);


                logicPoints[15] = loadPoints[hyWorkFlow.POS_UNLOAD] = new ServoPoint(18260, 1365);//空地卸载点
                //logicPoints[15] = loadPoints[hyWorkFlow.POS_UNLOAD] = new ServoPoint(28150, 1370);// 标准卸载点
                //loadPoints[hyWorkFlow.POS_ZERO] = zeroPos;// 零点
            }
        }
Example #5
0
 public bool PointsInRange(ServoPoint a, ServoPoint b, int range)
 {
     return((Math.Abs(a.X - b.X) <= range) && (Math.Abs(a.Z - b.Z) <= range));
 }