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
|
{
|
/// <summary>
|
/// 写入任务
|
/// </summary>
|
/// <param name="client"></param>
|
/// <returns></returns>
|
public static string TaskWrite(PLCClient client, dt_agvtask agvTask, AGVJobEnum jobEnum)//, Dt_agvtaskRepository agvTask
|
{
|
//bool operateResults = client.WriteValue(TaskDBName.taskInteractiveR.ToString(), 9);
|
|
|
#region 测试
|
List<byte> sendData = new List<byte>();
|
string tmp = agvTask.agv_tasknum.ToString();
|
List<byte> 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<byte> 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<byte> 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<byte> 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 "";
|
}
|
}
|
}
|