public void AGVThreadFunc(object obj)
 {
     try
     {
         AGVStatus lastModel = null;
         int       ID        = Convert.ToInt16(obj);
         int[]     XmlIndex  = getXmlIndex(ID);
         PostiveLineArr = AGVStatusBLL.getPostiveLine();
         platFormDic    = AGVStatusBLL.getPlatFormLine();
         PlatFormIndex  = getPlatFormXmlIndex(PlatFormCount);
         bool isfirst = true;
         while (true)
         {
             if (IsStart)
             {
                 AGVStatus thisModel = AGVStatusBLL.GetAgvModel(ID);
                 if (thisModel != null)
                 {
                     setCarData(lastModel, thisModel, XmlIndex);
                     lastModel = thisModel;
                 }
             }
             Thread.Sleep(ThreadTime);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 //1 取货 2放货 0未完成 1完成
 private void setPlatForm(AGVStatus thisData, AGVStatus lastData)
 {
     if ((lastData == null && thisData != null) || (thisData.target != lastData.target && thisData.taskstate != lastData.taskstate))
     {
         if (thisData.taskstate == 1)
         {
             if (thisData.complatestate == 1)
             {
                 ComTCPLib.SetOutputAsUINT(1, PlatFormIndex[int.Parse(thisData.target) - 1], 0);
             }
             else
             {
                 ComTCPLib.SetOutputAsUINT(1, PlatFormIndex[int.Parse(thisData.target) - 1], 1);
             }
         }
         else if (thisData.taskstate == 2)
         {
             if (thisData.complatestate == 1)
             {
                 ComTCPLib.SetOutputAsUINT(1, PlatFormIndex[int.Parse(thisData.target) - 1], 1);
             }
             else
             {
                 ComTCPLib.SetOutputAsUINT(1, PlatFormIndex[int.Parse(thisData.target) - 1], 0);
             }
         }
     }
 }
Beispiel #3
0
        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;

            TcpConnectorCar1 = new TCPConnector("192.168.10.107", 7171);

            TcpConnectorCar2 = new TCPConnector("192.168.10.84", 7171);

            TcpConnectorEM = new TCPConnector("192.168.10.81", 7171);

            car1Status = new AGVStatus(true, "Car1");
            car2Status = new AGVStatus(true, "Car2");
            EMStatus   = new AGVStatus(false, "EM");

            TcpConnectorCar1.MessageReceived += car1Status.Analyze;
            TcpConnectorCar1.MessageReceived += SetControlObjectStatus;
            TcpConnectorCar1.MessageReceived += DisplayInformation;

            TcpConnectorCar2.MessageReceived += car2Status.Analyze;
            TcpConnectorCar2.MessageReceived += SetControlObjectStatus;
            TcpConnectorCar2.MessageReceived += DisplayInformation;

            TcpConnectorEM.MessageReceived += EMStatus.Analyze;
            TcpConnectorEM.MessageReceived += DisplayInformation;

            loginThread = new Thread(new ThreadStart(AGVLogin));
            loginThread.Start();
        }
Beispiel #4
0
        public static List <AGVStatus> DataTableToAgvList(DataTable dt)
        {
            List <AGVStatus> modelList = new List <AGVStatus>();
            int rowsCount = dt.Rows.Count;

            if (rowsCount > 0)
            {
                AGVStatus model;
                for (int n = 0; n < rowsCount; n++)
                {
                    model = new AGVStatus();
                    if (dt.Rows[n]["id"].ToString() != "")
                    {
                        model.id = uint.Parse(dt.Rows[n]["id"].ToString());
                    }
                    if (dt.Rows[n]["line"].ToString() != "")
                    {
                        model.line = dt.Rows[n]["line"].ToString();
                    }
                    if (dt.Rows[n]["carstate"].ToString() != "")
                    {
                        model.carstate = uint.Parse(dt.Rows[n]["carstate"].ToString());
                    }
                    if (dt.Rows[n]["palletstate"].ToString() != "")
                    {
                        model.palletstate = uint.Parse(dt.Rows[n]["palletstate"].ToString());
                    }
                    if (dt.Rows[n]["source"].ToString() != "")
                    {
                        model.source = dt.Rows[n]["source"].ToString();
                    }
                    if (dt.Rows[n]["target"].ToString() != "")
                    {
                        model.target = dt.Rows[n]["target"].ToString();
                    }
                    if (dt.Rows[n]["taskstate"].ToString() != "")
                    {
                        model.taskstate = uint.Parse(dt.Rows[n]["taskstate"].ToString());
                    }
                    if (dt.Rows[n]["complatestate"].ToString() != "")
                    {
                        model.complatestate = uint.Parse(dt.Rows[n]["complatestate"].ToString());
                    }
                    modelList.Add(model);
                }
            }
            return(modelList);
        }
        private void setCarData(AGVStatus lastData, AGVStatus thisData, int[] xmlIndex)
        {
            int CarXmlIndex_line        = xmlIndex[3];
            int CarXmlIndex_carstate    = xmlIndex[1];
            int CarXmlIndex_palletstate = xmlIndex[5];
            int CarXmlIndex_taskstate   = xmlIndex[4];
            int CarXmlIndex_dir         = xmlIndex[0];
            int CarXmlIndex_islastline  = xmlIndex[2];

            if (lastData == null)
            {
                ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_line, UInt32.Parse(thisData.line));
                ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_palletstate, thisData.palletstate);
                ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_taskstate, thisData.taskstate);
                if (PostiveLineArr.Contains(thisData.line.ToString()))
                {
                    ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_dir, 1);
                }
                else
                {
                    ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_dir, 0);
                }
                string Platlines = platFormDic[thisData.target];
                if (Platlines != null && Platlines.Split(',').Contains(thisData.line))
                {
                    ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_islastline, 1);
                }
                else
                {
                    ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_islastline, 0);
                }
                ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_carstate, thisData.carstate);
                setPlatForm(thisData, lastData);
            }
            else if (!thisData.Equals(lastData))
            {
                if (thisData.line != lastData.line)
                {
                    ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_line, UInt32.Parse(thisData.line));
                    if (PostiveLineArr.Contains(thisData.line.ToString()))
                    {
                        ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_dir, 1);
                    }
                    else
                    {
                        ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_dir, 0);
                    }
                }
                if (thisData.palletstate != lastData.palletstate)
                {
                    ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_palletstate, thisData.palletstate);
                }
                if (thisData.taskstate != lastData.taskstate)
                {
                    ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_taskstate, thisData.taskstate);
                }
                if (thisData.target != lastData.target)
                {
                    string Platlines = platFormDic[thisData.target];
                    if (Platlines != null && Platlines.Split(',').Contains(thisData.line))
                    {
                        ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_islastline, 1);
                    }
                    else
                    {
                        ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_islastline, 0);
                    }
                }
                if (thisData.carstate != lastData.carstate)
                {
                    ComTCPLib.SetOutputAsUINT(1, CarXmlIndex_carstate, thisData.carstate);
                }
                setPlatForm(thisData, lastData);
            }
        }
Beispiel #6
0
        private void AGVThreadFunc(object obj)
        {
            int  index = Convert.ToInt32(obj);
            bool tmp   = false;

            while (true)
            {
                #region 临时使用,正式使用时去掉

                if (tmp == false)
                {
                    if (index == 2)
                    {
                        if (agvTempLine[3] > 0)
                        {
                            tmp = true;
                        }
                    }
                    else if (index == 1)
                    {
                        if (agvTempLine[2] > 0)
                        {
                            tmp = true;
                        }
                    }
                    else
                    {
                        tmp = true;
                    }
                }

                #endregion

                if (isStart && tmp)
                {
                    //数据库最新数据
                    AGVStatus model = AGVStatusBLL.GetModel(index);

                    if (model.position == -1)
                    {
                        //内存数据
                        //OCSStatus oldModel = ocsModelList.Find(s => s.carId == index);
                        int i = agvModelList.FindIndex(s => s.carId == index);

                        //初始
                        if (i == -1)
                        {
                            int count = AGVStatusBLL.getCountByLine(model.line);

                            agvCarPos[index] = (count - model.sequence) * agvCarWidth + agvStartPos;
                            agvModelList.Add(model);
                        }
                        else
                        {
                            //驱动段改变
                            if (agvModelList[i].line != model.line)
                            {
                                if (model.direction == 1)
                                {
                                    agvCarPos[index] = agvStartPos;
                                }
                                else
                                {
                                    agvCarPos[index] = agvLineLength[int.Parse(model.line)] - agvStartPos;
                                }
                            }
                            else
                            {
                                if (model.direction == 1)
                                {
                                    if (agvCarPos[index] < agvLineLength[int.Parse(model.line)])
                                    {
                                        agvCarPos[index] += agvSpeed;
                                    }
                                }
                                else if (model.direction == 2)
                                {
                                    if (agvCarPos[index] - agvSpeed < agvEndPos)
                                    {
                                        agvCarPos[index] = agvEndPos;
                                    }
                                    else
                                    {
                                        agvCarPos[index] -= agvSpeed;
                                    }
                                }
                            }

                            agvModelList[i] = model;
                        }
                    }
                    else
                    {
                        agvCarPos[index] = float.Parse(model.position.ToString());
                    }

                    int index1 = GetIdex.getDicOutputIndex("agvCar" + index + "01_input_pos");
                    ComTCPLib.SetOutputAsREAL32(handle, index1, float.Parse(agvCarPos[index].ToString()));
                    index1 = GetIdex.getDicOutputIndex("agvCar" + index + "01_input_Path");
                    ComTCPLib.SetOutputAsINT(handle, index1, int.Parse(model.line.ToString()));
                }

                Thread.Sleep(ocsThreadTime);
            }
        }