/// <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(); }
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; * //} */ }
/// <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); } }
/// <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); } }
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); }
/// <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); } }
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); }
internal abstract void UpdateItem(Message_vpil m);
/// <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); } } }
public abstract void UpdateItem(Message_vpil m);