Esempio n. 1
0
 /// <summary>
 /// 更新V消息
 /// </summary>
 /// <param name="message"></param>
 public void SetVMessage(Message_vpil message)
 {
     v.CarId  = message.CarId;
     v.PlcLp1 = message.PlcLp1;
     v.Value1 = message.Value1;
     VpiInfo  = v.ToString();
 }
Esempio n. 2
0
        private void CheckPlc(NDCItem item, Message_vpil v)
        {
            Console.WriteLine("PLC:" + v.PlcLp1 + " Value:" + v.Value1);
            if (v.PlcLp1 == 29 && v.Value1 == 1)
            {
                //装货中
                item.PLCStatus = NDCPlcStatus.Loading;
                LoadItemList.Remove(item._mTask.ORDERINDEX);
                //通知WCS
                AGVDataUpdate?.Invoke(item._mTask.TASKID, item.CarrierId + "");
            }
            else if (v.PlcLp1 == 29 && v.Value1 == 2)
            {
                //卸货中
                item.PLCStatus = NDCPlcStatus.Unloading;
                UnLoadItemList.Remove(item._mTask.ORDERINDEX);
            }

            /*
             * //switch (v.PlcLp1)
             * //{
             * //    case 1://装货中
             * //        item.PLCStatus = NDCPlcStatus.Loading;
             * //        LoadItemList.Remove(item.OrderIndex);
             * //        DataControl._mForAGVControl.SubmitAgvLoading(item.TaskID, item.CarrierId + "");
             * //        break;
             *
             *
             * //    case 2://卸货中
             * //        item.PLCStatus = NDCPlcStatus.Unloading;
             * //        UnLoadItemList.Remove(item.OrderIndex);
             * //        break;
             * //}
             */
        }
Esempio n. 3
0
 /// <summary>
 /// 更新PLC结果信息
 /// </summary>
 /// <param name="message"></param>
 public override void UpdateItem(Message_vpil message)
 {
     try
     {
         NDCItem ndcItem = Items.Find(c => { return(c.CarrierId == message.CarId); });
         if (ndcItem != null)
         {
             ndcItem.SetVMessage(message);
             CheckPlc(ndcItem, message);
         }
     }catch (Exception e)
     {
         Console.WriteLine(e.Message);
         log.LOG(e.Message);
     }
 }
Esempio n. 4
0
 /// <summary>
 /// 更新PLC结果信息
 /// </summary>
 /// <param name="message"></param>
 internal override void UpdateItem(Message_vpil message)
 {
     try
     {
         NDCItem ndcItem = Items.Find(c => { return c.CARRIERID == message.CarId; });
         if (ndcItem != null)
         {
             ndcItem.SetVMessage(message);
             CheckPlc(ndcItem, message);
         }
     }
     catch (Exception e)
     {
         //Console.WriteLine(e.Message);
         log.LOG(e.Message);
     }
 }
Esempio n. 5
0
        public void Message_vpil_MultibyteTest()
        {
            //Arange             //_ < 00    02     E0    01    06    01    00    00   0A    00     01    02    03    04    05    06    07    08    09    0A
            byte[] data = new byte[] { 0x00, 0x02, 0xE0, 0x01, 0x06, 0x01, 0x00, 0x00, 0x0A, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A };

            ushort type = '<';

            //Act
            IACIMessage  message = MessageParser.Parse(type, data);
            Message_vpil msg     = (Message_vpil)message;

            //Assert
            Assert.AreEqual(msg.CarId, 2);
            Assert.AreEqual(msg.Magic, 0xE001);
            Assert.AreEqual(msg.Code, 6);
            Assert.AreEqual(msg.MultiByte[0], 0x01);
        }
Esempio n. 6
0
 /// <summary>
 /// 检查AGV 棍台消息任务
 /// </summary>
 /// <param name="item"></param>
 /// <param name="v"></param>
 private void CheckPlc(NDCItem item, Message_vpil v)
 {
     Console.WriteLine("PLC:" + v.PlcLp1 + " Value:" + v.Value1);
     if (v.PlcLp1 == 29 && v.Value1 == 1)
     {
         //装货中
         item.PLCStatus = NDCPlcStatus.Loading;
         LoadItemList.Remove(item._mTask.NDCINDEX);
         //通知WCS
         _NoticeWcsLoading(item._mTask.TASKID, item.CARRIERID + "");
     }
     else if (v.PlcLp1 == 29 && v.Value1 == 2)
     {
         //卸货中
         item.PLCStatus = NDCPlcStatus.Unloading;
         UnLoadItemList.Remove(item._mTask.NDCINDEX);
     }
 }
Esempio n. 7
0
        public void Message_vpil_wordTest()
        {
            //Arange             //_ <   00   02    E0    00    01    00    00    03    08    07    01    00    00    02    06    05
            byte[] data = new byte[] { 0x00, 0x02, 0xE0, 0x00, 0x01, 0x00, 0x00, 0x03, 0x08, 0x07, 0x01, 0x00, 0x00, 0x02, 0x06, 0x05 };

            ushort type = '<';

            //Act
            IACIMessage  message = MessageParser.Parse(type, data);
            Message_vpil msg     = (Message_vpil)message;

            //Assert
            Assert.AreEqual(msg.CarId, 2);
            Assert.AreEqual(msg.Magic, 0xE000);
            Assert.AreEqual(msg.Code1, 1);
            Assert.AreEqual(msg.Value1, 0x0807);
            Assert.AreEqual(msg.Value2, 0x0605);
        }
Esempio n. 8
0
 internal abstract void UpdateItem(Message_vpil m);
Esempio n. 9
0
        /// <summary>
        /// Event when Recive Data From System Manager
        /// </summary>
        /// <param name="msg"></param>
        private void Instance_ReciveData(IACIMessage msg)
        {
            if (!systemHalted)
            {
                if (msg.Type == "s")
                {
                    Message_s s_response = (Message_s)msg;
                    int       index      = s_response.Index; //任务序列 (SM返回)
                    int       phase      = s_response.Magic; //任务的阶段标识(相当于顺序)

                    #region Send the phase back to SM
                    if (s_response.Magic == 1)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 2)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 4)//到达接货
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 6)//接货完成,由重新定位返回数据
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 8)//到达卸货
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 10)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 11)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 48)
                    {
                        int sendNextPhase = 143;
                        SendNewM(index, sendNextPhase);
                    }
                    else if (s_response.Magic == 49)
                    {
                        int sendNextPhase = 143;
                        SendNewM(index, sendNextPhase);
                    }
                    else if (s_response.Magic == 50)
                    {
                        int sendNextPhase = 143;
                        SendNewM(index, sendNextPhase);
                    }
                    else if (s_response.Magic == 143)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 254)
                    {
                        SendNewM(index, phase);
                    }
                    else if (s_response.Magic == 255)
                    {
                        SendNewM(index, phase);
                    }

                    #endregion

                    UpdateItem(s_response);
                }
                else if (msg.Type == "b")
                {
                    Message_b b_response = (Message_b)msg;

                    UpdateItem(b_response);
                }
                else if (msg.Type == "<")//改写PLC的结果返回
                {
                    Message_vpil v_response = (Message_vpil)msg;
                    //MessageBox.Show(string.Format("成功改写Data{0},改写的值为{1}", v_response.PlcLp1 + 1, v_response.Value1));
                    UpdateItem(v_response);
                }
            }
        }
Esempio n. 10
0
 public abstract void UpdateItem(Message_vpil m);