using System; using System.Collections.Generic; using System.Linq; using System.Text; using WIDESEA_Common; using WIDESEA_Common.Tools; using WIDESEA_Entity.DomainModels; using WIDESEA_WCS.WCSClient; namespace WIDESEA_WCS.EquipBaseInfo { public class AGVBaseInfo { /// /// 写入任务 /// /// /// public static string TaskWrite(PLCClient client, dt_agvtask agvTask, AGVJobEnum jobEnum)//, Dt_agvtaskRepository agvTask { //bool operateResults = client.WriteValue(TaskDBName.taskInteractiveR.ToString(), 9); #region 测试 List sendData = new List(); string tmp = agvTask.agv_tasknum.ToString(); List taskID = Encoding.Default.GetBytes(tmp).ToList();//任务ID taskID.Insert(0, 30); taskID.Insert(1, Convert.ToByte(tmp.Length)); for (int i = 0; i < 30 - tmp.Length; i++) { taskID.Add(0); } sendData.AddRange(taskID); List taskStart = Encoding.Default.GetBytes(agvTask.agv_fromaddress).ToList(); taskStart.Insert(0, 20); taskStart.Insert(1, Convert.ToByte(agvTask.agv_fromaddress.Length)); for (int i = 0; i < 20 - agvTask.agv_fromaddress.Length; i++) { taskStart.Add(0); } sendData.AddRange(taskStart); List taskEnd = Encoding.Default.GetBytes(agvTask.agv_toaddress).ToList(); taskEnd.Insert(0, 20); taskEnd.Insert(1, Convert.ToByte(agvTask.agv_toaddress.Length)); for (int i = 0; i < 20 - agvTask.agv_toaddress.Length; i++) { taskEnd.Add(0); } sendData.AddRange(taskEnd); byte[] taskType = BitConverter.GetBytes((ushort)agvTask.agv_worktype.GetValueOrDefault()).ToArray(); Array.Reverse(taskType); sendData.AddRange(taskType); List containerType = Encoding.Default.GetBytes(agvTask.agv_barcode).ToList(); containerType.Insert(0, 30); containerType.Insert(1, Convert.ToByte(agvTask.agv_barcode.Length)); for (int i = 0; i < 30 - agvTask.agv_barcode.Length; i++) { containerType.Add(0); } sendData.AddRange(containerType); byte[] taskPriority = BitConverter.GetBytes((ushort)agvTask.agv_grade.GetValueOrDefault()).ToArray(); Array.Reverse(taskPriority); sendData.AddRange(taskPriority); byte[] taskFlag = BitConverter.GetBytes((ushort)jobEnum).ToArray(); Array.Reverse(taskFlag); sendData.AddRange(taskFlag); HslCommunication.OperateResult operateResult = client.SiemensPLCClient.SiemensS7NetClient.Write("DB1000.0", sendData.ToArray()); if (!operateResult.IsSuccess) return operateResult.Message; WriteLog.Info("AGV发送任务").Write("任务号" + agvTask.agv_tasknum + "AGV编号" + client.PLCName+DateTime.Now, "AGV发送任务"); #endregion //bool flag = client.WriteValue(TaskDBName.taskID.ToString(), agvTask.agv_barcode); //if (!flag) // return "AGV任务ID写入失败"; //if (!string.IsNullOrEmpty(agvTask.agv_fromaddress)) //{ // flag = client.WriteValue(TaskDBName.taskStart.ToString(), agvTask.agv_fromaddress); // if (!flag) // return "AGV任务起点写入失败"; //} //if (!string.IsNullOrEmpty(agvTask.agv_toaddress)) //{ // flag = client.WriteValue(TaskDBName.taskEnd.ToString(), agvTask.agv_toaddress); // if (!flag) // return "AGV任务终点写入失败"; //} //if (!string.IsNullOrEmpty(agvTask.agv_tasktype)) //{ // flag = client.WriteValue(TaskDBName.taskType.ToString(), agvTask.agv_worktype); // if (!flag) // return "AGV任务类型写入失败"; //} ////if (!string.IsNullOrEmpty(agvTask.containerType)) ////{ //// flag = client.WriteValue(TaskDBName.containerType.ToString(), agvTask.containerType); //// if (!flag) //// return "AGV任务容器类型写入失败"; ////} //flag = client.WriteValue(TaskDBName.taskPriority.ToString(), agvTask.agv_grade); //if (!flag) // return "AGV任务优先级写入失败"; ////if (!string.IsNullOrEmpty(agvTask.excuteAgvCode)) ////{ //// flag = client.WriteValue(TaskDBName.excuteAgvCode.ToString(), agvTask.excuteAgvCode); //// if (!flag) //// return "AGV编号写入失败"; ////} //flag = client.WriteValue(TaskDBName.taskInteractiveW.ToString(), ((int)jobEnum)); //if (!flag) // return "AGV任务启动命令写入失败。" + ((int)jobEnum); return ""; } } }